let spawners = require('../../world/spawners'); let mobBuilder = require('../../world/mobBuilder'); let combat = require('../../combat/combat'); module.exports = { id: 'akarei', name: 'The Akarei', description: 'The last descendents of the ancient Akarei.', uniqueStat: { damage: 1, chance: { min: 20, max: 45 }, generate: function (item) { let chance = this.chance; let chanceRoll = ~~(random.norm(chance.min, chance.max) * 10) / 10; let result = null; if (item.effects) result = item.effects.find(e => (e.factionId === 'akarei')); if (!result) { if (!item.effects) item.effects = []; result = { factionId: 'akarei', properties: { chance: chanceRoll }, text: chanceRoll + '% chance on crit to cast a lightning bolt', events: {} }; item.effects.push(result); } if (!result.events) result.events = {}; for (let e in this.events) result.events[e] = this.events[e]; return result; }, events: { beforeDealDamage: function (item, damage, target) { if (!damage.crit) return; let effect = item.effects.find(e => (e.factionId === 'akarei')); let roll = Math.random() * 100; if (roll >= effect.properties.chance) return; let cbExplode = function (target) { if ((this.destroyed) || (target.destroyed)) return; let damage = combat.getDamage({ source: this, target: target, damage: item.level * 5, element: 'arcane', noCrit: true }); target.stats.takeDamage(damage, 1, this); }; this.instance.syncer.queue('onGetObject', { id: this.id, components: [{ type: 'lightningEffect', toX: target.x, toY: target.y }] }, -1); this.spellbook.registerCallback(this.id, cbExplode.bind(this, target), 1); } } }, rewards: { } };