mirror of
https://github.com/fzumpe/foundry-dnd5e-adaptive-resistances.git
synced 2026-06-06 21:10:02 +02:00
44 lines
1.4 KiB
JavaScript
44 lines
1.4 KiB
JavaScript
import { MODULE_ID, EFFECT_FLAG, ADAPTATION_CONFIG, ADAPTATION_TYPES } from "./constants.js";
|
|
import { getDamageTypeLabel } from "./utils.js";
|
|
|
|
export async function removeOldAdaptiveEffects(actor) {
|
|
const oldEffects = actor.effects.filter(effect => effect.getFlag(MODULE_ID, EFFECT_FLAG));
|
|
if (!oldEffects.length) return;
|
|
|
|
await actor.deleteEmbeddedDocuments("ActiveEffect", oldEffects.map(effect => effect.id));
|
|
}
|
|
|
|
export async function createAdaptiveEffect(actor, damageType, adaptationType = ADAPTATION_TYPES.RESISTANCE) {
|
|
const config = ADAPTATION_CONFIG[adaptationType] ?? ADAPTATION_CONFIG[ADAPTATION_TYPES.RESISTANCE];
|
|
const label = getDamageTypeLabel(damageType);
|
|
|
|
await actor.createEmbeddedDocuments("ActiveEffect", [
|
|
{
|
|
name: game.i18n.format(config.effectNameKey, { type: label }),
|
|
icon: config.icon,
|
|
disabled: false,
|
|
transfer: false,
|
|
flags: {
|
|
[MODULE_ID]: {
|
|
[EFFECT_FLAG]: {
|
|
adaptationType: config.id,
|
|
damageType
|
|
}
|
|
}
|
|
},
|
|
changes: [
|
|
{
|
|
key: config.traitKey,
|
|
mode: CONST.ACTIVE_EFFECT_MODES.ADD,
|
|
value: damageType,
|
|
priority: 20
|
|
}
|
|
]
|
|
}
|
|
]);
|
|
}
|
|
|
|
export async function createAdaptiveResistanceEffect(actor, damageType) {
|
|
return createAdaptiveEffect(actor, damageType, ADAPTATION_TYPES.RESISTANCE);
|
|
}
|