Parser: detect name registration from user input during setup
(sender == name constraint prevents false matches on gameplay messages).
Bridge: extract _process_buffer() to handle leftover lines after
_wait_for_players returns, preventing messages from being stuck.
Player bots: proactively send name on join (not just first player
sending count) so they respond even if they missed the 'say me' prompt.
All tests pass (1551/1553 parser checkpoints, 38 player unit tests).
The root cause: checkpoint handler queued .trade via say_delayed, but
monop sends '-- Command:' before processing the trade. The old handler
reset in_trade and queued .roll, so both commands got sent.
Fix: checkpoint handler no longer sends commands. The -- Command:
prompt is where the bot decides to trade or roll, matching how monop
actually works (-- Command: is the interactive prompt).
Also: no trades while in jail (jail has no -- Command: before roll).
Updated all tests to reflect the new flow.
Added guard in jail turn handler to skip rolling when in_trade is True.
The roll happens later when '-- Command:' arrives after trade completes.
Added 5 regression tests for the exact failing sequence.
- Handle 'Which player do you wish to trade with?' prompt when
in_trade is True (was silently returning, causing bot to roll
during an active trade prompt)
- Simplify property trade offers to always say 'done' (cash-only
trades) to avoid getting stuck on property list prompts