From e03c5f48eb242332bd14ab3d1ec51248a2a26e70 Mon Sep 17 00:00:00 2001 From: Shaun Date: Wed, 22 Apr 2020 21:09:41 +0200 Subject: [PATCH] more work on #1460 --- .../config/eventPhases/phaseGiveRewards.js | 26 ------ src/server/config/maps/fjolarok/quests.js | 5 -- src/server/config/quests/questBuilder.js | 11 ++- .../quests/templates/questGatherResource.js | 80 ------------------- src/server/events/events.js | 4 +- .../phases}/phaseDespawnMob.js | 0 .../eventPhases => events/phases}/phaseEnd.js | 0 .../phases}/phaseEventChain.js | 0 src/server/events/phases/phaseGiveRewards.js | 21 +++++ .../phases}/phaseGoto.js | 0 .../phases}/phaseHookEvents.js | 0 .../phases}/phaseKillAllMobs.js | 0 .../phases}/phaseKillMob.js | 0 .../phases}/phaseLocateMob.js | 0 .../phases}/phaseModifyDialogue.js | 0 .../phases}/phaseMoveMob.js | 0 .../phases}/phaseSetDescription.js | 0 .../phases}/phaseSpawnMob.js | 0 .../phases}/phaseTemplate.js | 0 .../phases}/phaseWait.js | 0 20 files changed, 32 insertions(+), 115 deletions(-) delete mode 100644 src/server/config/eventPhases/phaseGiveRewards.js delete mode 100644 src/server/config/quests/templates/questGatherResource.js rename src/server/{config/eventPhases => events/phases}/phaseDespawnMob.js (100%) rename src/server/{config/eventPhases => events/phases}/phaseEnd.js (100%) rename src/server/{config/eventPhases => events/phases}/phaseEventChain.js (100%) create mode 100644 src/server/events/phases/phaseGiveRewards.js rename src/server/{config/eventPhases => events/phases}/phaseGoto.js (100%) rename src/server/{config/eventPhases => events/phases}/phaseHookEvents.js (100%) rename src/server/{config/eventPhases => events/phases}/phaseKillAllMobs.js (100%) rename src/server/{config/eventPhases => events/phases}/phaseKillMob.js (100%) rename src/server/{config/eventPhases => events/phases}/phaseLocateMob.js (100%) rename src/server/{config/eventPhases => events/phases}/phaseModifyDialogue.js (100%) rename src/server/{config/eventPhases => events/phases}/phaseMoveMob.js (100%) rename src/server/{config/eventPhases => events/phases}/phaseSetDescription.js (100%) rename src/server/{config/eventPhases => events/phases}/phaseSpawnMob.js (100%) rename src/server/{config/eventPhases => events/phases}/phaseTemplate.js (100%) rename src/server/{config/eventPhases => events/phases}/phaseWait.js (100%) diff --git a/src/server/config/eventPhases/phaseGiveRewards.js b/src/server/config/eventPhases/phaseGiveRewards.js deleted file mode 100644 index 5e91dffe..00000000 --- a/src/server/config/eventPhases/phaseGiveRewards.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = { - init: function (event) { - const { config, rewards, eventManager } = event; - - event.participators.forEach(p => { - const rList = [{ - nameLike: 'Ancient Carp', - removeAll: true - }]; - - const pRewards = rewards[p.name]; - if (pRewards && pRewards.length) - rList.push(...pRewards); - - if (rList.length > 1) - rList[1].msg = `${config.name} reward:`; - - eventManager.instance.mail.sendMail(p.name, rList); - }); - - if (config.events && config.events.afterGiveRewards) - config.events.afterGiveRewards(event); - - this.end = true; - } -}; diff --git a/src/server/config/maps/fjolarok/quests.js b/src/server/config/maps/fjolarok/quests.js index a2ce18d4..c6a8e178 100644 --- a/src/server/config/maps/fjolarok/quests.js +++ b/src/server/config/maps/fjolarok/quests.js @@ -15,10 +15,5 @@ module.exports = { subType: '', quantity: [3, 7], dropChance: 0.5 - }, { - name: 'Green Fingers', - type: 'gatherResource', - subType: 'herb', - quantity: [5, 10] }] }; diff --git a/src/server/config/quests/questBuilder.js b/src/server/config/quests/questBuilder.js index 83f78b6d..922f0f11 100644 --- a/src/server/config/quests/questBuilder.js +++ b/src/server/config/quests/questBuilder.js @@ -33,7 +33,7 @@ module.exports = { zoneTemplate = globalQuests; let config = extend({}, zoneTemplate); - this.instance.eventEmitter.emit('onBeforeGetQuests', config); + this.instance.eventEmitter.emit('onBeforeGetQuests', config, zoneName); if (config.infini.length === 0) return; @@ -48,7 +48,14 @@ module.exports = { if (!pickQuest) pickQuest = config.infini[~~(Math.random() * config.infini.length)]; let pickType = pickQuest.type[0].toUpperCase() + pickQuest.type.substr(1); - let questClass = require(`../../config/quests/templates/quest${pickType}`); + + const questMsg = { + type: pickType, + path: pickQuest.path || `../../config/quests/templates/quest${pickType}` + }; + this.instance.eventEmitter.emit('onBeforeBuildQuest', questMsg); + + let questClass = require(questMsg.path); let quest = extend({}, pickQuest, questTemplate, questClass, template); diff --git a/src/server/config/quests/templates/questGatherResource.js b/src/server/config/quests/templates/questGatherResource.js deleted file mode 100644 index 4aa91839..00000000 --- a/src/server/config/quests/templates/questGatherResource.js +++ /dev/null @@ -1,80 +0,0 @@ -module.exports = { - type: 'gatherResource', - - need: null, - gatherType: null, - requiredQuality: 0, - have: 0, - - build: function () { - if (!this.need) { - this.need = 2 + ~~(Math.random() * 3); - - this.gatherType = ['herb', 'fish'][~~(Math.random() * 2)]; - - if (this.gatherType === 'fish') { - this.name = 'Lure of the Sea'; - - let isQualityQ = (Math.random() < 0.3); - if (isQualityQ) { - this.requiredQuality = 1 + ~~(Math.random() * 2); - this.need = 1; - } - } - } - - if (['herb', 'fish'].indexOf(this.gatherType) === -1) - this.gatherType = 'herb'; - - this.typeName = (this.gatherType === 'herb') ? 'herbs' : 'fish'; - - this.updateDescription(); - - return true; - }, - - getXpMultiplier: function () { - if (this.requiredQuality === 2) - return 8; - else if (this.requiredQuality === 1) - return 6; - return this.need; - }, - - updateDescription: function () { - let typeName = this.typeName; - if (this.requiredQuality > 0) - typeName = ['big', 'giant'][this.requiredQuality - 1] + ' ' + typeName; - - let action = ({ - herb: 'Gather', - fish: 'Catch' - })[this.gatherType]; - - this.description = `${action} ${this.have}/${this.need} ${typeName}`; - }, - - events: { - afterGatherResource: function (gatherResult) { - if (gatherResult.nodeType !== this.gatherType) - return; - else if ((this.requiredQuality) && (gatherResult.items[0].quality < this.requiredQuality)) - return; - else if (gatherResult.items[0].name.toLowerCase() === 'cerulean pearl') { - //This is a hack but we have no other way to tell fish from pearls at the moment - return; - } - - if ((this.obj.zoneName !== this.zoneName) || (this.have >= this.need)) - return; - - this.have++; - this.updateDescription(); - - this.obj.syncer.setArray(true, 'quests', 'updateQuests', this.simplify(true)); - - if (this.have >= this.need) - this.ready(); - } - } -}; diff --git a/src/server/events/events.js b/src/server/events/events.js index 1b55254c..1b612f91 100644 --- a/src/server/events/events.js +++ b/src/server/events/events.js @@ -1,4 +1,4 @@ -let phaseTemplate = require('../config/eventPhases/phaseTemplate'); +let phaseTemplate = require('./phases/phaseTemplate'); let fs = require('fs'); let mapList = require('../config/maps/mapList'); @@ -386,7 +386,7 @@ module.exports = { let phase = event.phases[i]; if (!phase) { let phaseFile = 'phase' + p.type[0].toUpperCase() + p.type.substr(1); - let typeTemplate = require('../config/eventPhases/' + phaseFile); + let typeTemplate = require('./phases/' + phaseFile); phase = extend({ instance: this.instance, event: event diff --git a/src/server/config/eventPhases/phaseDespawnMob.js b/src/server/events/phases/phaseDespawnMob.js similarity index 100% rename from src/server/config/eventPhases/phaseDespawnMob.js rename to src/server/events/phases/phaseDespawnMob.js diff --git a/src/server/config/eventPhases/phaseEnd.js b/src/server/events/phases/phaseEnd.js similarity index 100% rename from src/server/config/eventPhases/phaseEnd.js rename to src/server/events/phases/phaseEnd.js diff --git a/src/server/config/eventPhases/phaseEventChain.js b/src/server/events/phases/phaseEventChain.js similarity index 100% rename from src/server/config/eventPhases/phaseEventChain.js rename to src/server/events/phases/phaseEventChain.js diff --git a/src/server/events/phases/phaseGiveRewards.js b/src/server/events/phases/phaseGiveRewards.js new file mode 100644 index 00000000..d6a2bfed --- /dev/null +++ b/src/server/events/phases/phaseGiveRewards.js @@ -0,0 +1,21 @@ +module.exports = { + init: function (event) { + const { config, rewards, eventManager } = event; + + Object.entries(rewards).forEach(e => { + const { name, rList } = e; + + if (!rList.length) + return; + + rList[0].msg = `${config.name} reward:`; + + this.instance.mail.sendMail(name, rList); + }); + + if ((config.events) && (config.events.afterGiveRewards)) + config.events.afterGiveRewards(eventManager, config); + + this.end = true; + } +}; diff --git a/src/server/config/eventPhases/phaseGoto.js b/src/server/events/phases/phaseGoto.js similarity index 100% rename from src/server/config/eventPhases/phaseGoto.js rename to src/server/events/phases/phaseGoto.js diff --git a/src/server/config/eventPhases/phaseHookEvents.js b/src/server/events/phases/phaseHookEvents.js similarity index 100% rename from src/server/config/eventPhases/phaseHookEvents.js rename to src/server/events/phases/phaseHookEvents.js diff --git a/src/server/config/eventPhases/phaseKillAllMobs.js b/src/server/events/phases/phaseKillAllMobs.js similarity index 100% rename from src/server/config/eventPhases/phaseKillAllMobs.js rename to src/server/events/phases/phaseKillAllMobs.js diff --git a/src/server/config/eventPhases/phaseKillMob.js b/src/server/events/phases/phaseKillMob.js similarity index 100% rename from src/server/config/eventPhases/phaseKillMob.js rename to src/server/events/phases/phaseKillMob.js diff --git a/src/server/config/eventPhases/phaseLocateMob.js b/src/server/events/phases/phaseLocateMob.js similarity index 100% rename from src/server/config/eventPhases/phaseLocateMob.js rename to src/server/events/phases/phaseLocateMob.js diff --git a/src/server/config/eventPhases/phaseModifyDialogue.js b/src/server/events/phases/phaseModifyDialogue.js similarity index 100% rename from src/server/config/eventPhases/phaseModifyDialogue.js rename to src/server/events/phases/phaseModifyDialogue.js diff --git a/src/server/config/eventPhases/phaseMoveMob.js b/src/server/events/phases/phaseMoveMob.js similarity index 100% rename from src/server/config/eventPhases/phaseMoveMob.js rename to src/server/events/phases/phaseMoveMob.js diff --git a/src/server/config/eventPhases/phaseSetDescription.js b/src/server/events/phases/phaseSetDescription.js similarity index 100% rename from src/server/config/eventPhases/phaseSetDescription.js rename to src/server/events/phases/phaseSetDescription.js diff --git a/src/server/config/eventPhases/phaseSpawnMob.js b/src/server/events/phases/phaseSpawnMob.js similarity index 100% rename from src/server/config/eventPhases/phaseSpawnMob.js rename to src/server/events/phases/phaseSpawnMob.js diff --git a/src/server/config/eventPhases/phaseTemplate.js b/src/server/events/phases/phaseTemplate.js similarity index 100% rename from src/server/config/eventPhases/phaseTemplate.js rename to src/server/events/phases/phaseTemplate.js diff --git a/src/server/config/eventPhases/phaseWait.js b/src/server/events/phases/phaseWait.js similarity index 100% rename from src/server/config/eventPhases/phaseWait.js rename to src/server/events/phases/phaseWait.js