Guest User

Untitled

a guest
Mar 21st, 2016
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.53 KB | None | 0 0
  1. /**
  2. * Attack Players, same as npc tbh xD
  3. **/
  4.  
  5. public void attackPlayer(int i) {
  6.  
  7. if (PlayerHandler.players[i] != null) {
  8.  
  9. if (PlayerHandler.players[i].isDead) {
  10. resetPlayerAttack();
  11. return;
  12. }
  13. if (CastleWars.isInCw((Client) PlayerHandler.players[i]) && CastleWars.isInCw(c)) {
  14. if (CastleWars.getTeamNumber(c) == CastleWars.getTeamNumber((Client) Server.playerHandler.players[i])) {
  15. c.sendMessage("You cannot attack your own teammate.");
  16. return;
  17. }
  18. }
  19.  
  20.  
  21.  
  22. if(c.respawnTimer > 0 || Server.playerHandler.players[i].respawnTimer > 0) {
  23. resetPlayerAttack();
  24. return;
  25. }
  26.  
  27. if(!c.getCombat().checkReqs()) {
  28. return;
  29. }
  30.  
  31. boolean sameSpot = c.absX == PlayerHandler.players[i].getX() && c.absY == Server.playerHandler.players[i].getY();
  32. if(!c.goodDistance(PlayerHandler.players[i].getX(), Server.playerHandler.players[i].getY(), c.getX(), c.getY(), 25) && !sameSpot) {
  33. resetPlayerAttack();
  34. return;
  35. }
  36.  
  37. if(PlayerHandler.players[i].respawnTimer > 0) {
  38. PlayerHandler.players[i].playerIndex = 0;
  39. resetPlayerAttack();
  40. return;
  41. }
  42.  
  43. if (PlayerHandler.players[i].heightLevel != c.heightLevel) {
  44. resetPlayerAttack();
  45. return;
  46. }
  47.  
  48. c.followId = i;
  49. c.followId2 = 0;
  50. if(c.attackTimer <= 0) {
  51. c.usingBow = false;
  52. c.specEffect = 0;
  53. c.usingRangeWeapon = false;
  54. c.rangeItemUsed = 0;
  55. boolean usingBow = false;
  56. boolean usingArrows = false;
  57. boolean usingOtherRangeWeapons = false;
  58. boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185;
  59. c.projectileStage = 0;
  60. if (c.autocasting) {
  61. c.spellId = c.autocastId;
  62. c.usingMagic = true;
  63. }
  64. if(c.spellId > 0) {
  65. c.usingMagic = true;
  66. }
  67. if (c.absX == PlayerHandler.players[i].absX && c.absY == Server.playerHandler.players[i].absY) {
  68. if (c.freezeTimer > 0) {
  69. resetPlayerAttack();
  70. return;
  71. }
  72. c.followId = i;
  73. c.attackTimer = 0;
  74. return;
  75. }
  76.  
  77. if(!c.usingMagic) {
  78. for (int bowId : c.BOWS) {
  79. if(c.playerEquipment[c.playerWeapon] == bowId) {
  80. usingBow = true;
  81. for (int arrowId : c.ARROWS) {
  82. if(c.playerEquipment[c.playerArrows] == arrowId) {
  83. usingArrows = true;
  84. }
  85. }
  86. }
  87. }
  88.  
  89. for (int otherRangeId : c.OTHER_RANGE_WEAPONS) {
  90. if(c.playerEquipment[c.playerWeapon] == otherRangeId) {
  91. usingOtherRangeWeapons = true;
  92. }
  93. }
  94. }
  95. if (c.autocasting) {
  96. c.spellId = c.autocastId;
  97. c.usingMagic = true;
  98. }
  99. if(c.spellId > 0) {
  100. c.usingMagic = true;
  101. }
  102. c.attackTimer = getAttackDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
  103.  
  104. if(c.duelRule[9]){
  105. boolean canUseWeapon = false;
  106. for(int funWeapon: Config.FUN_WEAPONS) {
  107. if(c.playerEquipment[c.playerWeapon] == funWeapon) {
  108. canUseWeapon = true;
  109. }
  110. }
  111. if(!canUseWeapon) {
  112. c.sendMessage("You can only use fun weapons in this duel!");
  113. resetPlayerAttack();
  114. return;
  115. }
  116. }
  117. //c.sendMessage("Made it here3.");
  118. if(c.duelRule[2] && (usingBow || usingOtherRangeWeapons)) {
  119. c.sendMessage("Range has been disabled in this duel!");
  120. return;
  121. }
  122. if(c.duelRule[3] && (!usingBow && !usingOtherRangeWeapons && !c.usingMagic)) {
  123. c.sendMessage("Melee has been disabled in this duel!");
  124. return;
  125. }
  126.  
  127. if(c.duelRule[4] && c.usingMagic) {
  128. c.sendMessage("Magic has been disabled in this duel!");
  129. resetPlayerAttack();
  130. return;
  131. }
  132.  
  133. if((!c.goodDistance(c.getX(), c.getY(), PlayerHandler.players[i].getX(), PlayerHandler.players[i].getY(), 4) && (usingOtherRangeWeapons && !usingBow && !c.usingMagic))
  134. || (!c.goodDistance(c.getX(), c.getY(), PlayerHandler.players[i].getX(), PlayerHandler.players[i].getY(), 2) && (!usingOtherRangeWeapons && usingHally() && !usingBow && !c.usingMagic))
  135. || (!c.goodDistance(c.getX(), c.getY(), PlayerHandler.players[i].getX(), PlayerHandler.players[i].getY(), getRequiredDistance()) && (!usingOtherRangeWeapons && !usingHally() && !usingBow && !c.usingMagic))
  136. || (!c.goodDistance(c.getX(), c.getY(), PlayerHandler.players[i].getX(), PlayerHandler.players[i].getY(), 10) && (usingBow || c.usingMagic))) {
  137. //c.sendMessage("Setting attack timer to 1");
  138. c.attackTimer = 1;
  139. if (!usingBow && !c.usingMagic && !usingOtherRangeWeapons && c.freezeTimer > 0)
  140. resetPlayerAttack();
  141. return;
  142.  
  143. }
  144.  
  145. if(!usingCross && !usingArrows && usingBow && (c.playerEquipment[c.playerWeapon] < 4212 || c.playerEquipment[c.playerWeapon] > 4223) && !c.usingMagic) {
  146. c.sendMessage("You have run out of arrows!");
  147. c.stopMovement();
  148. resetPlayerAttack();
  149. return;
  150. }
  151. if(correctBowAndArrows() < c.playerEquipment[c.playerArrows] && Config.CORRECT_ARROWS && usingBow && !usingCrystalBow() && c.playerEquipment[c.playerWeapon] != 9185 && !c.usingMagic) {
  152. 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()+".");
  153. c.stopMovement();
  154. resetPlayerAttack();
  155. return;
  156. }
  157. if (c.playerEquipment[c.playerWeapon] == 9185 && !properBolts() && !c.usingMagic) {
  158. c.sendMessage("You must use bolts with a crossbow.");
  159. c.stopMovement();
  160. resetPlayerAttack();
  161. return;
  162. }
  163.  
  164.  
  165. if(usingBow || c.usingMagic || usingOtherRangeWeapons || usingHally()) {
  166. c.stopMovement();
  167. }
  168.  
  169. if(usingBow || c.usingMagic || usingOtherRangeWeapons || (c.goodDistance(c.getX(), c.getY(), Server.npcHandler.npcs[i].getX(), Server.npcHandler.npcs[i].getY(), 2) && usingHally())) {
  170. c.stopMovement();
  171. }
  172.  
  173. if(!checkMagicReqs(c.spellId)) {
  174. c.stopMovement();
  175. c.npcIndex = 0;
  176. return;
  177. }
  178.  
  179. if(!checkMagicReqs(c.spellId)) {
  180. c.stopMovement();
  181. resetPlayerAttack();
  182. return;
  183. }
  184.  
  185. c.faceUpdate(i+32768);
  186.  
  187. if(c.duelStatus != 5) {
  188. if(!c.attackedPlayers.contains(c.playerIndex) && !Server.playerHandler.players[c.playerIndex].attackedPlayers.contains(c.playerId)) {
  189. c.attackedPlayers.add(c.playerIndex);
  190. c.isSkulled = true;
  191. c.skullTimer = Config.SKULL_TIMER;
  192. c.headIconPk = 0;
  193. c.getPA().requestUpdates();
  194. }
  195. }
  196. c.specAccuracy = 1.0;
  197. c.specDamage = 1.0;
  198. c.delayedDamage = c.delayedDamage2 = 0;
  199. if(c.usingSpecial && !c.usingMagic) {
  200. if(c.duelRule[10] && c.duelStatus == 5) {
  201. c.sendMessage("Special attacks have been disabled during this duel!");
  202. c.usingSpecial = false;
  203. c.getItems().updateSpecialBar();
  204. resetPlayerAttack();
  205. return;
  206. }
  207. if(checkSpecAmount(c.playerEquipment[c.playerWeapon])){
  208. c.lastArrowUsed = c.playerEquipment[c.playerArrows];
  209. activateSpecial(c.playerEquipment[c.playerWeapon], i);
  210. c.followId = c.playerIndex;
  211. return;
  212. } else {
  213. c.sendMessage("You don't have the required special energy to use this attack.");
  214. c.usingSpecial = false;
  215. c.getItems().updateSpecialBar();
  216. c.playerIndex = 0;
  217. return;
  218. }
  219. }
  220.  
  221. if(!c.usingMagic) {
  222. c.startAnimation(getWepAnim(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase()));
  223. c.mageFollow = false;
  224. } else {
  225. c.startAnimation(c.MAGIC_SPELLS[c.spellId][2]);
  226. c.mageFollow = true;
  227. c.followId = c.playerIndex;
  228. }
  229. Server.playerHandler.players[i].underAttackBy = c.playerId;
  230. Server.playerHandler.players[i].logoutDelay = System.currentTimeMillis();
  231. Server.playerHandler.players[i].singleCombatDelay = System.currentTimeMillis();
  232. Server.playerHandler.players[i].killerId = c.playerId;
  233. c.lastArrowUsed = 0;
  234. c.rangeItemUsed = 0;
  235. if(!usingBow && !c.usingMagic && !usingOtherRangeWeapons) { // melee hit delay
  236. c.followId = Server.playerHandler.players[c.playerIndex].playerId;
  237. c.getPA().followPlayer();
  238. c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
  239. c.delayedDamage = Misc.random(calculateMeleeMaxHit());
  240. c.projectileStage = 0;
  241. c.oldPlayerIndex = i;
  242. }
  243.  
  244. if(usingBow && !usingOtherRangeWeapons && !c.usingMagic || usingCross) { // range hit delay
  245. if(c.playerEquipment[c.playerWeapon] >= 4212 && c.playerEquipment[c.playerWeapon] <= 4223) {
  246. c.rangeItemUsed = c.playerEquipment[c.playerWeapon];
  247. c.crystalBowArrowCount++;
  248. } else {
  249. c.rangeItemUsed = c.playerEquipment[c.playerArrows];
  250. c.getItems().deleteArrow();
  251. }
  252. if (c.fightMode == 2)
  253. c.attackTimer--;
  254. if (usingCross)
  255. c.usingBow = true;
  256. c.usingBow = true;
  257. c.followId = Server.playerHandler.players[c.playerIndex].playerId;
  258. c.getPA().followPlayer();
  259. c.lastWeaponUsed = c.playerEquipment[c.playerWeapon];
  260. c.lastArrowUsed = c.playerEquipment[c.playerArrows];
  261. c.gfx100(getRangeStartGFX());
  262. c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
  263. c.projectileStage = 1;
  264. c.oldPlayerIndex = i;
  265. fireProjectilePlayer();
  266. }
  267.  
  268. if(usingOtherRangeWeapons) { // knives, darts, etc hit delay
  269. c.rangeItemUsed = c.playerEquipment[c.playerWeapon];
  270. c.getItems().deleteEquipment();
  271. c.usingRangeWeapon = true;
  272. c.followId = Server.playerHandler.players[c.playerIndex].playerId;
  273. c.getPA().followPlayer();
  274. c.gfx100(getRangeStartGFX());
  275. if (c.fightMode == 2)
  276. c.attackTimer--;
  277. c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
  278. c.projectileStage = 1;
  279. c.oldPlayerIndex = i;
  280. fireProjectilePlayer();
  281. }
  282.  
  283. if(c.usingMagic) { // magic hit delay
  284. int pX = c.getX();
  285. int pY = c.getY();
  286. int nX = Server.playerHandler.players[i].getX();
  287. int nY = Server.playerHandler.players[i].getY();
  288. int offX = (pY - nY)* -1;
  289. int offY = (pX - nX)* -1;
  290. c.castingMagic = true;
  291. c.projectileStage = 2;
  292. if(c.MAGIC_SPELLS[c.spellId][3] > 0) {
  293. if(getStartGfxHeight() == 100) {
  294. c.gfx100(c.MAGIC_SPELLS[c.spellId][3]);
  295. } else {
  296. c.gfx0(c.MAGIC_SPELLS[c.spellId][3]);
  297. }
  298. }
  299. if(c.MAGIC_SPELLS[c.spellId][4] > 0) {
  300. c.getPA().createPlayersProjectile(pX, pY, offX, offY, 50, 78, c.MAGIC_SPELLS[c.spellId][4], getStartHeight(), getEndHeight(), -i - 1, getStartDelay());
  301. }
  302. if (c.autocastId > 0) {
  303. c.followId = c.playerIndex;
  304. c.followDistance = 5;
  305. }
  306. c.hitDelay = getHitDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
  307. c.oldPlayerIndex = i;
  308. c.oldSpellId = c.spellId;
  309. c.spellId = 0;
  310. Client o = (Client)Server.playerHandler.players[i];
  311. if(c.MAGIC_SPELLS[c.oldSpellId][0] == 12891 && o.isMoving) {
  312. //c.sendMessage("Barrage projectile..");
  313. c.getPA().createPlayersProjectile(pX, pY, offX, offY, 50, 85, 368, 25, 25, -i - 1, getStartDelay());
  314. }
  315. if(Misc.random(mageAtk()) > Misc.random(o.getCombat().mageDef())) {
  316. c.magicFailed = false;
  317. } else if(Misc.random(mageAtk()) < Misc.random(o.getCombat().mageDef())) {
  318. c.magicFailed = true;
  319. }
  320. int freezeDelay = getFreezeTime();//freeze time
  321. if(freezeDelay > 0 && Server.playerHandler.players[i].freezeTimer <= -3 && !c.magicFailed) {
  322. Server.playerHandler.players[i].freezeTimer = freezeDelay;
  323. o.resetWalkingQueue();
  324. o.sendMessage("You have been frozen.");
  325. o.frozenBy = c.playerId;
  326. }
  327. if (!c.autocasting && c.spellId <= 0)
  328. c.playerIndex = 0;
  329. }
  330.  
  331. if(usingBow && Config.CRYSTAL_BOW_DEGRADES) { // crystal bow degrading
  332. if(c.playerEquipment[c.playerWeapon] == 4212) { // new crystal bow becomes full bow on the first shot
  333. c.getItems().wearItem(4214, 1, 3);
  334. }
  335.  
  336. if(c.crystalBowArrowCount >= 250){
  337. switch(c.playerEquipment[c.playerWeapon]) {
  338.  
  339. case 4223: // 1/10 bow
  340. c.getItems().wearItem(-1, 1, 3);
  341. c.sendMessage("Your crystal bow has fully degraded.");
  342. if(!c.getItems().addItem(4207, 1)) {
  343. Server.itemHandler.createGroundItem(c, 4207, c.getX(), c.getY(), 1, c.getId());
  344. }
  345. c.crystalBowArrowCount = 0;
  346. break;
  347.  
  348. default:
  349. c.getItems().wearItem(++c.playerEquipment[c.playerWeapon], 1, 3);
  350. c.sendMessage("Your crystal bow degrades.");
  351. c.crystalBowArrowCount = 0;
  352. break;
  353. }
  354. }
  355. }
  356. }
  357. }
  358. }
Advertisement
Add Comment
Please, Sign In to add comment