Add project code
This commit is contained in:
36
objects/o_all_hurt/o_all_hurt.yy
generated
Normal file
36
objects/o_all_hurt/o_all_hurt.yy
generated
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_all_hurt",
|
||||
"eventList":[],
|
||||
"managed":true,
|
||||
"name":"o_all_hurt",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Generic",
|
||||
"path":"folders/Generic.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_parent_hurt",
|
||||
"path":"objects/o_parent_hurt/o_parent_hurt.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
28
objects/o_archer/Create_0.gml
Normal file
28
objects/o_archer/Create_0.gml
Normal file
@@ -0,0 +1,28 @@
|
||||
// Inherit the parent event
|
||||
event_inherited();
|
||||
|
||||
move_dir = 0;
|
||||
move_spd = 0;
|
||||
chase_spd = 0.5
|
||||
x_speed = 0;
|
||||
y_speed = 0;
|
||||
face = 1;
|
||||
|
||||
sprites[0] = s_archer_idle;
|
||||
sprites[1] = s_archer_walk;
|
||||
sprites[2] = s_archer_attack;
|
||||
sprites[3] = s_archer_hurt;
|
||||
sprites[4] = s_archer_death;
|
||||
|
||||
// State machine
|
||||
state = 0;
|
||||
shoot_timer = 0;
|
||||
charge_time = 30;
|
||||
recover_time = 60;
|
||||
cooldown_time = 5*60;
|
||||
bullet_inst = noone;
|
||||
has_started_shooting = false;
|
||||
|
||||
// Spawn
|
||||
fade_spd = 1/30;
|
||||
spawn_spd = .25;
|
||||
7
objects/o_archer/Destroy_0.gml
Normal file
7
objects/o_archer/Destroy_0.gml
Normal file
@@ -0,0 +1,7 @@
|
||||
if instance_exists(bullet_inst) && bullet_inst.state == 0 {
|
||||
bullet_inst.is_exploding = true;
|
||||
bullet_inst.sprite_index = s_arrow_destroy;
|
||||
bullet_inst.image_index = 0; // Reset animation
|
||||
bullet_inst.image_speed = 1; // Play explosion animation
|
||||
bullet_inst.bullet_spd = 0;
|
||||
}
|
||||
7
objects/o_archer/Draw_0.gml
Normal file
7
objects/o_archer/Draw_0.gml
Normal file
@@ -0,0 +1,7 @@
|
||||
draw_sprite_ext(sprite_index, image_index, x, y, face, image_yscale, image_angle, image_blend, image_alpha);
|
||||
|
||||
var _healh_pct = hp / max_hp;
|
||||
var _hp_img = _healh_pct * (sprite_get_number(s_enemy_health) - 1);
|
||||
if instance_exists(o_player) {
|
||||
draw_sprite_ext(s_enemy_health, _hp_img, x - 8, y - sprite_height / 2 - 5, image_xscale, image_yscale, image_angle, image_blend, image_alpha);
|
||||
}
|
||||
142
objects/o_archer/Step_0.gml
Normal file
142
objects/o_archer/Step_0.gml
Normal file
@@ -0,0 +1,142 @@
|
||||
// Pause
|
||||
if pause_movement() { exit; }
|
||||
|
||||
var _wall_collisions = true;
|
||||
var _get_damaged = true;
|
||||
|
||||
// State machine
|
||||
switch(state) {
|
||||
case -1:
|
||||
// Spawn from spawner
|
||||
if image_alpha < 1 {
|
||||
move_spd = 0;
|
||||
image_alpha += fade_spd;
|
||||
}
|
||||
_wall_collisions = false;
|
||||
_get_damaged = false;
|
||||
|
||||
if image_alpha >= 1 {
|
||||
move_spd = spawn_spd;
|
||||
if instance_exists(o_player) {
|
||||
move_dir = point_direction(x, y, o_player.x, o_player.y);
|
||||
}
|
||||
}
|
||||
|
||||
if !place_meeting(x, y, o_wall) {
|
||||
state = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0:
|
||||
if instance_exists(o_player) {
|
||||
move_dir = point_direction(x, y, o_player.x, o_player.y);
|
||||
}
|
||||
move_spd = chase_spd;
|
||||
|
||||
var _cam_left = camera_get_view_x(view_camera[0]);
|
||||
var _cam_right = _cam_left + camera_get_view_width(view_camera[0]);
|
||||
var _cam_top = camera_get_view_y(view_camera[0]);
|
||||
var _cam_bottom = _cam_top + camera_get_view_height(view_camera[0]);
|
||||
|
||||
|
||||
if bbox_right > _cam_left && bbox_left < _cam_right && bbox_bottom > _cam_top && bbox_top < _cam_bottom {
|
||||
shoot_timer++
|
||||
}
|
||||
|
||||
if shoot_timer > cooldown_time {
|
||||
state = 1;
|
||||
shoot_timer = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if instance_exists(o_player) {
|
||||
move_dir = point_direction(x, y, o_player.x, o_player.y);
|
||||
}
|
||||
move_spd = 0;
|
||||
|
||||
shoot_timer++;
|
||||
|
||||
if shoot_timer == 1 && hp > 0 {
|
||||
// Create arrow
|
||||
bullet_inst = instance_create_depth(x, y, depth, o_arrow);
|
||||
}
|
||||
|
||||
if shoot_timer == charge_time && instance_exists(bullet_inst) && hp > 0 {
|
||||
bullet_inst.image_angle = move_dir;
|
||||
bullet_inst.state = 1;
|
||||
}
|
||||
|
||||
if shoot_timer > charge_time + recover_time {
|
||||
state = 0;
|
||||
shoot_timer = 0;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// Chasing
|
||||
#region
|
||||
|
||||
|
||||
x_speed = lengthdir_x(move_spd, move_dir);
|
||||
y_speed = lengthdir_y(move_spd, move_dir);
|
||||
|
||||
// Wall collisons
|
||||
if _wall_collisions == true {
|
||||
if place_meeting(x + x_speed, y, o_wall) {
|
||||
x_speed = 0;
|
||||
}
|
||||
if place_meeting(x, y + y_speed, o_wall) {
|
||||
y_speed = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if place_meeting(x + x_speed, y, o_parent_enemy) {
|
||||
x_speed = 0;
|
||||
}
|
||||
if place_meeting(x, y + y_speed, o_parent_enemy) {
|
||||
y_speed = 0;
|
||||
}
|
||||
|
||||
if (!is_stopping) {
|
||||
x += x_speed;
|
||||
y += y_speed;
|
||||
}
|
||||
|
||||
depth = -y;
|
||||
|
||||
#endregion
|
||||
|
||||
// Sprite controls
|
||||
#region
|
||||
// Check if the enemy is moving
|
||||
var is_moving = (x_speed != 0 || y_speed != 0);
|
||||
|
||||
// Update animation based on movement
|
||||
if state == 1 {
|
||||
sprite_index = sprites[2];
|
||||
} else if is_moving {
|
||||
sprite_index = sprites[1]; // Walking animation
|
||||
} else {
|
||||
sprite_index = sprites[0]; // Idle animation
|
||||
}
|
||||
|
||||
// Determine facing direction
|
||||
if x_speed != 0 {
|
||||
face = sign(x_speed);
|
||||
} else {
|
||||
if instance_exists(o_player) {
|
||||
var _player_offset_x = o_player.x - x;
|
||||
face = (_player_offset_x > 0) ? 1 : -1;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
is_dying(sprites[4]);
|
||||
|
||||
// Inherit the parent event
|
||||
if _get_damaged {
|
||||
event_inherited();
|
||||
}
|
||||
|
||||
44
objects/o_archer/o_archer.yy
generated
Normal file
44
objects/o_archer/o_archer.yy
generated
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_archer",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":8,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":1,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_archer",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Enemies",
|
||||
"path":"folders/Enemies.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_parent_enemy",
|
||||
"path":"objects/o_parent_enemy/o_parent_enemy.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_archer_idle",
|
||||
"path":"sprites/s_archer_idle/s_archer_idle.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
12
objects/o_arrow/Create_0.gml
Normal file
12
objects/o_arrow/Create_0.gml
Normal file
@@ -0,0 +1,12 @@
|
||||
event_inherited();
|
||||
|
||||
bullet_dir = 0;
|
||||
bullet_spd = 4;
|
||||
start_x = x;
|
||||
start_y = y;
|
||||
is_exploding = false;
|
||||
max_distance = 500;
|
||||
s_destroy = s_arrow_destroy;
|
||||
pass_through_enemy = false;
|
||||
|
||||
state = 0;
|
||||
3
objects/o_arrow/Other_7.gml
Normal file
3
objects/o_arrow/Other_7.gml
Normal file
@@ -0,0 +1,3 @@
|
||||
if sprite_index == s_destroy {
|
||||
instance_destroy();
|
||||
}
|
||||
44
objects/o_arrow/Step_0.gml
Normal file
44
objects/o_arrow/Step_0.gml
Normal file
@@ -0,0 +1,44 @@
|
||||
if pause_movement() { exit; }
|
||||
|
||||
switch(state) {
|
||||
case 0:
|
||||
if instance_exists(o_player) {
|
||||
bullet_dir = point_direction(x, y, o_player.x, o_player.y);
|
||||
}
|
||||
|
||||
depth = -y - 50;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (!is_exploding) {
|
||||
// Calculate movement
|
||||
var bullet_x_spd = lengthdir_x(bullet_spd, bullet_dir);
|
||||
var bullet_y_spd = lengthdir_y(bullet_spd, bullet_dir);
|
||||
|
||||
// Move the fireball
|
||||
x += bullet_x_spd;
|
||||
y += bullet_y_spd;
|
||||
|
||||
depth = -y;
|
||||
|
||||
if hit_confirmed && !pass_through_enemy {
|
||||
destroy_projectile()
|
||||
}
|
||||
|
||||
// Check for collision with solid wall
|
||||
if place_meeting(x, y, o_solid_wall) {
|
||||
destroy_projectile();
|
||||
}
|
||||
|
||||
// Check if fireball has traveled too far
|
||||
if point_distance(start_x, start_y, x, y) > max_distance {
|
||||
destroy_projectile();
|
||||
}
|
||||
|
||||
if bbox_right < 0 || bbox_left > room_width || bbox_bottom < 0 || bbox_top > room_height {
|
||||
destroy_projectile();
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
43
objects/o_arrow/o_arrow.yy
generated
Normal file
43
objects/o_arrow/o_arrow.yy
generated
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_arrow",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":7,"eventType":7,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_arrow",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Enemies",
|
||||
"path":"folders/Enemies.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_player_hurt",
|
||||
"path":"objects/o_player_hurt/o_player_hurt.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_arrow",
|
||||
"path":"sprites/s_arrow/s_arrow.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
1
objects/o_blocker/CleanUp_0.gml
Normal file
1
objects/o_blocker/CleanUp_0.gml
Normal file
@@ -0,0 +1 @@
|
||||
get_damaged_destroy();
|
||||
4
objects/o_blocker/Create_0.gml
Normal file
4
objects/o_blocker/Create_0.gml
Normal file
@@ -0,0 +1,4 @@
|
||||
get_damaged_create(30);
|
||||
|
||||
depth = -700;
|
||||
|
||||
7
objects/o_blocker/Step_0.gml
Normal file
7
objects/o_blocker/Step_0.gml
Normal file
@@ -0,0 +1,7 @@
|
||||
get_damaged(o_parent_hurt, false, false);
|
||||
|
||||
if hp <= 0 {
|
||||
instance_destroy();
|
||||
|
||||
instance_create_depth(x, y, -100, o_blocker_stump);
|
||||
}
|
||||
43
objects/o_blocker/o_blocker.yy
generated
Normal file
43
objects/o_blocker/o_blocker.yy
generated
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_blocker",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":12,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_blocker",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Rooms",
|
||||
"path":"folders/Rooms.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_solid_wall",
|
||||
"path":"objects/o_solid_wall/o_solid_wall.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_blocker",
|
||||
"path":"sprites/s_blocker/s_blocker.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
36
objects/o_blocker_destroyed/o_blocker_destroyed.yy
generated
Normal file
36
objects/o_blocker_destroyed/o_blocker_destroyed.yy
generated
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_blocker_destroyed",
|
||||
"eventList":[],
|
||||
"managed":true,
|
||||
"name":"o_blocker_destroyed",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Rooms",
|
||||
"path":"folders/Rooms.yy",
|
||||
},
|
||||
"parentObjectId":null,
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_blocker_destroyed",
|
||||
"path":"sprites/s_blocker_destroyed/s_blocker_destroyed.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
1
objects/o_blocker_stump/CleanUp_0.gml
Normal file
1
objects/o_blocker_stump/CleanUp_0.gml
Normal file
@@ -0,0 +1 @@
|
||||
get_damaged_destroy();
|
||||
1
objects/o_blocker_stump/Create_0.gml
Normal file
1
objects/o_blocker_stump/Create_0.gml
Normal file
@@ -0,0 +1 @@
|
||||
get_damaged_create(100);
|
||||
7
objects/o_blocker_stump/Step_0.gml
Normal file
7
objects/o_blocker_stump/Step_0.gml
Normal file
@@ -0,0 +1,7 @@
|
||||
get_damaged(o_parent_hurt, false, false);
|
||||
|
||||
if hp <= 0 {
|
||||
instance_destroy();
|
||||
|
||||
instance_create_depth(x, y, -100, o_blocker_destroyed);
|
||||
}
|
||||
43
objects/o_blocker_stump/o_blocker_stump.yy
generated
Normal file
43
objects/o_blocker_stump/o_blocker_stump.yy
generated
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_blocker_stump",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":12,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_blocker_stump",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Rooms",
|
||||
"path":"folders/Rooms.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_wall",
|
||||
"path":"objects/o_wall/o_wall.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_blocker_stump",
|
||||
"path":"sprites/s_blocker_stump/s_blocker_stump.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
13
objects/o_camera/Create_0.gml
Normal file
13
objects/o_camera/Create_0.gml
Normal file
@@ -0,0 +1,13 @@
|
||||
x_shake = 0;
|
||||
x_shake_dir = 0;
|
||||
x_shake_dir_spd = 45;
|
||||
x_shake_amt = 0;
|
||||
x_shake_amt_spd = 1/4;
|
||||
y_shake = 0;
|
||||
y_shake = 0;
|
||||
y_shake_dir = 0;
|
||||
y_shake_dir_spd = 45;
|
||||
y_shake_amt = 0;
|
||||
y_shake_amt_spd = 1/4;
|
||||
|
||||
audio_play_sound(background_music, 0, true);
|
||||
35
objects/o_camera/Step_2.gml
Normal file
35
objects/o_camera/Step_2.gml
Normal file
@@ -0,0 +1,35 @@
|
||||
var _cam_width = camera_get_view_width(view_camera[0]);
|
||||
var _cam_height = camera_get_view_height(view_camera[0]);
|
||||
|
||||
if instance_exists(o_player) {
|
||||
x = o_player.x - _cam_width / 2;
|
||||
y = o_player.center_y - _cam_height / 2;
|
||||
}
|
||||
|
||||
#region
|
||||
if x_shake_amt > 0 {
|
||||
x_shake_dir += x_shake_dir_spd;
|
||||
x_shake_amt -= x_shake_amt_spd;
|
||||
} else {
|
||||
x_shake_amt = 0;
|
||||
x_shake_dir = 0;
|
||||
}
|
||||
x_shake = dsin(x_shake_dir) * x_shake_amt;
|
||||
|
||||
if y_shake_amt > 0 {
|
||||
y_shake_dir += y_shake_dir_spd;
|
||||
y_shake_amt -= y_shake_amt_spd;
|
||||
} else {
|
||||
y_shake_amt = 0;
|
||||
y_shake_dir = 0;
|
||||
}
|
||||
y_shake = dsin(y_shake_dir) * y_shake_amt;
|
||||
#endregion
|
||||
|
||||
x += x_shake;
|
||||
y += y_shake;
|
||||
|
||||
x = clamp(x, 0, room_width - _cam_width);
|
||||
y = clamp(y, 0, room_height - _cam_height);
|
||||
|
||||
camera_set_view_pos(view_camera[0], x, y);
|
||||
36
objects/o_camera/o_camera.yy
generated
Normal file
36
objects/o_camera/o_camera.yy
generated
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_camera",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":2,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_camera",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Controllers",
|
||||
"path":"folders/Controllers.yy",
|
||||
},
|
||||
"parentObjectId":null,
|
||||
"persistent":true,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
7
objects/o_disc/Create_0.gml
Normal file
7
objects/o_disc/Create_0.gml
Normal file
@@ -0,0 +1,7 @@
|
||||
// Inherit the parent event
|
||||
event_inherited();
|
||||
|
||||
damage = 5;
|
||||
bullet_spd = 4;
|
||||
max_distance = 150;
|
||||
s_destroy = s_disc_destroy;
|
||||
41
objects/o_disc/o_disc.yy
generated
Normal file
41
objects/o_disc/o_disc.yy
generated
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_disc",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_disc",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Spells",
|
||||
"path":"folders/Spells.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_fireball",
|
||||
"path":"objects/o_fireball/o_fireball.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_disc",
|
||||
"path":"sprites/s_disc/s_disc.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
5
objects/o_end_screen/Create_0.gml
Normal file
5
objects/o_end_screen/Create_0.gml
Normal file
@@ -0,0 +1,5 @@
|
||||
alpha = 0;
|
||||
alpha_spd = 1/75;
|
||||
alpha_mul = 0.8;
|
||||
|
||||
depth = -10000;
|
||||
17
objects/o_end_screen/Draw_0.gml
Normal file
17
objects/o_end_screen/Draw_0.gml
Normal file
@@ -0,0 +1,17 @@
|
||||
var _cam_x = camera_get_view_x(view_camera[0]);
|
||||
var _cam_w = camera_get_view_width(view_camera[0]);
|
||||
var _cam_y = camera_get_view_y(view_camera[0]);
|
||||
var _cam_h = camera_get_view_height(view_camera[0]);
|
||||
|
||||
draw_set_alpha(alpha * alpha_mul);
|
||||
draw_rectangle_color(_cam_x, _cam_y, _cam_w + _cam_x, _cam_h + _cam_y, c_yellow, c_yellow, c_black, c_black, false);
|
||||
|
||||
draw_set_alpha(alpha);
|
||||
draw_set_halign(fa_center);
|
||||
draw_set_valign(fa_middle);
|
||||
draw_set_font(fnt_Tiny5);
|
||||
draw_text_transformed(_cam_x + (_cam_w / 2), _cam_y + (_cam_h / 2) - 20, "YOU WON!", 4, 4, 0);
|
||||
draw_text_transformed(_cam_x + (_cam_w / 2), _cam_y + (_cam_h / 2) + 50, "-< Press any key to continue >-", 1, 1, 0);
|
||||
draw_set_halign(fa_left);
|
||||
draw_set_valign(fa_top);
|
||||
draw_set_alpha(1);
|
||||
9
objects/o_end_screen/Step_0.gml
Normal file
9
objects/o_end_screen/Step_0.gml
Normal file
@@ -0,0 +1,9 @@
|
||||
alpha += alpha_spd;
|
||||
alpha = clamp(alpha, 0, 1);
|
||||
|
||||
if keyboard_check_pressed(vk_anykey) && alpha >= 1 {
|
||||
global.enemyRoomMax += 100;
|
||||
global.enemyActiveMax += 20;
|
||||
global.first_start = false;
|
||||
room_restart();
|
||||
}
|
||||
40
objects/o_end_screen/o_end_screen.yy
generated
Normal file
40
objects/o_end_screen/o_end_screen.yy
generated
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_end_screen",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":8,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_end_screen",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Controllers",
|
||||
"path":"folders/Controllers.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_screen_pause",
|
||||
"path":"objects/o_screen_pause/o_screen_pause.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
36
objects/o_enemy_hurt/o_enemy_hurt.yy
generated
Normal file
36
objects/o_enemy_hurt/o_enemy_hurt.yy
generated
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_enemy_hurt",
|
||||
"eventList":[],
|
||||
"managed":true,
|
||||
"name":"o_enemy_hurt",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Enemies",
|
||||
"path":"folders/Enemies.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_parent_hurt",
|
||||
"path":"objects/o_parent_hurt/o_parent_hurt.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
4
objects/o_explosion/Create_0.gml
Normal file
4
objects/o_explosion/Create_0.gml
Normal file
@@ -0,0 +1,4 @@
|
||||
// Damage
|
||||
damage = 100;
|
||||
created_damage_objects = false;
|
||||
hurt_instance = noone;
|
||||
1
objects/o_explosion/Other_7.gml
Normal file
1
objects/o_explosion/Other_7.gml
Normal file
@@ -0,0 +1 @@
|
||||
instance_destroy();
|
||||
21
objects/o_explosion/Step_0.gml
Normal file
21
objects/o_explosion/Step_0.gml
Normal file
@@ -0,0 +1,21 @@
|
||||
if pause_movement() { exit; }
|
||||
|
||||
if !created_damage_objects {
|
||||
hurt_instance = instance_create_depth(x, y, 0, o_all_hurt);
|
||||
with(hurt_instance) {
|
||||
damage = other.damage;
|
||||
mask_index = other.sprite_index;
|
||||
image_xscale = other.image_xscale;
|
||||
image_yscale = other.image_yscale;
|
||||
}
|
||||
|
||||
created_damage_objects = true;
|
||||
}
|
||||
|
||||
// When done, stop damage
|
||||
if floor(image_index) >= 3 {
|
||||
if instance_exists(hurt_instance) {
|
||||
instance_destroy(hurt_instance);
|
||||
}
|
||||
}
|
||||
|
||||
40
objects/o_explosion/o_explosion.yy
generated
Normal file
40
objects/o_explosion/o_explosion.yy
generated
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_explosion",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":7,"eventType":7,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_explosion",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Rooms",
|
||||
"path":"folders/Rooms.yy",
|
||||
},
|
||||
"parentObjectId":null,
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_explosion",
|
||||
"path":"sprites/s_explosion/s_explosion.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
1
objects/o_explosive/CleanUp_0.gml
Normal file
1
objects/o_explosive/CleanUp_0.gml
Normal file
@@ -0,0 +1 @@
|
||||
get_damaged_destroy();
|
||||
1
objects/o_explosive/Create_0.gml
Normal file
1
objects/o_explosive/Create_0.gml
Normal file
@@ -0,0 +1 @@
|
||||
get_damaged_create(20);
|
||||
14
objects/o_explosive/Step_0.gml
Normal file
14
objects/o_explosive/Step_0.gml
Normal file
@@ -0,0 +1,14 @@
|
||||
get_damaged(o_parent_hurt, false, false);
|
||||
|
||||
var _health_pct = 1 - (hp / max_hp);
|
||||
image_index = _health_pct * (image_number - 1);
|
||||
|
||||
if hp <= 0 {
|
||||
instance_create_depth(x, y, -1000, o_explosion);
|
||||
|
||||
audio_play_sound(explosion, 0, false);
|
||||
create_screen_pause(12);
|
||||
camera_shake(12);
|
||||
|
||||
instance_destroy();
|
||||
}
|
||||
46
objects/o_explosive/o_explosive.yy
generated
Normal file
46
objects/o_explosive/o_explosive.yy
generated
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_explosive",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":12,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_explosive",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Rooms",
|
||||
"path":"folders/Rooms.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_solid_wall",
|
||||
"path":"objects/o_solid_wall/o_solid_wall.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_explosive",
|
||||
"path":"sprites/s_explosive/s_explosive.yy",
|
||||
},
|
||||
"spriteMaskId":{
|
||||
"name":"s_explosive",
|
||||
"path":"sprites/s_explosive/s_explosive.yy",
|
||||
},
|
||||
"visible":true,
|
||||
}
|
||||
12
objects/o_fireball/Create_0.gml
Normal file
12
objects/o_fireball/Create_0.gml
Normal file
@@ -0,0 +1,12 @@
|
||||
event_inherited();
|
||||
|
||||
bullet_dir = 0;
|
||||
bullet_spd = 5;
|
||||
bullet_x_spd = 0;
|
||||
bullet_y_spd = 0;
|
||||
is_exploding = false;
|
||||
start_x = x;
|
||||
start_y = y;
|
||||
max_distance = 300;
|
||||
s_destroy = s_fireball_destroy;
|
||||
pass_through_enemy = false;
|
||||
3
objects/o_fireball/Other_7.gml
Normal file
3
objects/o_fireball/Other_7.gml
Normal file
@@ -0,0 +1,3 @@
|
||||
if sprite_index == s_destroy {
|
||||
instance_destroy();
|
||||
}
|
||||
28
objects/o_fireball/Step_0.gml
Normal file
28
objects/o_fireball/Step_0.gml
Normal file
@@ -0,0 +1,28 @@
|
||||
if pause_movement() { exit; }
|
||||
|
||||
// Movements
|
||||
#region
|
||||
if (!is_exploding) {
|
||||
// Calculate movement
|
||||
var x_speed = lengthdir_x(bullet_spd, bullet_dir);
|
||||
var y_speed = lengthdir_y(bullet_spd, bullet_dir);
|
||||
|
||||
// Move the fireball
|
||||
x += x_speed;
|
||||
y += y_speed;
|
||||
|
||||
if hit_confirmed && !pass_through_enemy {
|
||||
destroy_projectile()
|
||||
}
|
||||
|
||||
// Check for collision with solid wall
|
||||
if place_meeting(x, y, o_solid_wall) {
|
||||
destroy_projectile();
|
||||
}
|
||||
|
||||
// Check if fireball has traveled too far
|
||||
if point_distance(start_x, start_y, x, y) > max_distance {
|
||||
destroy_projectile();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
43
objects/o_fireball/o_fireball.yy
generated
Normal file
43
objects/o_fireball/o_fireball.yy
generated
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_fireball",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":7,"eventType":7,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_fireball",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Spells",
|
||||
"path":"folders/Spells.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_enemy_hurt",
|
||||
"path":"objects/o_enemy_hurt/o_enemy_hurt.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_fireball",
|
||||
"path":"sprites/s_fireball/s_fireball.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
5
objects/o_game_over/Create_0.gml
Normal file
5
objects/o_game_over/Create_0.gml
Normal file
@@ -0,0 +1,5 @@
|
||||
alpha = 0;
|
||||
alpha_spd = 1/75;
|
||||
alpha_mul = 0.9;
|
||||
|
||||
depth = -10000;
|
||||
18
objects/o_game_over/Draw_0.gml
Normal file
18
objects/o_game_over/Draw_0.gml
Normal file
@@ -0,0 +1,18 @@
|
||||
var _cam_x = camera_get_view_x(view_camera[0]);
|
||||
var _cam_w = camera_get_view_width(view_camera[0]);
|
||||
var _cam_y = camera_get_view_y(view_camera[0]);
|
||||
var _cam_h = camera_get_view_height(view_camera[0]);
|
||||
|
||||
draw_set_alpha(alpha * alpha_mul);
|
||||
draw_rectangle_color(_cam_x, _cam_y, _cam_w + _cam_x, _cam_h + _cam_y, c_red, c_red, c_black, c_black, false);
|
||||
|
||||
draw_set_alpha(alpha);
|
||||
draw_set_halign(fa_center);
|
||||
draw_set_valign(fa_middle);
|
||||
draw_set_font(fnt_Special_Elite);
|
||||
draw_text_transformed(_cam_x + (_cam_w / 2), _cam_y + (_cam_h / 2) - 20, "YOU DIED", 4, 4, 0);
|
||||
draw_set_font(fnt_Tiny5);
|
||||
draw_text_transformed(_cam_x + (_cam_w / 2), _cam_y + (_cam_h / 2) + 50, "-< Press any key to resurrect >-", 1, 1, 0);
|
||||
draw_set_halign(fa_left);
|
||||
draw_set_valign(fa_top);
|
||||
draw_set_alpha(1);
|
||||
7
objects/o_game_over/Step_0.gml
Normal file
7
objects/o_game_over/Step_0.gml
Normal file
@@ -0,0 +1,7 @@
|
||||
alpha += alpha_spd;
|
||||
alpha = clamp(alpha, 0, 1);
|
||||
|
||||
if keyboard_check_pressed(vk_anykey) && alpha >= 1 {
|
||||
global.first_start = false;
|
||||
room_restart()
|
||||
}
|
||||
37
objects/o_game_over/o_game_over.yy
generated
Normal file
37
objects/o_game_over/o_game_over.yy
generated
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_game_over",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":8,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_game_over",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Controllers",
|
||||
"path":"folders/Controllers.yy",
|
||||
},
|
||||
"parentObjectId":null,
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
1
objects/o_heal/Create_0.gml
Normal file
1
objects/o_heal/Create_0.gml
Normal file
@@ -0,0 +1 @@
|
||||
player_ref = o_player;
|
||||
8
objects/o_heal/Step_0.gml
Normal file
8
objects/o_heal/Step_0.gml
Normal file
@@ -0,0 +1,8 @@
|
||||
if instance_exists(player_ref) {
|
||||
x = player_ref.x;
|
||||
y = player_ref.y;
|
||||
}
|
||||
|
||||
if image_index >= image_number - 1 {
|
||||
instance_destroy();
|
||||
}
|
||||
39
objects/o_heal/o_heal.yy
generated
Normal file
39
objects/o_heal/o_heal.yy
generated
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_heal",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_heal",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Spells",
|
||||
"path":"folders/Spells.yy",
|
||||
},
|
||||
"parentObjectId":null,
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_heal",
|
||||
"path":"sprites/s_heal/s_heal.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
17
objects/o_hud/Create_0.gml
Normal file
17
objects/o_hud/Create_0.gml
Normal file
@@ -0,0 +1,17 @@
|
||||
depth = -9000;
|
||||
|
||||
global.first_start = true;
|
||||
|
||||
player_hp = 0;
|
||||
player_max_hp = 0;
|
||||
|
||||
global.enemyRoomMax = 100;
|
||||
global.enemyActiveMax = 20;
|
||||
global.totalEnemiesSpawned = 0;
|
||||
global.enemyKillCount = 0;
|
||||
|
||||
// Weapon pickup
|
||||
global.weapon_notification = "";
|
||||
global.weapon_notification_timer = 0;
|
||||
|
||||
menu_inst = noone;
|
||||
37
objects/o_hud/Draw_0.gml
Normal file
37
objects/o_hud/Draw_0.gml
Normal file
@@ -0,0 +1,37 @@
|
||||
var _cam_x = camera_get_view_x(view_camera[0]);
|
||||
var _cam_w = camera_get_view_width(view_camera[0]);
|
||||
var _cam_y = camera_get_view_y(view_camera[0]);
|
||||
var _cam_h = camera_get_view_height(view_camera[0]);
|
||||
|
||||
var _padding = 10;
|
||||
var _hud_x = _cam_x + _padding;
|
||||
var _hud_y = _cam_y + _padding;
|
||||
|
||||
if instance_exists(o_player) && !instance_exists(o_screen_pause) {
|
||||
draw_sprite(s_player_health, 0, _hud_x, _hud_y);
|
||||
for (var i = 0; i < player_max_hp / 10; i++) {
|
||||
var _img = 1;
|
||||
|
||||
if i + 1 <= player_hp / 10 { _img = 2; };
|
||||
|
||||
var _sep = 6;
|
||||
draw_sprite(s_player_health, _img, _hud_x + _sep * i, _hud_y);
|
||||
}
|
||||
|
||||
draw_sprite(s_kill_count, 0, _hud_x, _hud_y + 20);
|
||||
draw_set_halign(fa_left);
|
||||
draw_set_valign(fa_top);
|
||||
draw_set_font(fnt_Tiny5);
|
||||
draw_text_transformed(_hud_x + 28, _hud_y + 23, string(global.enemyKillCount) , 0.5, 0.5, 0);
|
||||
draw_text_transformed(_hud_x + 49, _hud_y + 23, " / " + string(global.enemyRoomMax), 0.5, 0.5, 0);
|
||||
}
|
||||
|
||||
// Draw notification if active
|
||||
if (global.weapon_notification != "") {
|
||||
draw_set_font(fnt_Tiny5);
|
||||
draw_set_halign(fa_left);
|
||||
draw_set_valign(fa_top);
|
||||
|
||||
// Draw at top center of screen
|
||||
draw_text_transformed(_hud_x + 23, _hud_y + 40, global.weapon_notification , 0.5, 0.5, 0);
|
||||
}
|
||||
5
objects/o_hud/Other_5.gml
Normal file
5
objects/o_hud/Other_5.gml
Normal file
@@ -0,0 +1,5 @@
|
||||
global.totalEnemiesSpawned = 0;
|
||||
global.enemyKillCount = 0;
|
||||
|
||||
global.weapon_notification = "";
|
||||
global.weapon_notification_timer = 0;
|
||||
26
objects/o_hud/Step_0.gml
Normal file
26
objects/o_hud/Step_0.gml
Normal file
@@ -0,0 +1,26 @@
|
||||
if global.first_start {
|
||||
menu_inst = instance_create_depth(0, 0, -10000, o_start_menu)
|
||||
}
|
||||
|
||||
if global.start_key_pressed && instance_exists(menu_inst) {
|
||||
instance_destroy(menu_inst);
|
||||
}
|
||||
|
||||
// Get player's hp
|
||||
if instance_exists(o_player) {
|
||||
player_hp = o_player.hp;
|
||||
player_max_hp = o_player.max_hp;
|
||||
} else {
|
||||
player_hp = 0;
|
||||
}
|
||||
|
||||
if (global.weapon_notification_timer > 0) {
|
||||
global.weapon_notification_timer--;
|
||||
if (global.weapon_notification_timer <= 0) {
|
||||
global.weapon_notification = "";
|
||||
}
|
||||
}
|
||||
|
||||
if (global.enemyKillCount >= global.enemyRoomMax) {
|
||||
instance_create_depth(0, 0, -10000, o_end_screen);
|
||||
}
|
||||
38
objects/o_hud/o_hud.yy
generated
Normal file
38
objects/o_hud/o_hud.yy
generated
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_hud",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":8,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":5,"eventType":7,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_hud",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Controllers",
|
||||
"path":"folders/Controllers.yy",
|
||||
},
|
||||
"parentObjectId":null,
|
||||
"persistent":true,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
7
objects/o_icebolt/Create_0.gml
Normal file
7
objects/o_icebolt/Create_0.gml
Normal file
@@ -0,0 +1,7 @@
|
||||
// Inherit the parent event
|
||||
event_inherited();
|
||||
|
||||
damage = 50;
|
||||
bullet_spd = 2;
|
||||
max_distance = 200;
|
||||
s_destroy = s_icebolt_destroy;
|
||||
41
objects/o_icebolt/o_icebolt.yy
generated
Normal file
41
objects/o_icebolt/o_icebolt.yy
generated
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_icebolt",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_icebolt",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Spells",
|
||||
"path":"folders/Spells.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_fireball",
|
||||
"path":"objects/o_fireball/o_fireball.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_icebolt",
|
||||
"path":"sprites/s_icebolt/s_icebolt.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
11
objects/o_inputs/Create_0.gml
Normal file
11
objects/o_inputs/Create_0.gml
Normal file
@@ -0,0 +1,11 @@
|
||||
global.right_key = 0;
|
||||
global.left_key = 0;
|
||||
global.up_key = 0;
|
||||
global.down_key = 0;
|
||||
global.shoot_key = 0;
|
||||
global.swap_key_pressed = 0;
|
||||
global.heal_key_pressed = 0;
|
||||
global.start_key_pressed = 0;
|
||||
global.space_key_pressed = 0;
|
||||
global.back_key_pressed = 0;
|
||||
global.pause_key_pressed = 0;
|
||||
18
objects/o_inputs/Step_1.gml
Normal file
18
objects/o_inputs/Step_1.gml
Normal file
@@ -0,0 +1,18 @@
|
||||
global.start_key_pressed = keyboard_check_pressed(vk_enter);
|
||||
global.space_key_pressed = keyboard_check_pressed(vk_space);
|
||||
global.back_key_pressed = keyboard_check_pressed(vk_backspace)
|
||||
|
||||
|
||||
if instance_exists(o_start_menu) || instance_exists(o_tutorial) {
|
||||
exit;
|
||||
}
|
||||
|
||||
global.right_key = keyboard_check(ord("D"));
|
||||
global.left_key = keyboard_check(ord("A"));
|
||||
global.up_key = keyboard_check(ord("W"));
|
||||
global.down_key = keyboard_check(ord("S"));
|
||||
global.shoot_key = mouse_check_button(mb_left);
|
||||
global.swap_key_pressed = mouse_check_button_pressed(mb_right);
|
||||
global.heal_key_pressed = keyboard_check(ord("Q"));
|
||||
global.pause_key_pressed = keyboard_check_pressed(vk_escape);
|
||||
|
||||
36
objects/o_inputs/o_inputs.yy
generated
Normal file
36
objects/o_inputs/o_inputs.yy
generated
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_inputs",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":1,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_inputs",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Controllers",
|
||||
"path":"folders/Controllers.yy",
|
||||
},
|
||||
"parentObjectId":null,
|
||||
"persistent":true,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
3
objects/o_new_spell/Create_0.gml
Normal file
3
objects/o_new_spell/Create_0.gml
Normal file
@@ -0,0 +1,3 @@
|
||||
depth = -600;
|
||||
float_dir = 0;
|
||||
float_spd = 3;
|
||||
18
objects/o_new_spell/Step_0.gml
Normal file
18
objects/o_new_spell/Step_0.gml
Normal file
@@ -0,0 +1,18 @@
|
||||
// Pause
|
||||
if pause_movement() { exit; }
|
||||
|
||||
// Floating animation
|
||||
float_dir += float_spd;
|
||||
y = ystart + dsin(float_dir) * 2;
|
||||
|
||||
// Check player collision
|
||||
if place_meeting(x, y, o_player) {
|
||||
var obtained_weapon = get_random_weapon();
|
||||
if (obtained_weapon != undefined) {
|
||||
audio_play_sound(item_pick, 0, false);
|
||||
// Set global notification
|
||||
global.weapon_notification = "Got " + obtained_weapon.name + "!";
|
||||
global.weapon_notification_timer = 90; // 1.5 seconds at 60FPS
|
||||
instance_destroy();
|
||||
}
|
||||
}
|
||||
39
objects/o_new_spell/o_new_spell.yy
generated
Normal file
39
objects/o_new_spell/o_new_spell.yy
generated
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_new_spell",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_new_spell",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Spells",
|
||||
"path":"folders/Spells.yy",
|
||||
},
|
||||
"parentObjectId":null,
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_new_spell",
|
||||
"path":"sprites/s_new_spell/s_new_spell.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
1
objects/o_parent_enemy/CleanUp_0.gml
Normal file
1
objects/o_parent_enemy/CleanUp_0.gml
Normal file
@@ -0,0 +1 @@
|
||||
get_damaged_destroy();
|
||||
4
objects/o_parent_enemy/Create_0.gml
Normal file
4
objects/o_parent_enemy/Create_0.gml
Normal file
@@ -0,0 +1,4 @@
|
||||
event_inherited();
|
||||
get_damaged_create(100);
|
||||
|
||||
global.totalEnemiesSpawned++;
|
||||
13
objects/o_parent_enemy/Other_7.gml
Normal file
13
objects/o_parent_enemy/Other_7.gml
Normal file
@@ -0,0 +1,13 @@
|
||||
if sprite_index == sprites[4] {
|
||||
global.enemyKillCount++;
|
||||
|
||||
// Drop healing milk
|
||||
var _drop_chance = 10;
|
||||
var _chance = irandom(100);
|
||||
|
||||
if global.enemyKillCount mod 20 == 0 || _chance <= _drop_chance {
|
||||
instance_create_depth(x, y, -600, o_potion);
|
||||
}
|
||||
|
||||
instance_destroy();
|
||||
}
|
||||
2
objects/o_parent_enemy/Step_0.gml
Normal file
2
objects/o_parent_enemy/Step_0.gml
Normal file
@@ -0,0 +1,2 @@
|
||||
// Damaged
|
||||
get_damaged(o_enemy_hurt);
|
||||
41
objects/o_parent_enemy/o_parent_enemy.yy
generated
Normal file
41
objects/o_parent_enemy/o_parent_enemy.yy
generated
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_parent_enemy",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":7,"eventType":7,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":12,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_parent_enemy",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Enemies",
|
||||
"path":"folders/Enemies.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_player_hurt",
|
||||
"path":"objects/o_player_hurt/o_player_hurt.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
2
objects/o_parent_hurt/Create_0.gml
Normal file
2
objects/o_parent_hurt/Create_0.gml
Normal file
@@ -0,0 +1,2 @@
|
||||
damage = 10;
|
||||
hit_confirmed = false;
|
||||
35
objects/o_parent_hurt/o_parent_hurt.yy
generated
Normal file
35
objects/o_parent_hurt/o_parent_hurt.yy
generated
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_parent_hurt",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_parent_hurt",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Generic",
|
||||
"path":"folders/Generic.yy",
|
||||
},
|
||||
"parentObjectId":null,
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
3
objects/o_pause_menu/Create_0.gml
Normal file
3
objects/o_pause_menu/Create_0.gml
Normal file
@@ -0,0 +1,3 @@
|
||||
alpha = 0.7;
|
||||
|
||||
depth = -10000;
|
||||
16
objects/o_pause_menu/Draw_0.gml
Normal file
16
objects/o_pause_menu/Draw_0.gml
Normal file
@@ -0,0 +1,16 @@
|
||||
var _cam_x = camera_get_view_x(view_camera[0]);
|
||||
var _cam_w = camera_get_view_width(view_camera[0]);
|
||||
var _cam_y = camera_get_view_y(view_camera[0]);
|
||||
var _cam_h = camera_get_view_height(view_camera[0]);
|
||||
|
||||
draw_set_alpha(alpha);
|
||||
draw_rectangle_color(_cam_x, _cam_y, _cam_w + _cam_x, _cam_h + _cam_y, c_black, c_black, c_black, c_black, false);
|
||||
draw_set_halign(fa_center);
|
||||
draw_set_valign(fa_middle);
|
||||
draw_set_font(fnt_Tiny5);
|
||||
draw_text_transformed(_cam_x + (_cam_w / 2), _cam_y + (_cam_h / 2) - 20, "PAUSED", 4, 4, 0);
|
||||
draw_sprite_ext(s_key_esc, image_index, _cam_x + (_cam_w / 2) + 160, _cam_y + (_cam_h / 2) + 60, 1.5, 1.5, 0, c_white, alpha);
|
||||
draw_text_transformed(_cam_x + (_cam_w / 2), _cam_y + (_cam_h / 2) + 50, "-< Press ESC to resume", 1, 1, 0);
|
||||
draw_set_halign(fa_left);
|
||||
draw_set_valign(fa_top);
|
||||
draw_set_alpha(1);
|
||||
4
objects/o_pause_menu/Step_0.gml
Normal file
4
objects/o_pause_menu/Step_0.gml
Normal file
@@ -0,0 +1,4 @@
|
||||
if !instance_exists(o_player) {
|
||||
instance_destroy();
|
||||
exit;
|
||||
}
|
||||
40
objects/o_pause_menu/o_pause_menu.yy
generated
Normal file
40
objects/o_pause_menu/o_pause_menu.yy
generated
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_pause_menu",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":8,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_pause_menu",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Controllers",
|
||||
"path":"folders/Controllers.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_screen_pause",
|
||||
"path":"objects/o_screen_pause/o_screen_pause.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
36
objects/o_player/Create_0.gml
Normal file
36
objects/o_player/Create_0.gml
Normal file
@@ -0,0 +1,36 @@
|
||||
// Vital stats
|
||||
get_damaged_create(200, true);
|
||||
|
||||
|
||||
// Movement variables
|
||||
move_dir = 0;
|
||||
move_spd = 2;
|
||||
x_speed = 0;
|
||||
y_speed = 0;
|
||||
|
||||
// Aiming variables
|
||||
center_y_offset = -5;
|
||||
center_y = y + center_y_offset;
|
||||
aim_dir = 0;
|
||||
|
||||
// Sprite controls
|
||||
face = 1;
|
||||
sprites[0] = s_player_idle;
|
||||
sprites[1] = s_player_walk;
|
||||
sprites[2] = s_player_attack;
|
||||
sprites[3] = s_player_hurt;
|
||||
sprites[4] = s_player_death;
|
||||
sprites[5] = s_player_heal;
|
||||
|
||||
sprite_index = sprites[0];
|
||||
|
||||
// Weapon info
|
||||
shoot_timer = 0;
|
||||
heal_timer = 0;
|
||||
heal_cooldown = 30 * 60;
|
||||
weapon_offset_dist = 5;
|
||||
weapon_length = sprite_get_bbox_right(s_aimer) - sprite_get_xoffset(s_aimer);
|
||||
|
||||
// Add weapon to player's inventory
|
||||
selected_weapon = 0;
|
||||
weapon = global.PlayerWeapons[selected_weapon];
|
||||
10
objects/o_player/Draw_0.gml
Normal file
10
objects/o_player/Draw_0.gml
Normal file
@@ -0,0 +1,10 @@
|
||||
if aim_dir >= 0 && aim_dir < 180 {
|
||||
draw_own_weapon();
|
||||
}
|
||||
|
||||
|
||||
draw_sprite_ext(sprite_index, image_index, x, y, face, image_yscale, image_angle, image_blend, image_alpha);
|
||||
|
||||
if aim_dir >= 180 && aim_dir < 360 {
|
||||
draw_own_weapon();
|
||||
}
|
||||
4
objects/o_player/Other_7.gml
Normal file
4
objects/o_player/Other_7.gml
Normal file
@@ -0,0 +1,4 @@
|
||||
if sprite_index == sprites[4] {
|
||||
instance_create_depth(0, 0, -10000, o_game_over);
|
||||
instance_destroy();
|
||||
}
|
||||
143
objects/o_player/Step_0.gml
Normal file
143
objects/o_player/Step_0.gml
Normal file
@@ -0,0 +1,143 @@
|
||||
var right_key = global.right_key;
|
||||
var left_key = global.left_key;
|
||||
var up_key = global.up_key;
|
||||
var down_key = global.down_key;
|
||||
var shoot_key = global.shoot_key;
|
||||
var swap_key_pressed = global.swap_key_pressed;
|
||||
var heal_key_pressed = global.heal_key_pressed;
|
||||
var pause_key_pressed = global.pause_key_pressed;
|
||||
|
||||
// Pause game
|
||||
if pause_key_pressed {
|
||||
if !instance_exists(o_pause_menu) {
|
||||
instance_create_depth(0, 0, -10000, o_pause_menu);
|
||||
} else {
|
||||
instance_destroy(o_pause_menu);
|
||||
}
|
||||
}
|
||||
|
||||
if pause_movement() { exit; }
|
||||
|
||||
// Movements
|
||||
#region
|
||||
var _horizontal_key = right_key - left_key;
|
||||
var _vertical_key = down_key - up_key;
|
||||
move_dir = point_direction(0, 0, _horizontal_key, _vertical_key);
|
||||
|
||||
// Speeds
|
||||
var _speed = 0;
|
||||
var _input_lvl = point_distance(0, 0, _horizontal_key, _vertical_key);
|
||||
_input_lvl = clamp(_input_lvl, 0 , 1);
|
||||
_speed = move_spd * _input_lvl;
|
||||
|
||||
x_speed = lengthdir_x(_speed, move_dir);
|
||||
y_speed = lengthdir_y(_speed, move_dir);
|
||||
|
||||
// Collision
|
||||
if place_meeting(x + x_speed, y, o_wall) {
|
||||
x_speed = 0;
|
||||
}
|
||||
if place_meeting(x, y + y_speed, o_wall) {
|
||||
y_speed = 0;
|
||||
}
|
||||
|
||||
x += x_speed;
|
||||
y += y_speed;
|
||||
|
||||
depth = -600;
|
||||
#endregion
|
||||
|
||||
// Sprite controls
|
||||
#region
|
||||
// Determine if the player is moving
|
||||
var is_moving = (_horizontal_key != 0 || _vertical_key != 0);
|
||||
|
||||
// Update animation based on movement
|
||||
if (is_moving) {
|
||||
sprite_index = sprites[1]; // Walking animation
|
||||
} else {
|
||||
sprite_index = sprites[0]; // Idle animation
|
||||
}
|
||||
|
||||
// Determine facing direction
|
||||
if (_horizontal_key != 0) {
|
||||
face = sign(_horizontal_key);
|
||||
} else if (!is_moving) {
|
||||
var _mouse_x_offset = mouse_x - x;
|
||||
face = (_mouse_x_offset > 0) ? 1 : -1;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// Get damaged
|
||||
if get_damaged(o_player_hurt, true) {
|
||||
audio_play_sound(hurt_sound, 0, false);
|
||||
create_screen_pause(6);
|
||||
camera_shake(6);
|
||||
}
|
||||
|
||||
// Aiming
|
||||
#region
|
||||
center_y = y + center_y_offset;
|
||||
aim_dir = point_direction(x, center_y, mouse_x, mouse_y)
|
||||
#endregion
|
||||
|
||||
// Shooting
|
||||
#region
|
||||
if shoot_key {
|
||||
sprite_index = sprites[2];
|
||||
}
|
||||
|
||||
if shoot_timer > 0 {
|
||||
shoot_timer--;
|
||||
}
|
||||
|
||||
if shoot_key && shoot_timer <= 0 {
|
||||
|
||||
shoot_timer = weapon.cooldown;
|
||||
|
||||
var _x_offset = lengthdir_x(weapon_length + weapon_offset_dist, aim_dir);
|
||||
var _y_offset = lengthdir_y(weapon_length + weapon_offset_dist, aim_dir);
|
||||
|
||||
var _spread = weapon.bullet_spread;
|
||||
var _spread_div = _spread / max(weapon.bullet_num - 1, 1);
|
||||
|
||||
for (var i = 0; i < weapon.bullet_num; i++) {
|
||||
var _bullet_inst = instance_create_depth(x + _x_offset + i*10, center_y + _y_offset, depth-50, weapon.bullet_obj);
|
||||
with (_bullet_inst) {
|
||||
bullet_dir = other.aim_dir - _spread/2 + _spread_div*i;
|
||||
image_angle = bullet_dir;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
// Heal
|
||||
#region
|
||||
if (heal_timer > 0) {
|
||||
heal_timer--; // Reduce cooldown timer each step
|
||||
}
|
||||
|
||||
if (heal_key_pressed && heal_timer <= 0) {
|
||||
instance_create_depth(x, y, depth - 100, o_heal); // Spawn heal effect
|
||||
sprite_index = sprites[5]; // Play heal animation
|
||||
heal_timer = heal_cooldown; // Set cooldown
|
||||
audio_play_sound(item_pick, 0, false);
|
||||
hp += 20;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// Swap weapons
|
||||
#region
|
||||
var _player_weapons = global.PlayerWeapons;
|
||||
if swap_key_pressed {
|
||||
selected_weapon++;
|
||||
if selected_weapon >= array_length(_player_weapons) {
|
||||
selected_weapon = 0;
|
||||
}
|
||||
weapon = _player_weapons[selected_weapon];
|
||||
}
|
||||
#endregion
|
||||
|
||||
// Die
|
||||
is_dying(sprites[4]);
|
||||
|
||||
41
objects/o_player/o_player.yy
generated
Normal file
41
objects/o_player/o_player.yy
generated
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_player",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":8,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":7,"eventType":7,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_player",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Player",
|
||||
"path":"folders/Player.yy",
|
||||
},
|
||||
"parentObjectId":null,
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_player_walk",
|
||||
"path":"sprites/s_player_walk/s_player_walk.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
36
objects/o_player_hurt/o_player_hurt.yy
generated
Normal file
36
objects/o_player_hurt/o_player_hurt.yy
generated
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_player_hurt",
|
||||
"eventList":[],
|
||||
"managed":true,
|
||||
"name":"o_player_hurt",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Player",
|
||||
"path":"folders/Player.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_parent_hurt",
|
||||
"path":"objects/o_parent_hurt/o_parent_hurt.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
8
objects/o_poison/Create_0.gml
Normal file
8
objects/o_poison/Create_0.gml
Normal file
@@ -0,0 +1,8 @@
|
||||
// Inherit the parent event
|
||||
event_inherited();
|
||||
|
||||
damage = 5;
|
||||
bullet_spd = 8;
|
||||
max_distance = 600;
|
||||
s_destroy = s_poison_destroy;
|
||||
pass_through_enemy = true;
|
||||
41
objects/o_poison/o_poison.yy
generated
Normal file
41
objects/o_poison/o_poison.yy
generated
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_poison",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_poison",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Spells",
|
||||
"path":"folders/Spells.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_fireball",
|
||||
"path":"objects/o_fireball/o_fireball.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_poison",
|
||||
"path":"sprites/s_poison/s_poison.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
4
objects/o_potion/Create_0.gml
Normal file
4
objects/o_potion/Create_0.gml
Normal file
@@ -0,0 +1,4 @@
|
||||
depth = -600;
|
||||
heal = 50;
|
||||
float_dir = 0;
|
||||
float_spd = 3;
|
||||
12
objects/o_potion/Step_0.gml
Normal file
12
objects/o_potion/Step_0.gml
Normal file
@@ -0,0 +1,12 @@
|
||||
// Pause
|
||||
if pause_movement() { exit; }
|
||||
|
||||
float_dir += float_spd;
|
||||
y = ystart + dsin(float_dir) * 2;
|
||||
|
||||
// Heal player
|
||||
if place_meeting(x, y, o_player) {
|
||||
o_player.hp += heal;
|
||||
audio_play_sound(item_pick, 0, false);
|
||||
instance_destroy();
|
||||
}
|
||||
39
objects/o_potion/o_potion.yy
generated
Normal file
39
objects/o_potion/o_potion.yy
generated
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_potion",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_potion",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Player",
|
||||
"path":"folders/Player.yy",
|
||||
},
|
||||
"parentObjectId":null,
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_potion",
|
||||
"path":"sprites/s_potion/s_potion.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
33
objects/o_screen_pause/o_screen_pause.yy
generated
Normal file
33
objects/o_screen_pause/o_screen_pause.yy
generated
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_screen_pause",
|
||||
"eventList":[],
|
||||
"managed":true,
|
||||
"name":"o_screen_pause",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Controllers",
|
||||
"path":"folders/Controllers.yy",
|
||||
},
|
||||
"parentObjectId":null,
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
1
objects/o_screen_pause_timed/Create_0.gml
Normal file
1
objects/o_screen_pause_timed/Create_0.gml
Normal file
@@ -0,0 +1 @@
|
||||
timer = 8;
|
||||
2
objects/o_screen_pause_timed/Step_0.gml
Normal file
2
objects/o_screen_pause_timed/Step_0.gml
Normal file
@@ -0,0 +1,2 @@
|
||||
if timer <= 0 { instance_destroy(); };
|
||||
timer--;
|
||||
39
objects/o_screen_pause_timed/o_screen_pause_timed.yy
generated
Normal file
39
objects/o_screen_pause_timed/o_screen_pause_timed.yy
generated
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_screen_pause_timed",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_screen_pause_timed",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Controllers",
|
||||
"path":"folders/Controllers.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_screen_pause",
|
||||
"path":"objects/o_screen_pause/o_screen_pause.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
7
objects/o_shards/Create_0.gml
Normal file
7
objects/o_shards/Create_0.gml
Normal file
@@ -0,0 +1,7 @@
|
||||
// Inherit the parent event
|
||||
event_inherited();
|
||||
|
||||
damage = 20;
|
||||
bullet_spd = 6;
|
||||
max_distance = 400;
|
||||
s_destroy = s_shards_destroy;
|
||||
41
objects/o_shards/o_shards.yy
generated
Normal file
41
objects/o_shards/o_shards.yy
generated
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_shards",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_shards",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Spells",
|
||||
"path":"folders/Spells.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_fireball",
|
||||
"path":"objects/o_fireball/o_fireball.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_shards",
|
||||
"path":"sprites/s_shards/s_shards.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
39
objects/o_solid_wall/o_solid_wall.yy
generated
Normal file
39
objects/o_solid_wall/o_solid_wall.yy
generated
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_solid_wall",
|
||||
"eventList":[],
|
||||
"managed":true,
|
||||
"name":"o_solid_wall",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Rooms",
|
||||
"path":"folders/Rooms.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_wall",
|
||||
"path":"objects/o_wall/o_wall.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_solid_wall",
|
||||
"path":"sprites/s_solid_wall/s_solid_wall.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
4
objects/o_spawner/Create_0.gml
Normal file
4
objects/o_spawner/Create_0.gml
Normal file
@@ -0,0 +1,4 @@
|
||||
depth = -bbox_top;
|
||||
|
||||
timer = 600;
|
||||
spawn_time = 10 * 60;
|
||||
18
objects/o_spawner/Step_0.gml
Normal file
18
objects/o_spawner/Step_0.gml
Normal file
@@ -0,0 +1,18 @@
|
||||
if pause_movement() { exit; }
|
||||
|
||||
timer++;
|
||||
|
||||
// Reset when limit reached
|
||||
if instance_number(o_parent_enemy) >= global.enemyActiveMax || global.totalEnemiesSpawned >= global.enemyRoomMax {
|
||||
timer = 0;
|
||||
}
|
||||
|
||||
// Spawn enemy
|
||||
if timer >= spawn_time && !place_meeting(x, y, o_archer) {
|
||||
var _inst = instance_create_depth(x, y, -500, o_archer);
|
||||
with _inst {
|
||||
image_alpha = 0;
|
||||
state = -1;
|
||||
}
|
||||
timer = 0;
|
||||
}
|
||||
42
objects/o_spawner/o_spawner.yy
generated
Normal file
42
objects/o_spawner/o_spawner.yy
generated
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_spawner",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_spawner",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Enemies",
|
||||
"path":"folders/Enemies.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_solid_wall",
|
||||
"path":"objects/o_solid_wall/o_solid_wall.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":{
|
||||
"name":"s_spawner",
|
||||
"path":"sprites/s_spawner/s_spawner.yy",
|
||||
},
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
3
objects/o_start_menu/Create_0.gml
Normal file
3
objects/o_start_menu/Create_0.gml
Normal file
@@ -0,0 +1,3 @@
|
||||
alpha = 1;
|
||||
|
||||
depth = -9000;
|
||||
24
objects/o_start_menu/Draw_0.gml
Normal file
24
objects/o_start_menu/Draw_0.gml
Normal file
@@ -0,0 +1,24 @@
|
||||
var _cam_x = camera_get_view_x(view_camera[0]);
|
||||
var _cam_w = camera_get_view_width(view_camera[0]);
|
||||
var _cam_y = camera_get_view_y(view_camera[0]);
|
||||
var _cam_h = camera_get_view_height(view_camera[0]);
|
||||
|
||||
draw_set_alpha(alpha);
|
||||
draw_rectangle_color(_cam_x, _cam_y, _cam_w + _cam_x, _cam_h + _cam_y, c_green, c_green, c_green, c_green, false);
|
||||
draw_set_halign(fa_center);
|
||||
draw_set_valign(fa_middle);
|
||||
draw_set_font(fnt_Tiny5);
|
||||
draw_text_transformed(_cam_x + (_cam_w / 2), _cam_y + (_cam_h / 2) - 40, "Bit Blaster", 4, 4, 0);
|
||||
var pulse = 1 + 0.05 * sin(current_time * 0.01);
|
||||
if global.first_start {
|
||||
draw_sprite_ext(s_key_enter, image_index, _cam_x + (_cam_w / 2) + 160, _cam_y + (_cam_h / 2) + 40, 0.5 + pulse, 0.5 + pulse, 0, c_white, 1);
|
||||
draw_text_transformed(_cam_x + (_cam_w / 2), _cam_y + (_cam_h / 2) + 30, "-< Press Enter to start", pulse, pulse, 0);
|
||||
} else {
|
||||
draw_sprite_ext(s_key_enter, image_index, _cam_x + (_cam_w / 2) + 180, _cam_y + (_cam_h / 2) + 40, 0.5 + pulse, 0.5 + pulse, 0, c_white, 1);
|
||||
draw_text_transformed(_cam_x + (_cam_w / 2), _cam_y + (_cam_h / 2) + 30, "-< Press Enter to continue", pulse, pulse, 0);
|
||||
}
|
||||
draw_sprite_ext(s_key_space, image_index, _cam_x + (_cam_w / 2) + 180, _cam_y + (_cam_h / 2) + 80, 1.5, 1.5, 0, c_white, 1);
|
||||
draw_text_transformed(_cam_x + (_cam_w / 2), _cam_y + (_cam_h / 2) + 70, "-< Press Space for tutorial", 1, 1, 0);
|
||||
draw_set_halign(fa_left);
|
||||
draw_set_valign(fa_top);
|
||||
draw_set_alpha(1);
|
||||
10
objects/o_start_menu/Step_0.gml
Normal file
10
objects/o_start_menu/Step_0.gml
Normal file
@@ -0,0 +1,10 @@
|
||||
if global.start_key_pressed {
|
||||
instance_destroy();
|
||||
global.first_start = false;
|
||||
}
|
||||
|
||||
if global.space_key_pressed {
|
||||
instance_destroy();
|
||||
|
||||
instance_create_depth(0, 0, -10000, o_tutorial);
|
||||
}
|
||||
40
objects/o_start_menu/o_start_menu.yy
generated
Normal file
40
objects/o_start_menu/o_start_menu.yy
generated
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"$GMObject":"",
|
||||
"%Name":"o_start_menu",
|
||||
"eventList":[
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":8,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
{"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":3,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",},
|
||||
],
|
||||
"managed":true,
|
||||
"name":"o_start_menu",
|
||||
"overriddenProperties":[],
|
||||
"parent":{
|
||||
"name":"Controllers",
|
||||
"path":"folders/Controllers.yy",
|
||||
},
|
||||
"parentObjectId":{
|
||||
"name":"o_screen_pause",
|
||||
"path":"objects/o_screen_pause/o_screen_pause.yy",
|
||||
},
|
||||
"persistent":false,
|
||||
"physicsAngularDamping":0.1,
|
||||
"physicsDensity":0.5,
|
||||
"physicsFriction":0.2,
|
||||
"physicsGroup":1,
|
||||
"physicsKinematic":false,
|
||||
"physicsLinearDamping":0.1,
|
||||
"physicsObject":false,
|
||||
"physicsRestitution":0.1,
|
||||
"physicsSensor":false,
|
||||
"physicsShape":1,
|
||||
"physicsShapePoints":[],
|
||||
"physicsStartAwake":true,
|
||||
"properties":[],
|
||||
"resourceType":"GMObject",
|
||||
"resourceVersion":"2.0",
|
||||
"solid":false,
|
||||
"spriteId":null,
|
||||
"spriteMaskId":null,
|
||||
"visible":true,
|
||||
}
|
||||
18
objects/o_tutorial/Create_0.gml
Normal file
18
objects/o_tutorial/Create_0.gml
Normal file
@@ -0,0 +1,18 @@
|
||||
alpha = 1;
|
||||
|
||||
depth = -10000;
|
||||
|
||||
image_speed = 0.2;
|
||||
|
||||
icons = {
|
||||
wasd: s_key_wasd,
|
||||
mouse_left: s_mouse_left,
|
||||
mouse_right: s_mouse_right,
|
||||
heal: s_key_q,
|
||||
skeleton: s_key_wasd,
|
||||
milk: s_key_wasd,
|
||||
wizard: s_key_wasd,
|
||||
tree: s_key_wasd,
|
||||
stump: s_key_wasd,
|
||||
coal: s_key_wasd,
|
||||
};
|
||||
45
objects/o_tutorial/Draw_0.gml
Normal file
45
objects/o_tutorial/Draw_0.gml
Normal file
@@ -0,0 +1,45 @@
|
||||
var _cam_x = camera_get_view_x(view_camera[0]);
|
||||
var _cam_w = camera_get_view_width(view_camera[0]);
|
||||
var _cam_y = camera_get_view_y(view_camera[0]);
|
||||
var _cam_h = camera_get_view_height(view_camera[0]);
|
||||
|
||||
draw_set_alpha(alpha);
|
||||
draw_rectangle_color(_cam_x, _cam_y, _cam_w + _cam_x, _cam_h + _cam_y, c_black, c_black, c_black, c_black, false);
|
||||
|
||||
draw_set_font(fnt_Tiny5);
|
||||
draw_text_transformed(_cam_x + 10, _cam_y, "Tutorial", 2, 2, 0);
|
||||
|
||||
var start_x = _cam_x + 40;
|
||||
var start_y = _cam_y + 50;
|
||||
var line_height = 24;
|
||||
|
||||
draw_text(start_x, start_y, "");
|
||||
draw_sprite_ext(s_key_wasd, 0, start_x - 20, start_y + line_height + 23, 0.5, 0.5, 0, c_white, 1);
|
||||
draw_text(start_x, start_y + line_height, "- WASD: Player's movement");
|
||||
draw_sprite_ext(s_mouse_left, 0, start_x - 20, start_y + line_height*2 + 23, 1, 1, 0, c_white, 1);
|
||||
draw_text(start_x, start_y + line_height*2, "- Left Click: Shoot spell");
|
||||
draw_sprite_ext(s_mouse_right, 0, start_x - 20, start_y + line_height*3 + 23, 1, 1, 0, c_white, 1);
|
||||
draw_text(start_x, start_y + line_height*3, "- Right Click: Switch spell");
|
||||
draw_sprite_ext(s_key_q, 0, start_x - 20, start_y + line_height*4 + 23, 1, 1, 0, c_white, 1);
|
||||
draw_text(start_x, start_y + line_height*4, "- Q: Heal 20 HP (30s cooldown)");
|
||||
draw_sprite_ext(s_archer_walk, image_index, start_x - 20, start_y + line_height*5 + 16, 1, 1, 0, c_white, 1);
|
||||
draw_text(start_x, start_y + line_height*5, "- Kill skeletons to reach target");
|
||||
draw_sprite_ext(s_potion, 0, start_x - 20, start_y + line_height*6 + 23, 1, 1, 0, c_white, 1);
|
||||
draw_text(start_x, start_y + line_height*6, "- Milk cartons heal 50 HP");
|
||||
draw_sprite_ext(s_support_spells, 0, start_x - 20, start_y + line_height*7 + 23, 1, 1, 0, c_white, 1);
|
||||
draw_sprite_ext(s_new_spell, 0, start_x - 20, start_y + line_height*7 + 5, 0.6, 0.6, 0, c_white, 1);
|
||||
draw_text(start_x, start_y + line_height*7, "- Find dead wizards for new spells (4 total)");
|
||||
draw_sprite_ext(s_blocker, 0, start_x - 20, start_y + line_height*8 + 23, 0.5, 0.5, 0, c_white, 1);
|
||||
draw_text(start_x, start_y + line_height*8, "- Trees block arrows (until stumps)");
|
||||
draw_sprite_ext(s_blocker_stump, 0, start_x - 20, start_y + line_height*9 + 16, 1, 1, 0, c_white, 1);
|
||||
draw_text(start_x, start_y + line_height*9, "- Stumps block movement only (can be destroyed)");
|
||||
draw_sprite_ext(s_explosive, image_index, start_x - 20, start_y + line_height*10 + 16, 1, 1, 0, c_white, 1);
|
||||
draw_text(start_x, start_y + line_height*10, "- Coal crate explodes when too damaged");
|
||||
|
||||
var pulse = 1 + 0.05 * sin(current_time * 0.01);
|
||||
draw_sprite_ext(s_key_back, image_index, _cam_x + 610, _cam_y + 45, 0.5 + pulse, 0.5 + pulse, 0, c_white, 1);
|
||||
draw_text_transformed(_cam_x + 225, _cam_y + 20, "-< Press Backspace to return", pulse, pulse, 0);
|
||||
|
||||
draw_set_halign(fa_left);
|
||||
draw_set_valign(fa_top);
|
||||
draw_set_alpha(1);
|
||||
5
objects/o_tutorial/Step_0.gml
Normal file
5
objects/o_tutorial/Step_0.gml
Normal file
@@ -0,0 +1,5 @@
|
||||
if global.back_key_pressed {
|
||||
instance_destroy();
|
||||
|
||||
instance_create_depth(0, 0, -9000, o_start_menu);
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user