mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-27 07:30:09 -05:00
Health regeneration changes
This commit is contained in:
@ -15,7 +15,14 @@
|
|||||||
## Players
|
## Players
|
||||||
* Unlimited sprint
|
* Unlimited sprint
|
||||||
* 100% backwards speed, strafe speed, and sprint strafe speed
|
* 100% backwards speed, strafe speed, and sprint strafe speed
|
||||||
|
* Decreased normal health regeneration delay from 2.4 seconds to 2 seconds
|
||||||
|
* Decreased low health regeneration delay from 5 seconds to 4 seconds
|
||||||
|
* Normal health regeneration rate is no longer instant
|
||||||
|
* Changed health regeneration rate to 100 health per second (previously fully restored health in 0.5 seconds)
|
||||||
* Fall damage no longer increases when max health is increased
|
* Fall damage no longer increases when max health is increased
|
||||||
|
* Red screens start at 25% health (previously 20% health)
|
||||||
|
* Red screens go away as soon as the player's health is above 25% (previously went away once the player reached full health)
|
||||||
|
* Removed blur when getting damaged
|
||||||
* Disabled melee lunging
|
* Disabled melee lunging
|
||||||
* Can shoot when looking at other players
|
* Can shoot when looking at other players
|
||||||
* Mantle faster
|
* Mantle faster
|
||||||
|
@ -86,6 +86,8 @@ onplayerspawned()
|
|||||||
self setperk( "specialty_fastmantle" );
|
self setperk( "specialty_fastmantle" );
|
||||||
|
|
||||||
self tombstone_reset_perks();
|
self tombstone_reset_perks();
|
||||||
|
|
||||||
|
self thread playerhealthregen();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1300,6 +1302,189 @@ get_zone_name()
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
playerhealthregen()
|
||||||
|
{
|
||||||
|
self notify( "noHealthOverlay" );
|
||||||
|
self notify( "playerHealthRegen" );
|
||||||
|
self endon( "playerHealthRegen" );
|
||||||
|
self endon( "death" );
|
||||||
|
self endon( "disconnect" );
|
||||||
|
|
||||||
|
if ( !isDefined( self.flag ) )
|
||||||
|
{
|
||||||
|
self.flag = [];
|
||||||
|
self.flags_lock = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !isDefined( self.flag[ "player_has_red_flashing_overlay" ] ) )
|
||||||
|
{
|
||||||
|
self player_flag_init( "player_has_red_flashing_overlay" );
|
||||||
|
self player_flag_init( "player_is_invulnerable" );
|
||||||
|
}
|
||||||
|
|
||||||
|
self player_flag_clear( "player_has_red_flashing_overlay" );
|
||||||
|
self player_flag_clear( "player_is_invulnerable" );
|
||||||
|
self thread maps/mp/zombies/_zm_playerhealth::healthoverlay();
|
||||||
|
|
||||||
|
oldratio = 1;
|
||||||
|
veryhurt = 0;
|
||||||
|
playerjustgotredflashing = 0;
|
||||||
|
invultime = 0;
|
||||||
|
hurttime = 0;
|
||||||
|
newhealth = 0;
|
||||||
|
lastinvulratio = 1;
|
||||||
|
healthoverlaycutoff = 0.25;
|
||||||
|
|
||||||
|
self thread maps/mp/zombies/_zm_playerhealth::playerhurtcheck();
|
||||||
|
if ( !isDefined( self.veryhurt ) )
|
||||||
|
{
|
||||||
|
self.veryhurt = 0;
|
||||||
|
}
|
||||||
|
self.bolthit = 0;
|
||||||
|
|
||||||
|
if ( getDvar( "scr_playerInvulTimeScale" ) == "" )
|
||||||
|
{
|
||||||
|
setdvar( "scr_playerInvulTimeScale", 1 );
|
||||||
|
}
|
||||||
|
playerinvultimescale = getDvarFloat( "scr_playerInvulTimeScale" );
|
||||||
|
|
||||||
|
for ( ;; )
|
||||||
|
{
|
||||||
|
wait 0.05;
|
||||||
|
waittillframeend;
|
||||||
|
|
||||||
|
maxhealthratio = self.maxhealth / 100;
|
||||||
|
regenrate = 0.05 / maxhealthratio;
|
||||||
|
health_ratio = self.health / self.maxhealth;
|
||||||
|
regularregendelay = 2000;
|
||||||
|
longregendelay = 4000;
|
||||||
|
|
||||||
|
if ( health_ratio > healthoverlaycutoff )
|
||||||
|
{
|
||||||
|
if ( self player_flag( "player_has_red_flashing_overlay" ) )
|
||||||
|
{
|
||||||
|
player_flag_clear( "player_has_red_flashing_overlay" );
|
||||||
|
}
|
||||||
|
lastinvulratio = 1;
|
||||||
|
playerjustgotredflashing = 0;
|
||||||
|
veryhurt = 0;
|
||||||
|
|
||||||
|
if ( self.health == self.maxhealth )
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( self.health <= 0 )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wasveryhurt = veryhurt;
|
||||||
|
|
||||||
|
if ( health_ratio <= healthoverlaycutoff )
|
||||||
|
{
|
||||||
|
veryhurt = 1;
|
||||||
|
if ( !wasveryhurt )
|
||||||
|
{
|
||||||
|
hurttime = getTime();
|
||||||
|
self player_flag_set( "player_has_red_flashing_overlay" );
|
||||||
|
playerjustgotredflashing = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( self.hurtagain )
|
||||||
|
{
|
||||||
|
hurttime = getTime();
|
||||||
|
self.hurtagain = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( health_ratio >= oldratio )
|
||||||
|
{
|
||||||
|
if ( ( getTime() - hurttime ) < regularregendelay )
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self.veryhurt = veryhurt;
|
||||||
|
newhealth = health_ratio;
|
||||||
|
if ( veryhurt )
|
||||||
|
{
|
||||||
|
if ( ( getTime() - hurttime ) >= longregendelay )
|
||||||
|
{
|
||||||
|
newhealth += regenrate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newhealth += regenrate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( newhealth > 1 )
|
||||||
|
{
|
||||||
|
newhealth = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( newhealth <= 0 )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
self setnormalhealth( newhealth );
|
||||||
|
oldratio = self.health / self.maxhealth;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
invulworthyhealthdrop = ( lastinvulratio - health_ratio ) > level.worthydamageratio;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( self.health <= 1 )
|
||||||
|
{
|
||||||
|
self setnormalhealth( 1 / self.maxhealth );
|
||||||
|
invulworthyhealthdrop = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
oldratio = self.health / self.maxhealth;
|
||||||
|
self notify( "hit_again" );
|
||||||
|
hurttime = getTime();
|
||||||
|
|
||||||
|
if ( !invulworthyhealthdrop || playerinvultimescale <= 0 )
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( self player_flag( "player_is_invulnerable" ) )
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self player_flag_set( "player_is_invulnerable" );
|
||||||
|
level notify( "player_becoming_invulnerable" );
|
||||||
|
if ( playerjustgotredflashing )
|
||||||
|
{
|
||||||
|
invultime = level.invultime_onshield;
|
||||||
|
playerjustgotredflashing = 0;
|
||||||
|
}
|
||||||
|
else if ( veryhurt )
|
||||||
|
{
|
||||||
|
invultime = level.invultime_postshield;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
invultime = level.invultime_preshield;
|
||||||
|
}
|
||||||
|
invultime *= playerinvultimescale;
|
||||||
|
lastinvulratio = self.health / self.maxhealth;
|
||||||
|
self thread maps/mp/zombies/_zm_playerhealth::playerinvul( invultime );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
set_player_lethal_grenade_semtex()
|
set_player_lethal_grenade_semtex()
|
||||||
{
|
{
|
||||||
if (level.script != "zm_transit" && level.script != "zm_nuked" && level.script != "zm_highrise" && level.script != "zm_tomb")
|
if (level.script != "zm_transit" && level.script != "zm_nuked" && level.script != "zm_highrise" && level.script != "zm_tomb")
|
||||||
|
Reference in New Issue
Block a user