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);