aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/MiscHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/MiscHandler.cpp')
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp52
1 files changed, 17 insertions, 35 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 13b60d571d3..33b9d8fe461 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -1423,48 +1423,30 @@ void WorldSession::HandleUITimeRequest(WorldPackets::Misc::UITimeRequest& /*requ
void WorldSession::SendSetPhaseShift(std::set<uint32> const& phaseIds, std::set<uint32> const& terrainswaps, std::set<uint32> const& worldMapAreaSwaps)
{
- ObjectGuid guid = _player->GetGUID();
-
WorldPacket data(SMSG_SET_PHASE_SHIFT_CHANGE, 1 + 8 + 4 + 4 + 4 + 4 + 2 * phaseIds.size() + 4 + terrainswaps.size() * 2);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[7]);
-
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[4]);
-
- data << uint32(worldMapAreaSwaps.size());
- for (auto mapSwap : worldMapAreaSwaps)
- data << uint16(mapSwap); // WorldMapArea.dbc id (controls map display)
-
- data.WriteByteSeq(guid[1]);
-
- data << uint32(phaseIds.size() ? 0 : 8); // flags (not phasemask)
-
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[6]);
-
- data << uint32(0); // Inactive terrain swaps
- //for (uint8 i = 0; i < inactiveSwapsCount; ++i)
- // data << uint16(0);
-
- data << uint32(phaseIds.size()) * 2; // Phase.dbc ids
+
+ data << _player->GetGUID(); // Client
+ data << uint32(phaseIds.size() ? 0 : 8); // PhaseShiftFlags
+
+ data << uint32(phaseIds.size()); // PhaseShiftCount
+ data << _player->GetGUID(); // PersonalGUID
for (std::set<uint32>::const_iterator itr = phaseIds.begin(); itr != phaseIds.end(); ++itr)
- data << uint16(*itr);
-
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[0]);
+ {
+ data << uint16(1); // PhaseFlags
+ data << uint16(*itr); // Id
+ }
data << uint32(terrainswaps.size()) * 2; // Active terrain swaps
for (std::set<uint32>::const_iterator itr = terrainswaps.begin(); itr != terrainswaps.end(); ++itr)
data << uint16(*itr);
- data.WriteByteSeq(guid[5]);
+ data << uint32(0); // Inactive terrain swaps
+ //for (uint8 i = 0; i < inactiveSwapsCount; ++i)
+ // data << uint16(0);
+
+ data << uint32(worldMapAreaSwaps.size()) * 2;
+ for (auto mapSwap : worldMapAreaSwaps)
+ data << uint16(mapSwap); // WorldMapArea.dbc id (controls map display)
SendPacket(&data);
}