mirror of
https://github.com/nzp-team/quakec.git
synced 2024-11-26 05:41:20 +00:00
SERVER: Instant health regeneration when above threshold, slower below. Longer regen delay times
This commit is contained in:
parent
6284935b81
commit
41cd921c5f
4 changed files with 31 additions and 8 deletions
|
@ -1191,7 +1191,7 @@ void() Draw_Crosshair =
|
||||||
drawfill([(g_width/2 + g_height/2),0,0], [g_width, g_height, 0], '0 0 0', 1, 0);
|
drawfill([(g_width/2 + g_height/2),0,0], [g_width, g_height, 0], '0 0 0', 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getstatf(STAT_HEALTH) < 11)
|
if (getstatf(STAT_HEALTH) < 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (crosshair_spread_time > time && crosshair_spread_time)
|
if (crosshair_spread_time > time && crosshair_spread_time)
|
||||||
|
@ -1529,7 +1529,7 @@ void(float width, float height) HUD_Draw =
|
||||||
HUD_Achievements(width, height);
|
HUD_Achievements(width, height);
|
||||||
|
|
||||||
|
|
||||||
if (!getstatf(STAT_SPECTATING) && (getstatf(STAT_HEALTH) > 10) && !score_show)
|
if (!getstatf(STAT_SPECTATING) && (getstatf(STAT_HEALTH) > 1) && !score_show)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (vmodel.model == GetWeaponModel(getstatf(STAT_ACTIVEWEAPON), FALSE) && vmodel.model != "" || getstatf(STAT_WEAPONZOOM) == 2)
|
if (vmodel.model == GetWeaponModel(getstatf(STAT_ACTIVEWEAPON), FALSE) && vmodel.model != "" || getstatf(STAT_WEAPONZOOM) == 2)
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
used for any sort of down, hit, etc that the player or entity
|
used for any sort of down, hit, etc that the player or entity
|
||||||
experiences
|
experiences
|
||||||
|
|
||||||
Copyright (C) 2021 NZ:P Team
|
Copyright (C) 2021-2023 NZ:P Team
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
|
@ -480,11 +480,23 @@ void(entity victim,entity attacker, float damage, float d_style) DamageHandler =
|
||||||
// Abstinence Program
|
// Abstinence Program
|
||||||
victim.ach_tracker_abst = 1;
|
victim.ach_tracker_abst = 1;
|
||||||
|
|
||||||
victim.health = victim.health - damage;
|
victim.health -= damage;
|
||||||
victim.health_delay = time + 2;
|
|
||||||
|
// Determine how long to wait before regenerating based on our Health ratio
|
||||||
|
float ratio = victim.health / victim.max_health;
|
||||||
|
|
||||||
|
// Badly hurt = longer delay.
|
||||||
|
if (ratio <= 0.2) {
|
||||||
|
victim.health_delay = time + 5;
|
||||||
|
|
||||||
|
// We're really low, so let's regen REALLY slow.
|
||||||
|
victim.health_was_very_low = true;
|
||||||
|
} else {
|
||||||
|
victim.health_delay = time + 2.4;
|
||||||
|
}
|
||||||
|
|
||||||
// shake the camera on impact
|
// shake the camera on impact
|
||||||
local vector distance;
|
vector distance;
|
||||||
distance = attacker.angles - victim.angles;
|
distance = attacker.angles - victim.angles;
|
||||||
|
|
||||||
// just to prevent radical punchangles
|
// just to prevent radical punchangles
|
||||||
|
|
|
@ -152,6 +152,7 @@ void Weapon_Logic();
|
||||||
.float reload_delay2;
|
.float reload_delay2;
|
||||||
.float switch_delay;
|
.float switch_delay;
|
||||||
.float health_delay;
|
.float health_delay;
|
||||||
|
.float health_was_very_low;
|
||||||
.float progress_bar;
|
.float progress_bar;
|
||||||
.float progress_bar_time;
|
.float progress_bar_time;
|
||||||
.float progress_bar_percent;
|
.float progress_bar_percent;
|
||||||
|
|
|
@ -380,13 +380,23 @@ void() PlayerPostThink =
|
||||||
|
|
||||||
#endif // FTE
|
#endif // FTE
|
||||||
|
|
||||||
|
// Health Regeneration
|
||||||
if (self.health_delay < time && self.health != self.max_health && !self.downed)
|
if (self.health_delay < time && self.health != self.max_health && !self.downed)
|
||||||
{
|
{
|
||||||
self.health = self.health + 5;
|
// If we weren't super low on health, regen is instant.
|
||||||
if (self.max_health < self.health)
|
if (self.health_was_very_low == true) {
|
||||||
|
self.health += 120 * frametime;
|
||||||
|
} else {
|
||||||
self.health = self.max_health;
|
self.health = self.max_health;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make sure we mark that we weren't just super hurt anymore.
|
||||||
|
if (self.max_health <= self.health) {
|
||||||
|
self.health = self.max_health;
|
||||||
|
self.health_was_very_low = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (self.progress_bar) {
|
if (self.progress_bar) {
|
||||||
if (self.progress_bar < time) {
|
if (self.progress_bar < time) {
|
||||||
if (self.downed)
|
if (self.downed)
|
||||||
|
|
Loading…
Reference in a new issue