105 lines
3.3 KiB
JavaScript
105 lines
3.3 KiB
JavaScript
import HawkmoonActorSheet from "./base-actor-sheet.mjs"
|
|
import { HawkmoonUtility } from "../../hawkmoon-utility.js"
|
|
|
|
export default class HawkmoonPersonnageSheet extends HawkmoonActorSheet {
|
|
/** @override */
|
|
static DEFAULT_OPTIONS = {
|
|
...super.DEFAULT_OPTIONS,
|
|
classes: [...super.DEFAULT_OPTIONS.classes],
|
|
window: {
|
|
...super.DEFAULT_OPTIONS.window,
|
|
title: "SHEETS.Actor.personnage",
|
|
},
|
|
actions: {
|
|
...super.DEFAULT_OPTIONS.actions,
|
|
openCellule: HawkmoonPersonnageSheet.#onOpenCellule,
|
|
},
|
|
}
|
|
|
|
/** @override */
|
|
static PARTS = {
|
|
sheet: {
|
|
template: "systems/fvtt-hawkmoon-cyd/templates/actor-sheet.hbs",
|
|
},
|
|
}
|
|
|
|
/** @override */
|
|
tabGroups = { primary: "principal" }
|
|
|
|
/** @override */
|
|
async _prepareContext() {
|
|
const context = await super._prepareContext()
|
|
const actor = this.document
|
|
|
|
// Add personnage-specific data
|
|
context.skills = actor.getSkills()
|
|
context.armes = foundry.utils.duplicate(actor.getWeapons())
|
|
context.monnaies = foundry.utils.duplicate(actor.getMonnaies())
|
|
context.protections = foundry.utils.duplicate(actor.getArmors())
|
|
context.historiques = foundry.utils.duplicate(actor.getHistoriques() || [])
|
|
context.talents = foundry.utils.duplicate(actor.getTalents() || [])
|
|
context.mutations = foundry.utils.duplicate(actor.getMutations() || [])
|
|
context.talentsCell = this.#getCelluleTalents()
|
|
context.celluleId = this.#getCelluleId()
|
|
context.profils = foundry.utils.duplicate(actor.getProfils() || [])
|
|
context.combat = actor.getCombatValues()
|
|
context.equipements = foundry.utils.duplicate(actor.getEquipments())
|
|
context.artefacts = foundry.utils.duplicate(actor.getArtefacts())
|
|
context.richesse = actor.computeRichesse()
|
|
context.coupDevastateur = actor.items.find(it => it.type == "talent" && it.name.toLowerCase() == "coup devastateur" && !it.system.used)
|
|
context.valeurEquipement = actor.computeValeurEquipement()
|
|
context.nbCombativite = actor.system.sante.nbcombativite
|
|
context.combativiteList = HawkmoonUtility.getCombativiteList(actor.system.sante.nbcombativite)
|
|
context.initiative = actor.getFlag("world", "last-initiative") || -1
|
|
|
|
return context
|
|
}
|
|
|
|
/**
|
|
* Get talents from cellules this actor is a member of
|
|
* @returns {Array}
|
|
* @private
|
|
*/
|
|
#getCelluleTalents() {
|
|
let talents = []
|
|
for (let cellule of game.actors) {
|
|
if (cellule.type == "cellule") {
|
|
let found = cellule.system.members.includes(this.actor.id)
|
|
if (found) {
|
|
talents = talents.concat(cellule.getTalents())
|
|
}
|
|
}
|
|
}
|
|
return talents
|
|
}
|
|
|
|
/**
|
|
* Get the ID of the cellule this actor is a member of
|
|
* @returns {string|null}
|
|
* @private
|
|
*/
|
|
#getCelluleId() {
|
|
for (let cellule of game.actors) {
|
|
if (cellule.type == "cellule") {
|
|
if (cellule.system.members.includes(this.actor.id)) {
|
|
return cellule.id
|
|
}
|
|
}
|
|
}
|
|
return null
|
|
}
|
|
|
|
/**
|
|
* Open cellule sheet
|
|
* @param {Event} event
|
|
* @param {HTMLElement} target
|
|
* @private
|
|
*/
|
|
static async #onOpenCellule(event, target) {
|
|
const celluleId = target.dataset.celluleId
|
|
if (!celluleId) return
|
|
const cellule = game.actors.get(celluleId)
|
|
if (cellule) cellule.sheet.render(true)
|
|
}
|
|
}
|