diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-06-15 23:35:22 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-06-15 23:35:22 +0200 |
commit | d4fc589f4c4efac69723211b37239a2afa161cc6 (patch) | |
tree | fb09f5c438a8fb42112d58a06566bb6313dde071 | |
parent | 09dea76fb5ede974d6765d40985b033db3fba6a3 (diff) |
Core/Misc: Don't logout players instantly when client automatically requests a logout by idling too long
-rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 8 |
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); |