Add project code

This commit is contained in:
Andrew Trieu
2025-04-20 15:57:23 +03:00
committed by Andrew Trieu
commit 3fbd0e4977
612 changed files with 11196 additions and 0 deletions

View 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];

View 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();
}

View 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
View 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
View 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,
}