import { DS4ActorDataType } from "./actor-data"; /** * Extend the base Actor entity by defining a custom roll data structure which is ideal for the Simple system. * @extends {Actor} */ export class DS4Actor extends Actor { /** @override */ prepareDerivedData(): void { const data = this.data; this._prepareCombatValues(data); } _prepareCombatValues(data: ActorData): void { const hitPointsModifier = getProperty(data, "data.combatValues.hitPoints.modifier") || 0; setProperty( data, "data.combatValues.hitPoints.max", data.data["attributes"]["body"].initial + // TODO: replace ["..."] data.data["traits"]["constitution"].initial + // TODO: replace ["..."] 10 + hitPointsModifier, ); const defenseModifier = getProperty(data, "data.combatValues.defense.modifier") || 0; setProperty( data, "data.combatValues.defense.value", data.data["attributes"]["body"].initial + // TODO: replace ["..."] data.data["traits"]["constitution"].initial + // TODO: replace ["..."] this._getArmorValue() + defenseModifier, ); } _getArmorValue(): number { return this.data["items"] .filter((item) => ["armor", "shield"].includes(item.type)) .filter((item) => item.data.equipped) .map((item) => item.data.armorValue) .reduce((a, b) => a + b, 0); } }