From cd45ae1442c875f15d9d0d07c9dc1d6e15248d33 Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Mon, 1 Mar 2021 10:07:24 +0200 Subject: [PATCH] Fixed buffs not recomputing correctly because of inactive properties not being activated --- app/imports/api/creature/actions/applyBuff.js | 8 +------- app/imports/api/creature/actions/doAction.js | 6 ++++++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/imports/api/creature/actions/applyBuff.js b/app/imports/api/creature/actions/applyBuff.js index cfed0cd6..2bde6c85 100644 --- a/app/imports/api/creature/actions/applyBuff.js +++ b/app/imports/api/creature/actions/applyBuff.js @@ -4,7 +4,6 @@ import { } from '/imports/api/parenting/parenting.js'; import {setDocToLastOrder} from '/imports/api/parenting/order.js'; import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js'; -import { recomputeCreatureByDoc } from '/imports/api/creature/computation/methods/recomputeCreature.js'; export default function applyBuff({ prop, @@ -58,10 +57,5 @@ function copyNodeListToTarget(propList, target, oldParent){ collection: CreatureProperties, doc: propList[0], }); - - CreatureProperties.batchInsert(propList, () => { - // This insert is racing the main recompute, recmpute again after it's - // certainly finished - recomputeCreatureByDoc(target); - }); + CreatureProperties.batchInsert(propList); } diff --git a/app/imports/api/creature/actions/doAction.js b/app/imports/api/creature/actions/doAction.js index 229b4c7a..2b8209b5 100644 --- a/app/imports/api/creature/actions/doAction.js +++ b/app/imports/api/creature/actions/doAction.js @@ -10,6 +10,7 @@ import { recomputeCreatureByDoc } from '/imports/api/creature/computation/method import { nodesToTree } from '/imports/api/parenting/parenting.js'; import applyProperties from '/imports/api/creature/actions/applyProperties.js'; import recomputeInventory from '/imports/api/creature/denormalise/recomputeInventory.js'; +import recomputeInactiveProperties from '/imports/api/creature/denormalise/recomputeInactiveProperties.js'; const doAction = new ValidatedMethod({ name: 'creatureProperties.doAction', @@ -46,9 +47,14 @@ const doAction = new ValidatedMethod({ // The acting creature might have used ammo recomputeInventory(creature._id); + + // The action might add properties which need to be activated + recomputeInactiveProperties(creature._id); + // recompute creatures recomputeCreatureByDoc(creature); targets.forEach(target => { + recomputeInactiveProperties(target._id); recomputeCreatureByDoc(target); }); },