|
- module.exports = {
- type: 'quests',
- quests: [],
-
- init: function (blueprint) {
- let quests = blueprint.quests || [];
- let qLen = quests.length;
- for (let i = 0; i < qLen; i++) {
- let q = quests[i];
-
- this.obj.instance.questBuilder.obtain(this.obj, q);
- }
-
- delete blueprint.quests;
- this.blueprint = blueprint;
- },
-
- transfer: function () {
- let blueprint = {
- quests: this.quests
- };
- this.quests = [];
- this.init(blueprint);
- },
-
- obtain: function (quest, hideMessage) {
- quest.active = (this.obj.zoneName === quest.zoneName);
-
- this.quests.push(quest);
- if (!quest.init(hideMessage)) {
- this.quests.spliceWhere(q => (q === quest));
- return false;
- } return true;
- },
-
- complete: function (id) {
- let quest = this.quests.find(q => q.id === id);
- if ((!quest) || (!quest.isReady))
- return;
-
- quest.complete();
-
- this.quests.spliceWhere(q => q === quest);
-
- this.obj.instance.questBuilder.obtain(this.obj);
- },
-
- fireEvent: function (event, args) {
- let quests = this.quests;
- let qLen = quests.length;
- for (let i = 0; i < qLen; i++) {
- let q = quests[i];
- if (!q) {
- qLen--;
- continue;
- } else if (q.completed)
- continue;
-
- let events = q.events;
- if (!events)
- continue;
-
- let callback = events[event];
- if (!callback)
- continue;
-
- callback.apply(q, args);
- }
- },
-
- simplify: function (self) {
- if (!self)
- return;
-
- let result = {
- type: 'quests'
- };
-
- if (this.quests.length > 0) {
- if (this.quests[0].simplify)
- result.quests = this.quests.map(q => q.simplify(true));
- else
- result.quests = this.quests;
- }
-
- return result;
- }
- };
|