diff --git a/README.md b/README.md index ebd40de8..283dde08 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,7 @@ * Changed placeable mine damage scalar to 150 multiplied by round number (normally random number between 100 and 200 multiplied by round number) * Capped placeable mine damage scalar at 9000 * Disabled sniper scope sway +* Grenades can no longer be thrown faster than intended by throwing a grenade right after throwing one ### AN-94 * Increased weapon cost from 1200 to 1500 diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index bf57362b..33c24d00 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -198,6 +198,7 @@ on_player_connect() player thread on_player_revived(); player thread on_player_fake_revive(); + player thread grenade_fire_watcher(); player thread weapon_inspect_watcher(); } } @@ -2621,6 +2622,60 @@ wallbuy_cost_changes() } } +grenade_fire_watcher() +{ + level endon("end_game"); + self endon("disconnect"); + + while(1) + { + self waittill("grenade_fire", grenade, weapname); + + if (is_lethal_grenade(weapname) || is_tactical_grenade(weapname)) + { + self thread temp_disable_offhand_weapons(); + } + + if (weapname == "willy_pete_zm" && !isDefined(self.smoke_grenade_cluster)) + { + grenade thread smoke_grenade_cluster(self); + } + } +} + +temp_disable_offhand_weapons() +{ + self endon( "disconnect" ); + self endon( "entering_last_stand" ); + + self disableOffhandWeapons(); + + while(self isThrowingGrenade()) + { + wait 0.05; + } + + if (!is_true(self.is_drinking) || is_melee_weapon(self getCurrentWeapon())) + { + self enableOffhandWeapons(); + } +} + +smoke_grenade_cluster(owner) +{ + self waittill("explode", pos); + + playsoundatposition( "zmb_land_meat", pos ); + + owner.smoke_grenade_cluster = true; + owner magicgrenadetype( "willy_pete_zm", pos, (0, 0, 0), 0 ); + owner magicgrenadetype( "willy_pete_zm", pos, (0, 0, 0), 0 ); + + wait 0.05; + + owner.smoke_grenade_cluster = undefined; +} + weapon_inspect_watcher() { level endon( "end_game" ); diff --git a/scripts/zm/zgrief/zgrief_reimagined.gsc b/scripts/zm/zgrief/zgrief_reimagined.gsc index f6e2e2e1..19f201fa 100644 --- a/scripts/zm/zgrief/zgrief_reimagined.gsc +++ b/scripts/zm/zgrief/zgrief_reimagined.gsc @@ -695,7 +695,6 @@ grief_onplayerconnect() self thread head_icon(); self thread obj_waypoint(); self thread headstomp_watcher(); - self thread smoke_grenade_cluster_watcher(); self thread maps\mp\gametypes_zm\zmeat::create_item_meat_watcher(); self.killsconfirmed = 0; self.killsdenied = 0; @@ -1081,37 +1080,6 @@ headstomp_watcher() } } -smoke_grenade_cluster_watcher() -{ - level endon("end_game"); - self endon("disconnect"); - - while(1) - { - self waittill("grenade_fire", grenade, weapname); - - if(weapname == "willy_pete_zm" && !isDefined(self.smoke_grenade_cluster)) - { - grenade thread smoke_grenade_cluster(self); - } - } -} - -smoke_grenade_cluster(owner) -{ - self waittill("explode", pos); - - playsoundatposition( "zmb_land_meat", pos ); - - owner.smoke_grenade_cluster = true; - owner magicgrenadetype( "willy_pete_zm", pos, (0, 0, 0), 0 ); - owner magicgrenadetype( "willy_pete_zm", pos, (0, 0, 0), 0 ); - - wait 0.05; - - owner.smoke_grenade_cluster = undefined; -} - round_start_wait(time, initial) { level endon("end_game");