mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-03-07 06:26:13 +01:00
61 lines
2.5 KiB
JavaScript
61 lines
2.5 KiB
JavaScript
import BaseDataActor from './base.mjs';
|
|
|
|
export default class DhCreature extends BaseDataActor {
|
|
/**@inheritdoc */
|
|
static defineSchema() {
|
|
const fields = foundry.data.fields;
|
|
|
|
return {
|
|
...super.defineSchema(),
|
|
advantageSources: new fields.ArrayField(new fields.StringField(), {
|
|
label: 'DAGGERHEART.ACTORS.Character.advantageSources.label',
|
|
hint: 'DAGGERHEART.ACTORS.Character.advantageSources.hint'
|
|
}),
|
|
disadvantageSources: new fields.ArrayField(new fields.StringField(), {
|
|
label: 'DAGGERHEART.ACTORS.Character.disadvantageSources.label',
|
|
hint: 'DAGGERHEART.ACTORS.Character.disadvantageSources.hint'
|
|
})
|
|
};
|
|
}
|
|
|
|
get isAutoVulnerableActive() {
|
|
const vulnerableAppliedByOther = this.parent.effects.some(
|
|
x => x.statuses.has('vulnerable') && !x.flags.daggerheart?.autoApplyFlagId
|
|
);
|
|
return !vulnerableAppliedByOther;
|
|
}
|
|
|
|
async _preUpdate(changes, options, userId) {
|
|
const allowed = await super._preUpdate(changes, options, userId);
|
|
if (allowed === false) return;
|
|
|
|
const automationSettings = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation);
|
|
if (
|
|
automationSettings.vulnerableAutomation &&
|
|
this.parent.type !== 'companion' &&
|
|
changes.system?.resources?.stress?.value
|
|
) {
|
|
const { name, description, img, autoApplyFlagId } = CONFIG.DH.GENERAL.conditions().vulnerable;
|
|
const autoEffects = this.parent.effects.filter(
|
|
x => x.flags.daggerheart?.autoApplyFlagId === autoApplyFlagId
|
|
);
|
|
if (changes.system.resources.stress.value >= this.resources.stress.max) {
|
|
if (!autoEffects.length)
|
|
this.parent.createEmbeddedDocuments('ActiveEffect', [
|
|
{
|
|
name: game.i18n.localize(name),
|
|
description: game.i18n.localize(description),
|
|
img: img,
|
|
statuses: ['vulnerable'],
|
|
flags: { daggerheart: { autoApplyFlagId } }
|
|
}
|
|
]);
|
|
} else if (this.resources.stress.value >= this.resources.stress.max) {
|
|
this.parent.deleteEmbeddedDocuments(
|
|
'ActiveEffect',
|
|
autoEffects.map(x => x.id)
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|