From 6ea882a05353a72200fae91efcfbe0bedb34eeeb Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Mon, 25 Jul 2022 15:13:47 +0200 Subject: [PATCH] Fixed trigger conditions not working on rest --- app/imports/api/engine/actions/applyTriggers.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/app/imports/api/engine/actions/applyTriggers.js b/app/imports/api/engine/actions/applyTriggers.js index 30b1790e..22507780 100644 --- a/app/imports/api/engine/actions/applyTriggers.js +++ b/app/imports/api/engine/actions/applyTriggers.js @@ -11,15 +11,9 @@ export default function applyTriggers(node, { creature, targets, scope, log }, t const type = prop.type; if (creature.triggers?.[type]?.[timing]) { creature.triggers[type][timing].forEach(trigger => { - // Tags - if (!triggerMatchTags(trigger, prop)) return; - // Condition - if (trigger.condition?.parseNode) { - recalculateCalculation(trigger.condition, scope, log); - if (!trigger.condition.value) return; + if (triggerMatchTags(trigger, prop)) { + applyTrigger(trigger, { creature, targets, scope, log }); } - // Apply - applyTrigger(trigger, { creature, targets, scope, log }); }); } } @@ -57,6 +51,13 @@ function triggerMatchTags(trigger, prop) { } export function applyTrigger(trigger, { creature, targets, scope, log }) { + // Prevent triggers from firing if their condition is false + if (trigger.condition?.parseNode) { + recalculateCalculation(trigger.condition, scope, log); + if (!trigger.condition.value) return; + } + + // Prevent triggers from firing themselves in a loop if (trigger.firing) { /* log.content.push({