- Hollowcrown: The Rift Between Worlds as its own seed (npm run seed:hollowcrown), built from the campaign book: pools, 58 monsters, 57 NPCs, 28 locations, 72 encounters with rewards, and DM notes. Shared seeding logic moved to prisma/seedCampaign.js. - What players can see: only encounters their own character is in; only the pool entries their character holds (plus starting options while building); only locations their character has been to; no invite code; no gold, inventory or money log of other players' characters. Socket events carry ids only and campaign rooms are members-only. - Encounters have a location; while one is in progress its characters are there, and visits are remembered. - Campaign setting to show players a health bar only for monsters and NPCs. - Initiative is entered as the d20 roll (1-20) and the bonus is added; players can enter their own character's roll. - Number fields enforce their limits when typing, and the API enforces the same limits. - Temp HP shows on HP bars and absorbs damage before real HP. - All packages at version 1.3.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
33 lines
1.6 KiB
JavaScript
33 lines
1.6 KiB
JavaScript
// The default seed: the Aldenfell campaign (seed-data/aldenfell.js) for the
|
|
// admin account. See seedCampaign.js for what a seed does and why it is safe
|
|
// to run against a live database.
|
|
//
|
|
// npx prisma db seed add what is missing
|
|
// npx prisma db seed -- --reset DESTRUCTIVE: delete every user, campaign,
|
|
// character, note, etc. first
|
|
//
|
|
// Other campaigns have their own command (npm run seed:hollowcrown).
|
|
//
|
|
// Species/classes/skills are NOT seeded as rows — they're fixed game-rule
|
|
// tables ported into src/game/data/*.js, as is the default weapon/spell/monster
|
|
// library DMs pull from. The default weapons (seed-data/weapons.json) ARE
|
|
// seeded, into the campaign, since weapons are per-campaign in the schema.
|
|
const { run, fromLibrary } = require('./seedCampaign');
|
|
const { SPELL_LIBRARY } = require('../src/game/data/library');
|
|
const defaultWeapons = require('../seed-data/weapons.json');
|
|
const aldenfell = require('../seed-data/aldenfell.js');
|
|
|
|
run(
|
|
{
|
|
...aldenfell,
|
|
// Everyday weapons are what a new character picks from; the rest are earned.
|
|
weapons: [...defaultWeapons.map((w) => ({ ...w, isStartingOption: true })), ...aldenfell.weapons],
|
|
items: aldenfell.items.map(({ starting, ...item }) => ({ ...item, isStartingOption: Boolean(starting) })),
|
|
spells: [
|
|
...aldenfell.spells.starting.map((key) => fromLibrary(SPELL_LIBRARY, key, { isStartingOption: true })),
|
|
...aldenfell.spells.earned.map((key) => fromLibrary(SPELL_LIBRARY, key, { isStartingOption: false })),
|
|
],
|
|
},
|
|
{ reset: process.argv.includes('--reset') },
|
|
);
|