Advertisement
Guest User

Untitled

a guest
May 29th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. package org.rscdaemon.server.packethandler.client;
  2.  
  3. import org.rscdaemon.server.packethandler.PacketHandler;
  4. import org.rscdaemon.server.model.*;
  5. import org.rscdaemon.server.net.Packet;
  6. import org.rscdaemon.server.net.RSCPacket;
  7. import org.rscdaemon.server.event.WalkToMobEvent;
  8. import org.rscdaemon.server.event.FightEvent;
  9. import org.rscdaemon.server.event.RangeEvent;
  10. import org.rscdaemon.server.states.Action;
  11. import org.apache.mina.common.IoSession;
  12.  
  13. public class AttackHandler implements PacketHandler {
  14. /**
  15. * World instance
  16. */
  17. public static final World world = World.getWorld();
  18.  
  19. public void handlePacket(Packet p, IoSession session) throws Exception {
  20. Player player = (Player)session.getAttachment();
  21. int pID = ((RSCPacket)p).getID();
  22. if(player.isBusy()) {
  23. player.resetPath();
  24. return;
  25. }
  26. player.resetAll();
  27. Mob affectedMob = null;
  28. int serverIndex = p.readShort();
  29. if(pID == 57) {
  30. affectedMob = world.getPlayer(serverIndex);
  31. }
  32. else if(pID == 73) {
  33. affectedMob = world.getNpc(serverIndex);
  34. }
  35. if(affectedMob == null || affectedMob.equals(player)) { // This shouldn't happen
  36. player.resetPath();
  37. return;
  38. }
  39. //player.setFollowing(affectedMob);
  40. player.setStatus(Action.ATTACKING_MOB);
  41. if(player.getRangeEquip() < 0) {
  42. world.getDelayedEventHandler().add(new WalkToMobEvent(player, affectedMob, 2) {
  43. public void arrived() {
  44. owner.resetPath();
  45. if(owner.isBusy() || affectedMob.isBusy() || !owner.nextTo(affectedMob) || !owner.checkAttack(affectedMob, false) || owner.getStatus() != Action.ATTACKING_MOB) {
  46. return;
  47. }
  48. owner.resetAll();
  49. owner.setStatus(Action.FIGHTING_MOB);
  50. if(affectedMob instanceof Player) {
  51. Player affectedPlayer = (Player)affectedMob;
  52. owner.setSkulledOn(affectedPlayer);
  53. affectedPlayer.resetAll();
  54. affectedPlayer.setStatus(Action.FIGHTING_MOB);
  55. affectedPlayer.getActionSender().sendMessage("You are under attack!");
  56. }
  57. affectedMob.resetPath();
  58.  
  59. owner.setLocation(affectedMob.getLocation(), true);
  60. for(Player p : owner.getViewArea().getPlayersInView()) {
  61. p.removeWatchedPlayer(owner);
  62. }
  63.  
  64. owner.setBusy(true);
  65. owner.setSprite(9);
  66. owner.setOpponent(affectedMob);
  67. owner.setCombatTimer();
  68. affectedMob.setBusy(true);
  69. affectedMob.setSprite(8);
  70. affectedMob.setOpponent(owner);
  71. affectedMob.setCombatTimer();
  72. FightEvent fighting = new FightEvent(owner, affectedMob);
  73. fighting.setLastRun(0);
  74. world.getDelayedEventHandler().add(fighting);
  75. }
  76. });
  77. }
  78. else {
  79. world.getDelayedEventHandler().add(new WalkToMobEvent(player, affectedMob, 5) {
  80. public void arrived() {
  81. owner.resetPath();
  82. if(owner.isBusy() || !owner.checkAttack(affectedMob, true) || owner.getStatus() != Action.ATTACKING_MOB) {
  83. return;
  84. }
  85. owner.resetAll();
  86. owner.setStatus(Action.RANGING_MOB);
  87. if(affectedMob instanceof Player) {
  88. Player affectedPlayer = (Player)affectedMob;
  89. owner.setSkulledOn(affectedPlayer);
  90. affectedPlayer.resetTrade();
  91. if(affectedPlayer.getMenuHandler() != null) {
  92. affectedPlayer.resetMenuHandler();
  93. }
  94. if(affectedPlayer.accessingBank()) {
  95. affectedPlayer.resetBank();
  96. }
  97. if(affectedPlayer.accessingShop()) {
  98. affectedPlayer.resetShop();
  99. }
  100. if(affectedPlayer.getNpc() != null) {
  101. affectedPlayer.getNpc().unblock();
  102. affectedPlayer.setNpc(null);
  103. }
  104. }
  105. if(affectedMob.isPrayerActivated(13)) {
  106. owner.getActionSender().sendMessage("Your missiles are blocked");
  107. return;
  108. }
  109. owner.setRangeEvent(new RangeEvent(owner, affectedMob));
  110. }
  111. });
  112. }
  113. }
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement