diff options
| author | Incorrect <ovitnez@gmail.com> | 2016-05-01 12:31:55 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-05-01 12:53:39 +0200 |
| commit | c28e6a8c160fd5f190ddfc19a60e2a34df9a19ef (patch) | |
| tree | 980422cbde011fd6789f6449c2582413c6d5037d /src/server/game/Server | |
| parent | 7c85be7d6dbf733251ee815e1e345f103b3daef4 (diff) | |
Core/Spells: Fixed overwriting summon requests
Closes #17049
Diffstat (limited to 'src/server/game/Server')
| -rw-r--r-- | src/server/game/Server/Packets/MovementPackets.cpp | 11 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/MovementPackets.h | 13 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 |
3 files changed, 25 insertions, 1 deletions
diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 8b41b20bd8b..582a057e09f 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -704,3 +704,14 @@ void WorldPackets::Movement::MoveSplineDone::Read() _worldPacket >> movementInfo; _worldPacket >> SplineID; } + +WorldPacket const* WorldPackets::Movement::SummonRequest::Write() +{ + _worldPacket << SummonerGUID; + _worldPacket << uint32(SummonerVirtualRealmAddress); + _worldPacket << int32(AreaID); + _worldPacket.WriteBit(SkipStartingArea); + _worldPacket.FlushBits(); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index 018e0d5fe1a..6d97161d9c9 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -448,6 +448,19 @@ namespace WorldPackets MovementInfo movementInfo; int32 SplineID = 0; }; + + class SummonRequest final : public ServerPacket + { + public: + SummonRequest() : ServerPacket(SMSG_SUMMON_REQUEST, 16 + 4 + 4 + 1) { } + + WorldPacket const* Write() override; + + ObjectGuid SummonerGUID; + uint32 SummonerVirtualRealmAddress = 0; + int32 AreaID = 0; + bool SkipStartingArea = false; + }; } ByteBuffer& operator<<(ByteBuffer& data, Movement::MonsterSplineFilterKey const& monsterSplineFilterKey); diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 5af870900a1..44d05585373 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1637,7 +1637,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_STREAMING_MOVIES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUMMON_CANCEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUMMON_REQUEST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUMMON_REQUEST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUPERCEDED_SPELLS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUPPRESS_NPC_GREETINGS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUSPEND_COMMS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); |
