1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-10 23:27:57 -05:00

Encounter: ammo used in last stand is removed on respawn

This commit is contained in:
Jbleezy
2023-03-21 17:33:05 -07:00
parent 4a08dcee3f
commit 215bc1496e
3 changed files with 60 additions and 4 deletions

View File

@ -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;
}

View File

@ -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 );

View File

@ -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 ] ) )