1 #using scripts\codescripts\struct;
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\system_shared;
5 #using scripts\shared\util_shared;
7 #insert scripts\shared\shared.gsh;
9 #using scripts\mp\gametypes\_globallogic_player;
13 #namespace healthoverlay;
32 level.healthOverlayCutoff = 0.55;
34 regenTime = level.playerHealthRegenTime;
36 level.playerHealth_RegularRegenDelay = regenTime * 1000;
38 level.healthRegenDisabled = (level.playerHealth_RegularRegenDelay <= 0);
43 self notify(
"end_healthregen");
48 self endon(
"end_healthregen");
50 if (
self.health <= 0 )
52 assert( !isalive(
self ) );
56 maxhealth =
self.health;
57 oldhealth = maxhealth;
67 player.breathingStopTime = -10000;
72 lastSoundTime_Recover = 0;
80 if( isdefined( player.regenRate ) )
82 regenRate = player.regenRate;
86 if (player.health == maxhealth)
89 if ( isdefined(
self.atBrinkOfDeath ) &&
self.atBrinkOfDeath ==
true )
91 self notify(
"challenge_survived_from_death" );
93 self.atBrinkOfDeath =
false;
97 if (player.health <= 0)
100 if ( isdefined(player.laststand) && player.laststand )
103 wasVeryHurt = veryHurt;
104 ratio = player.health / maxHealth;
105 if (ratio <= level.healthOverlayCutoff)
108 self.atBrinkOfDeath =
true;
109 self.isNearDeath =
true;
112 hurtTime = gettime();
117 self.isNearDeath =
false;
120 if (player.health >= oldhealth)
122 regenTime = level.playerHealth_RegularRegenDelay;
124 if ( player HasPerk(
"specialty_healthregen" ) )
126 regenTime = Int( regenTime / GetDvarfloat(
"perk_healthRegenMultiplier" ) );
129 if (gettime() - hurttime < regenTime)
132 if ( level.healthRegenDisabled )
135 if (gettime() - lastSoundTime_Recover > regenTime)
137 lastSoundTime_Recover = gettime();
138 self notify (
"snd_breathing_better");
146 if ( player HasPerk(
"specialty_healthregen" ) )
148 veryHurtTime = Int( veryHurtTime / GetDvarfloat(
"perk_healthRegenMultiplier" ) );
151 if (gettime() > hurtTime + veryHurtTime)
152 newHealth += regenRate;
158 newHealth = ratio + regenRate;
166 if ( newHealth >= 1.0 )
178 player setnormalhealth (newHealth);
179 change = player.health - oldhealth;
184 oldhealth = player.health;
188 oldhealth = player.health;
191 hurtTime = gettime();
192 player.breathingStopTime = hurtTime + 6000;
198 if ( !isdefined(
self.attackerDamage ) )
201 for ( i = 0; i <
self.attackerDamage.size; i++ )
203 if ( !isdefined(
self.attackerDamage[i] ) || !isdefined(
self.attackerDamage[i].
damage ) )
206 self.attackerDamage[i].damage -= decay;
207 if (
self.attackerDamage[i].
damage < 0 )
208 self.attackerDamage[i].damage = 0;
214 self endon(
"end_healthregen");
221 if (player.health <= 0)
229 if (player.health >= healthcap)
232 if ( level.healthRegenDisabled && gettime() > player.breathingStopTime )
236 player notify (
"snd_breathing_hurt");
239 wait (0.1 + randomfloat (0.8));
244 self endon(
"end_healthregen");
245 self.hearbeatwait = .2;
251 if (player.health <= 0)
261 if (player.health >= healthcap)
263 self.hearbeatwait = .3;
268 if ( level.healthRegenDisabled && gettime() > player.breathingStopTime )
270 self.hearbeatwait = .3;
274 player playLocalSound(
"mpl_player_heartbeat");
276 wait (
self.hearbeatwait);
279 if (
self.hearbeatwait <= .6)
281 self.hearbeatwait = (
self.hearbeatwait + .1);