Goal
Implement the first real connection-changing path, but only when the user explicitly presses Ctrl+K.
Preconditions
Scope
- Resolve
IGameplayLogic through the dependency system.
- Add a single-flight guard so duplicate requests are ignored.
- Validate not replay / valid client state before disconnect.
- Call the stock
goToLoginByDisconnectRQ() path.
- Log request, guard decisions, disconnect start and resulting state transition.
- Keep automatic RED-triggered reconnect disabled.
Client APIs to verify
skeletons.gameplay.IGameplayLogic
gameplay.delegator.GameplayLogic.goToLoginByDisconnectRQ()
skeletons.connection_mgr.IConnectionManager
BattleReplay.isPlaying()
Acceptance criteria
- Ctrl+K causes one controlled stock disconnect request.
- Repeated Ctrl+K while reconnect is in progress does not produce duplicate disconnects.
- Replay remains inert.
- No external socket manipulation, process restart or executable patching.
- Automatic lag detector still only logs and never disconnects.
Tests
- Ctrl+K in battle with healthy connection.
- Ctrl+K during sustained RED.
- Repeated Ctrl+K presses.
- Ctrl+K in replay.
- Normal battle exit while controller is idle/busy.
Goal
Implement the first real connection-changing path, but only when the user explicitly presses Ctrl+K.
Preconditions
Scope
IGameplayLogicthrough the dependency system.goToLoginByDisconnectRQ()path.Client APIs to verify
skeletons.gameplay.IGameplayLogicgameplay.delegator.GameplayLogic.goToLoginByDisconnectRQ()skeletons.connection_mgr.IConnectionManagerBattleReplay.isPlaying()Acceptance criteria
Tests