- Add level-up dialog (ApplicationV2) showing features gained per level - Class features with `changes` arrays auto-create Active Effects - Valor I/II/III on Fighter reduces crit threshold cumulatively (-1/-2/-3) - Perk selection UI in dialog (awaits perk compendium content) - Fix duplicate item creation bug (was double drop handling) - Configure proper dragDrop in ActorSheetV2 DEFAULT_OPTIONS - Add ancestries and classes compendium packs with LevelDB format - Docker compose PUID/PGID for proper file permissions Key patterns established: - Class progression stored in item.system.progression[] - Features with changes[] become ActiveEffects on level-up - applyClassFeatures() is idempotent (checks existing effects) - updateClassFeatures() handles level changes incrementally 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
142 lines
3.2 KiB
JSON
142 lines
3.2 KiB
JSON
{
|
|
"id": "vagabond",
|
|
"title": "Vagabond RPG",
|
|
"description": "A Foundry VTT system implementation for Vagabond RPG - Pulp Fantasy Roleplaying",
|
|
"version": "0.1.0",
|
|
"compatibility": {
|
|
"minimum": "13",
|
|
"verified": "13",
|
|
"maximum": "13"
|
|
},
|
|
"authors": [
|
|
{
|
|
"name": "Cal Corum",
|
|
"email": "cal.corum@gmail.com"
|
|
}
|
|
],
|
|
"esmodules": ["module/vagabond.mjs"],
|
|
"styles": ["styles/vagabond.css"],
|
|
"themes": [
|
|
{
|
|
"name": "light",
|
|
"label": "VAGABOND.ThemeLight",
|
|
"default": true
|
|
},
|
|
{
|
|
"name": "dark",
|
|
"label": "VAGABOND.ThemeDark"
|
|
}
|
|
],
|
|
"languages": [
|
|
{
|
|
"lang": "en",
|
|
"name": "English",
|
|
"path": "lang/en.json"
|
|
}
|
|
],
|
|
"packs": [
|
|
{
|
|
"name": "ancestries",
|
|
"label": "Ancestries",
|
|
"path": "packs/ancestries",
|
|
"type": "Item",
|
|
"ownership": {
|
|
"PLAYER": "OBSERVER",
|
|
"ASSISTANT": "OWNER"
|
|
}
|
|
},
|
|
{
|
|
"name": "classes",
|
|
"label": "Classes",
|
|
"path": "packs/classes",
|
|
"type": "Item",
|
|
"ownership": {
|
|
"PLAYER": "OBSERVER",
|
|
"ASSISTANT": "OWNER"
|
|
}
|
|
},
|
|
{
|
|
"name": "spells",
|
|
"label": "Spells",
|
|
"path": "packs/spells",
|
|
"type": "Item",
|
|
"ownership": {
|
|
"PLAYER": "OBSERVER",
|
|
"ASSISTANT": "OWNER"
|
|
}
|
|
},
|
|
{
|
|
"name": "perks",
|
|
"label": "Perks",
|
|
"path": "packs/perks",
|
|
"type": "Item",
|
|
"ownership": {
|
|
"PLAYER": "OBSERVER",
|
|
"ASSISTANT": "OWNER"
|
|
}
|
|
}
|
|
],
|
|
"packFolders": [
|
|
{
|
|
"name": "Vagabond RPG",
|
|
"sorting": "a",
|
|
"packs": ["ancestries", "classes"]
|
|
}
|
|
],
|
|
"documentTypes": {
|
|
"Actor": {
|
|
"character": {
|
|
"htmlFields": [
|
|
"biography.appearance",
|
|
"biography.background",
|
|
"biography.personality",
|
|
"biography.notes"
|
|
]
|
|
},
|
|
"npc": {
|
|
"htmlFields": ["abilities.description", "loot", "gmNotes"]
|
|
}
|
|
},
|
|
"Item": {
|
|
"ancestry": {
|
|
"htmlFields": ["description"]
|
|
},
|
|
"class": {
|
|
"htmlFields": ["description"]
|
|
},
|
|
"spell": {
|
|
"htmlFields": ["description"]
|
|
},
|
|
"perk": {
|
|
"htmlFields": ["description"]
|
|
},
|
|
"weapon": {
|
|
"htmlFields": ["description", "relic.abilityDescription", "relic.lore"]
|
|
},
|
|
"armor": {
|
|
"htmlFields": ["description", "relic.abilityDescription", "relic.lore"]
|
|
},
|
|
"equipment": {
|
|
"htmlFields": ["description"]
|
|
},
|
|
"feature": {
|
|
"htmlFields": ["description"]
|
|
}
|
|
}
|
|
},
|
|
"socket": false,
|
|
"url": "https://github.com/calcorum/vagabond-rpg-foundryvtt",
|
|
"manifest": "https://github.com/calcorum/vagabond-rpg-foundryvtt/releases/latest/download/system.json",
|
|
"download": "https://github.com/calcorum/vagabond-rpg-foundryvtt/releases/latest/download/vagabond.zip",
|
|
"license": "LICENSE",
|
|
"readme": "README.md",
|
|
"bugs": "https://github.com/calcorum/vagabond-rpg-foundryvtt/issues",
|
|
"changelog": "CHANGELOG.md",
|
|
"primaryTokenAttribute": "resources.hp",
|
|
"secondaryTokenAttribute": "resources.mana",
|
|
"grid": {
|
|
"distance": 5,
|
|
"units": "ft"
|
|
}
|
|
}
|