Initial release for FoundryVTT

This commit is contained in:
2026-04-13 15:53:13 +02:00
parent f61cbf0b78
commit 1ff1425777
193 changed files with 11270 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
import DonjonEtCieActorSheet from "./base-actor-sheet.mjs";
import { DonjonEtCieUtility } from "../../donjon-et-cie-utility.mjs";
export default class DonjonEtCiePNJSheet extends DonjonEtCieActorSheet {
static DEFAULT_OPTIONS = {
...super.DEFAULT_OPTIONS,
classes: [...super.DEFAULT_OPTIONS.classes, "pnj"],
position: { width: 840, height: 760 },
actions: {
...super.DEFAULT_OPTIONS.actions,
rollPnjArmor: DonjonEtCiePNJSheet.#onRollPnjArmor,
rollPnjCourage: DonjonEtCiePNJSheet.#onRollPnjCourage,
rollPnjAttackDamage: DonjonEtCiePNJSheet.#onRollPnjAttackDamage
}
};
static PARTS = {
main: { template: "systems/fvtt-donjon-et-cie/templates/actors/pnj-sheet.hbs" }
};
async _prepareContext() {
const context = await super._prepareContext();
const system = this.document.system;
const indexedSections = Object.fromEntries(context.sections.map((section) => [section.key, section]));
const getSection = (key) => indexedSections[key] ?? {
key,
label: context.config.actorSections[key]?.label ?? key,
createType: context.config.actorSections[key]?.createType ?? key,
items: []
};
return {
...context,
capacitySection: getSection("capacites"),
spellSection: getSection("sortileges"),
armorDisplay: Number(system.defense?.armure?.delta ?? 0) ? `Δ${system.defense.armure.delta}` : "—",
storedArmor: Number(system.defense?.armure?.resultatProtection ?? 0) > 0 ? system.defense.armure.resultatProtection : "—",
courageDisplay: Number(system.defense?.courage?.delta ?? 0) ? `Δ${system.defense.courage.delta}` : "—",
hasAttackDamage: Boolean(system.attaque?.degats)
};
}
static async #onRollPnjArmor(event) {
event.preventDefault();
return this.document.rollPnjArmor();
}
static async #onRollPnjCourage(event) {
event.preventDefault();
return this.document.rollPnjCourage();
}
static async #onRollPnjAttackDamage(event) {
event.preventDefault();
return this.document.rollPnjAttackDamage();
}
}