Files
2D6-Dungeon/src/data/sampleContentPack.ts

403 lines
8.9 KiB
TypeScript

import type { ContentPack } from "@/types/content";
import { contentPackSchema } from "@/schemas/content";
import { level1RoomTemplates } from "./level1Rooms";
import { level1EncounterTables } from "./level1Tables";
const samplePack = {
version: "0.1.0",
sourceBooks: [
"Source/2D6 Dungeon - Core Rules.pdf",
"Source/2D6 Dungeon - Tables Codex.pdf",
"Source/2D6 Dungeon - Play Sheet.pdf",
],
tables: [
...level1EncounterTables,
{
id: "table.level1.humanoid-loot",
code: "L1HL",
name: "Level 1 Humanoid Loot",
category: "loot",
level: 1,
page: 122,
diceKind: "d6",
entries: [
{
key: "1-2",
min: 1,
max: 2,
label: "Scavenged coins",
effects: [{ type: "gain-gold", amount: 1, target: "self" }],
},
{
key: "3-4",
min: 3,
max: 4,
label: "Bone Charm",
references: [{ type: "item", id: "item.bone-charm" }],
},
{
key: "5",
exact: 5,
label: "Silver Clasp and coins",
references: [{ type: "item", id: "item.silver-clasp" }],
effects: [{ type: "gain-gold", amount: 2, target: "self" }],
},
{
key: "6",
exact: 6,
label: "Key Ring and coin purse",
references: [{ type: "item", id: "item.keeper-keyring" }],
effects: [{ type: "gain-gold", amount: 3, target: "self" }],
},
],
notes: ["Starter loot table for martial and humanoid encounters."],
mvp: true,
},
{
id: "table.level1.beast-loot",
code: "L1BL",
name: "Level 1 Beast Loot",
category: "loot",
level: 1,
page: 122,
diceKind: "d6",
entries: [
{
key: "1-4",
min: 1,
max: 4,
label: "Nothing useful",
},
{
key: "5",
exact: 5,
label: "Trophy Fang",
references: [{ type: "item", id: "item.trophy-fang" }],
},
{
key: "6",
exact: 6,
label: "Trophy Fang and stray coin",
references: [{ type: "item", id: "item.trophy-fang" }],
effects: [{ type: "gain-gold", amount: 1, target: "self" }],
},
],
notes: ["Starter loot table for basic animal encounters."],
mvp: true,
},
{
id: "table.weapon-manoeuvres-1",
code: "WMT1",
name: "Weapon Manoeuvres Table 1",
category: "generic",
page: 13,
diceKind: "d6",
entries: [
{
key: "1",
exact: 1,
label: "Exact Strike",
references: [{ type: "manoeuvre", id: "manoeuvre.exact-strike" }],
},
],
notes: ["Starter sample table used to validate content wiring."],
mvp: true,
},
],
weapons: [
{
id: "weapon.short-sword",
name: "Short Sword",
category: "melee",
handedness: "one-handed",
baseDamage: 1,
allowedManoeuvreIds: ["manoeuvre.exact-strike", "manoeuvre.guard-break"],
tags: ["starter"],
startingOption: true,
},
],
manoeuvres: [
{
id: "manoeuvre.exact-strike",
name: "Exact Strike",
weaponCategories: ["melee"],
precisionModifier: 1,
exactStrikeBonus: true,
effectText: "Improves accuracy and benefits from exact strike bonuses.",
mvp: true,
},
{
id: "manoeuvre.guard-break",
name: "Guard Break",
weaponCategories: ["melee"],
shiftCost: 1,
damageModifier: 1,
effectText: "Trades shift for a stronger hit.",
mvp: true,
},
],
armour: [
{
id: "armour.leather-vest",
name: "Leather Vest",
armourValue: 1,
startingOption: true,
valueGp: 6,
mvp: true,
},
],
items: [
{
id: "item.flint-and-steel",
name: "Flint and Steel",
itemType: "gear",
stackable: false,
consumable: false,
mvp: true,
},
{
id: "item.ration",
name: "Ration",
itemType: "ration",
stackable: true,
consumable: true,
mvp: true,
},
{
id: "item.lantern",
name: "Lantern",
itemType: "light-source",
stackable: false,
consumable: false,
mvp: true,
},
{
id: "item.pouch",
name: "Pouch",
itemType: "gear",
stackable: false,
consumable: false,
mvp: true,
},
{
id: "item.wax-sealing-kit",
name: "Wax Sealing Kit",
itemType: "gear",
stackable: false,
consumable: false,
mvp: true,
},
{
id: "item.backpack",
name: "Backpack",
itemType: "gear",
stackable: false,
consumable: false,
mvp: true,
},
{
id: "item.bone-charm",
name: "Bone Charm",
itemType: "treasure",
stackable: false,
consumable: false,
valueGp: 2,
mvp: true,
},
{
id: "item.silver-clasp",
name: "Silver Clasp",
itemType: "treasure",
stackable: false,
consumable: false,
valueGp: 4,
mvp: true,
},
{
id: "item.keeper-keyring",
name: "Keeper Keyring",
itemType: "treasure",
stackable: false,
consumable: false,
valueGp: 5,
mvp: true,
},
{
id: "item.trophy-fang",
name: "Trophy Fang",
itemType: "treasure",
stackable: true,
consumable: false,
valueGp: 1,
mvp: true,
},
],
potions: [
{
id: "potion.healing",
name: "Healing Potion",
tableSource: "Magic Potions Table 1",
useTiming: "any",
effects: [{ type: "heal", amount: 3, target: "self" }],
mvp: true,
},
],
scrolls: [
{
id: "scroll.lesser-heal",
name: "Lesser Heal",
tableSource: "Starting Scroll Table 1",
castCheck: {
diceKind: "d6",
successMin: 3,
},
onSuccess: [{ type: "heal", amount: 2, target: "self" }],
onFailureTableCode: "FTCCT1",
startingOption: true,
mvp: true,
},
],
creatures: [
{
id: "creature.level1.giant-rat",
name: "Giant Rat",
level: 1,
category: "beast",
hp: 2,
attackProfile: {
discipline: 0,
precision: 0,
damage: 1,
numberAppearing: "1-2",
},
xpReward: 1,
lootTableCodes: ["L1BL"],
sourcePage: 102,
traits: ["level-1", "sample"],
mvp: true,
},
{
id: "creature.level1.guard",
name: "Guard",
level: 1,
category: "humanoid",
hp: 4,
attackProfile: {
discipline: 1,
precision: 1,
damage: 1,
},
defenceProfile: {
armour: 1,
},
xpReward: 2,
lootTableCodes: ["L1HL"],
sourcePage: 102,
traits: ["level-1", "martial"],
mvp: true,
},
{
id: "creature.level1.warrior",
name: "Warrior",
level: 1,
category: "humanoid",
hp: 5,
attackProfile: {
discipline: 2,
precision: 1,
damage: 2,
},
defenceProfile: {
armour: 1,
},
xpReward: 3,
lootTableCodes: ["L1HL"],
sourcePage: 102,
traits: ["level-1", "martial"],
mvp: true,
},
{
id: "creature.level1.thug",
name: "Thug",
level: 1,
category: "humanoid",
hp: 3,
attackProfile: {
discipline: 0,
precision: 1,
damage: 1,
},
xpReward: 1,
lootTableCodes: ["L1HL"],
sourcePage: 102,
traits: ["level-1", "martial"],
mvp: true,
},
{
id: "creature.level1.work-dog",
name: "Work Dog",
level: 1,
category: "beast",
hp: 3,
attackProfile: {
discipline: 0,
precision: 1,
damage: 1,
},
xpReward: 1,
lootTableCodes: ["L1BL"],
sourcePage: 102,
traits: ["level-1", "beast"],
mvp: true,
},
{
id: "creature.level1.guard-dog",
name: "Guard Dog",
level: 1,
category: "beast",
hp: 4,
attackProfile: {
discipline: 1,
precision: 1,
damage: 1,
},
xpReward: 2,
lootTableCodes: ["L1BL"],
sourcePage: 102,
traits: ["level-1", "beast"],
mvp: true,
},
],
roomTemplates: [
{
id: "room.level1.entry",
level: 1,
sourcePage: 42,
roomClass: "start",
tableCode: "L1R",
tableEntryKey: "entry",
title: "Entry Chamber",
text: "A quiet starting space for the first dungeon prototype.",
dimensions: {
width: 4,
height: 4,
},
exits: [{ direction: "north", exitType: "door" }],
tags: ["starter", "entry"],
mvp: true,
},
...level1RoomTemplates,
],
townServices: [
{
id: "service.market",
name: "Market",
serviceType: "market",
mvp: true,
},
],
} satisfies ContentPack;
export const sampleContentPack = contentPackSchema.parse(samplePack);