armark1ng

Untitled

Sep 4th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. package com.rs.game.npc.vorago;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Map;
  5.  
  6. import com.rs.game.Animation;
  7. import com.rs.game.Entity;
  8. import com.rs.game.WorldTile;
  9. import com.rs.game.npc.NPC;
  10. import com.rs.game.npc.combat.NPCCombatDefinitions;
  11. import com.rs.game.player.Player;
  12. import com.rs.game.tasks.WorldTask;
  13. import com.rs.game.tasks.WorldTasksManager;
  14. import com.rs.utils.Utils;
  15.  
  16. @SuppressWarnings("serial")
  17. public class StoneClone extends NPC {
  18.  
  19. private transient Vorago vorago;
  20. private transient Player target;
  21. private static long BAR_CYCLE;
  22. private transient Map<Integer, Long> cooldowns;
  23.  
  24. public StoneClone(int id, WorldTile tile, int mapAreaNameHash, boolean canBeAttackFromOutOfArea, Vorago vorago,
  25. Player target) {
  26. super(id, tile, mapAreaNameHash, canBeAttackFromOutOfArea);
  27. this.vorago = vorago;
  28. this.target = target;
  29. getCombat().setTarget(target);
  30. setName("Stone " + target.getDisplayName());
  31. if (id == 17158)
  32. setForceFollowClose(true);
  33. }
  34.  
  35. @Override
  36. public ArrayList<Entity> getPossibleTargets() {
  37. ArrayList<Entity> possibleTarget = new ArrayList<Entity>();
  38. if (target != null && !target.isDead())
  39. possibleTarget.add(target);
  40. return possibleTarget;
  41. }
  42.  
  43. @Override
  44. public boolean checkAgressivity() {
  45. ArrayList<Entity> possibleTarget = getPossibleTargets();
  46. if (!possibleTarget.isEmpty()) {
  47. Entity target = possibleTarget.get(Utils.random(possibleTarget.size()));
  48. setTarget(target);
  49. target.setAttackedBy(target);
  50. target.setFindTargetDelay(Utils.currentTimeMillis() + 10000);
  51. return true;
  52. }
  53. if (target == null || target.isDead())
  54. sendDeath(null);
  55. return false;
  56. }
  57.  
  58. @Override
  59. public void sendDeath(final Entity source) {
  60. final NPCCombatDefinitions defs = getCombatDefinitions();
  61. resetWalkSteps();
  62. getCombat().removeTarget();
  63. setNextAnimation(null);
  64. if (!isDead())
  65. setHitpoints(0);
  66. final int deathDelay = defs.getDeathDelay() - (getId() == 50 ? 2 : 1);
  67. StoneClone thisNPC = this;
  68. WorldTasksManager.schedule(new WorldTask() {
  69. int loop;
  70.  
  71. @Override
  72. public void run() {
  73. if (loop == 0) {
  74. setNextAnimation(new Animation(defs.getDeathEmote()));
  75. } else if (loop >= deathDelay) {
  76. if (source != null) {
  77. if (source instanceof Player)
  78. ((Player) source).getControlerManager().processNPCDeath(thisNPC);
  79. }
  80. reset();
  81. finish();
  82. stop();
  83. }
  84. loop++;
  85. }
  86. }, 0, 1);
  87. }
  88.  
  89. public Player getTarget() {
  90. return target;
  91. }
  92.  
  93. public Vorago getVorago() {
  94. return vorago;
  95. }
  96. }
Add Comment
Please, Sign In to add comment