This commit is contained in:
@@ -7,35 +7,35 @@ export async function executeApplyStatusAction(action, context) {
|
||||
const statuses = action.statuses ?? [];
|
||||
if (!statuses.length) return { success: false, consumed: false, reason: "NO_STATUSES" };
|
||||
|
||||
const effects = statuses.map(statusId => {
|
||||
const statusConfig = getStatusEffectConfig(statusId);
|
||||
|
||||
return {
|
||||
name: statusConfig?.name ? game.i18n.localize(statusConfig.name) : statusId,
|
||||
icon: statusConfig?.img ?? statusConfig?.icon ?? "icons/svg/aura.svg",
|
||||
statuses: [statusId],
|
||||
origin: context.reactionOrigin,
|
||||
duration: buildEffectDuration(action.duration),
|
||||
changes: [],
|
||||
flags: {
|
||||
[MODULE_ID]: {
|
||||
managed: true,
|
||||
reactionId: context.reaction.id,
|
||||
actionId: action.id
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
const effects = statuses.map(statusId => buildStatusEffectData(statusId, action, context));
|
||||
await actor.createEmbeddedDocuments("ActiveEffect", effects);
|
||||
return { success: true, consumed: true };
|
||||
}
|
||||
|
||||
function buildStatusEffectData(statusId, action, context) {
|
||||
const statusConfig = getStatusEffectConfig(statusId);
|
||||
|
||||
return {
|
||||
name: statusConfig?.name ? game.i18n.localize(statusConfig.name) : statusId,
|
||||
icon: statusConfig?.img ?? "icons/svg/aura.svg",
|
||||
statuses: [statusId],
|
||||
origin: context.reactionOrigin,
|
||||
duration: buildEffectDuration(action.duration),
|
||||
changes: [],
|
||||
flags: {
|
||||
[MODULE_ID]: {
|
||||
managed: true,
|
||||
reactionId: context.reaction.id,
|
||||
actionId: action.id
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function getStatusEffectConfig(statusId) {
|
||||
const statusEffects = CONFIG.statusEffects ?? [];
|
||||
if (Array.isArray(statusEffects)) return statusEffects.find(status => status.id === statusId);
|
||||
if (statusEffects instanceof Map) return statusEffects.get(statusId) ?? null;
|
||||
return Object.values(statusEffects).find(status => status.id === statusId) ?? null;
|
||||
if (statusEffects instanceof Map) return statusEffects.get(statusId);
|
||||
return statusEffects.find(status => status.id === statusId);
|
||||
}
|
||||
|
||||
function buildEffectDuration(duration) {
|
||||
|
||||
Reference in New Issue
Block a user