// gk-greyknight — helpers v0.6.4 (Brotherhood discipline prompt) Hooks.once("ready", () => { const PACK_KEY = "gk-greyknight.gk-items"; const PACK_SRC_PREFIX = `Compendium.${PACK_KEY}.`; const FLAG_SCOPE = "gk-greyknight"; async function promptDiscipline(actor) { const existing = await actor.getFlag(FLAG_SCOPE, "discipline"); if (existing) return existing; return await new Promise(resolve => { new Dialog({ title: "Brotherhood of Psykers — Discipline", content: `

Choose a psychic discipline for this character:

(You can change this later in Actor → Flags → gk-greyknight → discipline.)

`, buttons: { ok: { label: "Confirm", icon: "", callback: html => resolve(html.find('input[name=\"disc\"]:checked').val() || "librarius") }, cancel: { label: "Cancel", callback: () => resolve(null) } }, default: "ok" }).render(true); }); } if (window._gkBroHookId) { Hooks.off("createItem", window._gkBroHookId); window._gkBroHookId = null; } window._gkBroHookId = Hooks.on("createItem", async (item, opts, userId) => { try { if (game.userId !== userId) return; if (item?.type !== "ability") return; const name = item?.name || ""; if (name !== "Brotherhood of Psykers") return; const src = item?.flags?.core?.sourceId || ""; const isFromOurPack = src.startsWith(PACK_SRC_PREFIX); if (!isFromOurPack && name !== "Brotherhood of Psykers") return; const actor = item.parent; if (!actor) return; const chosen = await promptDiscipline(actor); if (!chosen) return; await actor.setFlag(FLAG_SCOPE, "discipline", chosen); if (chosen === "sanctic") { ui.notifications.info("Discipline set to SANCTIC. Open the GK compendium and pick one Sanctic power as your starter."); } else { ui.notifications.info("Discipline set to LIBRARIUS. Use core Librarius powers from wng-core."); } } catch (e) { console.error("gk-greyknight brotherhood helper:", e); } }); console.log("gk-greyknight helpers active (v0.6.4): Brotherhood discipline prompt enabled."); });