Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 

114 Zeilen
2.0 KiB

  1. define([
  2. ], function(
  3. ) {
  4. return {
  5. type: 'quests',
  6. quests: [],
  7. init: function(blueprint) {
  8. var quests = blueprint.quests || [];
  9. var qLen = quests.length;
  10. for (var i = 0; i < qLen; i++) {
  11. var q = quests[i];
  12. this.obj.instance.questBuilder.obtain(this.obj, q);
  13. }
  14. delete blueprint.quests;
  15. this.blueprint = blueprint;
  16. },
  17. transfer: function() {
  18. var blueprint = { quests: this.quests };
  19. this.quests = [];
  20. this.init(blueprint);
  21. },
  22. obtain: function(quest, hideMessage) {
  23. quest.active = (this.obj.zoneName == quest.zoneName);
  24. this.quests.push(quest);
  25. if (!quest.init(hideMessage)) {
  26. this.quests.spliceWhere(q => (q == quest));
  27. return false;
  28. }
  29. else
  30. return true;
  31. },
  32. complete: function(id) {
  33. var quest = this.quests.find(q => q.id == id);
  34. if ((!quest) || (!quest.isReady))
  35. return;
  36. quest.complete();
  37. this.quests.spliceWhere(q => q == quest);
  38. this.obj.instance.questBuilder.obtain(this.obj);
  39. },
  40. /*update: function() {
  41. var quests = this.quests;
  42. var qLen = quests.length;
  43. var completed = false;
  44. for (var i = 0; i < qLen; i++) {
  45. var q = quests[i];
  46. if (q.isCompleted) {
  47. quests.splice(i, 1);
  48. q.ready();
  49. completed = true;
  50. qLen--;
  51. i--;
  52. }
  53. }
  54. if (completed)
  55. questBuilder.obtain(this.obj);
  56. },*/
  57. fireEvent: function(event, args) {
  58. var quests = this.quests;
  59. var qLen = quests.length;
  60. for (var i = 0; i < qLen; i++) {
  61. var q = quests[i];
  62. if (!q) {
  63. qLen--;
  64. continue;
  65. }
  66. else if (q.completed)
  67. continue;
  68. var events = q.events;
  69. if (!events)
  70. continue;
  71. var callback = events[event];
  72. if (!callback)
  73. continue;
  74. callback.apply(q, args);
  75. }
  76. },
  77. simplify: function(self) {
  78. if (!self)
  79. return;
  80. var result = {
  81. type: 'quests'
  82. };
  83. if (this.quests.length > 0) {
  84. if (this.quests[0].simplify)
  85. result.quests = this.quests.map(q => q.simplify(true));
  86. else
  87. result.quests = this.quests;
  88. }
  89. return result;
  90. }
  91. };
  92. });