Add project code
This commit is contained in:
6
scripts/camera_shake/camera_shake.gml
Normal file
6
scripts/camera_shake/camera_shake.gml
Normal 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
13
scripts/camera_shake/camera_shake.yy
generated
Normal 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",
|
||||
}
|
||||
6
scripts/create_screen_pause/create_screen_pause.gml
Normal file
6
scripts/create_screen_pause/create_screen_pause.gml
Normal 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;
|
||||
}
|
||||
}
|
||||
13
scripts/create_screen_pause/create_screen_pause.yy
generated
Normal file
13
scripts/create_screen_pause/create_screen_pause.yy
generated
Normal 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",
|
||||
}
|
||||
23
scripts/create_weapon/create_weapon.gml
Normal file
23
scripts/create_weapon/create_weapon.gml
Normal 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
13
scripts/create_weapon/create_weapon.yy
generated
Normal 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",
|
||||
}
|
||||
7
scripts/destroy_projectile/destroy_projectile.gml
Normal file
7
scripts/destroy_projectile/destroy_projectile.gml
Normal 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
|
||||
}
|
||||
13
scripts/destroy_projectile/destroy_projectile.yy
generated
Normal file
13
scripts/destroy_projectile/destroy_projectile.yy
generated
Normal 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",
|
||||
}
|
||||
12
scripts/draw_aimer/draw_aimer.gml
Normal file
12
scripts/draw_aimer/draw_aimer.gml
Normal 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
13
scripts/draw_aimer/draw_aimer.yy
generated
Normal 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",
|
||||
}
|
||||
23
scripts/draw_tutorial_line/draw_tutorial_line.gml
Normal file
23
scripts/draw_tutorial_line/draw_tutorial_line.gml
Normal 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);
|
||||
}
|
||||
13
scripts/draw_tutorial_line/draw_tutorial_line.yy
generated
Normal file
13
scripts/draw_tutorial_line/draw_tutorial_line.yy
generated
Normal 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",
|
||||
}
|
||||
80
scripts/get_damaged/get_damaged.gml
Normal file
80
scripts/get_damaged/get_damaged.gml
Normal 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
13
scripts/get_damaged/get_damaged.yy
generated
Normal 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",
|
||||
}
|
||||
14
scripts/get_damaged_create/get_damaged_create.gml
Normal file
14
scripts/get_damaged_create/get_damaged_create.gml
Normal 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();
|
||||
}
|
||||
}
|
||||
13
scripts/get_damaged_create/get_damaged_create.yy
generated
Normal file
13
scripts/get_damaged_create/get_damaged_create.yy
generated
Normal 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",
|
||||
}
|
||||
3
scripts/get_damaged_destroy/get_damaged_destroy.gml
Normal file
3
scripts/get_damaged_destroy/get_damaged_destroy.gml
Normal file
@@ -0,0 +1,3 @@
|
||||
function get_damaged_destroy(){
|
||||
ds_list_destroy(dmg_list);
|
||||
}
|
||||
13
scripts/get_damaged_destroy/get_damaged_destroy.yy
generated
Normal file
13
scripts/get_damaged_destroy/get_damaged_destroy.yy
generated
Normal 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",
|
||||
}
|
||||
36
scripts/get_random_weapon/get_random_weapon.gml
Normal file
36
scripts/get_random_weapon/get_random_weapon.gml
Normal 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;
|
||||
}
|
||||
13
scripts/get_random_weapon/get_random_weapon.yy
generated
Normal file
13
scripts/get_random_weapon/get_random_weapon.yy
generated
Normal 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",
|
||||
}
|
||||
6
scripts/is_dying/is_dying.gml
Normal file
6
scripts/is_dying/is_dying.gml
Normal 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
13
scripts/is_dying/is_dying.yy
generated
Normal 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",
|
||||
}
|
||||
9
scripts/pause_movement/pause_movement.gml
Normal file
9
scripts/pause_movement/pause_movement.gml
Normal 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
13
scripts/pause_movement/pause_movement.yy
generated
Normal 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",
|
||||
}
|
||||
Reference in New Issue
Block a user