From ce13d6a908662dd5b644cda8b73629e90afa564d Mon Sep 17 00:00:00 2001 From: Shaun Date: Sun, 12 Mar 2023 11:23:18 +0200 Subject: [PATCH] feat #1986: More work on this --- src/server/config/itemEffects/castSpellOnHit.js | 11 +++++++++-- src/server/config/spells/spellFireblast.js | 8 +++++++- src/server/items/generators/effects.js | 9 +++++++-- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/server/config/itemEffects/castSpellOnHit.js b/src/server/config/itemEffects/castSpellOnHit.js index cef676a8..46ae9322 100644 --- a/src/server/config/itemEffects/castSpellOnHit.js +++ b/src/server/config/itemEffects/castSpellOnHit.js @@ -57,8 +57,8 @@ const handler = (obj, item, event, firedEventName) => { delete spellConfig.scaleDamage; if (scaleDamage) { - if (scaleDamage.s_useOriginal) { - scaleDamage.s_useOriginal.forEach(s => { + if (scaleDamage.useOriginal) { + scaleDamage.useOriginal.forEach(s => { spellConfig[s] = event.spell[s]; }); } @@ -83,8 +83,15 @@ const handler = (obj, item, event, firedEventName) => { target = obj; else if (castTarget === 'none') target = undefined; + //Need to write a generic way to apply these else if (castTarget === '{{event.oldPos}}') target = extend({}, event.oldPos); + else if (JSON.stringify(castTarget) === '{"x":"{{event.follower.x}}","y":"{{event.follower.y}}"}') { + target = { + x: event.follower.x, + y: event.follower.y + }; + } builtSpell.cast({ target }); }; diff --git a/src/server/config/spells/spellFireblast.js b/src/server/config/spells/spellFireblast.js index 6c3c4e94..d90ceabb 100644 --- a/src/server/config/spells/spellFireblast.js +++ b/src/server/config/spells/spellFireblast.js @@ -48,9 +48,15 @@ module.exports = { damage: 1, cast: function (action) { - let obj = this.obj; + const { obj, targetPlayerPos } = this; + let { x, y, instance: { physics, syncer } } = obj; + if (!targetPlayerPos) { + x = action.target.x; + y = action.target.y; + } + let radius = this.radius; const particleEvent = { diff --git a/src/server/items/generators/effects.js b/src/server/items/generators/effects.js index 0e438d2c..28e9c6d5 100644 --- a/src/server/items/generators/effects.js +++ b/src/server/items/generators/effects.js @@ -2,7 +2,7 @@ const rollValues = (rollsDefinition, result) => { for (let p in rollsDefinition) { const entry = rollsDefinition[p]; - if (typeof(entry) === 'object' && !Array.isArray(entry) && entry !== null) { + if (typeof(entry) === 'object' && entry !== null && !Array.isArray(entry) ) { const newResult = {}; result[p] = newResult; @@ -16,8 +16,13 @@ const rollValues = (rollsDefinition, result) => { const isInt = (p.indexOf('i_') === 0); const fieldName = p.replace('i_', ''); + //Keys that start with s_ indicate that they shouldn't be rolled + // We use this to allow arrays inside rolls to be hardcoded if (!Array.isArray(entry) || p.indexOf('s_') === 0) { - result[fieldName] = range; + if (p.indexOf('s_') === 0) + result[p.substr(2)] = range; + else + result[fieldName] = range; continue; }