aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/MiscHandler.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-06-15 23:35:22 +0200
committerShauren <shauren.trinity@gmail.com>2023-06-15 23:35:22 +0200
commitd4fc589f4c4efac69723211b37239a2afa161cc6 (patch)
treefb09f5c438a8fb42112d58a06566bb6313dde071 /src/server/game/Handlers/MiscHandler.cpp
parent09dea76fb5ede974d6765d40985b033db3fba6a3 (diff)
Core/Misc: Don't logout players instantly when client automatically requests a logout by idling too long
Diffstat (limited to 'src/server/game/Handlers/MiscHandler.cpp')
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 7e870b0a291..b64187a5741 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -237,13 +237,15 @@ void WorldSession::HandleWhoOpcode(WorldPackets::Who::WhoRequestPkt& whoRequest)
SendPacket(response.Write());
}
-void WorldSession::HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequest& /*logoutRequest*/)
+void WorldSession::HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequest& logoutRequest)
{
if (!GetPlayer()->GetLootGUID().IsEmpty())
GetPlayer()->SendLootReleaseAll();
- bool instantLogout = (GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_RESTING) && !GetPlayer()->IsInCombat()) ||
- GetPlayer()->IsInFlight() || HasPermission(rbac::RBAC_PERM_INSTANT_LOGOUT);
+ bool instantLogout = GetPlayer()->IsInFlight();
+ if (!logoutRequest.IdleLogout)
+ instantLogout |= (GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_RESTING) && !GetPlayer()->IsInCombat())
+ || HasPermission(rbac::RBAC_PERM_INSTANT_LOGOUT);
/// TODO: Possibly add RBAC permission to log out in combat
bool canLogoutInCombat = GetPlayer()->HasPlayerFlag(PLAYER_FLAGS_RESTING);