Core/Misc: Don't logout players instantly when client automatically requests a logout by idling too long

Port From (https://github.com/TrinityCore/TrinityCore/commit/d4fc589f4c4efac69723211b37239a2afa161cc6)
This commit is contained in:
hondacrx
2023-06-20 09:35:57 -04:00
parent 2f2aacaf84
commit 1fb0002097
+5 -3
View File
@@ -11,14 +11,16 @@ namespace Game
public partial class WorldSession public partial class WorldSession
{ {
[WorldPacketHandler(ClientOpcodes.LogoutRequest)] [WorldPacketHandler(ClientOpcodes.LogoutRequest)]
void HandleLogoutRequest(LogoutRequest packet) void HandleLogoutRequest(LogoutRequest logoutRequest)
{ {
Player pl = GetPlayer(); Player pl = GetPlayer();
if (!GetPlayer().GetLootGUID().IsEmpty()) if (!GetPlayer().GetLootGUID().IsEmpty())
GetPlayer().SendLootReleaseAll(); GetPlayer().SendLootReleaseAll();
bool instantLogout = (pl.HasPlayerFlag(PlayerFlags.Resting) && !pl.IsInCombat() || bool instantLogout = GetPlayer().IsInFlight();
pl.IsInFlight() || HasPermission(RBACPermissions.InstantLogout)); if (!logoutRequest.IdleLogout)
instantLogout |= (GetPlayer().HasPlayerFlag(PlayerFlags.Resting) && !GetPlayer().IsInCombat())
|| HasPermission(RBACPermissions.InstantLogout);
bool canLogoutInCombat = pl.HasPlayerFlag(PlayerFlags.Resting); bool canLogoutInCombat = pl.HasPlayerFlag(PlayerFlags.Resting);