Advertisement
mrextremez

attackPlayer

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