diff options
| author | Warpten <vertozor@gmail.com> | 2016-06-03 09:27:27 +0200 |
|---|---|---|
| committer | Warpten <vertozor@gmail.com> | 2016-06-03 09:27:27 +0200 |
| commit | 12f029d442ecc2c89c4e4c37120db786f74b2e4f (patch) | |
| tree | 6d6bdc5842b21bebc65eb9bf807d451ac66a79cc /src/server/game/Entities/Unit | |
| parent | c631656fb8c751e65cce6b880bee8f213e07ac98 (diff) | |
Core/PacketIO: Implemented new Cast HighGuid type and fix some mistakes with SMSG_MOVE_UPDATE_APPLY_MOVEMENT_FORCE
Core/Updatefields: Health is now stored as an unsigned long int.
Diffstat (limited to 'src/server/game/Entities/Unit')
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 35 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 16 |
2 files changed, 25 insertions, 26 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f42be192a3f..6a886ef3f62 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -3308,7 +3308,7 @@ void Unit::_RemoveNoStackAurasDueToAura(Aura* aura) { Unit* caster = aura->GetCaster(); if (caster && caster->GetTypeId() == TYPEID_PLAYER) - Spell::SendCastResult(caster->ToPlayer(), aura->GetSpellInfo(), 1, SPELL_FAILED_AURA_BOUNCED); + Spell::SendCastResult(caster->ToPlayer(), aura->GetSpellInfo(), ObjectGuid::Create<HighGuid::Cast>(GetMapId(), 0, 1), SPELL_FAILED_AURA_BOUNCED); } aura->Remove(); @@ -9595,23 +9595,23 @@ bool Unit::_IsValidAssistTarget(Unit const* target, SpellInfo const* bySpell) co return true; } -int32 Unit::ModifyHealth(int32 dVal) +int64 Unit::ModifyHealth(int64 dVal) { - int32 gain = 0; + int64 gain = 0; if (dVal == 0) return 0; - int32 curHealth = (int32)GetHealth(); + int64 curHealth = (int64)GetHealth(); - int32 val = dVal + curHealth; + int64 val = dVal + curHealth; if (val <= 0) { SetHealth(0); return -curHealth; } - int32 maxHealth = (int32)GetMaxHealth(); + int64 maxHealth = (int64)GetMaxHealth(); if (val < maxHealth) { @@ -9632,28 +9632,27 @@ int32 Unit::ModifyHealth(int32 dVal) if (Player* player = GetCharmerOrOwnerPlayerOrPlayerItself()) player->GetSession()->SendPacket(packet.Write()); - } return gain; } -int32 Unit::GetHealthGain(int32 dVal) +int64 Unit::GetHealthGain(int64 dVal) { - int32 gain = 0; + int64 gain = 0; if (dVal == 0) return 0; - int32 curHealth = (int32)GetHealth(); + int64 curHealth = (int64)GetHealth(); - int32 val = dVal + curHealth; + int64 val = dVal + curHealth; if (val <= 0) { return -curHealth; } - int32 maxHealth = (int32)GetMaxHealth(); + int64 maxHealth = (int64)GetMaxHealth(); if (val < maxHealth) gain = dVal; @@ -10918,7 +10917,7 @@ void Unit::SetLevel(uint8 lvl) } } -void Unit::SetHealth(uint32 val) +void Unit::SetHealth(uint64 val) { if (getDeathState() == JUST_DIED) val = 0; @@ -10926,12 +10925,12 @@ void Unit::SetHealth(uint32 val) val = 1; else { - uint32 maxHealth = GetMaxHealth(); + uint64 maxHealth = GetMaxHealth(); if (maxHealth < val) val = maxHealth; } - SetUInt32Value(UNIT_FIELD_HEALTH, val); + SetUInt64Value(UNIT_FIELD_HEALTH, val); // group update if (Player* player = ToPlayer()) @@ -10946,13 +10945,13 @@ void Unit::SetHealth(uint32 val) } } -void Unit::SetMaxHealth(uint32 val) +void Unit::SetMaxHealth(uint64 val) { if (!val) val = 1; - uint32 health = GetHealth(); - SetUInt32Value(UNIT_FIELD_MAXHEALTH, val); + uint64 health = GetHealth(); + SetUInt64Value(UNIT_FIELD_MAXHEALTH, val); // group update if (GetTypeId() == TYPEID_PLAYER) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index bf766267fee..2032b8210d3 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1433,8 +1433,8 @@ class TC_GAME_API Unit : public WorldObject uint32 GetResistance(SpellSchoolMask mask) const; void SetResistance(SpellSchools school, int32 val) { SetStatInt32Value(UNIT_FIELD_RESISTANCES+school, val); } - uint32 GetHealth() const { return GetUInt32Value(UNIT_FIELD_HEALTH); } - uint32 GetMaxHealth() const { return GetUInt32Value(UNIT_FIELD_MAXHEALTH); } + uint64 GetHealth() const { return GetUInt64Value(UNIT_FIELD_HEALTH); } + uint64 GetMaxHealth() const { return GetUInt64Value(UNIT_FIELD_MAXHEALTH); } bool IsFullHealth() const { return GetHealth() == GetMaxHealth(); } bool HealthBelowPct(int32 pct) const { return GetHealth() < CountPctFromMaxHealth(pct); } @@ -1442,14 +1442,14 @@ class TC_GAME_API Unit : public WorldObject bool HealthAbovePct(int32 pct) const { return GetHealth() > CountPctFromMaxHealth(pct); } bool HealthAbovePctHealed(int32 pct, uint32 heal) const { return uint64(GetHealth()) + uint64(heal) > CountPctFromMaxHealth(pct); } float GetHealthPct() const { return GetMaxHealth() ? 100.f * GetHealth() / GetMaxHealth() : 0.0f; } - uint32 CountPctFromMaxHealth(int32 pct) const { return CalculatePct(GetMaxHealth(), pct); } - uint32 CountPctFromCurHealth(int32 pct) const { return CalculatePct(GetHealth(), pct); } + uint64 CountPctFromMaxHealth(int32 pct) const { return CalculatePct(GetMaxHealth(), pct); } + uint64 CountPctFromCurHealth(int32 pct) const { return CalculatePct(GetHealth(), pct); } - void SetHealth(uint32 val); - void SetMaxHealth(uint32 val); + void SetHealth(uint64 val); + void SetMaxHealth(uint64 val); inline void SetFullHealth() { SetHealth(GetMaxHealth()); } - int32 ModifyHealth(int32 val); - int32 GetHealthGain(int32 dVal); + int64 ModifyHealth(int64 val); + int64 GetHealthGain(int64 dVal); Powers getPowerType() const { return Powers(GetUInt32Value(UNIT_FIELD_DISPLAY_POWER)); } void setPowerType(Powers power); |
