diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index 722ef4bb..87a8fc33 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -51,6 +51,7 @@ main() replaceFunc(maps\mp\zombies\_zm_audio_announcer::playleaderdialogonplayer, scripts\zm\replaced\_zm_audio_announcer::playleaderdialogonplayer); replaceFunc(maps\mp\zombies\_zm_stats::set_global_stat, scripts\zm\replaced\_zm_stats::set_global_stat); replaceFunc(maps\mp\zombies\_zm_playerhealth::playerhealthregen, scripts\zm\replaced\_zm_playerhealth::playerhealthregen); + replaceFunc(maps\mp\zombies\_zm_utility::init_player_offhand_weapons, scripts\zm\replaced\_zm_utility::init_player_offhand_weapons); replaceFunc(maps\mp\zombies\_zm_utility::is_headshot, scripts\zm\replaced\_zm_utility::is_headshot); replaceFunc(maps\mp\zombies\_zm_utility::shock_onpain, scripts\zm\replaced\_zm_utility::shock_onpain); replaceFunc(maps\mp\zombies\_zm_utility::create_zombie_point_of_interest_attractor_positions, scripts\zm\replaced\_zm_utility::create_zombie_point_of_interest_attractor_positions); diff --git a/scripts/zm/replaced/_zm_utility.gsc b/scripts/zm/replaced/_zm_utility.gsc index c79143de..28d80b86 100644 --- a/scripts/zm/replaced/_zm_utility.gsc +++ b/scripts/zm/replaced/_zm_utility.gsc @@ -2,6 +2,23 @@ #include common_scripts\utility; #include maps\mp\zombies\_zm_utility; +init_player_offhand_weapons() +{ + if ( !is_true( self.init_player_offhand_weapons_override ) ) + { + if ( is_gametype_active( "zgrief" ) && is_true( self.player_initialized ) ) + { + return; + } + } + + init_player_lethal_grenade(); + init_player_tactical_grenade(); + init_player_placeable_mine(); + init_player_melee_weapon(); + init_player_equipment(); +} + is_headshot( sweapon, shitloc, smeansofdeath ) { if ( smeansofdeath == "MOD_MELEE" || smeansofdeath == "MOD_BAYONET" || smeansofdeath == "MOD_IMPACT" || smeansofdeath == "MOD_UNKNOWN" || smeansofdeath == "MOD_IMPACT" ) @@ -241,7 +258,12 @@ get_current_zone( return_zone ) is_temporary_zombie_weapon( str_weapon ) { - return is_zombie_perk_bottle( str_weapon ) || str_weapon == level.revive_tool || str_weapon == "zombie_builder_zm" || str_weapon == "chalk_draw_zm" || str_weapon == "no_hands_zm" || str_weapon == level.machine_assets["packapunch"].weapon || issubstr( str_weapon, "_flourish" ); + if ( isdefined( level.machine_assets["packapunch"] ) && isdefined( level.machine_assets["packapunch"].weapon ) && str_weapon == level.machine_assets["packapunch"].weapon ) + { + return 1; + } + + return is_zombie_perk_bottle( str_weapon ) || str_weapon == level.revive_tool || str_weapon == "zombie_builder_zm" || str_weapon == "chalk_draw_zm" || str_weapon == "no_hands_zm" || issubstr( str_weapon, "_flourish" ); } wait_network_frame() diff --git a/scripts/zm/zgrief/zgrief_reimagined.gsc b/scripts/zm/zgrief/zgrief_reimagined.gsc index 6da41d28..1e547cde 100644 --- a/scripts/zm/zgrief/zgrief_reimagined.gsc +++ b/scripts/zm/zgrief/zgrief_reimagined.gsc @@ -878,6 +878,9 @@ on_player_bleedout() if(level.scr_zm_ui_gametype_obj == "zsnr") { self.grief_savedweapon_weapons = undefined; + self.init_player_offhand_weapons_override = 1; + self init_player_offhand_weapons(); + self.init_player_offhand_weapons_override = undefined; self bleedout_feed(); self add_grief_bleedout_score(); level thread update_players_on_bleedout( self ); @@ -2213,17 +2216,6 @@ grief_laststand_weapons_return() continue; } - if ( isweaponprimary( self.grief_savedweapon_weapons[ i ] ) ) - { - if ( primary_weapons_returned >= get_player_weapon_limit( self ) ) - { - i++; - continue; - } - - primary_weapons_returned++; - } - if ( is_temporary_zombie_weapon( self.grief_savedweapon_weapons[ i ] ) ) { i++; @@ -2236,6 +2228,17 @@ grief_laststand_weapons_return() continue; } + if ( isweaponprimary( self.grief_savedweapon_weapons[ i ] ) ) + { + if ( primary_weapons_returned >= get_player_weapon_limit( self ) ) + { + i++; + continue; + } + + primary_weapons_returned++; + } + if (isDefined(self.stored_weapon_info[self.grief_savedweapon_weapons[i]]) && isDefined(self.stored_weapon_info[self.grief_savedweapon_weapons[i]].total_used_amt)) { used_amt = self.stored_weapon_info[self.grief_savedweapon_weapons[i]].total_used_amt; @@ -2301,52 +2304,6 @@ grief_laststand_weapons_return() i++; } - self thread grief_laststand_items_return(); - - self.grief_savedweapon_weapons = undefined; - - if ( isDefined( self.pre_temp_weapon ) && self hasWeapon( self.pre_temp_weapon ) ) - { - self switchtoweapon( self.pre_temp_weapon ); - self.pre_temp_weapon = undefined; - return 1; - } - - if ( isDefined( self.pre_meat_weapon ) && self hasWeapon( self.pre_meat_weapon ) ) - { - self switchtoweapon( self.pre_meat_weapon ); - self.pre_meat_weapon = undefined; - return 1; - } - - if ( isDefined( self.grief_savedweapon_currentweapon ) && self hasWeapon( self.grief_savedweapon_currentweapon ) ) - { - self switchtoweapon( self.grief_savedweapon_currentweapon ); - self.grief_savedweapon_currentweapon = undefined; - return 1; - } - - primaries = self getweaponslistprimaries(); - if ( primaries.size > 0 ) - { - self switchtoweapon( primaries[ 0 ] ); - return 1; - } - - self maps\mp\zombies\_zm_weapons::give_fallback_weapon(); - return 1; -} - -grief_laststand_items_return() -{ - self endon("disconnect"); - - if(is_respawn_gamemode()) - { - // needs a wait or some items aren't given back on respawn - wait 0.05; - } - if ( isDefined( self.grief_savedweapon_melee ) ) { self set_player_melee_weapon( self.grief_savedweapon_melee ); @@ -2421,6 +2378,39 @@ grief_laststand_items_return() self [[ self.player_shield_reset_health ]](); } } + + self.grief_savedweapon_weapons = undefined; + + if ( isDefined( self.pre_temp_weapon ) && self hasWeapon( self.pre_temp_weapon ) ) + { + self switchtoweapon( self.pre_temp_weapon ); + self.pre_temp_weapon = undefined; + return 1; + } + + if ( isDefined( self.pre_meat_weapon ) && self hasWeapon( self.pre_meat_weapon ) ) + { + self switchtoweapon( self.pre_meat_weapon ); + self.pre_meat_weapon = undefined; + return 1; + } + + if ( isDefined( self.grief_savedweapon_currentweapon ) && self hasWeapon( self.grief_savedweapon_currentweapon ) ) + { + self switchtoweapon( self.grief_savedweapon_currentweapon ); + self.grief_savedweapon_currentweapon = undefined; + return 1; + } + + primaries = self getweaponslistprimaries(); + if ( primaries.size > 0 ) + { + self switchtoweapon( primaries[ 0 ] ); + return 1; + } + + self maps\mp\zombies\_zm_weapons::give_fallback_weapon(); + return 1; } sudden_death()