✨feature: Initial code setup
This commit is contained in:
164
src/data/sampleContentPack.ts
Normal file
164
src/data/sampleContentPack.ts
Normal file
@@ -0,0 +1,164 @@
|
||||
import type { ContentPack } from "@/types/content";
|
||||
|
||||
import { contentPackSchema } from "@/schemas/content";
|
||||
|
||||
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: [
|
||||
{
|
||||
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.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,
|
||||
},
|
||||
],
|
||||
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,
|
||||
sourcePage: 102,
|
||||
traits: ["level-1", "sample"],
|
||||
mvp: true,
|
||||
},
|
||||
],
|
||||
roomTemplates: [
|
||||
{
|
||||
id: "room.level1.entry",
|
||||
level: 1,
|
||||
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,
|
||||
},
|
||||
],
|
||||
townServices: [
|
||||
{
|
||||
id: "service.market",
|
||||
name: "Market",
|
||||
serviceType: "market",
|
||||
mvp: true,
|
||||
},
|
||||
],
|
||||
} satisfies ContentPack;
|
||||
|
||||
export const sampleContentPack = contentPackSchema.parse(samplePack);
|
||||
Reference in New Issue
Block a user