2026-06-04 18:21:46 +02:00

26 lines
1.0 KiB
JavaScript
Executable File

import { MODULE_ID } from "../constants.js";
import { getAssignedReactionsForContext } from "./assignment-resolver.js";
import { checkConditions } from "./condition-runner.js";
import { checkConsumptionAvailable, consumeReactionUse } from "./consumption-manager.js";
import { executeReactionActions } from "./action-runner.js";
export async function handleTrigger(triggerType, context) {
if (!game.user.isGM) return;
const assignedReactions = await getAssignedReactionsForContext(context);
for (const reaction of assignedReactions) {
try {
if (!reaction?.enabled) continue;
if (reaction.trigger?.type !== triggerType) continue;
if (!await checkConsumptionAvailable(reaction, context)) continue;
if (!await checkConditions(reaction, context)) continue;
const result = await executeReactionActions(reaction, context);
if (result.shouldConsume) await consumeReactionUse(reaction, context);
} catch (error) {
console.error(`${MODULE_ID} | Failed to handle reaction`, reaction, error);
}
}
}