100 lines
4.3 KiB
JavaScript
100 lines
4.3 KiB
JavaScript
import YggdrasillActorSheet from "./base-actor-sheet.mjs"
|
|
|
|
export default class YggdrasillPersonnageSheet extends YggdrasillActorSheet {
|
|
/** @override */
|
|
static DEFAULT_OPTIONS = {
|
|
...super.DEFAULT_OPTIONS,
|
|
classes: [...super.DEFAULT_OPTIONS.classes, "personnage"],
|
|
window: {
|
|
...super.DEFAULT_OPTIONS.window,
|
|
title: "Feuille de Personnage",
|
|
},
|
|
}
|
|
|
|
/** @override */
|
|
static PARTS = {
|
|
sheet: {
|
|
template: "systems/fvtt-yggdrasill/templates/actor-personnage-sheet-new.hbs",
|
|
},
|
|
}
|
|
|
|
/** @override */
|
|
tabGroups = {
|
|
primary: "principal",
|
|
}
|
|
|
|
/** @override */
|
|
async _prepareContext() {
|
|
const context = await super._prepareContext()
|
|
const actor = this.document
|
|
|
|
// Prepare items by type
|
|
context.competencesGenerales = actor.items.filter(i => i.type === 'competence' && i.system.categorie === 'generale')
|
|
context.competencesMartiales = actor.items.filter(i => i.type === 'competence' && i.system.categorie === 'martiale')
|
|
context.competencesMagiques = actor.items.filter(i => i.type === 'competence' && i.system.categorie === 'magique')
|
|
context.dons = actor.items.filter(i => i.type === 'don')
|
|
context.faiblesses = actor.items.filter(i => i.type === 'faiblesse')
|
|
context.blessures = actor.items.filter(i => i.type === 'blessure')
|
|
context.maladies = actor.items.filter(i => i.type === 'maladie')
|
|
context.poisons = actor.items.filter(i => i.type === 'poison')
|
|
context.prouesses = actor.items.filter(i => i.type === 'prouesse')
|
|
context.sortsSejdr = actor.items.filter(i => i.type === 'sortsejdr')
|
|
context.sortsGaldr = actor.items.filter(i => i.type === 'sortgaldr')
|
|
context.runes = actor.items.filter(i => i.type === 'rune')
|
|
context.armesCC = actor.items.filter(i => i.type === 'armecc')
|
|
context.armesDist = actor.items.filter(i => i.type === 'armedist')
|
|
context.armures = actor.items.filter(i => i.type === 'armure')
|
|
context.boucliers = actor.items.filter(i => i.type === 'bouclier')
|
|
context.equipements = actor.items.filter(i => i.type === 'equipement')
|
|
context.monnaies = actor.items.filter(i => i.type === 'monnaie')
|
|
context.effetsMagiques = actor.items.filter(i => i.type === 'effetmagique')
|
|
|
|
// Prepare equipped items
|
|
context.armesEquipees = actor.items.filter(i => (i.type === 'armecc' || i.type === 'armedist') && i.system.equipe)
|
|
context.armureEquipee = actor.items.find(i => i.type === 'armure' && i.system.equipe)
|
|
context.bouclierEquipe = actor.items.find(i => i.type === 'bouclier' && i.system.equipe)
|
|
|
|
// Calculate total protection from equipped armors
|
|
context.protectionTotal = context.armures
|
|
.filter(a => a.system.equipe)
|
|
.reduce((sum, a) => sum + (parseInt(a.system.protection) || 0), 0)
|
|
|
|
// Calculate shield defense bonus from equipped shield
|
|
context.dpBouclier = context.boucliers
|
|
.filter(b => b.system.equipe)
|
|
.reduce((sum, b) => sum + (parseInt(b.system.defensebonus) || 0), 0)
|
|
|
|
// Calculate total encumbrance from equipements
|
|
context.encTotal = context.equipements
|
|
.reduce((sum, e) => sum + ((parseInt(e.system.quantite) || 0) * (parseInt(e.system.enc) || 0)), 0)
|
|
|
|
// Options for selects
|
|
context.optionsCarac = {}
|
|
for (let i = 0; i <= 10; i++) {
|
|
context.optionsCarac[i] = i.toString()
|
|
}
|
|
|
|
context.optionsBase = {}
|
|
for (let i = 0; i <= 5; i++) {
|
|
context.optionsBase[i] = i.toString()
|
|
}
|
|
|
|
// Options for bonus/malus (-10 to +10)
|
|
context.optionsDMDP = []
|
|
for (let i = -10; i <= 10; i++) {
|
|
context.optionsDMDP.push({ value: i, text: i >= 0 ? `+${i}` : i.toString() })
|
|
}
|
|
|
|
// System fields for formInput helpers
|
|
context.systemFields = actor.system.schema.fields
|
|
|
|
// Enrich HTML fields
|
|
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(actor.system.biodata?.description || "", { async: true })
|
|
context.enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(actor.system.biodata?.notes || "", { async: true })
|
|
context.enrichedGMNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(actor.system.biodata?.gmnotes || "", { async: true })
|
|
context.enrichedTirageRunes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(actor.system.biodata?.tiragerunes || "", { async: true })
|
|
|
|
return context
|
|
}
|
|
}
|