diff options
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 2 | ||||
-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 | ||||
-rw-r--r-- | src/server/game/Handlers/PetHandler.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/Packets/CombatPackets.h | 2 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MovementPackets.cpp | 13 | ||||
-rw-r--r-- | src/server/game/Server/Packets/SpellPackets.cpp | 11 | ||||
-rw-r--r-- | src/server/game/Server/Packets/SpellPackets.h | 25 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.h | 4 |
15 files changed, 73 insertions, 56 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index a1ca9bd5f73..79d05ecb2bb 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -381,7 +381,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) const case CONDITION_HP_VAL: { if (Unit* unit = object->ToUnit()) - condMeets = CompareValues(static_cast<ComparisionType>(ConditionValue2), unit->GetHealth(), static_cast<uint32>(ConditionValue1)); + condMeets = CompareValues(static_cast<ComparisionType>(ConditionValue2), unit->GetHealth(), static_cast<uint64>(ConditionValue1)); break; } case CONDITION_HP_PCT: 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); diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index a1e57ff087a..c3a57893bfc 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -380,7 +380,7 @@ void WorldSession::HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spe else { if (pet->isPossessed() || pet->IsVehicle()) /// @todo: confirm this check - Spell::SendCastResult(GetPlayer(), spellInfo, 0, result); + Spell::SendCastResult(GetPlayer(), spellInfo, ObjectGuid::Create<HighGuid::Cast>(GetPlayer()->GetMapId(), 0, 0), result); else spell->SendPetCastResult(result); diff --git a/src/server/game/Server/Packets/CombatPackets.h b/src/server/game/Server/Packets/CombatPackets.h index 5554ac9b0b5..4a8eddc2562 100644 --- a/src/server/game/Server/Packets/CombatPackets.h +++ b/src/server/game/Server/Packets/CombatPackets.h @@ -186,7 +186,7 @@ namespace WorldPackets WorldPacket const* Write() override; ObjectGuid Guid; - int32 Health = 0; + int64 Health = 0; }; class ThreatClear final : public ServerPacket diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 8795042bf86..209aab0af00 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -516,6 +516,10 @@ WorldPacket const* WorldPackets::Movement::NewWorld::Write() _worldPacket << MapID; _worldPacket << Pos.PositionXYZOStream(); _worldPacket << Reason; + // New in 7.x - Does something movement-related (velocities ???) + _worldPacket << float(0.0f); + _worldPacket << float(0.0f); + _worldPacket << float(0.0f); return &_worldPacket; } @@ -692,7 +696,14 @@ WorldPacket const* WorldPackets::Movement::MoveUpdateRemoveMovementForce::Write( WorldPacket const* WorldPackets::Movement::MoveUpdateApplyMovementForce::Write() { _worldPacket << *movementInfo; - _worldPacket << Force; + _worldPacket << Force.ID; + _worldPacket << Force.Origin; + _worldPacket << Force.Direction; + _worldPacket << Force.TransportPosition; + _worldPacket << Force.TransportID; + _worldPacket << Force.Magnitude; + _worldPacket.WriteBits(Force.Type, 2); + _worldPacket.FlushBits(); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index 53800dbb726..72a38fa42b5 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -354,7 +354,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastData con { data << spellCastData.CasterGUID; data << spellCastData.CasterUnit; - data << uint8(spellCastData.CastID); + data << spellCastData.CastID; data << int32(spellCastData.SpellID); data << uint32(spellCastData.SpellXSpellVisualID); data << uint32(spellCastData.CastFlags); @@ -431,7 +431,7 @@ WorldPacket const* WorldPackets::Spells::LearnedSpells::Write() WorldPacket const* WorldPackets::Spells::SpellFailure::Write() { _worldPacket << CasterUnit; - _worldPacket << uint8(CastID); + _worldPacket << CastID; _worldPacket << int32(SpellID); _worldPacket << uint32(SpelXSpellVisualID); _worldPacket << uint16(Reason); @@ -442,7 +442,7 @@ WorldPacket const* WorldPackets::Spells::SpellFailure::Write() WorldPacket const* WorldPackets::Spells::SpellFailedOther::Write() { _worldPacket << CasterUnit; - _worldPacket << uint8(CastID); + _worldPacket << CastID; _worldPacket << uint32(SpellID); _worldPacket << uint8(Reason); @@ -451,11 +451,12 @@ WorldPacket const* WorldPackets::Spells::SpellFailedOther::Write() WorldPacket const* WorldPackets::Spells::CastFailed::Write() { + _worldPacket << CastID; _worldPacket << int32(SpellID); + _worldPacket << int32(SpellXSpellVisualID); _worldPacket << int32(Reason); _worldPacket << int32(FailedArg1); _worldPacket << int32(FailedArg2); - _worldPacket << uint8(CastID); return &_worldPacket; } @@ -800,7 +801,7 @@ void WorldPackets::Spells::MissileTrajectoryCollision::Read() WorldPacket const* WorldPackets::Spells::NotifyMissileTrajectoryCollision::Write() { _worldPacket << Caster; - _worldPacket << uint8(CastID); + _worldPacket << CastID; _worldPacket << CollisionPos; return &_worldPacket; diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index 0680405eeb2..45e586353fe 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -246,7 +246,7 @@ namespace WorldPackets struct SpellCastRequest { - uint8 CastID = 0; + ObjectGuid CastID; int32 SpellID = 0; uint32 SpellXSpellVisualID = 0; uint8 SendCastFlags = 0; @@ -340,7 +340,7 @@ namespace WorldPackets { ObjectGuid CasterGUID; ObjectGuid CasterUnit; - uint8 CastID = 0; + ObjectGuid CastID; int32 SpellID = 0; uint32 SpellXSpellVisualID = 0; uint32 CastFlags = 0; @@ -403,7 +403,7 @@ namespace WorldPackets uint32 SpellID = 0; uint32 SpelXSpellVisualID = 0; uint16 Reason = 0; - uint8 CastID = 0; + ObjectGuid CastID; }; class SpellFailedOther final : public ServerPacket @@ -416,7 +416,7 @@ namespace WorldPackets ObjectGuid CasterUnit; uint32 SpellID = 0; uint8 Reason = 0; - uint8 CastID = 0; + ObjectGuid CastID; }; class TC_GAME_API CastFailed final : public ServerPacket @@ -426,11 +426,12 @@ namespace WorldPackets WorldPacket const* Write() override; - int32 Reason = 0; - int32 FailedArg1 = -1; - int32 FailedArg2 = -1; - int32 SpellID = 0; - uint8 CastID = 0; + ObjectGuid CastID; + int32 Reason = 0; + int32 SpellXSpellVisualID = 0; + int32 FailedArg1 = -1; + int32 FailedArg2 = -1; + int32 SpellID = 0; }; struct SpellModifierData @@ -659,7 +660,7 @@ namespace WorldPackets void Read() override; uint32 SpellID = 0; - uint8 CastID = 0; + ObjectGuid CastID; }; class OpenItem final : public ClientPacket @@ -818,7 +819,7 @@ namespace WorldPackets ObjectGuid Target; int32 SpellID = 0; - uint8 CastID = 0; + ObjectGuid CastID; G3D::Vector3 CollisionPos; }; @@ -830,7 +831,7 @@ namespace WorldPackets WorldPacket const* Write() override; ObjectGuid Caster; - uint8 CastID = 0; + ObjectGuid CastID; G3D::Vector3 CollisionPos; }; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index f4cf3eb99bc..ed3293cf027 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1193,7 +1193,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_ROSTER_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GUILD_SEND_RANK_CHANGE, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_HEALTH_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_HEALTH_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HIGHEST_THREAT_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOTFIX_NOTIFY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOTFIX_NOTIFY_BLOB, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1388,7 +1388,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTIPLE_PACKETS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_TAXI_PATH, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_DEST_LOC_SPELL_CAST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NOTIFY_MONEY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 4a166351fe5..84cfabf4e8f 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -589,7 +589,7 @@ m_spellValue(new SpellValue(caster->GetMap()->GetDifficultyID(), m_spellInfo)), m_procVictim = 0; m_procEx = 0; focusObject = NULL; - m_cast_count = 0; + m_cast_count = ObjectGuid::Empty; memset(m_misc.Raw.Data, 0, sizeof(m_misc.Raw.Data)); m_SpellVisual = m_spellInfo->GetSpellXSpellVisualId(caster->GetMap()->GetDifficultyID()); m_preCastSpell = 0; @@ -2925,7 +2925,7 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered m_caster->m_Events.AddEvent(Event, m_caster->m_Events.CalculateTime(1)); //Prevent casting at cast another spell (ServerSide check) - if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CAST_IN_PROGRESS) && m_caster->IsNonMeleeSpellCast(false, true, true) && m_cast_count) + if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CAST_IN_PROGRESS) && m_caster->IsNonMeleeSpellCast(false, true, true) && !m_cast_count.IsEmpty()) { SendCastResult(SPELL_FAILED_SPELL_IN_PROGRESS); finish(false); @@ -3742,7 +3742,7 @@ void Spell::SendPetCastResult(SpellCastResult result) SendCastResult(owner->ToPlayer(), m_spellInfo, m_cast_count, result, SPELL_CUSTOM_ERROR_NONE, SMSG_PET_CAST_FAILED, m_misc.Raw.Data); } -void Spell::SendCastResult(Player* caster, SpellInfo const* spellInfo, uint8 cast_count, SpellCastResult result, SpellCustomErrors customError /*= SPELL_CUSTOM_ERROR_NONE*/, OpcodeServer opcode /*= SMSG_CAST_FAILED*/, uint32* misc /*= nullptr*/) +void Spell::SendCastResult(Player* caster, SpellInfo const* spellInfo, ObjectGuid cast_count, SpellCastResult result, SpellCustomErrors customError /*= SPELL_CUSTOM_ERROR_NONE*/, OpcodeServer opcode /*= SMSG_CAST_FAILED*/, uint32* misc /*= nullptr*/) { if (result == SPELL_CAST_OK) return; diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 2be8c001ae7..7dda7451e48 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -522,7 +522,7 @@ class TC_GAME_API Spell void CheckSrc() { if (!m_targets.HasSrc()) m_targets.SetSrc(*m_caster); } void CheckDst() { if (!m_targets.HasDst()) m_targets.SetDst(*m_caster); } - static void SendCastResult(Player* caster, SpellInfo const* spellInfo, uint8 cast_count, SpellCastResult result, SpellCustomErrors customError = SPELL_CUSTOM_ERROR_NONE, OpcodeServer opcode = SMSG_CAST_FAILED, uint32* misc = nullptr); + static void SendCastResult(Player* caster, SpellInfo const* spellInfo, ObjectGuid cast_count, SpellCastResult result, SpellCustomErrors customError = SPELL_CUSTOM_ERROR_NONE, OpcodeServer opcode = SMSG_CAST_FAILED, uint32* misc = nullptr); void SendCastResult(SpellCastResult result); void SendPetCastResult(SpellCastResult result); void SendSpellStart(); @@ -553,7 +553,7 @@ class TC_GAME_API Spell ObjectGuid m_castItemGUID; uint32 m_castItemEntry; int32 m_castItemLevel; - uint8 m_cast_count; + ObjectGuid m_cast_count; uint32 m_castFlagsEx; union { |