import { ENTITE_INCARNE } from "../constants.js"; import { TYPES } from "../item.js"; import { STATUSES } from "../settings/status-effects.js"; import { RdDBaseActorSang } from "./base-actor-sang.js"; export class RdDCreature extends RdDBaseActorSang { static get defaultIcon() { return "systems/foundryvtt-reve-de-dragon/icons/creatures/bramart.svg"; } isCreature() { return true } canReceive(item) { return item.type == TYPES.competencecreature || item.isInventaire(); } async remiseANeuf() { await this.removeEffects(e => true); await this.supprimerBlessures(it => true); await this.update({ 'system.sante.endurance.value': this.system.sante.endurance.max, 'system.sante.vie.value': this.system.sante.vie.max, 'system.sante.fatigue.value': 0 }); } async finDeRoundBlessures() { const nbGraves = this.filterItems(it => it.isGrave(), 'blessure').length; if (nbGraves > 0) { // Gestion blessure graves : -1 pt endurance par blessure grave await this.santeIncDec("endurance", -nbGraves); } } isEffectAllowed(effectId) { return [STATUSES.StatusComma].includes(effectId); } isEntiteAccordee(attacker) { if (this.isEntite([ENTITE_INCARNE])) { let resonnance = this.system.sante.resonnance return (resonnance.actors.find(it => it == attacker.id)) } return true } /* -------------------------------------------- */ async setEntiteReveAccordee(attacker) { if (this.isEntite([ENTITE_INCARNE])) { let resonnance = foundry.utils.duplicate(this.system.sante.resonnance); if (resonnance.actors.find(it => it == attacker.id)) { // déjà accordé return; } await this.update({ "system.sante.resonnance": [...resonnance, attacker.id] }); } else { super.setEntiteReveAccordee(attacker) } } }