Files
ttrpg-character-builder/presets/shadowdark.json
T
Ivan Fontosh d1f180ee0a Initial TTRPG character meta-builder with visual sheet editor.
Offline Electron app seeds 10 system presets, supports create-from-scratch designer with palette/drag/resize/bricks, and exports .ttrpg-system.json for the player.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-12 14:49:31 +08:00

63 lines
3.3 KiB
JSON

{
"format": "ttrpg-system",
"formatVersion": 1,
"id": "shadowdark",
"name": "Shadowdark RPG",
"description": "Minimalist dark fantasy fan schema (mechanical scaffold).",
"edition": "1e-fan",
"schemaVersion": 1,
"revision": 1,
"bricks": {
"attributes": [
{ "key": "str", "label": "STR", "scale": "numeric", "min": 3, "max": 18, "default": 10, "category": "physical" },
{ "key": "dex", "label": "DEX", "scale": "numeric", "min": 3, "max": 18, "default": 10, "category": "physical" },
{ "key": "con", "label": "CON", "scale": "numeric", "min": 3, "max": 18, "default": 10, "category": "physical" },
{ "key": "int", "label": "INT", "scale": "numeric", "min": 3, "max": 18, "default": 10, "category": "mental" },
{ "key": "wis", "label": "WIS", "scale": "numeric", "min": 3, "max": 18, "default": 10, "category": "mental" },
{ "key": "cha", "label": "CHA", "scale": "numeric", "min": 3, "max": 18, "default": 10, "category": "social" }
],
"resources": [
{ "key": "hp", "label": "HP", "min": 0, "default": 8, "track": true },
{ "key": "hpMax", "label": "HP Max", "min": 1, "default": 8 }
],
"derived": [
{ "key": "strMod", "label": "STR Mod", "formula": "floor((attr.str - 10) / 2)", "dependsOn": ["attr.str"] },
{ "key": "dexMod", "label": "DEX Mod", "formula": "floor((attr.dex - 10) / 2)", "dependsOn": ["attr.dex"] },
{ "key": "conMod", "label": "CON Mod", "formula": "floor((attr.con - 10) / 2)", "dependsOn": ["attr.con"] }
],
"traits": [
{ "key": "ancestry", "label": "Ancestry" },
{ "key": "class", "label": "Class" }
]
},
"creationRules": [
{
"id": "roll",
"type": "roll",
"appliesTo": "attribute",
"params": { "expr": "3d6", "keys": ["str", "dex", "con", "int", "wis", "cha"], "min": 3, "max": 18 }
}
],
"sheetLayout": {
"pageSize": "fluid",
"grid": { "size": 8 },
"pages": [
{
"id": "main",
"label": "Main",
"widgets": [
{ "id": "title", "type": "section", "frame": { "x": 16, "y": 16, "w": 280, "h": 36 }, "props": { "title": "Shadowdark" } },
{ "id": "str", "type": "number", "bind": "attr.str", "frame": { "x": 16, "y": 64, "w": 90, "h": 70 }, "props": { "label": "STR" } },
{ "id": "dex", "type": "number", "bind": "attr.dex", "frame": { "x": 116, "y": 64, "w": 90, "h": 70 }, "props": { "label": "DEX" } },
{ "id": "con", "type": "number", "bind": "attr.con", "frame": { "x": 216, "y": 64, "w": 90, "h": 70 }, "props": { "label": "CON" } },
{ "id": "int", "type": "number", "bind": "attr.int", "frame": { "x": 16, "y": 144, "w": 90, "h": 70 }, "props": { "label": "INT" } },
{ "id": "wis", "type": "number", "bind": "attr.wis", "frame": { "x": 116, "y": 144, "w": 90, "h": 70 }, "props": { "label": "WIS" } },
{ "id": "cha", "type": "number", "bind": "attr.cha", "frame": { "x": 216, "y": 144, "w": 90, "h": 70 }, "props": { "label": "CHA" } },
{ "id": "hp", "type": "track", "bind": "resource.hp", "frame": { "x": 320, "y": 64, "w": 200, "h": 80 }, "props": { "label": "HP", "max": 20 } },
{ "id": "notes", "type": "notes", "bind": "meta.notes", "frame": { "x": 16, "y": 240, "w": 500, "h": 140 } }
]
}
]
}
}