feat: add Settlement actor type with Overview/Buildings/Inventory tabs

- New TypeDataModel: archetype, territory, renown, currency (gp/sp/cp),
  garrison, underSiege, isCapital, founded, taxNotes, description, notes
- 3-tab ApplicationV2 sheet with drag & drop for building/weapon/armor/equipment
- Currency steppers (+/−), building constructed toggle, qty controls
- LESS-based CSS (settlement-sheet.less) + base.less updated for shared styles
- Full i18n keys in lang/en.json (8 settlement archetypes)
- system.json: registered settlement actor type

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-03-20 17:01:38 +01:00
parent b67d85c6be
commit b3fd7e1aa1
28 changed files with 966 additions and 270 deletions

View File

@@ -14,7 +14,8 @@
"Oath": "Oath Hammer Oath Sheet",
"Condition": "Oath Hammer Condition Sheet",
"Class": "Oath Hammer Class Sheet",
"Building": "Oath Hammer Building Sheet"
"Building": "Oath Hammer Building Sheet",
"Settlement": "Oath Hammer Settlement Sheet"
},
"Tab": {
"Identity": "Identity",
@@ -22,7 +23,10 @@
"Combat": "Combat",
"Magic": "Magic",
"Equipment": "Equipment",
"Notes": "Notes"
"Notes": "Notes",
"Overview": "Overview",
"Buildings": "Buildings",
"Inventory": "Inventory"
},
"Attribute": {
"Might": "Might",
@@ -208,6 +212,7 @@
"Movement": "Movement",
"ArcaneStress": "Arcane Stress",
"StressValue": "Stress",
"ThresholdBonus": "Threshold Bonus",
"Attributes": "Attributes",
"Biodata": "Background",
"Background": "Background",
@@ -277,10 +282,25 @@
"Ritual": "Ritual",
"MagicMissile": "Magic Missile",
"SpellSave": "Save",
"Range": "Range",
"Duration": "Duration",
"StressBlocked": "BLOCKED — over stress threshold!",
"ArcaneStressShort": "AS",
"InitiativeBonus": "Initiative Bonus",
"Initiative": "Initiative"
"Initiative": "Initiative",
"Treasury": "Treasury",
"Renown": "Renown",
"Territory": "Territory",
"Population": "Population",
"Garrison": "Garrison",
"UnderSiege": "Under Siege",
"IsCapital": "Capital",
"Capital": "Capital",
"Founded": "Founded",
"TaxNotes": "Tax Notes",
"TaxRevenue": "Tax Revenue",
"Cost": "Cost",
"Built": "Built",
"Armors": "Armors & Shields"
},
"ColorDice": {
"White": "White (4+)",
@@ -301,7 +321,8 @@
"CastSpell": "Cast Spell",
"InvokeMiracle": "Invoke Miracle",
"ResetMiracleBlocked": "Restore divine favour (new day)",
"NewDay": "New day"
"NewDay": "New day",
"ClearStress": "Clear Stress (full rest)"
},
"Dialog": {
"SkillCheckTitle": "Skill Check: {skill}",
@@ -355,6 +376,9 @@
"Grimoire": "Grimoire",
"GrimoireHas": "Has Grimoire",
"GrimoireNo": "No Grimoire (2)",
"PoolSize": "Pool Size",
"PoolSizeHint": "Roll fewer dice to reduce Arcane Stress risk (p.101)",
"PoolSizeReduced": "reduced pool",
"MiracleCastTitle": "Invoke Miracle: {miracle}",
"InvokeMiracle": "Invoke Miracle",
"InvokeOptions": "Invoke Options",
@@ -947,6 +971,25 @@
"label": "Violated"
}
}
},
"Warning": {
"MiracleBlocked": "Divine favour has been lost — you cannot invoke miracles until a new day."
},
"SettlementArchetype": {
"CenterOfLearning": "Center of Learning",
"DwarvenBorough": "Dwarven Borough",
"FreeCity": "Free City",
"GuildMunicipality": "Guild Municipality",
"NocklanderOutpost": "Nocklander Outpost",
"PilgrimMission": "Pilgrim Mission",
"PortTown": "Port Town",
"VelathiColony": "Velathi Colony"
},
"Settlement": {
"BuildingHint": "Drag & drop building items here. Toggle the checkbox to mark them as constructed.",
"InventoryHint": "Drag & drop weapons, armor, or equipment here to store them in the settlement reserve.",
"NoBuildings": "No buildings yet. Drag building items here.",
"NoInventory": "No stored inventory. Drag weapons, armor, or equipment here."
}
},
"TYPES": {
@@ -965,10 +1008,8 @@
},
"Actor": {
"character": "Character",
"npc": "NPC"
},
"Warning": {
"MiracleBlocked": "Divine favour has been lost — you cannot invoke miracles until a new day."
"npc": "NPC",
"settlement": "Settlement"
}
}
}