Characters - Builder: pick-then-Next on every step with live preview, Back button, plain-language help throughout, and "Suggest for me" for ability scores - Motivation is picked from a list; new steps for special abilities, background and appearance, all composed from fixed lists and DM-only to edit afterwards - Copy a character to another campaign - Characters can give gold, weapons, items and spells to each other - Money tracker: gold only changes through a logged ledger - Fixes: level/XP/location are DM-only, HP stays within 0..max, physical dice ability rolls, every die is rolled once Gear - DM-managed item pool; weapons, items and spells are handed out by the DM - Starting-option flag per pool entry - Gear levels 1-9 per held copy with a damage ladder, growth rate and starting level; spells gated by spell level with a fixed damage value - Spell library carries default damage; damage is picked from a list Encounters - Battle and NPC quest modes, turn tracking, scene description, DM notes - NPCs, richer combatant cards, conditions from a list - Rewards (gold, weapons, items) lined up and awarded, with gold splitting - Character HP is shared between the sheet and the encounter - Monster stat blocks and NPC secrets are never sent to players Other - Dice roller on every page - Docs for characters, weapons, spells, items, encounters, monsters and NPCs, with full lists generated from the data (npm run docs:lists) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
22 lines
977 B
SQL
22 lines
977 B
SQL
-- AlterTable: how many ladder rungs a weapon climbs per level (1 standard, 2 powerful, 3 legendary)
|
|
ALTER TABLE "weapons" ADD COLUMN "damageScaling" INTEGER NOT NULL DEFAULT 1;
|
|
|
|
-- AlterTable: the level of the copy a character holds
|
|
ALTER TABLE "character_weapons" ADD COLUMN "level" INTEGER NOT NULL DEFAULT 1;
|
|
|
|
-- AlterTable: items can optionally carry dice (damage, healing, ...) that scale the same way
|
|
ALTER TABLE "items" ADD COLUMN "damageDice" TEXT,
|
|
ADD COLUMN "damageScaling" INTEGER NOT NULL DEFAULT 1;
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "inventory_items" ADD COLUMN "level" INTEGER NOT NULL DEFAULT 1;
|
|
|
|
-- AlterTable: spells get a fixed damage value; their classic level is the requirement
|
|
ALTER TABLE "spells" ADD COLUMN "damageDice" TEXT;
|
|
|
|
-- A spell above its holder's level can no longer be prepared.
|
|
UPDATE "character_spells" cs
|
|
SET "prepared" = false
|
|
FROM "spells" s, "characters" c
|
|
WHERE s."id" = cs."spellId" AND c."id" = cs."characterId" AND s."level" > c."level";
|