diff --git a/Dalamud/Game/ClientState/ClientState.cs b/Dalamud/Game/ClientState/ClientState.cs
index 6ceea4c6b..364466cce 100644
--- a/Dalamud/Game/ClientState/ClientState.cs
+++ b/Dalamud/Game/ClientState/ClientState.cs
@@ -1,5 +1,4 @@
using System.Linq;
-using System.Runtime.InteropServices;
using Dalamud.Data;
using Dalamud.Game.ClientState.Conditions;
@@ -71,7 +70,7 @@ internal sealed class ClientState : IInternalDisposableService, IClientState
this.processPacketPlayerSetupHook.Enable();
this.onLogoutHook.Enable();
}
-
+
private unsafe delegate void ProcessPacketPlayerSetupDelegate(nint a1, nint packet);
///
@@ -121,7 +120,14 @@ internal sealed class ClientState : IInternalDisposableService, IClientState
public unsafe ulong LocalContentId => PlayerState.Instance()->ContentId;
///
- public bool IsLoggedIn { get; private set; }
+ public unsafe bool IsLoggedIn
+ {
+ get
+ {
+ var agentLobby = AgentLobby.Instance();
+ return agentLobby != null && agentLobby->IsLoggedIn;
+ }
+ }
///
public bool IsPvP { get; private set; }
@@ -259,7 +265,6 @@ internal sealed class ClientState : IInternalDisposableService, IClientState
try
{
Log.Debug("Login");
- this.IsLoggedIn = true;
this.Login?.InvokeSafely();
gameGui?.ResetUiHideState();
this.lifecycle.ResetLogout();
@@ -283,8 +288,6 @@ internal sealed class ClientState : IInternalDisposableService, IClientState
Log.Debug("Logout: Type {type}, Code {code}", type, code);
- this.IsLoggedIn = false;
-
if (this.Logout is { } callback)
{
foreach (var action in callback.GetInvocationList().Cast())