module.exports = { init: function () { let mob = this.instance.objects.objects.find(m => (m.id === this.mobId)); let states = mob.dialogue.states; this.addStates(states, this.dialogue.add || {}); this.removeStates(states, this.dialogue.remove || {}); }, addStates: function (dialogue, states) { for (let s in states) { let source = extend(true, {}, states[s]); let target = dialogue[s]; if (!target) { dialogue[s] = source; continue; } for (let o in source) { target.msg[0].options.push(o); target.options[o] = source[o]; } } }, removeStates: function (dialogue, states) { for (let s in states) { let source = states[s]; let target = dialogue[s]; if (!target) continue; else if (source === null) { delete dialogue[s]; continue; } for (let o in source) { let targetOptions = target.msg[0].options; if (targetOptions.options) targetOptions.spliceWhere(t => (t === o)); delete target.options[o]; } } } };