aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Player/Player.cpp14
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp27
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h40
3 files changed, 70 insertions, 11 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 42dfc34c6de..215a82d169c 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -725,22 +725,14 @@ void Player::SendMirrorTimer(MirrorTimerType Type, uint32 MaxValue, uint32 Curre
StopMirrorTimer(Type);
return;
}
- WorldPacket data(SMSG_START_MIRROR_TIMER, (21));
- data << (uint32)Type;
- data << CurrentValue;
- data << MaxValue;
- data << Regen;
- data << (uint8)0;
- data << (uint32)0; // spell id
- SendDirectMessage(&data);
+
+ SendDirectMessage(WorldPackets::Misc::StartMirrorTimer(Type, CurrentValue, MaxValue, Regen, 0, 0).Write());
}
void Player::StopMirrorTimer(MirrorTimerType Type)
{
m_MirrorTimer[Type] = DISABLED_MIRROR_TIMER;
- WorldPacket data(SMSG_STOP_MIRROR_TIMER, 4);
- data << (uint32)Type;
- SendDirectMessage(&data);
+ SendDirectMessage(WorldPackets::Misc::StopMirrorTimer(Type).Write());
}
bool Player::IsImmuneToEnvironmentalDamage() const
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index 1c83e7ac109..dd75cafc3b4 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -41,6 +41,33 @@ WorldPacket const* WorldPackets::Misc::BinderConfirm::Write()
return &_worldPacket;
}
+WorldPacket const* WorldPackets::Misc::StartMirrorTimer::Write()
+{
+ _worldPacket << uint32(Timer);
+ _worldPacket << uint32(Value);
+ _worldPacket << uint32(MaxValue);
+ _worldPacket << int32(Scale);
+ _worldPacket << uint8(Paused);
+ _worldPacket << uint32(SpellID);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Misc::PauseMirrorTimer::Write()
+{
+ _worldPacket << uint32(Timer);
+ _worldPacket << uint8(Paused);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Misc::StopMirrorTimer::Write()
+{
+ _worldPacket << uint32(Timer);
+
+ return &_worldPacket;
+}
+
WorldPacket const* WorldPackets::Misc::InvalidatePlayer::Write()
{
_worldPacket << Guid;
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index 8c7e1957c04..bd5726d3249 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -64,6 +64,46 @@ namespace WorldPackets
ObjectGuid Unit;
};
+ class StartMirrorTimer final : public ServerPacket
+ {
+ public:
+ StartMirrorTimer() : ServerPacket(SMSG_START_MIRROR_TIMER, 21) { }
+ StartMirrorTimer(uint32 timer, uint32 value, uint32 maxValue, int32 scale, bool paused, uint32 spellID) :
+ ServerPacket(SMSG_START_MIRROR_TIMER, 21), Timer(timer), Value(value), MaxValue(maxValue), Scale(scale), Paused(paused), SpellID(spellID) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 Timer = 0;
+ uint32 Value = 0;
+ uint32 MaxValue = 0;
+ int32 Scale = 0;
+ bool Paused = false;
+ uint32 SpellID = 0;
+ };
+
+ class PauseMirrorTimer final : public ServerPacket
+ {
+ public:
+ PauseMirrorTimer() : ServerPacket(SMSG_PAUSE_MIRROR_TIMER, 5) { }
+ PauseMirrorTimer(uint32 timer, bool paused) : ServerPacket(SMSG_PAUSE_MIRROR_TIMER, 5), Timer(timer), Paused(paused) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 Timer = 0;
+ bool Paused = true;
+ };
+
+ class StopMirrorTimer final : public ServerPacket
+ {
+ public:
+ StopMirrorTimer() : ServerPacket(SMSG_STOP_MIRROR_TIMER, 4) { }
+ StopMirrorTimer(uint32 timer) : ServerPacket(SMSG_STOP_MIRROR_TIMER, 4), Timer(timer) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 Timer = 0;
+ };
+
class InvalidatePlayer final : public ServerPacket
{
public: