new RPG system

This commit is contained in:
2026-06-05 14:57:15 +03:00
parent 6189a5fb74
commit 01b16dbeaa
29 changed files with 2395 additions and 311 deletions
+26
View File
@@ -76,6 +76,7 @@ async def init_db():
await _migrate_characters_columns(db)
await _migrate_rpg_quests(db)
await _migrate_action_resolutions(db)
await _migrate_state_snapshots(db)
await db.commit()
@@ -178,6 +179,31 @@ async def _migrate_action_resolutions(db):
)
async def _migrate_state_snapshots(db):
await db.executescript(
"""
CREATE TABLE IF NOT EXISTS session_state_snapshots (
message_id INTEGER PRIMARY KEY,
session_id TEXT NOT NULL,
facts_json TEXT NOT NULL DEFAULT '[]',
global_plot TEXT NOT NULL DEFAULT '',
status_quo TEXT NOT NULL DEFAULT '',
plot_arc_json TEXT NOT NULL DEFAULT '{}',
affinity INTEGER NOT NULL DEFAULT 0,
outfit_json TEXT NOT NULL DEFAULT '[]',
scene_json TEXT NOT NULL DEFAULT '{}',
narrative_stats_json TEXT NOT NULL DEFAULT '{"lust":0,"stamina":10,"tension":0}',
quests_json TEXT NOT NULL DEFAULT '[]',
action_resolutions_json TEXT NOT NULL DEFAULT '[]',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_state_snapshots_session
ON session_state_snapshots(session_id);
"""
)
async def _migrate_characters_columns(db):
async with db.execute("PRAGMA table_info(characters)") as cur:
cols = {row[1] for row in await cur.fetchall()}