dsa-4th-edition/src/main.mjs
2024-09-29 16:36:42 +02:00

80 lines
2.4 KiB
JavaScript

Hooks.once("init", function() {
console.log("INIT");
CONFIG.Actor.dataModels.Player = DSA41_CharacterData;
//DocumentSheetConfig.unregisterSheet(Actor, "core", ActorSheet);
DocumentSheetConfig.registerSheet(Actor, "dsa41", DSA41_ActorSheet, {
makeDefault: true,
types: [
"Player",
]
});
//DocumentSheetConfig.unregisterSheet(Item, "core", ItemSheet);
DocumentSheetConfig.registerSheet(Item, "dsa41", DSA41_ItemSheet, {
makeDefault: true,
types: [
"Generic Item",
"Melee Weapon",
"Ranged Weapon",
"Armor",
"Shield",
]
});
});
const { SchemaField, NumberField, StringField } = foundry.data.fields;
class AttributeField extends foundry.data.fields.SchemaField {
constructor() {
return super({
initial: new NumberField({ integer: true, initial: 8, min: 8, max: 14, }),
advancement: new NumberField({ integer: true, initial: 0, min: 0, max: 4, }),
modifier: new NumberField({ integer: true, initial: 0, min: 0, }),
});
}
}
class DSA41_CharacterData extends foundry.abstract.TypeDataModel {
static defineSchema() {
return {
race: new StringField(),
culture: new StringField(),
profession: new StringField(),
attributes: new SchemaField({
courage: new AttributeField(),
cleverness: new AttributeField(),
intuition: new AttributeField(),
charisma: new AttributeField(),
dexterity: new AttributeField(),
agility: new AttributeField(),
constitution: new AttributeField(),
strength: new AttributeField(),
}),
}
}
prepareDerivedData() {
super.prepareDerivedData();
this.computed = {};
for (const [attribute, values] of Object.entries(this.attributes)) {
this.computed[attribute] = Object.values(values).reduce((a, b) => a + b, 0);
}
}
}
class DSA41_ActorSheet extends ActorSheet {
get template() {
return "systems/dsa-4th-edition/src/ActorSheet.html";
}
}
class DSA41_ItemSheet extends ItemSheet {
get template() {
return "systems/dsa-4th-edition/src/ItemSheets/" + this.item.type + ".html";
}
}