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); } private _prepareCombatValues(data: ActorData): void { const hitPointsModifier = getProperty(data, "data.combatValues.hitPoints.modifier") || 0; const actorData = data.data; setProperty( data, "data.combatValues.hitPoints.max", actorData.attributes.body.initial + actorData.traits.constitution.initial + 10 + hitPointsModifier, ); const defenseModifier = getProperty(data, "data.combatValues.defense.modifier") || 0; setProperty( data, "data.combatValues.defense.value", actorData.attributes.body.initial + actorData.traits.constitution.initial + this._getArmorValue() + defenseModifier, ); } private _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); } }