diff --git a/app/imports/api/engine/actions/applyTriggers.js b/app/imports/api/engine/actions/applyTriggers.js index 22507780..ee2af708 100644 --- a/app/imports/api/engine/actions/applyTriggers.js +++ b/app/imports/api/engine/actions/applyTriggers.js @@ -51,6 +51,11 @@ function triggerMatchTags(trigger, prop) { } export function applyTrigger(trigger, { creature, targets, scope, log }) { + // Prevent trigger from firing if it's inactive + if (trigger.inactive) { + return; + } + // Prevent triggers from firing if their condition is false if (trigger.condition?.parseNode) { recalculateCalculation(trigger.condition, scope, log); diff --git a/app/imports/api/engine/actions/doAction.js b/app/imports/api/engine/actions/doAction.js index 75a4112c..271e2ba8 100644 --- a/app/imports/api/engine/actions/doAction.js +++ b/app/imports/api/engine/actions/doAction.js @@ -98,7 +98,9 @@ export function doActionWork({ // Get the triggers const triggers = getPropertiesOfType(creature._id, 'trigger'); - remove(triggers, trigger => trigger.event !== 'doActionProperty'); + // Skip triggers that aren't triggered by action props or are inactive + remove(triggers, trigger => trigger.event !== 'doActionProperty' || trigger.inactive); + // Group the triggers into creature.triggers.. creature.triggers = groupBy(triggers, 'actionPropertyType'); for (let type in creature.triggers) { creature.triggers[type] = groupBy(creature.triggers[type], 'timing')