From 66f68fabc918111c2b99110ddbbb64d88ce5dc48 Mon Sep 17 00:00:00 2001 From: Jbleezy Date: Fri, 22 Dec 2023 15:41:48 -0800 Subject: [PATCH] Melee weapons: fix missing checks for held weapon --- scripts/zm/replaced/_zm.gsc | 2 +- scripts/zm/replaced/_zm_ai_avogadro.gsc | 57 +++++++++++++++++++ scripts/zm/replaced/zm_buried_sq_ts.gsc | 16 ++++++ scripts/zm/replaced/zm_highrise_sq.gsc | 2 +- .../zm/zm_transit/zm_transit_reimagined.gsc | 1 + 5 files changed, 76 insertions(+), 2 deletions(-) diff --git a/scripts/zm/replaced/_zm.gsc b/scripts/zm/replaced/_zm.gsc index 02b43ca9..832a7cd2 100644 --- a/scripts/zm/replaced/_zm.gsc +++ b/scripts/zm/replaced/_zm.gsc @@ -1310,7 +1310,7 @@ actor_damage_override(inflictor, attacker, damage, flags, meansofdeath, weapon, return damage; } - if (weapon == "tazer_knuckles_zm" || weapon == "jetgun_zm") + if (issubstr(weapon, "tazer_knuckles_zm") || weapon == "jetgun_zm") { self.knuckles_extinguish_flames = 1; } diff --git a/scripts/zm/replaced/_zm_ai_avogadro.gsc b/scripts/zm/replaced/_zm_ai_avogadro.gsc index b920c363..dba0d1bc 100644 --- a/scripts/zm/replaced/_zm_ai_avogadro.gsc +++ b/scripts/zm/replaced/_zm_ai_avogadro.gsc @@ -193,4 +193,61 @@ cloud_update_fx() wait 0.1; } +} + +avogadro_damage_func( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) +{ + if ( self.state == "exiting" || self.state == "phasing" ) + { + return false; + } + + if ( smeansofdeath == "MOD_MELEE" ) + { + if ( isplayer( einflictor ) ) + { + if ( self.shield ) + { + einflictor.avogadro_melee_time = gettime(); + maps\mp\_visionset_mgr::vsmgr_activate( "overlay", "zm_ai_avogadro_electrified", einflictor, 0.25, 1 ); + einflictor shellshock( "electrocution", 0.25 ); + einflictor notify( "avogadro_damage_taken" ); + } + + if ( sweapon == "riotshield_zm" ) + { + shield_damage = level.zombie_vars["riotshield_fling_damage_shield"]; + einflictor maps\mp\zombies\_zm_weap_riotshield::player_damage_shield( shield_damage, 0 ); + } + } + + if ( !self.shield ) + { + self.shield = 1; + self notify( "melee_pain" ); + + if ( issubstr( sweapon, "tazer_knuckles_zm" ) ) + { + self.hit_by_melee += 2; + } + else + { + self.hit_by_melee++; + } + + self thread avogadro_pain( einflictor ); + + if ( isplayer( einflictor ) ) + { + einflictor thread do_player_general_vox( "general", "avogadro_wound", 30, 35 ); + level notify( "avogadro_stabbed", self ); + } + } + } + else + { + self update_damage_absorbed( idamage ); + } + + return false; } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_buried_sq_ts.gsc b/scripts/zm/replaced/zm_buried_sq_ts.gsc index 23ccc5d3..e67da424 100644 --- a/scripts/zm/replaced/zm_buried_sq_ts.gsc +++ b/scripts/zm/replaced/zm_buried_sq_ts.gsc @@ -41,4 +41,20 @@ ts_sign_check_all_activated(e_attacker, m_last_touched) level.e_sq_sign_attacker = e_attacker; level notify("sq_sign_damaged"); } +} + +ts_is_bowie_knife( str_weapon ) +{ + if ( str_weapon == "knife_ballistic_bowie_zm" || str_weapon == "knife_ballistic_bowie_upgraded_zm" || issubstr( str_weapon, "bowie_knife_zm" ) ) + return true; + + return false; +} + +ts_is_galvaknuckles( str_weapon ) +{ + if ( issubstr( str_weapon, "tazer_knuckles_zm" ) ) + return true; + + return false; } \ No newline at end of file diff --git a/scripts/zm/replaced/zm_highrise_sq.gsc b/scripts/zm/replaced/zm_highrise_sq.gsc index 96bea8be..57f37bfa 100644 --- a/scripts/zm/replaced/zm_highrise_sq.gsc +++ b/scripts/zm/replaced/zm_highrise_sq.gsc @@ -136,7 +136,7 @@ tower_punch_watch_leg(a_leg_trigs) { self waittill("trigger", who); - if (!isinarray(level.legs_hit, self.script_noteworthy) && isplayer(who) && (who.current_melee_weapon == "tazer_knuckles_zm" || who.current_melee_weapon == "tazer_knuckles_upgraded_zm")) + if (!isinarray(level.legs_hit, self.script_noteworthy) && isplayer(who) && (issubstr(who.current_melee_weapon, "tazer_knuckles_zm") || issubstr(who.current_melee_weapon, "tazer_knuckles_upgraded_zm"))) { level.legs_hit[level.legs_hit.size] = self.script_noteworthy; self playsound("zmb_sq_leg_powerup_" + level.legs_hit.size); diff --git a/scripts/zm/zm_transit/zm_transit_reimagined.gsc b/scripts/zm/zm_transit/zm_transit_reimagined.gsc index db1186f9..52bba019 100644 --- a/scripts/zm/zm_transit/zm_transit_reimagined.gsc +++ b/scripts/zm/zm_transit/zm_transit_reimagined.gsc @@ -26,6 +26,7 @@ main() replaceFunc(maps\mp\zm_transit_lava::zombie_exploding_death, scripts\zm\replaced\zm_transit_lava::zombie_exploding_death); replaceFunc(maps\mp\zombies\_zm_ai_avogadro::check_range_attack, scripts\zm\replaced\_zm_ai_avogadro::check_range_attack); replaceFunc(maps\mp\zombies\_zm_ai_avogadro::avogadro_exit, scripts\zm\replaced\_zm_ai_avogadro::avogadro_exit); + replaceFunc(maps\mp\zombies\_zm_ai_avogadro::avogadro_damage_func, scripts\zm\replaced\_zm_ai_avogadro::avogadro_damage_func); replaceFunc(maps\mp\zombies\_zm_ai_screecher::screecher_spawning_logic, scripts\zm\replaced\_zm_ai_screecher::screecher_spawning_logic); replaceFunc(maps\mp\zombies\_zm_ai_screecher::screecher_melee_damage, scripts\zm\replaced\_zm_ai_screecher::screecher_melee_damage); replaceFunc(maps\mp\zombies\_zm_ai_screecher::screecher_detach, scripts\zm\replaced\_zm_ai_screecher::screecher_detach);