aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorIncorrect <ovitnez@gmail.com>2016-05-01 12:31:55 +0200
committerShauren <shauren.trinity@gmail.com>2016-05-01 12:53:39 +0200
commitc28e6a8c160fd5f190ddfc19a60e2a34df9a19ef (patch)
tree980422cbde011fd6789f6449c2582413c6d5037d /src/server/game/Server
parent7c85be7d6dbf733251ee815e1e345f103b3daef4 (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.cpp11
-rw-r--r--src/server/game/Server/Packets/MovementPackets.h13
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
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);