Core/Unit: Fix some health-related calculations by adjusting maximum size to 64 bit integers, closes issue 3778
--HG-- branch : trunk
This commit is contained in:
@@ -1213,9 +1213,9 @@ class Unit : public WorldObject
|
|||||||
uint32 GetMaxHealth() const { return GetUInt32Value(UNIT_FIELD_MAXHEALTH); }
|
uint32 GetMaxHealth() const { return GetUInt32Value(UNIT_FIELD_MAXHEALTH); }
|
||||||
|
|
||||||
inline bool IsFullHealth() const { return GetHealth() == GetMaxHealth(); }
|
inline bool IsFullHealth() const { return GetHealth() == GetMaxHealth(); }
|
||||||
inline bool HealthBelowPct(int32 pct) const { return GetHealth() * 100 < GetMaxHealth() * pct; }
|
inline bool HealthBelowPct(uint32 pct) const { return GetHealth() * (uint64)100 < GetMaxHealth() * (uint64)pct; }
|
||||||
inline bool HealthBelowPctDamaged(int32 pct, uint32 damage) const { return (int32(GetHealth()) - damage) * 100 < GetMaxHealth() * pct; }
|
inline bool HealthBelowPctDamaged(uint32 pct, uint32 damage) const { return (int32(GetHealth()) - damage) * (int64)100 < GetMaxHealth() * (int64)pct; }
|
||||||
inline bool HealthAbovePct(int32 pct) const { return GetHealth() * 100 > GetMaxHealth() * pct; }
|
inline bool HealthAbovePct(uint32 pct) const { return GetHealth() * (uint64)100 > GetMaxHealth() * (uint64)pct; }
|
||||||
inline float GetHealthPct() const { return GetMaxHealth() ? 100.f * GetHealth() / GetMaxHealth() : 0.0f; }
|
inline float GetHealthPct() const { return GetMaxHealth() ? 100.f * GetHealth() / GetMaxHealth() : 0.0f; }
|
||||||
inline uint32 CountPctFromMaxHealth(int32 pct) const { return uint32(float(pct) * GetMaxHealth() / 100.0f); }
|
inline uint32 CountPctFromMaxHealth(int32 pct) const { return uint32(float(pct) * GetMaxHealth() / 100.0f); }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user