Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 

75 rader
1.8 KiB

  1. define([
  2. 'config/quests/templates/questTemplate',
  3. 'config/questsBase'
  4. ], function (
  5. questTemplate,
  6. globalQuests
  7. ) {
  8. return {
  9. instance: null,
  10. init: function (instance) {
  11. this.instance = instance;
  12. },
  13. obtain: function (obj, template) {
  14. var zoneName = template ? template.zoneName : obj.zoneName;
  15. var oQuests = obj.quests;
  16. if (oQuests.quests.filter(q => q.zoneName == zoneName).length > 0)
  17. return;
  18. var zoneTemplate = null;
  19. try {
  20. zoneTemplate = require('config/maps/' + zoneName + '/quests.js');
  21. } catch (e) {
  22. zoneTemplate = globalQuests;
  23. }
  24. if (!zoneTemplate)
  25. zoneTemplate = globalQuests;
  26. var config = extend(true, {}, zoneTemplate);
  27. this.instance.eventEmitter.emit('onBeforeGetQuests', config);
  28. if (config.infini.length == 0)
  29. return;
  30. var pickQuest = null;
  31. if ((template) && (template.type))
  32. pickQuest = config.infini.find(c => c.type == template.type);
  33. if (!pickQuest)
  34. pickQuest = config.infini[~~(Math.random() * config.infini.length)];
  35. var pickType = pickQuest.type[0].toUpperCase() + pickQuest.type.substr(1);
  36. var questClass = require('config/quests/templates/quest' + pickType);
  37. var quest = extend(true, {}, pickQuest, questTemplate, questClass, template);
  38. if (template)
  39. quest.xp = template.xp;
  40. //Calculate next id
  41. var id = 0;
  42. var currentQuests = oQuests.quests;
  43. var cLen = currentQuests.length;
  44. for (var i = 0; i < cLen; i++) {
  45. var q = currentQuests[i];
  46. if (q.id >= id)
  47. id = q.id + 1;
  48. }
  49. quest.id = id;
  50. quest.obj = obj;
  51. quest.zoneName = zoneName;
  52. if (!template) {
  53. var level = this.instance.spawners.zone.level;
  54. level = level[0];
  55. var xp = ~~(level * 22 * quest.getXpMultiplier());
  56. quest.xp = xp;
  57. }
  58. if (!oQuests.obtain(quest, !!template))
  59. this.obtain(obj, template);
  60. }
  61. };
  62. });