From 3f09beb31138cdae368bc98e1d9130d3211e7db4 Mon Sep 17 00:00:00 2001 From: milesthenerd Date: Sat, 20 Mar 2021 14:44:48 -0500 Subject: [PATCH] More work on ice missiles and enemy behavior --- AM2R.project.gmx | 8 ++ objects/oAutoad.object.gmx | 8 ++ objects/oClient.object.gmx | 2 + objects/oControl.object.gmx | 2 + objects/oEnemy.object.gmx | 4 +- objects/oGunzoo.object.gmx | 27 +++++-- objects/oShirk.object.gmx | 99 +++++++++++++++-------- scripts/shoot_missile.gml | 10 ++- sprites/sGunzooArmor1Frozen.sprite.gmx | 25 ++++++ sprites/sGunzooArmor2Frozen.sprite.gmx | 25 ++++++ sprites/sGunzooTurnFrozen.sprite.gmx | 25 ++++++ sprites/sShirkArmor1Frozen.sprite.gmx | 25 ++++++ sprites/sShirkArmor2Frozen.sprite.gmx | 25 ++++++ sprites/sShirkTurnArmor1Frozen.sprite.gmx | 25 ++++++ sprites/sShirkTurnArmor2Frozen.sprite.gmx | 25 ++++++ sprites/sShirkTurnFrozen.sprite.gmx | 25 ++++++ sprites/sWallfireFrozen.sprite.gmx | 3 + 17 files changed, 319 insertions(+), 44 deletions(-) create mode 100644 sprites/sGunzooArmor1Frozen.sprite.gmx create mode 100644 sprites/sGunzooArmor2Frozen.sprite.gmx create mode 100644 sprites/sGunzooTurnFrozen.sprite.gmx create mode 100644 sprites/sShirkArmor1Frozen.sprite.gmx create mode 100644 sprites/sShirkArmor2Frozen.sprite.gmx create mode 100644 sprites/sShirkTurnArmor1Frozen.sprite.gmx create mode 100644 sprites/sShirkTurnArmor2Frozen.sprite.gmx create mode 100644 sprites/sShirkTurnFrozen.sprite.gmx diff --git a/AM2R.project.gmx b/AM2R.project.gmx index 6fe86d0c..0975913e 100644 --- a/AM2R.project.gmx +++ b/AM2R.project.gmx @@ -4585,6 +4585,14 @@ sprites\sIceMissileTrail sprites\sIMPickup sprites\sGUIIceMissile + sprites\sGunzooArmor1Frozen + sprites\sGunzooArmor2Frozen + sprites\sGunzooTurnFrozen + sprites\sShirkArmor1Frozen + sprites\sShirkArmor2Frozen + sprites\sShirkTurnArmor1Frozen + sprites\sShirkTurnArmor2Frozen + sprites\sShirkTurnFrozen diff --git a/objects/oAutoad.object.gmx b/objects/oAutoad.object.gmx index 2a40ae95..51e322d9 100644 --- a/objects/oAutoad.object.gmx +++ b/objects/oAutoad.object.gmx @@ -277,6 +277,14 @@ if (!flashing) { draw_sprite_ext(clawspr, -1, x - clawx, y + clawy, -1, 1, 360 - clawangle, -1, image_alpha); draw_sprite_ext(clawspr, -1, x + clawx, y + clawy, 1, 1, clawangle, -1, image_alpha); draw_sprite_ext(myspr, -1, x, y, image_xscale, 1, image_angle, -1, image_alpha); + if (frozen > 0 && frozen < freezetime * 0.2){ + draw_set_blend_mode(bm_add); + draw_sprite_ext(fangspr, -1, x, y + fangy, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); + draw_sprite_ext(clawspr, -1, x - clawx, y + clawy, -1, 1, 360 - clawangle, -1, 1 - fxtimer * 0.25); + draw_sprite_ext(clawspr, -1, x + clawx, y + clawy, 1, 1, clawangle, -1, 1 - fxtimer * 0.25); + draw_sprite_ext(myspr, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); + draw_set_blend_mode(bm_normal); + } } else if (flashing) { draw_sprite_ext(fangspr, -1, x, y + fangy, image_xscale, 1, image_angle, make_color_rgb(80, 80, 80), image_alpha); draw_set_blend_mode(bm_add); diff --git a/objects/oClient.object.gmx b/objects/oClient.object.gmx index 4e057e12..ac4bf8f5 100644 --- a/objects/oClient.object.gmx +++ b/objects/oClient.object.gmx @@ -1774,6 +1774,7 @@ switch(type_event){ var clientMapY = buffer_read(_buffer, buffer_s16); var findsocket = ds_list_find_index(roomList, clientID); + /* if(instance_exists(oCharacter)){ if(clientRoom == rm_death){ if(oCharacter.state != oCharacter.DEFEATED){ @@ -1784,6 +1785,7 @@ switch(type_event){ } } } + */ if(clientRoom == room && global.clientID != clientID){ sameRoom = true; diff --git a/objects/oControl.object.gmx b/objects/oControl.object.gmx index c06abe79..4a5d1eec 100644 --- a/objects/oControl.object.gmx +++ b/objects/oControl.object.gmx @@ -485,6 +485,8 @@ if(!file_exists(working_directory + "\dictionary.json")){ } global.icemissiles = 1; +global.clientID = 0; +global.currentweapon = 0; diff --git a/objects/oEnemy.object.gmx b/objects/oEnemy.object.gmx index d4154d7f..30246098 100644 --- a/objects/oEnemy.object.gmx +++ b/objects/oEnemy.object.gmx @@ -631,13 +631,13 @@ instance_destroy(); 1 if((other.object_index == oMissile || other.object_index == oMissileExpl) && global.icemissiles && !other.smissile){ if(canfreeze){ - frozen = 180; - if(other.damage > myhealth || ceil(other.damage / 2) > myhealth){ + if(other.damage > myhealth && !frozen || ceil(other.damage / 2) > myhealth && !frozen){ dmg = 0; myhealth = 1; } else { dmg = other.damage; } + frozen = 180; } else { dmg = other.damage; } diff --git a/objects/oGunzoo.object.gmx b/objects/oGunzoo.object.gmx index 9a94a8dd..055591a6 100644 --- a/objects/oGunzoo.object.gmx +++ b/objects/oGunzoo.object.gmx @@ -381,10 +381,17 @@ prevhealth = myhealth; 1 armor1 = sGunzooArmor1; armor2 = sGunzooArmor2; +turn = sGunzooTurn; if (frozen) { myspr = frozenspr; + armor1 = sGunzooArmor1Frozen; + armor2 = sGunzooArmor2Frozen; + turn = sGunzooTurnFrozen; } else { myspr = sprite_index; + armor1 = sGunzooArmor1; + armor2 = sGunzooArmor2; + turn = sGunzooTurn; } if (!flashing) { if (turning == 0) { @@ -392,23 +399,33 @@ if (!flashing) { if (phase == 0) draw_sprite_ext(armor1, -1, x, y - aoffset, facing, 1, image_angle, -1, 1); if (phase <= 1) draw_sprite_ext(armor2, -1, x + aoffset, y, facing, 1, image_angle, -1, 1); } - if (turning > 0) draw_sprite_ext(sGunzooTurn, -1, x, y, facing, 1, image_angle, -1, 1); + if (turning > 0) draw_sprite_ext(turn, -1, x, y, facing, 1, image_angle, -1, 1); + if (frozen > 0 && frozen < freezetime * 0.2){ + draw_set_blend_mode(bm_add); + if (turning == 0) { + draw_sprite_ext(myspr, -1, x, y, facing, 1, image_angle, -1, 1 - fxtimer * 0.35); + if (phase == 0) draw_sprite_ext(armor1, -1, x, y - aoffset, facing, 1, image_angle, -1, 1 - fxtimer * 0.40); + if (phase <= 1) draw_sprite_ext(armor2, -1, x + aoffset, y, facing, 1, image_angle, -1, 1 - fxtimer * 0.40); + } + if (turning > 0) draw_sprite_ext(turn, -1, x, y, facing, 1, image_angle, -1, 1 - fxtimer * 0.35); + draw_set_blend_mode(bm_normal); + } } -if (flashing || (frozen > 0 && frozen < freezetime * 0.2)) { +if (flashing) { if (turning == 0) { draw_sprite_ext(myspr, -1, x, y, facing, 1, image_angle, make_color_rgb(80, 80, 80), 1); if (phase == 0) draw_sprite_ext(armor1, -1, x, y - aoffset, facing, 1, image_angle, make_color_rgb(80, 80, 80), 1); if (phase <= 1) draw_sprite_ext(armor2, -1, x + aoffset, y, facing, 1, image_angle, make_color_rgb(80, 80, 80), 1); } - if (turning > 0) draw_sprite_ext(sGunzooTurn, -1, x, y, facing, 1, image_angle, make_color_rgb(80, 80, 80), 1); + if (turning > 0) draw_sprite_ext(turn, -1, x, y, facing, 1, image_angle, make_color_rgb(80, 80, 80), 1); draw_set_blend_mode(bm_add); - repeat (3) { + repeat (2) { if (turning == 0) { draw_sprite_ext(myspr, -1, x, y, facing, 1, image_angle, -1, 1 - fxtimer * 0.25); if (phase == 0) draw_sprite_ext(armor1, -1, x, y - aoffset, facing, 1, image_angle, -1, 1 - fxtimer * 0.25); if (phase <= 1) draw_sprite_ext(armor2, -1, x + aoffset, y, facing, 1, image_angle, -1, 1 - fxtimer * 0.25); } - if (turning > 0) draw_sprite_ext(sGunzooTurn, -1, x, y, facing, 1, image_angle, -1, 1 - fxtimer * 0.25); + if (turning > 0) draw_sprite_ext(turn, -1, x, y, facing, 1, image_angle, -1, 1 - fxtimer * 0.25); } draw_set_blend_mode(bm_normal); } diff --git a/objects/oShirk.object.gmx b/objects/oShirk.object.gmx index 9b1f4f36..b7e56029 100644 --- a/objects/oShirk.object.gmx +++ b/objects/oShirk.object.gmx @@ -361,49 +361,82 @@ if (random(2) < 0.2) instance_create(x, y, oDebris); 1 - action_inherited(); + armor1 = sShirkArmor1; +armor2 = sShirkArmor2; +turn = sShirkTurn; +armor1turn = sShirkTurnArmor1; +armor2turn = sShirkTurnArmor2; +if (frozen) { + myspr = frozenspr; + armor1 = sShirkArmor1Frozen; + armor2 = sShirkArmor2Frozen; + turn = sShirkTurnFrozen; + armor1turn = sShirkTurnArmor1Frozen; + armor2turn = sShirkTurnArmor2Frozen; +} else { + myspr = sprite_index; + armor1 = sShirkArmor1; + armor2 = sShirkArmor2; + turn = sShirkTurn; + armor1turn = sShirkTurnArmor1; + armor2turn = sShirkTurnArmor2; +} image_xscale = facing; if (frozen == 0){ image_speed = 0.5; - if (!flashing) { - if (turning == 0) { - draw_sprite_ext(sprite_index, -1, x, y, image_xscale, 1, image_angle, -1, image_alpha); - if (myhealth > shell1hp) draw_sprite_ext(sShirkArmor1, -1, x, y, image_xscale, 1, image_angle, -1, image_alpha); - if (myhealth > shell2hp) draw_sprite_ext(sShirkArmor2, -1, x, y, image_xscale, 1, image_angle, -1, image_alpha); - } - if (turning > 0) { - draw_sprite_ext(sShirkTurn, -1, x, y, image_xscale, 1, image_angle, -1, image_alpha); - if (myhealth > shell1hp) draw_sprite_ext(sShirkTurnArmor1, -1, x, y, image_xscale, 1, image_angle, -1, image_alpha); - if (myhealth > shell2hp) draw_sprite_ext(sShirkTurnArmor2, -1, x, y, image_xscale, 1, image_angle, -1, image_alpha); - } - } - if (flashing) { - if (turning == 0) { - draw_sprite_ext(sprite_index, -1, x, y, image_xscale, 1, image_angle, make_color_rgb(80, 80, 80), 1); - if (myhealth > shell1hp) draw_sprite_ext(sShirkArmor1, -1, x, y, image_xscale, 1, image_angle, make_color_rgb(80, 80, 80), 1); - if (myhealth > shell2hp) draw_sprite_ext(sShirkArmor2, -1, x, y, image_xscale, 1, image_angle, make_color_rgb(80, 80, 80), 1); +} else image_speed = 0; +if (!flashing) { + if (turning == 0) { + draw_sprite_ext(myspr, -1, x, y, image_xscale, 1, image_angle, -1, image_alpha); + if (myhealth > shell1hp) draw_sprite_ext(armor1, -1, x, y, image_xscale, 1, image_angle, -1, image_alpha); + if (myhealth > shell2hp) draw_sprite_ext(armor2, -1, x, y, image_xscale, 1, image_angle, -1, image_alpha); + if (frozen > 0 && frozen < freezetime * 0.2){ draw_set_blend_mode(bm_add); - repeat (3) { - draw_sprite_ext(sprite_index, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); - if (myhealth > shell1hp) draw_sprite_ext(sShirkArmor1, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); - if (myhealth > shell2hp) draw_sprite_ext(sShirkArmor2, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); - } + draw_sprite_ext(myspr, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.35); + if (myhealth > shell1hp) draw_sprite_ext(armor1, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.35); + if (myhealth > shell2hp) draw_sprite_ext(armor2, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.35); draw_set_blend_mode(bm_normal); } - if (turning > 0) { - draw_sprite_ext(sShirkTurn, -1, x, y, image_xscale, 1, image_angle, make_color_rgb(80, 80, 80), 1); - if (myhealth > shell1hp) draw_sprite_ext(sShirkTurnArmor1, -1, x, y, image_xscale, 1, image_angle, make_color_rgb(80, 80, 80), 1); - if (myhealth > shell2hp) draw_sprite_ext(sShirkTurnArmor2, -1, x, y, image_xscale, 1, image_angle, make_color_rgb(80, 80, 80), 1); + } + if (turning > 0) { + draw_sprite_ext(turn, -1, x, y, image_xscale, 1, image_angle, -1, image_alpha); + if (myhealth > shell1hp) draw_sprite_ext(armor1turn, -1, x, y, image_xscale, 1, image_angle, -1, image_alpha); + if (myhealth > shell2hp) draw_sprite_ext(armor2turn, -1, x, y, image_xscale, 1, image_angle, -1, image_alpha); + if (frozen > 0 && frozen < freezetime * 0.2){ draw_set_blend_mode(bm_add); - repeat (3) { - draw_sprite_ext(sprite_index, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); - if (myhealth > shell1hp) draw_sprite_ext(sShirkTurnArmor1, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); - if (myhealth > shell2hp) draw_sprite_ext(sShirkTurnArmor2, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); - } + draw_sprite_ext(turn, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.35); + if (myhealth > shell1hp) draw_sprite_ext(armor1turn, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.35); + if (myhealth > shell2hp) draw_sprite_ext(armor2turn, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.35); draw_set_blend_mode(bm_normal); } - } // if (flashing) + } } +if (flashing) { + if (turning == 0) { + draw_sprite_ext(myspr, -1, x, y, image_xscale, 1, image_angle, make_color_rgb(80, 80, 80), 1); + if (myhealth > shell1hp) draw_sprite_ext(armor1, -1, x, y, image_xscale, 1, image_angle, make_color_rgb(80, 80, 80), 1); + if (myhealth > shell2hp) draw_sprite_ext(armor2, -1, x, y, image_xscale, 1, image_angle, make_color_rgb(80, 80, 80), 1); + draw_set_blend_mode(bm_add); + repeat (2) { + draw_sprite_ext(myspr, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); + if (myhealth > shell1hp) draw_sprite_ext(armor1, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); + if (myhealth > shell2hp) draw_sprite_ext(armor2, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); + } + draw_set_blend_mode(bm_normal); + } + if (turning > 0) { + draw_sprite_ext(turn, -1, x, y, image_xscale, 1, image_angle, make_color_rgb(80, 80, 80), 1); + if (myhealth > shell1hp) draw_sprite_ext(armor1turn, -1, x, y, image_xscale, 1, image_angle, make_color_rgb(80, 80, 80), 1); + if (myhealth > shell2hp) draw_sprite_ext(armor2turn, -1, x, y, image_xscale, 1, image_angle, make_color_rgb(80, 80, 80), 1); + draw_set_blend_mode(bm_add); + repeat (2) { + draw_sprite_ext(myspr, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); + if (myhealth > shell1hp) draw_sprite_ext(armor1turn, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); + if (myhealth > shell2hp) draw_sprite_ext(armor2turn, -1, x, y, image_xscale, 1, image_angle, -1, 1 - fxtimer * 0.25); + } + draw_set_blend_mode(bm_normal); + } +} // if (flashing) /* if (!flashing) { if (turning == 0) { diff --git a/scripts/shoot_missile.gml b/scripts/shoot_missile.gml index f417a20c..b88ccbc2 100644 --- a/scripts/shoot_missile.gml +++ b/scripts/shoot_missile.gml @@ -1,4 +1,6 @@ /// shoot_missile(direction) +var missileX = 0; +var missileY = 0; if (global.currentweapon == 1 && global.missiles > 0 || global.currentweapon == 2 && global.smissiles > 0) { msl = instance_create(x + aspr2x, y + aspr2y, oMissile); msl.direction = argument0; @@ -15,8 +17,8 @@ if (global.currentweapon == 1 && global.missiles > 0 || global.currentweapon == msl.y += 4; if (facing == LEFT) msl.x += 1; } - var missileX = msl.x; - var missileY = msl.y; + missileX = msl.x; + missileY = msl.y; msl.smissile = global.currentweapon == 2; if (global.currentweapon == 1) { global.missiles -= 1; @@ -55,8 +57,8 @@ if (global.currentweapon == 1 && global.missiles > 0 || global.currentweapon == if (global.currentweapon == 2 && global.smissiles == 0) global.currentweapon = 1; if (global.currentweapon == 1 && global.missiles == 0) global.currentweapon = 0; -if(instance_exists(oClient)){ - if(ds_list_size(oClient.roomListData) > 0){ +if(instance_exists(oClient) && missileX != 0 && missileY != 0){ + if(ds_list_size(oClient.roomListData) >= 0){ var size, type, alignment; size = 1024; type = buffer_grow; diff --git a/sprites/sGunzooArmor1Frozen.sprite.gmx b/sprites/sGunzooArmor1Frozen.sprite.gmx new file mode 100644 index 00000000..a353446e --- /dev/null +++ b/sprites/sGunzooArmor1Frozen.sprite.gmx @@ -0,0 +1,25 @@ + + + 0 + 14 + 17 + 1 + 0 + 0 + 0 + 0 + 18 + 0 + 9 + 0 + 0 + + 0 + + 0 + 19 + 10 + + images\sGunzooArmor1Frozen_0.png + + diff --git a/sprites/sGunzooArmor2Frozen.sprite.gmx b/sprites/sGunzooArmor2Frozen.sprite.gmx new file mode 100644 index 00000000..f56c92a2 --- /dev/null +++ b/sprites/sGunzooArmor2Frozen.sprite.gmx @@ -0,0 +1,25 @@ + + + 0 + 18 + 14 + 1 + 0 + 0 + 0 + 0 + 14 + 0 + 25 + 0 + 0 + + 0 + + 0 + 15 + 26 + + images\sGunzooArmor2Frozen_0.png + + diff --git a/sprites/sGunzooTurnFrozen.sprite.gmx b/sprites/sGunzooTurnFrozen.sprite.gmx new file mode 100644 index 00000000..41a9f8ec --- /dev/null +++ b/sprites/sGunzooTurnFrozen.sprite.gmx @@ -0,0 +1,25 @@ + + + 0 + 8 + 13 + 1 + 0 + 0 + 0 + 0 + 21 + 0 + 26 + 0 + 0 + + 0 + + 0 + 22 + 27 + + images\sGunzooTurnFrozen_0.png + + diff --git a/sprites/sShirkArmor1Frozen.sprite.gmx b/sprites/sShirkArmor1Frozen.sprite.gmx new file mode 100644 index 00000000..e0ff0bbf --- /dev/null +++ b/sprites/sShirkArmor1Frozen.sprite.gmx @@ -0,0 +1,25 @@ + + + 0 + 12 + 15 + 1 + 0 + 0 + 0 + 8 + 25 + 14 + 28 + 0 + 0 + + 0 + + 0 + 32 + 32 + + images\sShirkArmor1Frozen_0.png + + diff --git a/sprites/sShirkArmor2Frozen.sprite.gmx b/sprites/sShirkArmor2Frozen.sprite.gmx new file mode 100644 index 00000000..4951f93a --- /dev/null +++ b/sprites/sShirkArmor2Frozen.sprite.gmx @@ -0,0 +1,25 @@ + + + 0 + 12 + 15 + 1 + 0 + 0 + 0 + 1 + 20 + 8 + 28 + 0 + 0 + + 0 + + 0 + 32 + 32 + + images\sShirkArmor2Frozen_0.png + + diff --git a/sprites/sShirkTurnArmor1Frozen.sprite.gmx b/sprites/sShirkTurnArmor1Frozen.sprite.gmx new file mode 100644 index 00000000..eee17f71 --- /dev/null +++ b/sprites/sShirkTurnArmor1Frozen.sprite.gmx @@ -0,0 +1,25 @@ + + + 0 + 10 + 15 + 1 + 0 + 0 + 0 + 7 + 23 + 16 + 26 + 0 + 0 + + 0 + + 0 + 32 + 32 + + images\sShirkTurnArmor1Frozen_0.png + + diff --git a/sprites/sShirkTurnArmor2Frozen.sprite.gmx b/sprites/sShirkTurnArmor2Frozen.sprite.gmx new file mode 100644 index 00000000..f2d3f9b0 --- /dev/null +++ b/sprites/sShirkTurnArmor2Frozen.sprite.gmx @@ -0,0 +1,25 @@ + + + 0 + 10 + 15 + 1 + 0 + 0 + 0 + 4 + 24 + 9 + 28 + 0 + 0 + + 0 + + 0 + 32 + 32 + + images\sShirkTurnArmor2Frozen_0.png + + diff --git a/sprites/sShirkTurnFrozen.sprite.gmx b/sprites/sShirkTurnFrozen.sprite.gmx new file mode 100644 index 00000000..2024093d --- /dev/null +++ b/sprites/sShirkTurnFrozen.sprite.gmx @@ -0,0 +1,25 @@ + + + 0 + 10 + 15 + 1 + 0 + 0 + 0 + 4 + 23 + 0 + 31 + 0 + 0 + + 0 + + 0 + 32 + 32 + + images\sShirkTurnFrozen_0.png + + diff --git a/sprites/sWallfireFrozen.sprite.gmx b/sprites/sWallfireFrozen.sprite.gmx index bacd82df..3c77213c 100644 --- a/sprites/sWallfireFrozen.sprite.gmx +++ b/sprites/sWallfireFrozen.sprite.gmx @@ -21,5 +21,8 @@ 33 images\sWallfireFrozen_0.png + images\sWallfireFrozen_1.png + images\sWallfireFrozen_2.png + images\sWallfireFrozen_3.png