1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-17 02:28:06 -05:00

EMP: fix disabled perks being reset on downed

This commit is contained in:
Jbleezy
2023-04-07 23:32:36 -07:00
parent 7331d3a6b8
commit 49ff9f7381
3 changed files with 72 additions and 1 deletions

View File

@ -271,6 +271,7 @@ post_all_players_spawned()
level.callbackplayerdamage = scripts\zm\replaced\_zm::callback_playerdamage;
level.overrideplayerdamage = scripts\zm\replaced\_zm::player_damage_override;
level.playerlaststand_func = scripts\zm\replaced\_zm::player_laststand;
level.callbackplayerlaststand = scripts\zm\replaced\_zm::callback_playerlaststand;
level.etrap_damage = maps\mp\zombies\_zm::ai_zombie_health( 255 );
level.slipgun_damage = maps\mp\zombies\_zm::ai_zombie_health( 255 );
level.tombstone_spawn_func = ::tombstone_spawn;

View File

@ -998,7 +998,7 @@ player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath,
if ( ( solo_death || non_solo_death ) && !is_true( level.no_end_game_check ) )
{
level notify( "stop_suicide_trigger" );
self thread maps\mp\zombies\_zm_laststand::playerlaststand( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime );
self thread scripts\zm\replaced\_zm_laststand::playerlaststand( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime );
if ( !isDefined( vdir ) )
{
vdir = ( 1, 0, 0 );
@ -1195,6 +1195,12 @@ player_laststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, s
}
}
callback_playerlaststand( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration )
{
self endon( "disconnect" );
[[ scripts\zm\replaced\_zm_laststand::playerlaststand ]]( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration );
}
player_spawn_protection()
{
self endon("disconnect");

View File

@ -334,4 +334,68 @@ auto_revive( reviver, dont_enable_weapons )
}
self notify( "player_revived", reviver );
}
playerlaststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration )
{
self notify( "entering_last_stand" );
if ( isdefined( level._game_module_player_laststand_callback ) )
self [[ level._game_module_player_laststand_callback ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration );
if ( self player_is_in_laststand() )
return;
if ( isdefined( self.in_zombify_call ) && self.in_zombify_call )
return;
self thread player_last_stand_stats( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration );
if ( isdefined( level.playerlaststand_func ) )
[[ level.playerlaststand_func ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration );
self.health = 1;
self.laststand = 1;
self.ignoreme = 1;
self thread maps\mp\gametypes_zm\_gameobjects::onplayerlaststand();
self thread maps\mp\zombies\_zm_buildables::onplayerlaststand();
if ( !( isdefined( self.no_revive_trigger ) && self.no_revive_trigger ) )
self revive_trigger_spawn();
else
self undolaststand();
if ( isdefined( self.is_zombie ) && self.is_zombie )
{
self takeallweapons();
if ( isdefined( attacker ) && isplayer( attacker ) && attacker != self )
attacker notify( "killed_a_zombie_player", einflictor, self, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration );
}
else
{
self laststand_disable_player_weapons();
self laststand_give_pistol();
}
if ( isdefined( level.playersuicideallowed ) && level.playersuicideallowed && get_players().size > 1 )
{
if ( !isdefined( level.canplayersuicide ) || self [[ level.canplayersuicide ]]() )
self thread suicide_trigger_spawn();
}
if ( level.laststandgetupallowed )
self thread laststand_getup();
else
{
bleedout_time = getdvarfloat( "player_lastStandBleedoutTime" );
self thread laststand_bleedout( bleedout_time );
}
if ( "zcleansed" != level.gametype )
maps\mp\_demo::bookmark( "zm_player_downed", gettime(), self );
self notify( "player_downed" );
self thread refire_player_downed();
self thread cleanup_laststand_on_disconnect();
}