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,6 @@
function camera_shake(_amount = 5){
with (o_camera) {
x_shake_amt = _amount;
y_shake_amt = _amount;
}
}

13
scripts/camera_shake/camera_shake.yy generated Normal file
View File

@@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"camera_shake",
"isCompatibility":false,
"isDnD":false,
"name":"camera_shake",
"parent":{
"name":"Scripts",
"path":"folders/Scripts.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View File

@@ -0,0 +1,6 @@
function create_screen_pause(_timer = 8) {
var _inst = instance_create_depth(0, 0, -10000, o_screen_pause_timed);
with _inst {
_inst.timer = _timer;
}
}

View File

@@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"create_screen_pause",
"isCompatibility":false,
"isDnD":false,
"name":"create_screen_pause",
"parent":{
"name":"Scripts",
"path":"folders/Scripts.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View File

@@ -0,0 +1,23 @@
function create_weapon(_name = "Fireball", _sprite = s_fireball, _bullet_obj = o_fireball, _cooldown = 24, _bullet_num = 1, _bullet_spread = 0) constructor {
name = _name;
sprite = _sprite;
bullet_obj = _bullet_obj;
cooldown = _cooldown;
bullet_num = _bullet_num;
bullet_spread = _bullet_spread;
}
// Player-owned weapons
global.PlayerWeapons = array_create(0);
// All available weapons
global.WeaponList = {
fireball: new create_weapon("Fireball", s_fireball, o_fireball, 24),
icebolt: new create_weapon("Ice bolt",s_icebolt, o_icebolt, 48),
poison: new create_weapon("Poisonous cloud", s_poison, o_poison, 12),
shards: new create_weapon("Emerald shard", s_shards, o_shards, 20, 3, 45),
disc: new create_weapon("Sapphire disc", s_disc, o_disc, 16, 5, 90),
}
array_push(global.PlayerWeapons, global.WeaponList.fireball);

13
scripts/create_weapon/create_weapon.yy generated Normal file
View File

@@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"create_weapon",
"isCompatibility":false,
"isDnD":false,
"name":"create_weapon",
"parent":{
"name":"Scripts",
"path":"folders/Scripts.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View File

@@ -0,0 +1,7 @@
function destroy_projectile(){
is_exploding = true;
sprite_index = s_destroy;
image_index = 0; // Reset animation
image_speed = 1; // Play explosion animation
bullet_spd = 0; // Stop movement
}

View File

@@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"destroy_projectile",
"isCompatibility":false,
"isDnD":false,
"name":"destroy_projectile",
"parent":{
"name":"Scripts",
"path":"folders/Scripts.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View File

@@ -0,0 +1,12 @@
// Draw player's weapon
function draw_own_weapon() {
var _x_offset = lengthdir_x(weapon_offset_dist, aim_dir);
var _y_offset = lengthdir_y(weapon_offset_dist, aim_dir);
var _weapon_y_scale = 1;
if aim_dir > 90 and aim_dir < 270 {
_weapon_y_scale = -1;
}
draw_sprite_ext(s_aimer, 0, x + _x_offset, center_y + _y_offset, 1, _weapon_y_scale, aim_dir, c_white, 0.5);
};

13
scripts/draw_aimer/draw_aimer.yy generated Normal file
View File

@@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"draw_aimer",
"isCompatibility":false,
"isDnD":false,
"name":"draw_aimer",
"parent":{
"name":"Scripts",
"path":"folders/Scripts.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View File

@@ -0,0 +1,23 @@
function draw_tutorial_line(y_pos, icon_name, text) {
// Draw icon if it exists
if (variable_struct_exists(icons, icon_name)) {
var icon_sprite = icons[$ icon_name];
if (sprite_exists(icon_sprite)) {
var icon_x = _cam_x + 20;
var icon_y = y_pos + (line_height/2) - (icon_size/2);
draw_sprite_ext(
icon_sprite,
0,
icon_x,
icon_y,
icon_size/sprite_get_width(icon_sprite),
icon_size/sprite_get_height(icon_sprite),
0,
c_white,
1
);
}
}
// Draw text
draw_text(start_x, y_pos, text);
}

View File

@@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"draw_tutorial_line",
"isCompatibility":false,
"isDnD":false,
"name":"draw_tutorial_line",
"parent":{
"name":"Scripts",
"path":"folders/Scripts.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View File

@@ -0,0 +1,80 @@
function get_damaged(_dmg_obj, _iframes = false, _hurt_sprite = true){
var _hit_confirmed = false;
// Exit iframe timer
if _iframes && iframes_timer > 0 {
iframes_timer--;
if iframes_timer mod 5 == 0
{
if image_alpha == 1 {
image_alpha = 0;
} else {
image_alpha = 1;
}
}
hp = clamp(hp, 0, max_hp);
return _hit_confirmed;
}
if _iframes {
image_alpha = 1;
}
if place_meeting(x, y, _dmg_obj) || (_dmg_obj != o_all_hurt && place_meeting(x, y, o_all_hurt)) {
var _inst_list = ds_list_create();
instance_place_list(x, y, _dmg_obj, _inst_list, false);
if _dmg_obj != o_all_hurt {
instance_place_list(x, y, o_all_hurt, _inst_list, false);
}
var _list_size = ds_list_size(_inst_list);
for (var i = 0; i < _list_size; i++) {
var _inst = ds_list_find_value(_inst_list, i);
if _iframes || ds_list_find_index(dmg_list, _inst) == -1 {
if !_iframes {
ds_list_add(dmg_list, _inst);
}
hp -= _inst.damage;
_hit_confirmed = true;
_inst.hit_confirmed = true;
}
}
if _iframes && _hit_confirmed {
iframes_timer = iframes_number;
}
ds_list_destroy( _inst_list);
if _hurt_sprite {
if hp > 0 && sprite_index != sprites[3] {
sprite_index = sprites[3];
}
}
}
if !_iframes {
var _dmg_list_size = ds_list_size(dmg_list);
for (var i = 0; i < _dmg_list_size; i++) {
var _inst = ds_list_find_value(dmg_list, i);
if !instance_exists(_inst) || !place_meeting(x, y, _inst) {
ds_list_delete(dmg_list, i);
i--;
_dmg_list_size--;
}
}
}
hp = clamp(hp, 0, max_hp);
return _hit_confirmed;
}

13
scripts/get_damaged/get_damaged.yy generated Normal file
View File

@@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"get_damaged",
"isCompatibility":false,
"isDnD":false,
"name":"get_damaged",
"parent":{
"name":"Scripts",
"path":"folders/Scripts.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View File

@@ -0,0 +1,14 @@
function get_damaged_create(_hp, _iframes = false){
max_hp = _hp;
hp = _hp;
is_stopping = false;
if _iframes {
iframes_timer = 0;
iframes_number = 90;
}
if !_iframes {
dmg_list = ds_list_create();
}
}

View File

@@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"get_damaged_create",
"isCompatibility":false,
"isDnD":false,
"name":"get_damaged_create",
"parent":{
"name":"Scripts",
"path":"folders/Scripts.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View File

@@ -0,0 +1,3 @@
function get_damaged_destroy(){
ds_list_destroy(dmg_list);
}

View File

@@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"get_damaged_destroy",
"isCompatibility":false,
"isDnD":false,
"name":"get_damaged_destroy",
"parent":{
"name":"Scripts",
"path":"folders/Scripts.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View File

@@ -0,0 +1,36 @@
function get_random_weapon() {
// Get array of weapon keys
var weapon_keys = variable_struct_get_names(global.WeaponList);
var available_weapons = array_create(0);
// Filter out weapons the player already has
for (var i = 0; i < array_length(weapon_keys); i++) {
var weapon_key = weapon_keys[i];
var weapon = variable_struct_get(global.WeaponList, weapon_key); // FIXED THIS LINE
// Check if player already has this weapon
var already_has = false;
for (var j = 0; j < array_length(global.PlayerWeapons); j++) {
if (global.PlayerWeapons[j].name == weapon.name) {
already_has = true;
break;
}
}
if (!already_has) {
array_push(available_weapons, weapon);
}
}
// If there are available weapons, pick one randomly
if (array_length(available_weapons) > 0) {
var random_index = irandom(array_length(available_weapons) - 1);
var new_weapon = available_weapons[random_index];
// Add to player's inventory
array_push(global.PlayerWeapons, new_weapon);
return new_weapon;
}
return undefined;
}

View File

@@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"get_random_weapon",
"isCompatibility":false,
"isDnD":false,
"name":"get_random_weapon",
"parent":{
"name":"Scripts",
"path":"folders/Scripts.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View File

@@ -0,0 +1,6 @@
function is_dying(_sprite){
if hp <= 0 && sprite_index != _sprite {
is_stopping = true;
sprite_index = _sprite;
}
}

13
scripts/is_dying/is_dying.yy generated Normal file
View File

@@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"is_dying",
"isCompatibility":false,
"isDnD":false,
"name":"is_dying",
"parent":{
"name":"Scripts",
"path":"folders/Scripts.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

View File

@@ -0,0 +1,9 @@
function pause_movement() {
if instance_exists(o_screen_pause) {
image_speed = 0;
return true;
} else {
image_speed = 1;
return false;
}
}

13
scripts/pause_movement/pause_movement.yy generated Normal file
View File

@@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"pause_movement",
"isCompatibility":false,
"isDnD":false,
"name":"pause_movement",
"parent":{
"name":"Scripts",
"path":"folders/Scripts.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}