aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorWarpten <vertozor@gmail.com>2016-06-03 09:27:27 +0200
committerWarpten <vertozor@gmail.com>2016-06-03 09:27:27 +0200
commit12f029d442ecc2c89c4e4c37120db786f74b2e4f (patch)
tree6d6bdc5842b21bebc65eb9bf807d451ac66a79cc /src/server/game/Entities/Unit
parentc631656fb8c751e65cce6b880bee8f213e07ac98 (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.cpp35
-rw-r--r--src/server/game/Entities/Unit/Unit.h16
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);