diff --git a/src/server/components/quests.js b/src/server/components/quests.js index e6f397da..6641815d 100644 --- a/src/server/components/quests.js +++ b/src/server/components/quests.js @@ -30,7 +30,12 @@ define([ quest.active = (this.obj.zoneName == quest.zoneName); this.quests.push(quest); - quest.init(hideMessage); + if (!quest.init(hideMessage)) { + this.quests.spliceWhere(q => (q == quest)); + return false; + } + else + return true; }, complete: function(id) { diff --git a/src/server/config/quests/questBuilder.js b/src/server/config/quests/questBuilder.js index 8e3d80c0..7e0a7007 100644 --- a/src/server/config/quests/questBuilder.js +++ b/src/server/config/quests/questBuilder.js @@ -61,7 +61,8 @@ define([ quest.obj = obj; quest.zoneName = zoneName; - oQuests.obtain(quest, !!template); + if (!oQuests.obtain(quest, !!template)) + this.obtain(obj, template); } }; }); \ No newline at end of file diff --git a/src/server/config/quests/templates/questGatherResource.js b/src/server/config/quests/templates/questGatherResource.js index 44f963c6..d0ccd21b 100644 --- a/src/server/config/quests/templates/questGatherResource.js +++ b/src/server/config/quests/templates/questGatherResource.js @@ -15,6 +15,8 @@ define([ } this.description = 'Gather ' + this.have + '/' + this.need + ' herbs'; + + return true; }, events: { diff --git a/src/server/config/quests/templates/questKillX.js b/src/server/config/quests/templates/questKillX.js index fffd8d7e..619a39f2 100644 --- a/src/server/config/quests/templates/questKillX.js +++ b/src/server/config/quests/templates/questKillX.js @@ -37,6 +37,11 @@ define([ (mobBlueprint.level <= ~~(this.obj.stats.values.level * 1.35)) ); }, this); + + //No level appropriate mobs found + if (keys.length == 0) + return false; + this.mobType = keys[~~(Math.random() * keys.length)]; var needMax = 8; this.mobName = this.mobType.replace(/\w\S*/g, function(txt) { @@ -48,6 +53,8 @@ define([ } this.description = 'Kill ' + this.have + '/' + this.need + ' ' + this.mobName; + + return true; }, events: { diff --git a/src/server/config/quests/templates/questLoot.js b/src/server/config/quests/templates/questLoot.js index d8a01b92..6b405bf1 100644 --- a/src/server/config/quests/templates/questLoot.js +++ b/src/server/config/quests/templates/questLoot.js @@ -17,6 +17,8 @@ define([ } this.description = 'Loot 1x ' + this.slotName + ' slot item'; + + return true; }, events: { diff --git a/src/server/config/quests/templates/questLootGen.js b/src/server/config/quests/templates/questLootGen.js index f268d3ca..bd3893ff 100644 --- a/src/server/config/quests/templates/questLootGen.js +++ b/src/server/config/quests/templates/questLootGen.js @@ -26,6 +26,11 @@ define([ (mobBlueprint.level <= (this.obj.stats.values.level * 1.35)) ); }, this); + + //No level appropriate mobs found + if (keys.length == 0) + return false; + this.mobType = keys[~~(Math.random() * keys.length)]; var needMax = 8; this.mobName = this.mobType.replace(/\w\S*/g, function(txt) { @@ -39,6 +44,8 @@ define([ this.name = this.item.name + ' Gatherer'; this.description = 'Loot ' + this.have + '/' + this.need + ' ' + this.item.name + ' from ' + this.mobName; + + return true; }, oComplete: function() { diff --git a/src/server/config/quests/templates/questTemplate.js b/src/server/config/quests/templates/questTemplate.js index be294ed2..8018832f 100644 --- a/src/server/config/quests/templates/questTemplate.js +++ b/src/server/config/quests/templates/questTemplate.js @@ -5,7 +5,9 @@ define([ ) { return { init: function(hideMessage) { - this.build(); + if (!this.build()) + return false; + this.obj.syncer.setArray(true, 'quests', 'obtainQuests', this.simplify(true)); if (!hideMessage) { @@ -17,6 +19,8 @@ define([ }] }, [this.obj.serverId]); } + + return true; }, ready: function() {