- Add content migration (003_content.sql): zones, monsters, items, loot tables - Add inventory migration (004_inventory.sql) and logs migration (006_logs.sql) - Add Mulberry32 PRNG (src/utils/rng.js) for deterministic combat - Add combat system (src/game/combat.js) with turn order, crit, mage bonus, 20-round cap - Add rewards/loot system (src/game/rewards.js) and leveling (src/game/leveling.js) - Add hunt endpoint (POST /api/hunt) with full combat flow in DB transaction - Add hunt integration tests and unit tests for rewards/leveling/combat - Fix session middleware to use memory store in tests (avoids cleanup hang) - Fix huntService transaction (db.transaction() returns wrapper, must call separately) - Add huntService to helpers.js cache invalidation for test isolation
17 lines
745 B
SQL
17 lines
745 B
SQL
-- 004_inventory.sql — Player inventory and equipment slots.
|
|
|
|
CREATE TABLE IF NOT EXISTS inventory (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
character_id INTEGER NOT NULL REFERENCES characters(id) ON DELETE CASCADE,
|
|
item_id INTEGER NOT NULL REFERENCES items(id),
|
|
quantity INTEGER NOT NULL DEFAULT 1 CHECK (quantity >= 1),
|
|
equipped_slot TEXT CHECK (equipped_slot IN ('weapon', 'armor', 'trinket')),
|
|
acquired_at INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_inventory_char ON inventory(character_id);
|
|
|
|
-- One equipped item per slot per character (partial unique index).
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_inventory_equipped
|
|
ON inventory(character_id, equipped_slot) WHERE equipped_slot IS NOT NULL;
|