diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index b0659f87..fe2fd056 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -1839,6 +1839,8 @@ last_stand_pistol_swap() amt = self.stored_weapon_info[self.laststandpistol].total_amt; } + self.stored_weapon_info[self.laststandpistol].total_given_amt = amt; + amt -= (self.stored_weapon_info[self.laststandpistol].clip_amt + self.stored_weapon_info[self.laststandpistol].left_clip_amt); self setWeaponAmmoStock(self.laststandpistol, amt); @@ -1852,6 +1854,8 @@ last_stand_pistol_swap() amt = self.stored_weapon_info[self.laststandpistol].total_amt; } + self.stored_weapon_info[self.laststandpistol].total_given_amt = amt; + amt -= (self.stored_weapon_info[self.laststandpistol].clip_amt + self.stored_weapon_info[self.laststandpistol].left_clip_amt); self setweaponammostock( self.laststandpistol, amt ); @@ -1861,13 +1865,14 @@ last_stand_pistol_swap() self switchtoweapon( self.laststandpistol ); } -last_stand_restore_pistol_ammo() +last_stand_restore_pistol_ammo(only_store_info = false) { self.weapon_taken_by_losing_specialty_additionalprimaryweapon = undefined; if ( !isDefined( self.stored_weapon_info ) ) { return; } + weapon_inventory = self getweaponslist( 1 ); weapon_to_restore = getarraykeys( self.stored_weapon_info ); i = 0; @@ -1879,12 +1884,14 @@ last_stand_restore_pistol_ammo() i++; continue; } + for ( j = 0; j < weapon_to_restore.size; j++ ) { check_weapon = weapon_to_restore[ j ]; if ( weapon == check_weapon ) { dual_wield_name = weapondualwieldweaponname( weapon_to_restore[ j ] ); + if ( weapon != level.default_laststandpistol ) { last_clip = self getweaponammoclip( weapon ); @@ -1896,6 +1903,13 @@ last_stand_restore_pistol_ammo() last_stock = self getweaponammostock( weapon ); last_total = last_clip + last_left_clip + last_stock; used_amt = self.stored_weapon_info[ weapon ].given_amt - last_total; + self.stored_weapon_info[ weapon ].total_used_amt = self.stored_weapon_info[ weapon ].total_given_amt - last_total; + + if (only_store_info) + { + break; + } + if ( used_amt >= self.stored_weapon_info[ weapon ].stock_amt ) { used_amt = used_amt - self.stored_weapon_info[weapon].stock_amt; @@ -1915,6 +1929,7 @@ last_stand_restore_pistol_ammo() } } } + self setweaponammostock( weapon_to_restore[ j ], self.stored_weapon_info[weapon_to_restore[ j ] ].stock_amt ); break; } diff --git a/scripts/zm/replaced/_zm_gametype.gsc b/scripts/zm/replaced/_zm_gametype.gsc index e94b8c85..dadc9d58 100644 --- a/scripts/zm/replaced/_zm_gametype.gsc +++ b/scripts/zm/replaced/_zm_gametype.gsc @@ -149,11 +149,14 @@ onplayerspawned() { self [[ level.givecustomcharacters ]](); } - self giveweapon( "knife_zm" ); if ( isDefined( level.onplayerspawned_restore_previous_weapons ) ) { weapons_restored = self [[ level.onplayerspawned_restore_previous_weapons ]](); } + else + { + self giveweapon( "knife_zm" ); + } if ( isDefined( weapons_restored ) && !weapons_restored || !isDefined( weapons_restored ) ) { self give_start_weapon( 1 ); diff --git a/scripts/zm/zgrief/zgrief_reimagined.gsc b/scripts/zm/zgrief/zgrief_reimagined.gsc index e7348869..7d661eee 100644 --- a/scripts/zm/zgrief/zgrief_reimagined.gsc +++ b/scripts/zm/zgrief/zgrief_reimagined.gsc @@ -882,6 +882,11 @@ on_player_bleedout() self.statusicon = "hud_status_dead"; self.player_waypoint.alpha = 0; + if(isDefined(level.zombie_last_stand_ammo_return)) + { + self [[level.zombie_last_stand_ammo_return]](1); + } + if(level.scr_zm_ui_gametype_obj == "zgrief") { increment_score(getOtherTeam(self.team)); @@ -2154,8 +2159,6 @@ grief_laststand_weapons_return() return 0; } - self takeAllWeapons(); // fixes player always having knife_zm - primary_weapons_returned = 0; i = 0; while ( i < self.grief_savedweapon_weapons.size ) @@ -2183,6 +2186,41 @@ grief_laststand_weapons_return() continue; } + 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; + + if (used_amt >= self.grief_savedweapon_weaponsammo_stock[i]) + { + used_amt = used_amt - self.grief_savedweapon_weaponsammo_stock[i]; + self.grief_savedweapon_weaponsammo_stock[i] = 0; + + if (used_amt >= self.grief_savedweapon_weaponsammo_clip[i]) + { + used_amt -= self.grief_savedweapon_weaponsammo_clip[i]; + self.grief_savedweapon_weaponsammo_clip[i] = 0; + + if (used_amt >= self.grief_savedweapon_weaponsammo_clip_dualwield[i]) + { + used_amt -= self.grief_savedweapon_weaponsammo_clip_dualwield[i]; + self.grief_savedweapon_weaponsammo_clip_dualwield[i] = 0; + } + else + { + self.grief_savedweapon_weaponsammo_clip_dualwield[i] -= used_amt; + } + } + else + { + self.grief_savedweapon_weaponsammo_clip[i] -= used_amt; + } + } + else + { + self.grief_savedweapon_weaponsammo_stock[i] -= used_amt; + } + } + self giveweapon( self.grief_savedweapon_weapons[ i ], 0, self maps\mp\zombies\_zm_weapons::get_pack_a_punch_weapon_options( self.grief_savedweapon_weapons[ i ] ) ); if ( isdefined( self.grief_savedweapon_weaponsammo_clip[ i ] ) )