aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
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
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')
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.cpp2
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.h3
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp35
-rw-r--r--src/server/game/Entities/Unit/Unit.h16
6 files changed, 32 insertions, 28 deletions
diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp
index 55151f576dd..830307e931b 100644
--- a/src/server/game/Entities/Object/ObjectGuid.cpp
+++ b/src/server/game/Entities/Object/ObjectGuid.cpp
@@ -82,6 +82,7 @@ namespace
SET_GUID_NAME(BattlePet);
SET_GUID_NAME(CommerceObj);
SET_GUID_NAME(ClientSession);
+ SET_GUID_NAME(Cast);
#undef SET_GUID_NAME
}
@@ -221,3 +222,4 @@ GUID_TRAIT_INSTANTIATE_GUID(HighGuid::CallForHelp)
GUID_TRAIT_INSTANTIATE_GUID(HighGuid::AIResource)
GUID_TRAIT_INSTANTIATE_GUID(HighGuid::AILock)
GUID_TRAIT_INSTANTIATE_GUID(HighGuid::AILockTicket)
+GUID_TRAIT_INSTANTIATE_GUID(HighGuid::Cast)
diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h
index 505170a2663..e770a8b34a3 100644
--- a/src/server/game/Entities/Object/ObjectGuid.h
+++ b/src/server/game/Entities/Object/ObjectGuid.h
@@ -106,6 +106,7 @@ enum class HighGuid
BattlePet = 44,
CommerceObj = 45,
ClientSession = 46,
+ Cast = 47,
Count,
};
@@ -180,6 +181,7 @@ GUID_TRAIT_MAP_SPECIFIC(HighGuid::CallForHelp)
GUID_TRAIT_MAP_SPECIFIC(HighGuid::AIResource)
GUID_TRAIT_MAP_SPECIFIC(HighGuid::AILock)
GUID_TRAIT_MAP_SPECIFIC(HighGuid::AILockTicket)
+GUID_TRAIT_MAP_SPECIFIC(HighGuid::Cast) // Guessed
class ObjectGuid;
class PackedGuid;
@@ -259,6 +261,7 @@ class TC_GAME_API ObjectGuid
bool IsGuild() const { return GetHigh() == HighGuid::Guild; }
bool IsSceneObject() const { return GetHigh() == HighGuid::SceneObject; }
bool IsConversation() const { return GetHigh() == HighGuid::Conversation; }
+ bool IsCast() const { return GetHigh() == HighGuid::Cast; }
static TypeID GetTypeId(HighGuid high)
{
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index e42b4cdb26b..b0b661b1393 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -7770,7 +7770,7 @@ void Player::CastItemCombatSpell(Unit* target, WeaponAttackType attType, uint32
}
}
-void Player::CastItemUseSpell(Item* item, SpellCastTargets const& targets, uint8 castCount, int32* misc)
+void Player::CastItemUseSpell(Item* item, SpellCastTargets const& targets, ObjectGuid castCount, int32* misc)
{
ItemTemplate const* proto = item->GetTemplate();
// special learning case
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index a038d00f939..5bee6c6c117 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2143,7 +2143,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void UpdateItemSetAuras(bool formChange = false);
void CastItemCombatSpell(Unit* target, WeaponAttackType attType, uint32 procVictim, uint32 procEx);
- void CastItemUseSpell(Item* item, SpellCastTargets const& targets, uint8 castCount, int32* misc);
+ void CastItemUseSpell(Item* item, SpellCastTargets const& targets, ObjectGuid castCount, int32* misc);
void CastItemCombatSpell(Unit* target, WeaponAttackType attType, uint32 procVictim, uint32 procEx, Item* item, ItemTemplate const* proto);
void SendEquipmentSetList();
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);