Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.71 KB | None | 0 0
  1. package server.model.players.packets;
  2.  
  3. import server.Config;
  4. import server.Server;
  5. import server.model.players.Client;
  6. import server.model.players.PacketType;
  7.  
  8. /**
  9. * Attack Player
  10. **/
  11. public class AttackPlayer implements PacketType {
  12.  
  13. public static final int ATTACK_PLAYER = 73, MAGE_PLAYER = 249;
  14. @Override
  15. public void processPacket(Client c, int packetType, int packetSize) {
  16. c.playerIndex = 0;
  17. c.npcIndex = 0;
  18. switch(packetType) {
  19.  
  20. /**
  21. * Attack player
  22. **/
  23. case ATTACK_PLAYER:
  24. c.playerIndex = c.getInStream().readSignedWordBigEndian();
  25. if(Server.playerHandler.players[c.playerIndex] == null ){
  26. break;
  27. }
  28.  
  29. if(c.respawnTimer > 0) {
  30. break;
  31. }
  32.  
  33. if (c.autocastId > 0)
  34. c.autocasting = true;
  35.  
  36. if (!c.autocasting && c.spellId > 0) {
  37. c.spellId = 0;
  38. }
  39. c.mageFollow = false;
  40. c.spellId = 0;
  41. c.usingMagic = false;
  42. boolean usingBow = false;
  43. boolean usingOtherRangeWeapons = false;
  44. boolean usingArrows = false;
  45. boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185;
  46. for (int bowId : c.BOWS) {
  47. if(c.playerEquipment[c.playerWeapon] == bowId) {
  48. usingBow = true;
  49. for (int arrowId : c.ARROWS) {
  50. if(c.playerEquipment[c.playerArrows] == arrowId) {
  51. usingArrows = true;
  52. }
  53. }
  54. }
  55. }
  56. for (int otherRangeId : c.OTHER_RANGE_WEAPONS) {
  57. if(c.playerEquipment[c.playerWeapon] == otherRangeId) {
  58. usingOtherRangeWeapons = true;
  59. }
  60. }
  61. if(c.duelStatus == 5) {
  62. if(c.duelCount > 0) {
  63. c.sendMessage("The duel hasn't started yet!");
  64. c.playerIndex = 0;
  65. return;
  66. }
  67. if(c.duelRule[9]){
  68. boolean canUseWeapon = false;
  69. for(int funWeapon: Config.FUN_WEAPONS) {
  70. if(c.playerEquipment[c.playerWeapon] == funWeapon) {
  71. canUseWeapon = true;
  72. }
  73. }
  74. if(!canUseWeapon) {
  75. c.sendMessage("You can only use fun weapons in this duel!");
  76. return;
  77. }
  78. }
  79.  
  80. if(c.duelRule[2] && (usingBow || usingOtherRangeWeapons)) {
  81. c.sendMessage("Range has been disabled in this duel!");
  82. return;
  83. }
  84. if(c.duelRule[3] && (!usingBow && !usingOtherRangeWeapons)) {
  85. c.sendMessage("Melee has been disabled in this duel!");
  86. return;
  87. }
  88. }
  89.  
  90. if((usingBow || c.autocasting) && c.goodDistance(c.getX(), c.getY(), Server.playerHandler.players[c.playerIndex].getX(), Server.playerHandler.players[c.playerIndex].getY(), 6)) {
  91. c.usingBow = true;
  92. c.stopMovement();
  93. }
  94.  
  95. if(usingOtherRangeWeapons && c.goodDistance(c.getX(), c.getY(), Server.playerHandler.players[c.playerIndex].getX(), Server.playerHandler.players[c.playerIndex].getY(), 3)) {
  96. c.usingRangeWeapon = true;
  97. c.stopMovement();
  98. }
  99. if (!usingBow)
  100. c.usingBow = false;
  101. if (!usingOtherRangeWeapons)
  102. c.usingRangeWeapon = false;
  103.  
  104. if(!usingCross && !usingArrows && usingBow && c.playerEquipment[c.playerWeapon] < 4212 && c.playerEquipment[c.playerWeapon] > 4223) {
  105. c.sendMessage("You have run out of arrows!");
  106. return;
  107. }
  108. if(c.getCombat().correctBowAndArrows() < c.playerEquipment[c.playerArrows] && Config.CORRECT_ARROWS && usingBow && !c.getCombat().usingCrystalBow() && c.playerEquipment[c.playerWeapon] != 9185) {
  109. c.sendMessage("You can't use "+c.getItems().getItemName(c.playerEquipment[c.playerArrows]).toLowerCase()+"s with a "+c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()+".");
  110. c.stopMovement();
  111. c.getCombat().resetPlayerAttack();
  112. return;
  113. }
  114. if (c.playerEquipment[c.playerWeapon] == 9185 && !c.getCombat().properBolts()) {
  115. c.sendMessage("You must use bolts with a crossbow.");
  116. c.stopMovement();
  117. c.getCombat().resetPlayerAttack();
  118. return;
  119. }
  120. if (c.getCombat().checkReqs()) {
  121. c.followId = c.playerIndex;
  122. if (!c.usingMagic && !usingBow && !usingOtherRangeWeapons) {
  123. c.followDistance = 1;
  124. c.getPA().followPlayer();
  125. }
  126. if (c.attackTimer <= 0) {
  127. //c.sendMessage("Tried to attack...");
  128. //c.getCombat().attackPlayer(c.playerIndex);
  129. //c.attackTimer++;
  130. }
  131. }
  132. break;
  133.  
  134.  
  135. /**
  136. * Attack player with magic
  137. **/
  138. case MAGE_PLAYER:
  139. if (!c.mageAllowed) {
  140. c.mageAllowed = true;
  141. break;
  142. }
  143. //c.usingSpecial = false;
  144. //c.getItems().updateSpecialBar();
  145.  
  146. c.playerIndex = c.getInStream().readSignedWordA();
  147. int castingSpellId = c.getInStream().readSignedWordBigEndian();
  148. c.usingMagic = false;
  149. if(Server.playerHandler.players[c.playerIndex] == null ){
  150. break;
  151. }
  152.  
  153. if(c.respawnTimer > 0) {
  154. break;
  155. }
  156.  
  157. for(int i = 0; i < c.MAGIC_SPELLS.length; i++){
  158. if(castingSpellId == c.MAGIC_SPELLS[i][0]) {
  159. c.spellId = i;
  160. c.usingMagic = true;
  161. break;
  162. }
  163. }
  164.  
  165. if (c.autocasting)
  166. c.autocasting = false;
  167.  
  168. if(!c.getCombat().checkReqs()) {
  169. break;
  170. }
  171. if(c.duelStatus == 5) {
  172. if(c.duelCount > 0) {
  173. c.sendMessage("The duel hasn't started yet!");
  174. c.playerIndex = 0;
  175. return;
  176. }
  177. if(c.duelRule[4]) {
  178. c.sendMessage("Magic has been disabled in this duel!");
  179. return;
  180. }
  181. }
  182.  
  183. for(int r = 0; r < c.REDUCE_SPELLS.length; r++){ // reducing spells, confuse etc
  184. if(Server.playerHandler.players[c.playerIndex].REDUCE_SPELLS[r] == c.MAGIC_SPELLS[c.spellId][0]) {
  185. if((System.currentTimeMillis() - Server.playerHandler.players[c.playerIndex].reduceSpellDelay[r]) < Server.playerHandler.players[c.playerIndex].REDUCE_SPELL_TIME[r]) {
  186. c.sendMessage("That player is currently immune to this spell.");
  187. c.usingMagic = false;
  188. c.stopMovement();
  189. c.getCombat().resetPlayerAttack();
  190. }
  191. break;
  192. }
  193. }
  194.  
  195.  
  196. if(System.currentTimeMillis() - Server.playerHandler.players[c.playerIndex].teleBlockDelay < Server.playerHandler.players[c.playerIndex].teleBlockLength && c.MAGIC_SPELLS[c.spellId][0] == 12445) {
  197. c.sendMessage("That player is already affected by this spell.");
  198. c.usingMagic = false;
  199. c.stopMovement();
  200. c.getCombat().resetPlayerAttack();
  201. }
  202.  
  203. /*if(!c.getCombat().checkMagicReqs(c.spellId)) {
  204. c.stopMovement();
  205. c.getCombat().resetPlayerAttack();
  206. break;
  207. }*/
  208.  
  209. if(c.usingMagic) {
  210. if(c.goodDistance(c.getX(), c.getY(), Server.playerHandler.players[c.playerIndex].getX(), Server.playerHandler.players[c.playerIndex].getY(), 7)) {
  211. c.stopMovement();
  212. }
  213. if (c.getCombat().checkReqs()) {
  214. c.followId = c.playerIndex;
  215. c.mageFollow = true;
  216. if (c.attackTimer <= 0) {
  217. //c.getCombat().attackPlayer(c.playerIndex);
  218. //c.attackTimer++;
  219. }
  220. }
  221. }
  222. break;
  223.  
  224. }
  225.  
  226.  
  227. }
  228.  
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement