diff --git a/src/server/item_health.qc b/src/server/item_health.qc index bbc6968..2d76b9e 100644 --- a/src/server/item_health.qc +++ b/src/server/item_health.qc @@ -62,6 +62,7 @@ item_health::Touch(entity eToucher) Sound_Play(eToucher, CHAN_ITEM, "item_health_mega.pickup"); pl.health = bound(0, pl.health + 100, 200); + pl.m_megaHealthTime = time + 1.0f; } else { if (pl.health >= 100) return; diff --git a/src/shared/player.qc b/src/shared/player.qc index d8a9b1e..e86cb54 100644 --- a/src/shared/player.qc +++ b/src/shared/player.qc @@ -139,6 +139,7 @@ class player:NSClientPlayer float m_invisFinishTime; float m_invulnFinishTime; float m_enviroFinishTime; + float m_megaHealthTime; #endif virtual void Physics_Jump(void); @@ -480,20 +481,6 @@ player::Restore(string strKey, string strValue) void player::EvaluateEntity(void) { - /* the generic client attributes */ - NSClientPlayer::EvaluateEntity(); - - EVALUATE_FIELD(anim_top, PLAYER_TOPFRAME) - EVALUATE_FIELD(anim_top_time, PLAYER_TOPFRAME) - EVALUATE_FIELD(anim_top_delay, PLAYER_TOPFRAME) - EVALUATE_FIELD(anim_bottom, PLAYER_BOTTOMFRAME) - EVALUATE_FIELD(anim_bottom_time, PLAYER_BOTTOMFRAME) - - EVALUATE_FIELD(ammo_shells, PLAYER_AMMO1) - EVALUATE_FIELD(ammo_nails, PLAYER_AMMO1) - EVALUATE_FIELD(ammo_rockets, PLAYER_AMMO1) - EVALUATE_FIELD(ammo_cells, PLAYER_AMMO1) - if (g_items & ITEM_QUAD) { if (m_quadFinishTime < time) { g_items &= ~ITEM_QUAD; @@ -517,6 +504,27 @@ player::EvaluateEntity(void) g_items &= ~ITEM_ENVIROSUIT; } } + + if (health > 100) { + if (m_megaHealthTime < time) { + health -= 1; + m_megaHealthTime = time + 1.0f; + } + } + + /* the generic client attributes */ + NSClientPlayer::EvaluateEntity(); + + EVALUATE_FIELD(anim_top, PLAYER_TOPFRAME) + EVALUATE_FIELD(anim_top_time, PLAYER_TOPFRAME) + EVALUATE_FIELD(anim_top_delay, PLAYER_TOPFRAME) + EVALUATE_FIELD(anim_bottom, PLAYER_BOTTOMFRAME) + EVALUATE_FIELD(anim_bottom_time, PLAYER_BOTTOMFRAME) + + EVALUATE_FIELD(ammo_shells, PLAYER_AMMO1) + EVALUATE_FIELD(ammo_nails, PLAYER_AMMO1) + EVALUATE_FIELD(ammo_rockets, PLAYER_AMMO1) + EVALUATE_FIELD(ammo_cells, PLAYER_AMMO1) } /*