A repository for a FoundryVTT plugin for Kingmaker homebrew.

Moving to use a variant actor sheet instead of the party sheet

+126 -6
data/charters.json scripts/data/charters.json
data/governments.json scripts/data/governments.json
data/heartlands.json scripts/data/heartlands.json
+8 -1
lang/en.json
··· 1 1 { 2 - "kingdomHomebrew": { 2 + "kingdom-homebrew": { 3 + "tab": { 4 + "turn": "Turn", 5 + "kingdom": "Kingdom", 6 + "settlements": "Settlements", 7 + "relations": "Relations", 8 + "effects": "Effects" 9 + } 3 10 } 4 11 }
+52
scripts/kingdom-sheet.js
··· 1 + import { Kingdom } from "./kingdom.js"; 2 + 3 + export class KingdomSheet extends foundry.applications.sheets.ActorSheetV2 { 4 + static get defaultOptions() { 5 + return mergeObject( 6 + super.defaultOptions, 7 + { 8 + template: "kmhb-sheet", 9 + height: "auto" 10 + } 11 + ); 12 + } 13 + 14 + static register() { 15 + foundry.documents.collections.Actors.registerSheet("pf2e", KingdomSheet, { types: ["npc"] }); 16 + } 17 + 18 + _renderHTML(context, options) { 19 + if (context.document.flags['kingdom-homebrew'] === undefined) { 20 + context.document.flags['kingdom-homebrew'] = {}; 21 + } 22 + 23 + if (context.document.flags['kingdom-homebrew'].kingdom === undefined) { 24 + context.document.flags['kingdom-homebrew'].kingdom = new Kingdom(); 25 + } 26 + 27 + return new Promise((resolve, _) => { 28 + resolve(context.document.flags['kingdom-homebrew'].kingdom); 29 + }); 30 + } 31 + 32 + _replaceHTML(data, element, options) { 33 + foundry.applications.handlebars.renderTemplate("kmhb-sheet", { 34 + tabs: [ 35 + "turn", 36 + "kingdom", 37 + "settlements", 38 + "relations", 39 + "effects" 40 + ] 41 + }).then((html) => { 42 + element.innerHTML = html; 43 + 44 + element.querySelectorAll("nav.kingdom-tabs a").forEach((tab) => { 45 + tab.onclick = (ev) => { 46 + element.querySelector(".active")?.classList.remove("active"); 47 + element.querySelector(`.kingdom-tab[data-tab="${ev.target.dataset.tab}"]`).classList.add("active"); 48 + }; 49 + }); 50 + }); 51 + } 52 + }
+3
scripts/kingdom.js
··· 1 + export class Kingdom { 2 + 3 + }
+6 -1
scripts/main.js
··· 1 - Hooks.on("init", () => { 1 + import { KingdomSheet } from "./kingdom-sheet.js"; 2 + import preloadTemplates from "./preloadTemplates.js"; 3 + 4 + Hooks.on("init", async () => { 5 + KingdomSheet.register(); 6 + await preloadTemplates(); 2 7 console.log("Kingdom Homebrew loaded"); 3 8 });
+53
scripts/preloadTemplates.js
··· 1 + export default async function preloadTemplates() { 2 + const templateMap = { 3 + "kmhb-sheet": "modules/kingdom-homebrew/templates/sheet.hbs", 4 + "kmhb-tab-link": "modules/kingdom-homebrew/templates/tab-link.hbs", 5 + "kmhb-tab": "modules/kingdom-homebrew/templates/tab.hbs" 6 + }; 7 + 8 + ["turn", "kingdom", "settlements", "relations", "effects"].forEach((tab) => { 9 + templateMap[`kmhb-tab-${tab}`] = `modules/kingdom-homebrew/templates/tabs/tab-${tab}.hbs`; 10 + }); 11 + 12 + for (var i = 0; i < 20; i++) { 13 + templateMap[`kmhb-level-${i + 1}`] = `modules/kingdom-homebrew/templates/levels/level-${i + 1}.hbs`; 14 + } 15 + 16 + Handlebars.registerHelper("genKRPSelect", () => { 17 + return ""; 18 + }); 19 + 20 + Handlebars.registerHelper("getKingdomTab", (tab) => { 21 + return "kmhb-tab-" + tab; 22 + }); 23 + 24 + Handlebars.registerHelper("for-rev", (from, to, dec, block) => { 25 + var accum = ""; 26 + 27 + for (var i = from; i > to; i -= dec) { 28 + accum += block.fn(i); 29 + } 30 + 31 + return new Handlebars.SafeString(accum); 32 + }); 33 + 34 + Handlebars.registerHelper("for", (from, to, inc, block) => { 35 + var accum = ""; 36 + 37 + for (var i = from; i < to; i += inc) { 38 + accum += block.fn(i); 39 + } 40 + 41 + return new Handlebars.SafeString(accum); 42 + }); 43 + 44 + Handlebars.registerHelper("getKingdomLevel", (level) => { 45 + return `kmhb-level-${level}`; 46 + }); 47 + 48 + Handlebars.registerHelper("km-localize", (namespace, key) => { 49 + return "kingdom-homebrew." + namespace + "." + key; 50 + }) 51 + 52 + return foundry.applications.handlebars.loadTemplates(templateMap); 53 + }
templates/kingdom-levels/level-1.hbs templates/levels/level-1.hbs
templates/kingdom-levels/level-10.hbs templates/levels/level-10.hbs
templates/kingdom-levels/level-11.hbs templates/levels/level-11.hbs
templates/kingdom-levels/level-12.hbs templates/levels/level-12.hbs
templates/kingdom-levels/level-13.hbs templates/levels/level-13.hbs
templates/kingdom-levels/level-14.hbs templates/levels/level-14.hbs
templates/kingdom-levels/level-15.hbs templates/levels/level-15.hbs
templates/kingdom-levels/level-16.hbs templates/levels/level-16.hbs
templates/kingdom-levels/level-17.hbs templates/levels/level-17.hbs
templates/kingdom-levels/level-18.hbs templates/levels/level-18.hbs
templates/kingdom-levels/level-19.hbs templates/levels/level-19.hbs
templates/kingdom-levels/level-2.hbs templates/levels/level-2.hbs
templates/kingdom-levels/level-20.hbs templates/levels/level-20.hbs
templates/kingdom-levels/level-3.hbs templates/levels/level-3.hbs
templates/kingdom-levels/level-4.hbs templates/levels/level-4.hbs
templates/kingdom-levels/level-5.hbs templates/levels/level-5.hbs
templates/kingdom-levels/level-6.hbs templates/levels/level-6.hbs
templates/kingdom-levels/level-7.hbs templates/levels/level-7.hbs
templates/kingdom-levels/level-8.hbs templates/levels/level-8.hbs
templates/kingdom-levels/level-9.hbs templates/levels/level-9.hbs
+2 -2
templates/kingdom-sheet.hbs templates/sheet.hbs
··· 1 1 <nav class="kingdom-tabs"> 2 2 {{#each tabs}} 3 - {{> kingdom-homebrew/kingdom-tab-link this }} 3 + {{> kmhb-tab-link this }} 4 4 {{/each}} 5 5 </nav> 6 6 <section class="container"> ··· 27 27 </div> 28 28 </div> 29 29 {{#each tabs}} 30 - {{> kingdom-homebrew/kingdom-tab this }} 30 + {{> kmhb-tab this }} 31 31 {{/each}} 32 32 </section>
templates/kingdom-sheet/tab-effects.hbs templates/tabs/tab-effects.hbs
templates/kingdom-sheet/tab-kingdom.hbs templates/tabs/tab-kingdom.hbs
templates/kingdom-sheet/tab-relations.hbs templates/tabs/tab-relations.hbs
templates/kingdom-sheet/tab-settlements.hbs templates/tabs/tab-settlements.hbs
templates/kingdom-sheet/tab-turn.hbs templates/tabs/tab-turn.hbs
-1
templates/kingdom-tab-link.hbs
··· 1 - <a onclick="game['kingdom-homebrew'].module.openTab(event)" data-tab="{{ tab }}">{{ name }}</a>
-1
templates/kingdom-tab.hbs
··· 1 - <div class="kingdom-tab" data-tab="{{ tab }}">{{> (getKingdomTab) }}</div>
+1
templates/tab-link.hbs
··· 1 + <a onclick="game['kingdom-homebrew'].module.openTab(event)" data-tab="{{ this }}">{{ localize (km-localize "tab" this) }}</a>
+1
templates/tab.hbs
··· 1 + <div class="kingdom-tab" data-tab="{{ this }}">{{> (getKingdomTab this) }}</div>