aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNoName <322016+Faq@users.noreply.github.com>2020-05-24 21:35:34 +0300
committerShauren <shauren.trinity@gmail.com>2022-01-06 19:05:04 +0100
commita4b3e694e822315a635b9ea598d1fab9e2069c3d (patch)
tree6e864b6420a10f6e689f8f61e850234c43614809 /src
parentecf0bef1111f75b961a6af8bc730c7ee6ec64b37 (diff)
Entities/Player: Restore old checks for UpdatePvPFlag (#24372)
Partly revert 671052575a36624b06379ee5e13a7fea26870194 + implemented timer reset to 300s after relog never worked, therefore removing that part; + reverting other parts with 300s timer changes, as not needed; (cherry picked from commit 2efaf1dda8ce19533b1d99e030ac25a0de5735b4)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp22
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp4
2 files changed, 13 insertions, 13 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index eb839fb2945..41c06787fea 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -21924,14 +21924,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;
RemovePlayerFlag(PLAYER_FLAGS_PVP_TIMER);
}
- if (IsPvP() && !pvpInfo.IsHostile && !HasPlayerFlag(PlayerFlags(PLAYER_FLAGS_IN_PVP | PLAYER_FLAGS_PVP_TIMER)))
- UpdatePvP(false);
+ UpdatePvP(false);
}
void Player::UpdateDuelFlag(time_t currTime)
@@ -23639,14 +23644,9 @@ void Player::UpdateHomebindTime(uint32 time)
void Player::InitPvP()
{
+ // pvp flag should stay after relog
if (HasPlayerFlag(PLAYER_FLAGS_IN_PVP))
UpdatePvP(true, true);
- else if (HasPlayerFlag(PLAYER_FLAGS_PVP_TIMER))
- {
- UpdatePvP(true, true);
- if (!pvpInfo.IsHostile)
- pvpInfo.EndTimer = GameTime::GetGameTime() + 300;
- }
}
void Player::UpdatePvPState(bool onlyFFA)
@@ -23673,7 +23673,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);
@@ -23681,7 +23681,7 @@ void Player::UpdatePvPState(bool onlyFFA)
else // in friendly area
{
if (IsPvP() && !HasPlayerFlag(PLAYER_FLAGS_IN_PVP) && !pvpInfo.EndTimer)
- pvpInfo.EndTimer = GameTime::GetGameTime() + 300; // start toggle-off
+ pvpInfo.EndTimer = GameTime::GetGameTime(); // start toggle-off
}
}
@@ -23701,7 +23701,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 5f17946132d..a2c812f1a84 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -325,7 +325,7 @@ void WorldSession::HandleTogglePvP(WorldPackets::Misc::TogglePvP& /*packet*/)
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
+ GetPlayer()->pvpInfo.EndTimer = GameTime::GetGameTime(); // start toggle-off
}
}
@@ -343,7 +343,7 @@ void WorldSession::HandleSetPvP(WorldPackets::Misc::SetPvP& packet)
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
+ GetPlayer()->pvpInfo.EndTimer = GameTime::GetGameTime(); // start toggle-off
}
}