Browse Source

feat #1986: More work on this

tags/v0.12.0
Shaun 1 year ago
parent
commit
ce13d6a908
3 changed files with 23 additions and 5 deletions
  1. +9
    -2
      src/server/config/itemEffects/castSpellOnHit.js
  2. +7
    -1
      src/server/config/spells/spellFireblast.js
  3. +7
    -2
      src/server/items/generators/effects.js

+ 9
- 2
src/server/config/itemEffects/castSpellOnHit.js View File

@@ -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 });
};


+ 7
- 1
src/server/config/spells/spellFireblast.js View File

@@ -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 = {


+ 7
- 2
src/server/items/generators/effects.js View File

@@ -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;
}


Loading…
Cancel
Save