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 | |
| 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')
| -rw-r--r-- | src/server/game/Entities/Object/ObjectGuid.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/ObjectGuid.h | 3 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 35 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 16 |
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); |
