Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 

83 rindas
1.5 KiB

  1. define([
  2. ], function(
  3. ) {
  4. return {
  5. type: 'follower',
  6. master: null,
  7. lifetime: -1,
  8. maxDistance: 10,
  9. fGetHighest: {
  10. inCombat: null,
  11. outOfCombat: null
  12. },
  13. bindEvents: function() {
  14. this.fGetHighest.inCombat = this.master.aggro.getHighest.bind(this.master.aggro);
  15. this.fGetHighest.outOfCombat = this.returnNoAggro.bind(this);
  16. },
  17. returnNoAggro: function() {
  18. var master = this.master;
  19. var obj = this.obj;
  20. var mob = obj.mob;
  21. mob.originX = master.x + ~~((Math.random() * 2) * 2) - 1;
  22. mob.originY = master.y + ~~((Math.random() * 2) * 2) - 1;
  23. return null;
  24. },
  25. despawn: function() {
  26. var obj = this.obj;
  27. obj.destroyed = true;
  28. this.obj.instance.syncer.queue('onGetObject', {
  29. x: obj.x,
  30. y: obj.y,
  31. components: [{
  32. type: 'attackAnimation',
  33. row: 0,
  34. col: 4
  35. }]
  36. });
  37. },
  38. update: function() {
  39. if (this.lifetime > 0) {
  40. this.lifetime--;
  41. if (this.lifetime <= 0) {
  42. this.despawn();
  43. return;
  44. }
  45. }
  46. var obj = this.obj;
  47. var master = this.master;
  48. if (master.destroyed) {
  49. this.despawn();
  50. return;
  51. }
  52. var maxDistance = this.maxDistance;
  53. var doMove = (
  54. (Math.abs(obj.x - master.x) >= maxDistance) ||
  55. (Math.abs(obj.y - master.y) >= maxDistance)
  56. );
  57. if (doMove) {
  58. if (obj.aggro.getHighest == this.fGetHighest.inCombat)
  59. obj.mob.target = obj;
  60. }
  61. obj.aggro.getHighest = doMove ? this.fGetHighest.outOfCombat : this.fGetHighest.inCombat;
  62. }
  63. };
  64. });