aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp22
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp2
2 files changed, 12 insertions, 12 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index f0638cd7efc..bd366a490f1 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -20595,14 +20595,19 @@ void Player::ResetContestedPvP()
void Player::UpdatePvPFlag(time_t currTime)
{
+ if (!IsPvP())
+ return;
+
+ if (!pvpInfo.EndTimer || (currTime < pvpInfo.EndTimer +300) || pvpInfo.IsHostile)
+ return;
+
if (pvpInfo.EndTimer && pvpInfo.EndTimer <= currTime)
{
pvpInfo.EndTimer = 0;
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_PVP_TIMER);
}
- if (IsPvP() && !pvpInfo.IsHostile && !HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP | PLAYER_FLAGS_PVP_TIMER))
- UpdatePvP(false);
+ UpdatePvP(false);
}
void Player::UpdateDuelFlag(time_t currTime)
@@ -21911,14 +21916,9 @@ void Player::UpdateHomebindTime(uint32 time)
void Player::InitPvP()
{
+ // pvp flag should stay after relog
if (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP))
UpdatePvP(true, true);
- else if (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_PVP_TIMER))
- {
- UpdatePvP(true, true);
- if (!pvpInfo.IsHostile)
- pvpInfo.EndTimer = GameTime::GetGameTime() + 300;
- }
}
void Player::UpdatePvPState(bool onlyFFA)
@@ -21945,7 +21945,7 @@ void Player::UpdatePvPState(bool onlyFFA)
if (onlyFFA)
return;
- if (pvpInfo.IsHostile) // in hostile area
+ if (pvpInfo.IsHostile) // in hostile area
{
if (!IsPvP() || pvpInfo.EndTimer)
UpdatePvP(true, true);
@@ -21953,7 +21953,7 @@ void Player::UpdatePvPState(bool onlyFFA)
else // in friendly area
{
if (IsPvP() && !HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_IN_PVP) && !pvpInfo.EndTimer)
- pvpInfo.EndTimer = GameTime::GetGameTime() + 300; // start toggle-off
+ pvpInfo.EndTimer = GameTime::GetGameTime(); // start toggle-off
}
}
@@ -21973,7 +21973,7 @@ void Player::UpdatePvP(bool state, bool _override)
}
else
{
- pvpInfo.EndTimer = GameTime::GetGameTime() + 300;
+ pvpInfo.EndTimer = GameTime::GetGameTime();
SetPvP(state);
}
}
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 1cd701e39ff..59dab6e70d2 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -452,7 +452,7 @@ void WorldSession::HandleTogglePvP(WorldPackets::Misc::TogglePvP& togglePvP)
else
{
if (!GetPlayer()->pvpInfo.IsHostile && GetPlayer()->IsPvP())
- GetPlayer()->pvpInfo.EndTimer = GameTime::GetGameTime() + 300; // start toggle-off
+ GetPlayer()->pvpInfo.EndTimer = GameTime::GetGameTime(); // start toggle-off
}
}