Advertisement
Guest User

Untitled

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