@@ -44,7 +44,10 @@ define([ | |||||
return (item.id == nId); | return (item.id == nId); | ||||
}); | }); | ||||
if (findItem) { | if (findItem) { | ||||
rerender = (findItem.pos != nItem.pos); | |||||
rerender = ( | |||||
(findItem.pos != nItem.pos) || | |||||
(findItem.eq != nItem.eq) | |||||
); | |||||
for (var p in findItem) { | for (var p in findItem) { | ||||
delete findItem[p]; | delete findItem[p]; | ||||
@@ -54,6 +54,12 @@ define([ | |||||
item.spell.properties.range = item.range; | item.spell.properties.range = item.range; | ||||
} else if (item.quantity == NaN) | } else if (item.quantity == NaN) | ||||
item.quantity = 1; | 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) { | while (item.name.indexOf(`''`) > -1) { | ||||
item.name = item.name.replace(`''`, `'`); | item.name = item.name.replace(`''`, `'`); | ||||
@@ -655,6 +661,13 @@ define([ | |||||
var mtxModule = require(mtxUrl); | var mtxModule = require(mtxUrl); | ||||
e.events = mtxModule.events; | 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, | text: e.text, | ||||
properties: e.properties, | properties: e.properties, | ||||
mtx: e.mtx, | mtx: e.mtx, | ||||
name: e.name | |||||
type: e.type, | |||||
rolls: e.rolls | |||||
})); | })); | ||||
} | } | ||||
@@ -5,11 +5,11 @@ define([ | |||||
) { | ) { | ||||
return { | return { | ||||
type: 'slowed', | type: 'slowed', | ||||
chance: 0.3, | |||||
chance: 0.7, | |||||
events: { | events: { | ||||
beforeMove: function (targetPos) { | beforeMove: function (targetPos) { | ||||
if (Math.random() < this.chance) | |||||
if (Math.random() >= this.chance) | |||||
return; | return; | ||||
targetPos.success = false; | targetPos.success = false; | ||||
@@ -19,7 +19,7 @@ define([ | |||||
if (!damage) | if (!damage) | ||||
return; | return; | ||||
if (Math.random() < this.chance) | |||||
if (Math.random() >= this.chance) | |||||
return; | return; | ||||
damage.failed = true; | damage.failed = true; | ||||
@@ -5,6 +5,12 @@ define([ | |||||
) { | ) { | ||||
return { | return { | ||||
events: { | 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) { | afterDealDamage: function (item, damage, target) { | ||||
var rolls = item.effects.find(e => (e.type == 'freezeOnHit')).rolls; | var rolls = item.effects.find(e => (e.type == 'freezeOnHit')).rolls; | ||||
@@ -109,6 +109,46 @@ define([ | |||||
generator: 'elementResist' | 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: { | armor: { | ||||
generator: 'armor', | generator: 'armor', | ||||
ignore: true | ignore: true | ||||
@@ -25,9 +25,9 @@ define([ | |||||
mobName: 'flamingo' | mobName: 'flamingo' | ||||
}, | }, | ||||
'Benthic Incantation': { | 'Benthic Incantation': { | ||||
chance: 0.05, | |||||
chance: 990.05, | |||||
reward: `Princess Morgawsa's Trident`, | reward: `Princess Morgawsa's Trident`, | ||||
setSize: 7, | |||||
setSize: 1, | |||||
zone: 'estuary' | zone: 'estuary' | ||||
} | } | ||||
}; | }; | ||||
@@ -151,6 +151,8 @@ define([ | |||||
spritesheet: '../../../images/legendaryItems.png', | spritesheet: '../../../images/legendaryItems.png', | ||||
type: 'Trident', | type: 'Trident', | ||||
spellName: 'magic missile', | spellName: 'magic missile', | ||||
description: `Summoned from the ancient depths of the ocean by the Benthic Incantation.`, | |||||
stats: ['elementFrostPercent', 'elementFrostPercent', 'elementFrostPercent'], | |||||
effects: [{ | effects: [{ | ||||
type: 'freezeOnHit', | type: 'freezeOnHit', | ||||
rolls: { | rolls: { | ||||