Production WS path now constructs RealParticipant + ScriptedBotParticipant and hands them to BattleSessionV2 instead of the old single-WS BattleSession. Wire behaviour preserved end-to-end (BattleNodeFlowTests still pass). Also fixes a RunAsync bug uncovered by the cutover: WhenAny would terminate the session as soon as the scripted bot's no-op RunAsync resolved, killing the live WS read loop before any traffic arrived. Phase 1 semantics are simpler — wait for ALL participants. Phase 2's Pvp disconnect propagation will revisit this.
5.8 KiB
5.8 KiB