Add UNO game, hangman threading, DM room reuse, and gameplay fixes

- Add full UNO game plugin (1v1 vs bot via DM, community pot, bot personality)
- Move hangman into threads with direct reply guessing (no !hangman prefix needed)
- Fix DM room duplication by checking m.direct account data with in-memory cache
- Auto-draw when player has no playable cards instead of requiring manual draw
- Remove forced UNO call phase — players are penalized naturally if they forget
- Fix mutex held during network I/O in hangman start
- Fix infinite loop when both sides have no playable cards and deck is empty
- Fix Wild Draw Four penalty being skipped when UNO prompt triggered
- Fix hangman displayPhrase word boundary clarity (triple-wide gaps for spaces)
- Add UNO env vars, db tables, and README updates

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
prosolis
2026-03-11 23:52:38 -07:00
parent 992b62c51f
commit 7c9dd28021
7 changed files with 1466 additions and 63 deletions

View File

@@ -678,6 +678,25 @@ CREATE TABLE IF NOT EXISTS mod_actions (
);
CREATE INDEX IF NOT EXISTS idx_mod_actions_user ON mod_actions(user_id, taken_at);
-- Uno
CREATE TABLE IF NOT EXISTS uno_pot (
id INTEGER PRIMARY KEY CHECK (id = 1),
balance REAL NOT NULL DEFAULT 0,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS uno_games (
id INTEGER PRIMARY KEY AUTOINCREMENT,
player_id TEXT NOT NULL,
wager REAL NOT NULL,
result TEXT NOT NULL,
pot_before REAL NOT NULL,
pot_after REAL NOT NULL,
turns INTEGER NOT NULL,
started_at DATETIME NOT NULL,
ended_at DATETIME NOT NULL
);
-- Space groups (rooms with overlapping membership)
CREATE TABLE IF NOT EXISTS space_groups (
room_id TEXT PRIMARY KEY,