Goal
Complete the controlled reconnect path after the stock disconnect by waiting for the real gameplay LOGIN state and starting WGC login on the same server.
Preconditions
Scope
- Observe
GameplayStateID.LOGIN through IGameplayLogic.addOneshotObserver(); do not use guessed sleeps.
- Capture the selected/current server before disconnect.
- After LOGIN is reached, call the supported WGC login path through
ILoginManager.
- Handle WGC unavailable / token invalid / login rejected without looping forever.
- Reset controller state on success or terminal failure.
Client APIs to verify
skeletons.gameplay.GameplayStateID.LOGIN
IGameplayLogic.addOneshotObserver()
gui.login.Manager.tryPrepareWGCLogin()
gui.login.Manager.tryWgcLogin(serverName=None)
gui.login.Servers.selectedServer
IConnectionManager.onConnected/onRejected/onDisconnected
Acceptance criteria
- No magic delay between disconnect and relogin.
- Manual Ctrl+K can reach LOGIN and start one WGC login attempt.
- Same server is used when available.
- Failed authentication/network attempt stops cleanly and leaves the user at Login instead of looping.
- Automatic RED-triggered disconnect remains disabled.
Tests
- Healthy manual reconnect.
- Manual reconnect during RED.
- WGC unavailable.
- Login rejection/token expiry.
- Network still offline after reaching Login.
- Successful relogin into an ongoing battle.
Goal
Complete the controlled reconnect path after the stock disconnect by waiting for the real gameplay LOGIN state and starting WGC login on the same server.
Preconditions
Scope
GameplayStateID.LOGINthroughIGameplayLogic.addOneshotObserver(); do not use guessed sleeps.ILoginManager.Client APIs to verify
skeletons.gameplay.GameplayStateID.LOGINIGameplayLogic.addOneshotObserver()gui.login.Manager.tryPrepareWGCLogin()gui.login.Manager.tryWgcLogin(serverName=None)gui.login.Servers.selectedServerIConnectionManager.onConnected/onRejected/onDisconnectedAcceptance criteria
Tests