aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/MiscHandler.cpp
diff options
context:
space:
mode:
authorMatan Shukry <matanshukry@gmail.com>2021-12-26 20:14:46 +0200
committerGitHub <noreply@github.com>2021-12-26 19:14:46 +0100
commitb821a729733db0d3742b4aefe05e5a8305724f66 (patch)
tree5950610a9f6e50d906630825457d952c9548f7cd /src/server/game/Handlers/MiscHandler.cpp
parente00b1df36ec021bb80659ab9828e0c1a9b55adcf (diff)
Core/Player: Initial War Mode support (#25926)
* Enable PvP talents * War Mode buff aura * Forced PvP flagging Co-authored-by: Shauren <shauren.trinity@gmail.com>
Diffstat (limited to 'src/server/game/Handlers/MiscHandler.cpp')
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp33
1 files changed, 19 insertions, 14 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index fe85091db82..9d94b531ac6 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -313,38 +313,43 @@ void WorldSession::HandleLogoutCancelOpcode(WorldPackets::Character::LogoutCance
void WorldSession::HandleTogglePvP(WorldPackets::Misc::TogglePvP& /*packet*/)
{
- if (GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_IN_PVP))
- {
- GetPlayer()->RemovePlayerFlag(PLAYER_FLAGS_IN_PVP);
- GetPlayer()->AddPlayerFlag(PLAYER_FLAGS_PVP_TIMER);
- if (!GetPlayer()->pvpInfo.IsHostile && GetPlayer()->IsPvP())
- GetPlayer()->pvpInfo.EndTimer = GameTime::GetGameTime() + 300; // start toggle-off
- }
- else
+ if (!GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_IN_PVP))
{
GetPlayer()->AddPlayerFlag(PLAYER_FLAGS_IN_PVP);
GetPlayer()->RemovePlayerFlag(PLAYER_FLAGS_PVP_TIMER);
if (!GetPlayer()->IsPvP() || GetPlayer()->pvpInfo.EndTimer)
GetPlayer()->UpdatePvP(true, true);
}
-}
-
-void WorldSession::HandleSetPvP(WorldPackets::Misc::SetPvP& packet)
-{
- if (!packet.EnablePVP)
+ else if (!GetPlayer()->IsWarModeLocalActive())
{
GetPlayer()->RemovePlayerFlag(PLAYER_FLAGS_IN_PVP);
GetPlayer()->AddPlayerFlag(PLAYER_FLAGS_PVP_TIMER);
if (!GetPlayer()->pvpInfo.IsHostile && GetPlayer()->IsPvP())
GetPlayer()->pvpInfo.EndTimer = GameTime::GetGameTime() + 300; // start toggle-off
}
- else
+}
+
+void WorldSession::HandleSetPvP(WorldPackets::Misc::SetPvP& packet)
+{
+ if (packet.EnablePVP)
{
GetPlayer()->AddPlayerFlag(PLAYER_FLAGS_IN_PVP);
GetPlayer()->RemovePlayerFlag(PLAYER_FLAGS_PVP_TIMER);
if (!GetPlayer()->IsPvP() || GetPlayer()->pvpInfo.EndTimer)
GetPlayer()->UpdatePvP(true, true);
}
+ else if (!GetPlayer()->IsWarModeLocalActive())
+ {
+ GetPlayer()->RemovePlayerFlag(PLAYER_FLAGS_IN_PVP);
+ GetPlayer()->AddPlayerFlag(PLAYER_FLAGS_PVP_TIMER);
+ if (!GetPlayer()->pvpInfo.IsHostile && GetPlayer()->IsPvP())
+ GetPlayer()->pvpInfo.EndTimer = GameTime::GetGameTime() + 300; // start toggle-off
+ }
+}
+
+void WorldSession::HandleSetWarMode(WorldPackets::Misc::SetWarMode& packet)
+{
+ _player->SetWarModeDesired(packet.Enable);
}
void WorldSession::HandlePortGraveyard(WorldPackets::Misc::PortGraveyard& /*packet*/)