diff --git a/app/imports/api/engine/actions/applyPropertyByType/applyRoll.js b/app/imports/api/engine/actions/applyPropertyByType/applyRoll.js index 7d860948..2a0a9002 100644 --- a/app/imports/api/engine/actions/applyPropertyByType/applyRoll.js +++ b/app/imports/api/engine/actions/applyPropertyByType/applyRoll.js @@ -4,22 +4,22 @@ import applyEffectsToCalculationParseNode from '/imports/api/engine/actions/appl import resolve, { toString } from '/imports/parser/resolve.js'; import { applyNodeTriggers } from '/imports/api/engine/actions/applyTriggers.js'; -export default function applyRoll(node, actionContext){ +export default function applyRoll(node, actionContext) { applyNodeTriggers(node, 'before', actionContext); const prop = node.node; - const applyChildren = function(){ + const applyChildren = function () { applyNodeTriggers(node, 'after', actionContext); node.children.forEach(child => applyProperty(child, actionContext)); }; - if (prop.roll?.calculation){ + if (prop.roll?.calculation) { const logValue = []; // roll the dice only and store that string applyEffectsToCalculationParseNode(prop.roll, actionContext); - const {result: rolled, context} = resolve('roll', prop.roll.parseNode, actionContext.scope); - if (rolled.parseType !== 'constant'){ + const { result: rolled, context } = resolve('roll', prop.roll.parseNode, actionContext.scope); + if (rolled.parseType !== 'constant') { logValue.push(toString(rolled)); } logErrors(context.errors, actionContext); @@ -28,20 +28,20 @@ export default function applyRoll(node, actionContext){ context.errors = []; // Resolve the roll to a final value - const {result: reduced} = resolve('reduce', rolled, actionContext.scope, context); + const { result: reduced } = resolve('reduce', rolled, actionContext.scope, context); logErrors(context.errors, actionContext); // Store the result - if (reduced.parseType === 'constant'){ + if (reduced.parseType === 'constant') { prop.roll.value = reduced.value; - } else if (reduced.parseType === 'error'){ + } else if (reduced.parseType === 'error') { prop.roll.value = null; } else { prop.roll.value = toString(reduced); } - // If we didn't end up with a constant of finite amount, give up - if (reduced?.parseType !== 'constant' || !isFinite(reduced.value)){ + // If we didn't end up with a constant or a number of finite value, give up + if (reduced?.parseType !== 'constant' || (reduced.valueType === 'number' && !isFinite(reduced.value))) { return applyChildren(); } const value = reduced.value; @@ -49,7 +49,7 @@ export default function applyRoll(node, actionContext){ actionContext.scope[prop.variableName] = value; logValue.push(`**${value}**`); - if (!prop.silent){ + if (!prop.silent) { actionContext.addLog({ name: prop.name, value: logValue.join('\n'),