diff options
| author | Mykhailo Redko <ovitnez@gmail.com> | 2024-02-26 12:37:28 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-26 11:37:28 +0100 |
| commit | 949d82e4d1ed2b694c8a6d7240aefc9b4d81d01e (patch) | |
| tree | 5276c3d183b7025c00df0d90a5280226b53b8a0a /src | |
| parent | e7a77c840d2509f1bb0df41d29cb54bf5348fd33 (diff) | |
Core/Units: Fix some cases where server was not sending power updates to client on time (#29573)
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6872705706f..ef84452914b 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2099,8 +2099,8 @@ void Player::Regenerate(Powers power) else m_powerFraction[power] = addvalue - integerValue; } - if (m_regenTimerCount >= 2000) - SetPower(power, curValue); + if (m_regenTimerCount >= 2000 || curValue == maxValue || curValue == 0) + SetPower(power, curValue, true, true); else UpdateUInt32Value(UNIT_FIELD_POWER1 + AsUnderlyingType(power), curValue); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f879b65074e..d31025c40ce 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -9402,9 +9402,9 @@ void Unit::SetMaxHealth(uint32 val) SetHealth(val); } -void Unit::SetPower(Powers power, uint32 val, bool withPowerUpdate /*= true*/) +void Unit::SetPower(Powers power, uint32 val, bool withPowerUpdate /*= true*/, bool force /*= false*/) { - if (GetPower(power) == val) + if (!force && GetPower(power) == val) return; uint32 maxPower = GetMaxPower(power); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 7074a6a8058..c39eb4328bc 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -934,7 +934,7 @@ class TC_GAME_API Unit : public WorldObject uint32 GetMaxPower(Powers power) const { return GetUInt32Value(UNIT_FIELD_MAXPOWER1 + int32(power)); } float GetPowerPct(Powers power) const { return GetMaxPower(power) ? 100.f * GetPower(power) / GetMaxPower(power) : 0.0f; } int32 CountPctFromMaxPower(Powers power, int32 pct) const { return CalculatePct(GetMaxPower(power), pct); } - void SetPower(Powers power, uint32 val, bool withPowerUpdate = true); + void SetPower(Powers power, uint32 val, bool withPowerUpdate = true, bool force = false); void SetMaxPower(Powers power, uint32 val); inline void SetFullPower(Powers power) { SetPower(power, GetMaxPower(power)); } // returns the change in power |
