import { MODULE_ID } from "../constants.js"; export async function executeApplyStatusAction(action, context) { const actor = context.targetActor ?? context.actor; if (!actor) return { success: false, consumed: false, reason: "NO_ACTOR" }; const statuses = action.statuses ?? []; if (!statuses.length) return { success: false, consumed: false, reason: "NO_STATUSES" }; const effects = statuses.map(statusId => { const statusConfig = CONFIG.statusEffects.find(status => status.id === 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 } } }; }); await actor.createEmbeddedDocuments("ActiveEffect", effects); return { success: true, consumed: true }; } function buildEffectDuration(duration) { if (!duration || duration.type === "unlimited") return {}; if (duration.type === "rounds") { return { rounds: Number(duration.value) || 1, startRound: game.combat?.round, startTurn: game.combat?.turn }; } if (duration.type === "minutes") { return { seconds: (Number(duration.value) || 1) * 60, startTime: game.time.worldTime }; } return {}; }