From: terencehill Date: Wed, 1 Apr 2020 13:31:38 +0000 (+0200) Subject: Make so that CalcRotRegen (renamed to RotRegen) applies the new amount of a certain... X-Git-Tag: xonotic-v0.8.5~1138 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=909bca4321ebb4211612f8099c2865e1c6787415;p=xonotic%2Fxonotic-data.pk3dir.git Make so that CalcRotRegen (renamed to RotRegen) applies the new amount of a certain resource but only if different --- diff --git a/qcsrc/server/client.qc b/qcsrc/server/client.qc index dcddced84..3592f33ad 100644 --- a/qcsrc/server/client.qc +++ b/qcsrc/server/client.qc @@ -1537,8 +1537,10 @@ float CalcRot(float current, float stable, float rotfactor, float rotframetime) return max(stable, current + (stable - current) * rotfactor * rotframetime); } -float CalcRotRegen(float current, float regenstable, float regenfactor, float regenlinear, float regenframetime, float rotstable, float rotfactor, float rotlinear, float rotframetime, float limit) +void RotRegen(entity this, int res, float regenstable, float regenfactor, float regenlinear, float regenframetime, float rotstable, float rotfactor, float rotlinear, float rotframetime, float limit) { + float old = GetResource(this, res); + float current = old; if(current > rotstable) { if(rotframetime > 0) @@ -1559,7 +1561,8 @@ float CalcRotRegen(float current, float regenstable, float regenfactor, float re if(current > limit) current = limit; - return current; + if (current != old) + SetResource(this, res, current); } void player_regen(entity this) @@ -1600,12 +1603,13 @@ void player_regen(entity this) limith = limith * limit_mod; limita = limita * limit_mod; - SetResource(this, RES_ARMOR, CalcRotRegen(GetResource(this, RES_ARMOR), mina, autocvar_g_balance_armor_regen, autocvar_g_balance_armor_regenlinear, - regen_mod * frametime * (time > this.pauseregen_finished), maxa, autocvar_g_balance_armor_rot, autocvar_g_balance_armor_rotlinear, - rot_mod * frametime * (time > this.pauserotarmor_finished), limita)); - SetResource(this, RES_HEALTH, CalcRotRegen(GetResource(this, RES_HEALTH), regen_health_stable, regen_health, regen_health_linear, - regen_mod * frametime * (time > this.pauseregen_finished), regen_health_rotstable, regen_health_rot, regen_health_rotlinear, - rot_mod * frametime * (time > this.pauserothealth_finished), limith)); + RotRegen(this, RES_ARMOR, mina, autocvar_g_balance_armor_regen, autocvar_g_balance_armor_regenlinear, + regen_mod * frametime * (time > this.pauseregen_finished), maxa, autocvar_g_balance_armor_rot, autocvar_g_balance_armor_rotlinear, + rot_mod * frametime * (time > this.pauserotarmor_finished), limita); + + RotRegen(this, RES_HEALTH, regen_health_stable, regen_health, regen_health_linear, + regen_mod * frametime * (time > this.pauseregen_finished), regen_health_rotstable, regen_health_rot, regen_health_rotlinear, + rot_mod * frametime * (time > this.pauserothealth_finished), limith); } // if player rotted to death... die! @@ -1626,9 +1630,9 @@ void player_regen(entity this) minf = autocvar_g_balance_fuel_regenstable; limitf = GetResourceLimit(this, RES_FUEL); - SetResource(this, RES_FUEL, CalcRotRegen(GetResource(this, RES_FUEL), minf, autocvar_g_balance_fuel_regen, autocvar_g_balance_fuel_regenlinear, - frametime * (time > this.pauseregen_finished) * ((this.items & ITEM_JetpackRegen.m_itemid) != 0), - maxf, autocvar_g_balance_fuel_rot, autocvar_g_balance_fuel_rotlinear, frametime * (time > this.pauserotfuel_finished), limitf)); + RotRegen(this, RES_FUEL, minf, autocvar_g_balance_fuel_regen, autocvar_g_balance_fuel_regenlinear, + frametime * (time > this.pauseregen_finished) * ((this.items & ITEM_JetpackRegen.m_itemid) != 0), + maxf, autocvar_g_balance_fuel_rot, autocvar_g_balance_fuel_rotlinear, frametime * (time > this.pauserotfuel_finished), limitf); } } diff --git a/qcsrc/server/client.qh b/qcsrc/server/client.qh index 887a026aa..8088f5272 100644 --- a/qcsrc/server/client.qh +++ b/qcsrc/server/client.qh @@ -266,7 +266,7 @@ void DebugPrintToChatTeam(int team_num, string text); void play_countdown(entity this, float finished, Sound samp); -float CalcRotRegen(float current, float regenstable, float regenfactor, float regenlinear, float regenframetime, float rotstable, float rotfactor, float rotlinear, float rotframetime, float limit); +void RotRegen(entity this, float current, float regenstable, float regenfactor, float regenlinear, float regenframetime, float rotstable, float rotfactor, float rotlinear, float rotframetime, float limit); bool Spectate(entity this, entity pl);