diff options
author | Shauren <shauren.trinity@gmail.com> | 2020-08-28 23:59:17 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2020-08-28 23:59:17 +0200 |
commit | bf7efe3ca040f2dcd965e382ff863f0a924af23f (patch) | |
tree | 836cbb478c34b3e035a28453a3311bb53d0cd8ac | |
parent | b928955185f62194307b36cbd136f32bf4517959 (diff) |
Core/PacketIO: Fixed structure of "fake" SMSG_SPELL_GO sent when loading pets from db
Closes #25354
-rw-r--r-- | src/server/game/Entities/Pet/Pet.cpp | 16 | ||||
-rw-r--r-- | src/server/game/Server/Packets/SpellPackets.h | 6 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 3 |
3 files changed, 13 insertions, 12 deletions
diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 272f1bdf099..6de742f9353 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -31,6 +31,7 @@ #include "SpellAuras.h" #include "SpellHistory.h" #include "SpellMgr.h" +#include "SpellPackets.h" #include "Unit.h" #include "Util.h" #include "WorldPacket.h" @@ -338,14 +339,13 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c /// @todo pets should be summoned from real cast instead of just faking it? if (petInfo->CreatedBySpellId) { - WorldPacket data(SMSG_SPELL_GO, (8+8+4+4+2)); - data << owner->GetPackGUID(); - data << owner->GetPackGUID(); - data << uint8(0); - data << uint32(petInfo->CreatedBySpellId); - data << uint32(256); // CAST_FLAG_UNKNOWN3 - data << uint32(0); - owner->SendMessageToSet(&data, true); + WorldPackets::Spells::SpellGo spellGo; + spellGo.Cast.CasterGUID = owner->GetGUID(); + spellGo.Cast.CasterUnit = owner->GetGUID(); + spellGo.Cast.SpellID = petInfo->CreatedBySpellId; + spellGo.Cast.CastFlags = CAST_FLAG_UNKNOWN_9; + spellGo.Cast.CastTime = GameTime::GetGameTimeMS(); + owner->SendMessageToSet(spellGo.Write(), true); } owner->SetMinion(this, true); diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index 1968274df79..764187a4b1e 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -163,7 +163,11 @@ namespace WorldPackets class SpellGo final : public ServerPacket { public: - SpellGo() : ServerPacket(SMSG_SPELL_GO) { } + SpellGo() : ServerPacket(SMSG_SPELL_GO) + { + Cast.HitTargets.emplace(); + Cast.MissStatus.emplace(); + } WorldPacket const* Write() override; diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 11e24e6e8b1..34ccb63632e 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4431,9 +4431,6 @@ void Spell::UpdateSpellCastDataAmmo(WorldPackets::Spells::SpellAmmo& ammo) /// Writes miss and hit targets for a SMSG_SPELL_GO packet void Spell::UpdateSpellCastDataTargets(WorldPackets::Spells::SpellCastData& data) { - data.HitTargets.emplace(); - data.MissStatus.emplace(); - // This function also fill data for channeled spells: // m_needAliveTargetMask req for stop channelig if one target die for (TargetInfo& targetInfo : m_UniqueTargetInfo) |