diff --git a/src/client/js/components/inventory.js b/src/client/js/components/inventory.js index faa781c8..c2e04995 100644 --- a/src/client/js/components/inventory.js +++ b/src/client/js/components/inventory.js @@ -44,7 +44,10 @@ define([ return (item.id == nId); }); if (findItem) { - rerender = (findItem.pos != nItem.pos); + rerender = ( + (findItem.pos != nItem.pos) || + (findItem.eq != nItem.eq) + ); for (var p in findItem) { delete findItem[p]; diff --git a/src/server/components/inventory.js b/src/server/components/inventory.js index f3a928a8..e46c10c7 100644 --- a/src/server/components/inventory.js +++ b/src/server/components/inventory.js @@ -54,6 +54,12 @@ define([ item.spell.properties.range = item.range; } else if (item.quantity == NaN) item.quantity = 1; + else if ((item.effects) && (Object.keys(item.effects[0]).length == 0)) { + items.splice(i, 1); + i--; + iLen--; + continue; + } while (item.name.indexOf(`''`) > -1) { item.name = item.name.replace(`''`, `'`); @@ -655,6 +661,13 @@ define([ var mtxModule = require(mtxUrl); e.events = mtxModule.events; + } else if (e.type) { + var effectUrl = itemEffects.get(e.type); + var effectModule = require(effectUrl); + + e.text = effectModule.events.onGetText(item); + + e.events = effectModule.events; } }); } @@ -917,7 +930,8 @@ define([ text: e.text, properties: e.properties, mtx: e.mtx, - name: e.name + type: e.type, + rolls: e.rolls })); } diff --git a/src/server/config/effects/effectSlowed.js b/src/server/config/effects/effectSlowed.js index 8679a65f..30cfa44b 100644 --- a/src/server/config/effects/effectSlowed.js +++ b/src/server/config/effects/effectSlowed.js @@ -5,11 +5,11 @@ define([ ) { return { type: 'slowed', - chance: 0.3, + chance: 0.7, events: { beforeMove: function (targetPos) { - if (Math.random() < this.chance) + if (Math.random() >= this.chance) return; targetPos.success = false; @@ -19,7 +19,7 @@ define([ if (!damage) return; - if (Math.random() < this.chance) + if (Math.random() >= this.chance) return; damage.failed = true; diff --git a/src/server/config/itemEffects/freezeOnHit.js b/src/server/config/itemEffects/freezeOnHit.js index 89aed737..b654588f 100644 --- a/src/server/config/itemEffects/freezeOnHit.js +++ b/src/server/config/itemEffects/freezeOnHit.js @@ -5,6 +5,12 @@ define([ ) { return { events: { + onGetText: function (item) { + var rolls = item.effects.find(e => (e.type == 'freezeOnHit')).rolls; + + return `${rolls.chance}% chance on hit to freeze target for ${rolls.duration} ticks`; + }, + afterDealDamage: function (item, damage, target) { var rolls = item.effects.find(e => (e.type == 'freezeOnHit')).rolls; diff --git a/src/server/items/generators/stats.js b/src/server/items/generators/stats.js index 95bca78d..ac90210b 100644 --- a/src/server/items/generators/stats.js +++ b/src/server/items/generators/stats.js @@ -109,6 +109,46 @@ define([ generator: 'elementResist' }, + dmgPercent: { + min: 1, + max: 5, + ignore: true + }, + elementArcanePercent: { + min: 1, + max: 5, + ignore: true + }, + elementFrostPercent: { + min: 1, + max: 5, + ignore: true + }, + elementFirePercent: { + min: 1, + max: 5, + ignore: true + }, + elementHolyPercent: { + min: 1, + max: 5, + ignore: true + }, + elementPhysicalPercent: { + min: 1, + max: 5, + ignore: true + }, + elementPoisonPercent: { + min: 1, + max: 5, + ignore: true + }, + allAttributes: { + generator: 'mainStat', + ignore: true + }, + armor: { generator: 'armor', ignore: true diff --git a/src/server/mods/feature-cards/cards.js b/src/server/mods/feature-cards/cards.js index 9e776102..b2e0e689 100644 --- a/src/server/mods/feature-cards/cards.js +++ b/src/server/mods/feature-cards/cards.js @@ -25,9 +25,9 @@ define([ mobName: 'flamingo' }, 'Benthic Incantation': { - chance: 0.05, + chance: 990.05, reward: `Princess Morgawsa's Trident`, - setSize: 7, + setSize: 1, zone: 'estuary' } }; @@ -151,6 +151,8 @@ define([ spritesheet: '../../../images/legendaryItems.png', type: 'Trident', spellName: 'magic missile', + description: `Summoned from the ancient depths of the ocean by the Benthic Incantation.`, + stats: ['elementFrostPercent', 'elementFrostPercent', 'elementFrostPercent'], effects: [{ type: 'freezeOnHit', rolls: {