Things that a
referee should be able to do without choking.
- Be started up by a parlor.
- start and configure a MUC.
- Detect players joining and leaving the MUC.
- Accept a user joining the MUC twice, with different JIDs (different resource strings)
- and treat them as two different "players".
- Accept all the referee RPC requests.
- Reject RPCs coming from players who have not joined the MUC.
- Reject game-move RPCs coming from players who are observers at the MUC.
- Notice if a sitting player has left the MUC, and consider him to have stood first.
- broadcast player_stood messages.
- unready all remaining players.
- Notice if all non-bot players have left during configuration phase
- kill bots, leave the MUC, destroy the MUC, shut down.
- Notice if all non-bot players have left during the game
- In "throw" or "suspend":
- stop the game after the appropriate timeout
- then kill the MUC and shut down
- In "bot":
- add bots after the appropriate timeout
- once the bots have concluded the game, kill the MUC and shut down
- ? cancel the game if the bots get stuck for too long?
- Notice if no players ever join the MUC in the first place, not even the one who called new_table
- after a reasonable time: leave the MUC, destroy the MUC, shut down.
- Cope with players whose JIDs contain Unicode characters.
- See a player change his MUC nick.
- Handle a sitting player who changes to a different seat without standing first.
- Handle a sitting player who sits in the seat he's already in, or a standing player who stands
- in these cases, do not broadcast player_sat/stood or unready anybody
See Also