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.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index d9ca1ea9c71..4c93eb2c454 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -339,6 +339,23 @@ void WorldSession::HandleTogglePvP(WorldPackets::Misc::TogglePvP& /*packet*/)
}
}
+void WorldSession::HandleSetPvP(WorldPackets::Misc::SetPvP& packet)
+{
+ GetPlayer()->ApplyModFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP, packet.EnablePVP);
+ GetPlayer()->ApplyModFlag(PLAYER_FLAGS, PLAYER_FLAGS_PVP_TIMER, !packet.EnablePVP);
+
+ if (GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP))
+ {
+ if (!GetPlayer()->IsPvP() || GetPlayer()->pvpInfo.EndTimer)
+ GetPlayer()->UpdatePvP(true, true);
+ }
+ else
+ {
+ if (!GetPlayer()->pvpInfo.IsHostile && GetPlayer()->IsPvP())
+ GetPlayer()->pvpInfo.EndTimer = time(nullptr); // start set-off
+ }
+}
+
void WorldSession::HandlePortGraveyard(WorldPackets::Misc::PortGraveyard& /*packet*/)
{
if (GetPlayer()->IsAlive() || !GetPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST))