|
- module.exports = {
- config: null,
- state: -1,
- cd: 0,
- repeat: 0,
-
- init: function () {
- this.update();
- },
-
- update: function () {
- if (this.cd === 0) {
- if (this.state < this.config.length - 1) {
- this.state++;
- let stateConfig = this.config[this.state];
-
- if (stateConfig.repeat) {
- if (!stateConfig.oldRepeat)
- stateConfig.oldRepeat = stateConfig.repeat;
-
- stateConfig.repeat--;
- }
-
- this.cd = (stateConfig.delay instanceof Array) ? stateConfig.delay[stateConfig.oldRepeat - stateConfig.repeat - 1] : stateConfig.delay;
- this.events[stateConfig.type].call(this, stateConfig);
-
- if (stateConfig.repeat > 0)
- this.state--;
- else
- stateConfig.repeat = stateConfig.oldRepeat;
-
- //Sometimes (Like when we make a mob attackable, then check if they're alive in a new phase), the next phase doesn't
- // trigger soon enough. So if there's no delay, make sure to switch phases asap.
- if (!this.cd)
- this.end = true;
- } else
- this.end = true;
- } else
- this.cd--;
- },
-
- events: {
- mobTalk: function (config) {
- let mob = this.instance.objects.objects.find(o => (o.id === config.id));
- let text = (config.text instanceof Array) ? config.text[config.oldRepeat - config.repeat - 1] : config.text;
-
- if (config.zone) {
- this.instance.syncer.queue('onGetMessages', {
- messages: {
- class: 'q4',
- message: mob.name + ': ' + text
- }
- }, -1);
- } else {
- mob.addComponent('chatter');
- mob.syncer.set(false, 'chatter', 'msg', text);
- }
- },
- addComponents: function (config) {
- let objects = this.instance.objects.objects;
-
- let components = config.components;
- if (!components.push)
- components = [components];
- let cLen = components.length;
-
- let mobs = config.mobs;
- if (!mobs.push)
- mobs = [mobs];
- let mLen = mobs.length;
-
- for (let i = 0; i < mLen; i++) {
- let mob = objects.find(o => (o.id === mobs[i]));
- for (let j = 0; j < cLen; j++) {
- let c = components[j];
- mob.addComponent(c.type, components[j]);
- }
- }
- },
- removeComponents: function (config) {
- let objects = this.instance.objects.objects;
-
- let components = config.components;
- if (!components.push)
- components = [components];
- let cLen = components.length;
-
- let mobs = config.mobs;
- if (!mobs.push)
- mobs = [mobs];
- let mLen = mobs.length;
-
- for (let i = 0; i < mLen; i++) {
- let mob = objects.find(o => (o.id === mobs[i]));
- for (let j = 0; j < cLen; j++)
- mob.removeComponent(components[j]);
- }
- }
- }
- };
|