From c50c512587b980297befc7609858beb982557a8f Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Fri, 23 Jun 2023 23:31:54 +0200 Subject: [PATCH] Fixed buff $target.var -> ~target.var to skip crystallization --- .../api/engine/actions/applyPropertyByType/applyBuff.js | 8 ++++---- app/private/docs/defaultDocs.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/imports/api/engine/actions/applyPropertyByType/applyBuff.js b/app/imports/api/engine/actions/applyPropertyByType/applyBuff.js index 3e48f057..a755a001 100644 --- a/app/imports/api/engine/actions/applyPropertyByType/applyBuff.js +++ b/app/imports/api/engine/actions/applyPropertyByType/applyBuff.js @@ -100,7 +100,7 @@ function copyNodeListToTarget(propList, target, oldParent) { /** * Replaces all variables with their resolved values - * except variables of the form `$target.thing.total` become `thing.total` + * except variables of the form `~target.thing.total` become `thing.total` */ function crystalizeVariables({ propList, actionContext }) { propList.forEach(prop => { @@ -119,8 +119,8 @@ function crystalizeVariables({ propList, actionContext }) { node.parseType !== 'accessor' && node.parseType !== 'symbol' ) return node; // Handle variables - if (node.name === '$target') { - // strip $target + if (node.name === '~target') { + // strip ~target if (node.parseType === 'accessor') { node.name = node.path.shift(); if (!node.path.length) { @@ -130,7 +130,7 @@ function crystalizeVariables({ propList, actionContext }) { // Can't strip symbols actionContext.addLog({ name: 'Error', - value: 'Variable `$target` should not be used without a property: $target.property', + value: 'Variable `~target` should not be used without a property: ~target.property', }); } return node; diff --git a/app/private/docs/defaultDocs.json b/app/private/docs/defaultDocs.json index cb92a93c..7faa5a19 100644 --- a/app/private/docs/defaultDocs.json +++ b/app/private/docs/defaultDocs.json @@ -153,7 +153,7 @@ "order": 8, "urlName": "buff", "href": "/docs/property/buff", - "description": "Buffs are temporary changes to a character sheet that can be applied by actions. When a buff is applied, it is copied to the target character along with all of its children properties. \n\nBuffs can either be manually removed from the stats page, or be removed by an action applying a [buff remover](/docs/property/remove-buff/) property.\n\n### Variable freezing\n\nWhen a buff is applied, all the calculations in the child properties have their variables frozen to their values at the time the buff is applied. You can prevent this behavior for the whole buff by using the `don't freeze variables` option, or on an individual variable reference by prefixing the variable with the keyword `$target.`.\n\nFor example, if a character has 10 strength and 16 dexterity, and applies a buff with some child property containing the calculation `$target.strength + dexterity` the property's calculation will become `strength + 16` when it is copied to the target character.\n\n---\n\n### Name\n\nThe name of the buff.\n\n### Description\n\nDescription of the applied buff.\n\nAllows [inline calculations](/docs/concepts/inline-calculations).\n\n### Target\n\n- **Target** Apply the buff to the target of the action\n- **Self** Apply the buff to the creature taking the action\n\n### Hide remove button\n\nIf this is set, the remove button next to the buff on the stats page will be hidden. Use this when you expect the buff to be removed automatically by another action.\n\n### Don't show in log\n\nIf set, the buff will not show its name and description in the log when applied.\n\n### Don't freeze variables\n\nPrevent the buff from freezing variables in child property calculations to their value at the time the buff was applied.\n\n### Tags\n\nSee [Tags](/docs/concepts/tags)", + "description": "Buffs are temporary changes to a character sheet that can be applied by actions. When a buff is applied, it is copied to the target character along with all of its children properties. \n\nBuffs can either be manually removed from the stats page, or be removed by an action applying a [buff remover](/docs/property/remove-buff/) property.\n\n### Variable freezing\n\nWhen a buff is applied, all the calculations in the child properties have their variables frozen to their values at the time the buff is applied. You can prevent this behavior for the whole buff by using the `don't freeze variables` option, or on an individual variable reference by prefixing the variable with the keyword `~target.`.\n\nFor example, if a character has 10 strength and 16 dexterity, and applies a buff with some child property containing the calculation `~target.strength + dexterity` the property's calculation will become `strength + 16` when it is copied to the target character.\n\n---\n\n### Name\n\nThe name of the buff.\n\n### Description\n\nDescription of the applied buff.\n\nAllows [inline calculations](/docs/concepts/inline-calculations).\n\n### Target\n\n- **Target** Apply the buff to the target of the action\n- **Self** Apply the buff to the creature taking the action\n\n### Hide remove button\n\nIf this is set, the remove button next to the buff on the stats page will be hidden. Use this when you expect the buff to be removed automatically by another action.\n\n### Don't show in log\n\nIf set, the buff will not show its name and description in the log when applied.\n\n### Don't freeze variables\n\nPrevent the buff from freezing variables in child property calculations to their value at the time the buff was applied.\n\n### Tags\n\nSee [Tags](/docs/concepts/tags)", "published": true }, {