Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 80.63 KB | None | 0 0
  1. package server.model.players;
  2.  
  3. import server.Config;
  4. import server.Server;
  5. import server.model.npcs.NPCHandler;
  6. import server.util.Misc;
  7. import server.world.map.*;
  8. import java.util.Properties;
  9. import server.model.players.PlayerSave;
  10. import java.io.*;
  11. import java.util.GregorianCalendar;
  12. import java.util.Calendar;
  13. import server.event.*;
  14. import server.model.minigames.CastleWars;
  15.  
  16.  
  17.  
  18. public class PlayerAssistant{
  19. private Client c;
  20. public PlayerAssistant(Client Client) {
  21. this.c = Client;
  22. }
  23. int tmpNWCX[] = new int[50];
  24. int tmpNWCY[] = new int[50];
  25. public static int[] eggs = new int[] {7928, 7929, 7930, 7931, 7932, 7933};
  26.  
  27. public int randEgg()
  28. {
  29. return eggs[(int)(Math.random()*eggs.length)];
  30. }
  31. public void getDragonClawHits(Client c, int i) {
  32. c.clawHit[0] = i+Misc.random(10)+1;
  33. c.clawHit[1] = c.clawHit[0]/2;
  34. c.clawHit[2] = c.clawHit[1]/2;
  35. c.clawHit[3] = (c.clawHit[1]-c.clawHit[2]);
  36. c.sendMessage(""+c.clawHit[0]+","+c.clawHit[1]+","+c.clawHit[2]+","+c.clawHit[3]+".");
  37. }
  38.  
  39. public void hitDragonClaws(final Client c, int damage) {
  40. if(!c.usingClaws) {
  41. return;
  42. }
  43. if(c.clawHit[0] <= 0) {
  44. getDragonClawHits(c, damage);
  45. }
  46. if(c.npcIndex > 0) {
  47. c.getCombat().applyNpcMeleeDamage(c.npcIndex, 1, c.clawHit[0]);
  48. c.getCombat().applyNpcMeleeDamage(c.npcIndex, 2, c.clawHit[1]);
  49. } else if(c.playerIndex > 0) {
  50. c.getCombat().applyPlayerMeleeDamage(c.playerIndex, 1, c.clawHit[0]);
  51. c.getCombat().applyPlayerMeleeDamage(c.playerIndex, 2, c.clawHit[1]);
  52. }
  53. CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
  54. @Override
  55. public void execute(CycleEventContainer container) {
  56. if(c.npcIndex > 0) {
  57. c.getCombat().applyNpcMeleeDamage(c.npcIndex, 1, c.clawHit[2]);
  58. c.getCombat().applyNpcMeleeDamage(c.npcIndex, 2, c.clawHit[3]);
  59. } else if(c.playerIndex > 0) {
  60. c.getCombat().applyPlayerMeleeDamage(c.playerIndex, 1, c.clawHit[2]);
  61. c.getCombat().applyPlayerMeleeDamage(c.playerIndex, 2, c.clawHit[3]);
  62. }
  63. resetDragonHits(c);
  64. container.stop();
  65. }
  66. @Override
  67. public void stop() {
  68.  
  69. }
  70. }, 1);
  71. }
  72.  
  73. public void resetDragonHits(Client c) {
  74. for(int i = 0; i < 4; i++) {
  75. c.clawHit[i] = -1;
  76. }
  77. c.usingClaws = false;
  78. }
  79. public boolean isEgg(int i)
  80. {
  81. for (int e : eggs)
  82. if (i == e)
  83. return true;
  84. return false;
  85. }
  86. public void fmwalkto(int i, int j)
  87. {
  88. c.newWalkCmdSteps = 0;
  89. if(++c.newWalkCmdSteps > 50)
  90. c.newWalkCmdSteps = 0;
  91. int k = c.absX + i;
  92. k -= c.mapRegionX * 8;
  93. c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = tmpNWCX[0] = tmpNWCY[0] = 0;
  94. int l = c.absY + j;
  95. l -= c.mapRegionY * 8;
  96. //c.isRunning2 = false;
  97. //c.isRunning = false;
  98. c.getNewWalkCmdX()[0] += k;
  99. c.getNewWalkCmdY()[0] += l;
  100. c.poimiY = l;
  101. c.poimiX = k;
  102. }
  103. public boolean isDupeLogged(String user)
  104. {
  105.  
  106. String filePath = "./Data/DupeLogs/list.txt";
  107. String filePath2 = "./Data/DupeLogs/iplist.txt";
  108. BufferedReader in = null;
  109. boolean found = false;
  110. try
  111. {
  112. in = new BufferedReader(new FileReader(filePath));
  113. String s = "";
  114. while ((s = in.readLine())!=null)
  115. {
  116. if (user.equalsIgnoreCase(s))
  117. found = true;
  118. }
  119. in.close();
  120. Client c2 = null;
  121. for (int j = 0; j < Server.playerHandler.players.length; j++) {
  122. if (Server.playerHandler.players[j] != null && Server.playerHandler.players[j].playerName.equalsIgnoreCase(user)) {
  123. c2 = (Client)Server.playerHandler.players[j];
  124. }
  125. }
  126. if (c2 == null)
  127. return false;
  128. in = new BufferedReader(new FileReader(filePath2));
  129. s = "";
  130. while ((s = in.readLine())!=null)
  131. {
  132. if (c2.connectedFrom.equalsIgnoreCase(s))
  133. found = true;
  134. }
  135. in.close();
  136. }
  137. catch (Exception e)
  138. {
  139. }
  140. finally
  141. {
  142. if (in != null)
  143. {
  144. try
  145. {
  146. in.close();
  147. }
  148. catch (IOException ioe2)
  149. {
  150. }
  151. }
  152. }
  153. return found;
  154.  
  155. }
  156. public void addDuper(String user)
  157. {
  158. String filePath = "./Data/DupeLogs/list.txt";
  159. BufferedWriter bw = null;
  160. try
  161. {
  162. bw = new BufferedWriter(new FileWriter(filePath, true));
  163. bw.write(user);
  164. bw.newLine();
  165. bw.flush();
  166. bw.close();
  167. }
  168. catch (Exception e)
  169. {
  170. e.printStackTrace();
  171. }
  172. finally
  173. {
  174. if (bw != null)
  175. {
  176. try
  177. {
  178. bw.close();
  179. }
  180. catch (IOException ioe2)
  181. {
  182. }
  183. }
  184. }
  185. }
  186. public void addDuperIP(String user)
  187. {
  188. String filePath = "./Data/DupeLogs/iplist.txt";
  189. BufferedWriter bw = null;
  190. try
  191. {
  192. bw = new BufferedWriter(new FileWriter(filePath, true));
  193. bw.write(user);
  194. bw.newLine();
  195. bw.flush();
  196. bw.close();
  197. }
  198. catch (Exception e)
  199. {
  200. e.printStackTrace();
  201. }
  202. finally
  203. {
  204. if (bw != null)
  205. {
  206. try
  207. {
  208. bw.close();
  209. }
  210. catch (IOException ioe2)
  211. {
  212. }
  213. }
  214. }
  215. }
  216. public void dupePacketLog(String user, String s)
  217. {
  218. String filePath = "./Data/DupeLogs/"+user+".txt";
  219. BufferedWriter bw = null;
  220. try
  221. {
  222. bw = new BufferedWriter(new FileWriter(filePath, true));
  223. bw.write("[" + c.date + "]" + "-" + "[" + c.currentTime + " " + checkTimeOfDay() + "]: "
  224. + "["+user+"]: "+s);
  225. bw.newLine();
  226. bw.flush();
  227. bw.close();
  228. }
  229. catch (Exception e)
  230. {
  231. e.printStackTrace();
  232. }
  233. finally
  234. {
  235. if (bw != null)
  236. {
  237. try
  238. {
  239. bw.close();
  240. }
  241. catch (IOException ioe2)
  242. {
  243. }
  244. }
  245. }
  246.  
  247. }
  248. public void writeCommandLog(String command)
  249. {
  250. checkDateAndTime();
  251. String filePath = "./Data/Commands2.txt";
  252. BufferedWriter bw = null;
  253.  
  254. try
  255. {
  256. bw = new BufferedWriter(new FileWriter(filePath, true));
  257. bw.write("[" + c.date + "]" + "-" + "[" + c.currentTime + " " + checkTimeOfDay() + "]: "
  258. + "[" + c.playerName + "]: " + "[" + c.connectedFrom + "] "
  259. + "::" + command);
  260. bw.newLine();
  261. bw.flush();
  262. }
  263. catch (IOException ioe)
  264. {
  265. ioe.printStackTrace();
  266. }
  267. finally
  268. {
  269. if (bw != null)
  270. {
  271. try
  272. {
  273. bw.close();
  274. }
  275. catch (IOException ioe2)
  276. {
  277. }
  278. }
  279. }
  280. }
  281. public String checkTimeOfDay()
  282. {
  283. Calendar cal = new GregorianCalendar();
  284. int TIME_OF_DAY = cal.get(Calendar.AM_PM);
  285. if (TIME_OF_DAY > 0)
  286. return "PM";
  287. else
  288. return "AM";
  289. }
  290.  
  291. public void checkDateAndTime()
  292. {
  293. Calendar cal = new GregorianCalendar();
  294.  
  295. int YEAR = cal.get(Calendar.YEAR);
  296. int MONTH = cal.get(Calendar.MONTH) + 1;
  297. int DAY = cal.get(Calendar.DAY_OF_MONTH);
  298. int HOUR = cal.get(Calendar.HOUR_OF_DAY);
  299. int MIN = cal.get(Calendar.MINUTE);
  300. int SECOND = cal.get(Calendar.SECOND);
  301.  
  302. String day = "";
  303. String month = "";
  304. String hour = "";
  305. String minute = "";
  306. String second = "";
  307.  
  308. if (DAY < 10)
  309. day = "0" + DAY;
  310. else
  311. day = "" + DAY;
  312. if (MONTH < 10)
  313. month = "0" + MONTH;
  314. else
  315. month = "" + MONTH;
  316. if (HOUR < 10)
  317. hour = "0" + HOUR;
  318. else
  319. hour = "" + HOUR;
  320. if (MIN < 10)
  321. minute = "0" + MIN;
  322. else
  323. minute = "" + MIN;
  324. if (SECOND < 10)
  325. second = "0" + SECOND;
  326. else
  327. second = "" + SECOND;
  328.  
  329. c.date = day + "/" + month + "/" + YEAR;
  330. c.currentTime = hour + ":" + minute + ":" + second;
  331. }
  332. Properties p = new Properties();
  333.  
  334. public void loadAnnouncements()
  335. {
  336. try
  337. {
  338. loadIni();
  339.  
  340. if (p.getProperty("announcement1").length() > 0) {
  341. c.sendMessage(p.getProperty("announcement1"));
  342. }
  343. if (p.getProperty("announcement2").length() > 0) {
  344. c.sendMessage(p.getProperty("announcement2"));
  345. }
  346. if (p.getProperty("announcement3").length() > 0) {
  347. c.sendMessage(p.getProperty("announcement3"));
  348. }
  349. }
  350. catch (Exception e)
  351. {
  352. }
  353. }
  354.  
  355. private void loadIni()
  356. {
  357. try
  358. {
  359. p.load(new FileInputStream("./Announcements.ini"));
  360. }
  361. catch (Exception e)
  362. {
  363. }
  364. }
  365.  
  366. public int CraftInt, Dcolor, FletchInt;
  367.  
  368. /**
  369. * MulitCombat icon
  370. * @param i1 0 = off 1 = on
  371. */
  372. public void multiWay(int i1) {
  373. //synchronized(c) {
  374. c.outStream.createFrame(61);
  375. c.outStream.writeByte(i1);
  376. c.updateRequired = true;
  377. c.setAppearanceUpdateRequired(true);
  378. //}
  379. }
  380.  
  381. public void clearClanChat() {
  382. c.clanId = -1;
  383. c.getPA().sendFrame126("Talking in: ", 18139);
  384. c.getPA().sendFrame126("Owner: ", 18140);
  385. for (int j = 18144; j < 18244; j++)
  386. c.getPA().sendFrame126("", j);
  387. }
  388.  
  389. public void resetAutocast() {
  390. c.autocastId = 0;
  391. c.autocasting = false;
  392. c.getPA().sendFrame36(108, 0);
  393. }
  394.  
  395. public void sendFrame126(String s, int id) {
  396. // synchronized(c) {
  397. if(c.getOutStream() != null) {
  398. c.getOutStream().createFrameVarSizeWord(126);
  399. c.getOutStream().writeString(s);
  400. c.getOutStream().writeWordA(id);
  401. c.getOutStream().endFrameVarSizeWord();
  402. c.flushOutStream();
  403. }
  404. //}
  405. }
  406.  
  407.  
  408. public void sendLink(String s) {
  409. //synchronized(c) {
  410. if(c.getOutStream() != null) {
  411. c.getOutStream().createFrameVarSizeWord(187);
  412. c.getOutStream().writeString(s);
  413. }
  414. //}
  415. }
  416.  
  417. public void setSkillLevel(int skillNum, int currentLevel, int XP) {
  418. //synchronized(c) {
  419. if(c.getOutStream() != null) {
  420. c.getOutStream().createFrame(134);
  421. c.getOutStream().writeByte(skillNum);
  422. c.getOutStream().writeDWord_v1(XP);
  423. c.getOutStream().writeByte(currentLevel);
  424. c.flushOutStream();
  425. }
  426. //}
  427. }
  428.  
  429. public void sendFrame106(int sideIcon) {
  430. //synchronized(c) {
  431. if(c.getOutStream() != null) {
  432. c.getOutStream().createFrame(106);
  433. c.getOutStream().writeByteC(sideIcon);
  434. c.flushOutStream();
  435. requestUpdates();
  436. }
  437. //}
  438. }
  439.  
  440. public void sendFrame107() {
  441. //synchronized(c) {
  442. if(c.getOutStream() != null) {
  443. c.getOutStream().createFrame(107);
  444. c.flushOutStream();
  445. }
  446. //}
  447. }
  448. public void sendFrame36(int id, int state) {
  449. //synchronized(c) {
  450. if(c.getOutStream() != null) {
  451. c.getOutStream().createFrame(36);
  452. c.getOutStream().writeWordBigEndian(id);
  453. c.getOutStream().writeByte(state);
  454. c.flushOutStream();
  455. }
  456. //}
  457. }
  458.  
  459. public void sendFrame185(int Frame) {
  460. //synchronized(c) {
  461. if(c.getOutStream() != null) {
  462. c.getOutStream().createFrame(185);
  463. c.getOutStream().writeWordBigEndianA(Frame);
  464. c.flushOutStream();
  465.  
  466. }
  467. //}
  468. }
  469.  
  470. public void showInterface(int interfaceid) {
  471. //synchronized(c) {
  472. if(c.getOutStream() != null) {
  473. c.getOutStream().createFrame(97);
  474. c.getOutStream().writeWord(interfaceid);
  475. c.flushOutStream();
  476. }
  477. //}
  478. }
  479.  
  480. public void sendFrame248(int MainFrame, int SubFrame) {
  481. //synchronized(c) {
  482. if(c.getOutStream() != null) {
  483. c.getOutStream().createFrame(248);
  484. c.getOutStream().writeWordA(MainFrame);
  485. c.getOutStream().writeWord(SubFrame);
  486. c.flushOutStream();
  487. }
  488. //}
  489. }
  490.  
  491. public void sendFrame246(int MainFrame, int SubFrame, int SubFrame2) {
  492. //synchronized(c) {
  493. if(c.getOutStream() != null) {
  494. c.getOutStream().createFrame(246);
  495. c.getOutStream().writeWordBigEndian(MainFrame);
  496. c.getOutStream().writeWord(SubFrame);
  497. c.getOutStream().writeWord(SubFrame2);
  498. c.flushOutStream();
  499. }
  500. //}
  501. }
  502.  
  503. public void sendFrame171(int MainFrame, int SubFrame) {
  504. //synchronized(c) {
  505. if(c.getOutStream() != null) {
  506. c.getOutStream().createFrame(171);
  507. c.getOutStream().writeByte(MainFrame);
  508. c.getOutStream().writeWord(SubFrame);
  509. c.flushOutStream();
  510. }
  511. //}
  512. }
  513.  
  514. public void sendFrame200(int MainFrame, int SubFrame) {
  515. //synchronized(c) {
  516. if(c.getOutStream() != null) {
  517. c.getOutStream().createFrame(200);
  518. c.getOutStream().writeWord(MainFrame);
  519. c.getOutStream().writeWord(SubFrame);
  520. c.flushOutStream();
  521. }
  522. //}
  523. }
  524.  
  525. public void sendFrame70(int i, int o, int id) {
  526. //synchronized(c) {
  527. if(c.getOutStream() != null) {
  528. c.getOutStream().createFrame(70);
  529. c.getOutStream().writeWord(i);
  530. c.getOutStream().writeWordBigEndian(o);
  531. c.getOutStream().writeWordBigEndian(id);
  532. c.flushOutStream();
  533. }
  534. //}
  535. }
  536.  
  537. public void sendFrame75(int MainFrame, int SubFrame) {
  538. //synchronized(c) {
  539. if(c.getOutStream() != null) {
  540. c.getOutStream().createFrame(75);
  541. c.getOutStream().writeWordBigEndianA(MainFrame);
  542. c.getOutStream().writeWordBigEndianA(SubFrame);
  543. c.flushOutStream();
  544. }
  545. //}
  546. }
  547.  
  548. public void sendFrame164(int Frame) {
  549. //synchronized(c) {
  550. if(c.getOutStream() != null) {
  551. c.getOutStream().createFrame(164);
  552. c.getOutStream().writeWordBigEndian_dup(Frame);
  553. c.flushOutStream();
  554. }
  555. //}
  556. }
  557.  
  558. public void setPrivateMessaging(int i) { // friends and ignore list status
  559. //synchronized(c) {
  560. if(c.getOutStream() != null) {
  561. c.getOutStream().createFrame(221);
  562. c.getOutStream().writeByte(i);
  563. c.flushOutStream();
  564. }
  565. //}
  566. }
  567.  
  568. public void setChatOptions(int publicChat, int privateChat, int tradeBlock) {
  569. //synchronized(c) {
  570. if(c.getOutStream() != null) {
  571. c.getOutStream().createFrame(206);
  572. c.getOutStream().writeByte(publicChat);
  573. c.getOutStream().writeByte(privateChat);
  574. c.getOutStream().writeByte(tradeBlock);
  575. c.flushOutStream();
  576. }
  577. //}
  578. }
  579.  
  580. public void sendFrame87(int id, int state) {
  581. //synchronized(c) {
  582. if(c.getOutStream() != null) {
  583. c.getOutStream().createFrame(87);
  584. c.getOutStream().writeWordBigEndian_dup(id);
  585. c.getOutStream().writeDWord_v1(state);
  586. c.flushOutStream();
  587. }
  588. //}
  589. }
  590.  
  591. public void sendPM(long name, int rights, byte[] chatmessage, int messagesize) {
  592. //synchronized(c) {
  593. if(c.getOutStream() != null) {
  594. c.getOutStream().createFrameVarSize(196);
  595. c.getOutStream().writeQWord(name);
  596. c.getOutStream().writeDWord(c.lastChatId++);
  597. c.getOutStream().writeByte(rights);
  598. c.getOutStream().writeBytes(chatmessage, messagesize, 0);
  599. c.getOutStream().endFrameVarSize();
  600. c.flushOutStream();
  601. String chatmessagegot = Misc.textUnpack(chatmessage, messagesize);
  602. String target = Misc.longToPlayerName(name);
  603. }
  604. //}
  605. }
  606.  
  607. public void createPlayerHints(int type, int id) {
  608. //synchronized(c) {
  609. if(c.getOutStream() != null) {
  610. c.getOutStream().createFrame(254);
  611. c.getOutStream().writeByte(type);
  612. c.getOutStream().writeWord(id);
  613. c.getOutStream().write3Byte(0);
  614. c.flushOutStream();
  615. }
  616. // }
  617. }
  618.  
  619. public void createObjectHints(int x, int y, int height, int pos) {
  620. //synchronized(c) {
  621. if(c.getOutStream() != null) {
  622. c.getOutStream().createFrame(254);
  623. c.getOutStream().writeByte(pos);
  624. c.getOutStream().writeWord(x);
  625. c.getOutStream().writeWord(y);
  626. c.getOutStream().writeByte(height);
  627. c.flushOutStream();
  628. }
  629. //}
  630. }
  631.  
  632. public void loadPM(long playerName, int world) {
  633. //synchronized(c) {
  634. if(c.getOutStream() != null) {
  635. if(world != 0) {
  636. world += 9;
  637. } else if(!Config.WORLD_LIST_FIX) {
  638. world += 1;
  639. }
  640. c.getOutStream().createFrame(50);
  641. c.getOutStream().writeQWord(playerName);
  642. c.getOutStream().writeByte(world);
  643. c.flushOutStream();
  644. }
  645. //}
  646. }
  647.  
  648. public void removeAllWindows() {
  649. //synchronized(c) {
  650. if(c.getOutStream() != null) {
  651. c.getPA().resetVariables();
  652. c.getOutStream().createFrame(219);
  653. c.flushOutStream();
  654. }
  655. //}
  656. }
  657.  
  658. public void closeAllWindows() {
  659. //synchronized(c) {
  660. if(c.getOutStream() != null) {
  661. c.getOutStream().createFrame(219);
  662. c.flushOutStream();
  663. c.isBanking = false;
  664. }
  665. //}
  666. }
  667.  
  668. public void sendFrame34(int id, int slot, int column, int amount) {
  669. //synchronized(c) {
  670. if(c.getOutStream() != null) {
  671. c.outStream.createFrameVarSizeWord(34); // init item to smith screen
  672. c.outStream.writeWord(column); // Column Across Smith Screen
  673. c.outStream.writeByte(4); // Total Rows?
  674. c.outStream.writeDWord(slot); // Row Down The Smith Screen
  675. c.outStream.writeWord(id+1); // item
  676. c.outStream.writeByte(amount); // how many there are?
  677. c.outStream.endFrameVarSizeWord();
  678. }
  679. //}
  680. }
  681.  
  682. public void walkableInterface(int id) {
  683. //synchronized(c) {
  684. if(c.getOutStream() != null) {
  685. c.getOutStream().createFrame(208);
  686. c.getOutStream().writeWordBigEndian_dup(id);
  687. c.flushOutStream();
  688. }
  689. //}
  690. }
  691.  
  692. public int mapStatus = 0;
  693. public void sendFrame99(int state) { // used for disabling map
  694. //synchronized(c) {
  695. if(c.getOutStream() != null) {
  696. if(mapStatus != state) {
  697. mapStatus = state;
  698. c.getOutStream().createFrame(99);
  699. c.getOutStream().writeByte(state);
  700. c.flushOutStream();
  701. }
  702. }
  703. //}
  704. }
  705.  
  706. public void sendCrashFrame() { // used for crashing cheat clients
  707. //synchronized(c) {
  708. if(c.getOutStream() != null) {
  709. c.getOutStream().createFrame(123);
  710. c.flushOutStream();
  711. }
  712. //}
  713. }
  714.  
  715. /**
  716. * Reseting animations for everyone
  717. **/
  718.  
  719. public void frame1() {
  720. //synchronized(c) {
  721. for(int i = 0; i < Config.MAX_PLAYERS; i++) {
  722. if(Server.playerHandler.players[i] != null) {
  723. Client person = (Client)Server.playerHandler.players[i];
  724. if(person != null) {
  725. if(person.getOutStream() != null && !person.disconnected) {
  726. if(c.distanceToPoint(person.getX(), person.getY()) <= 25){
  727. person.getOutStream().createFrame(1);
  728. person.flushOutStream();
  729. person.getPA().requestUpdates();
  730. }
  731. }
  732. }
  733. }
  734. }
  735. //}
  736. }
  737.  
  738. /**
  739. * Creating projectile
  740. **/
  741. public void createProjectile(int x, int y, int offX, int offY, int angle, int speed, int gfxMoving, int startHeight, int endHeight, int lockon, int time) {
  742. //synchronized(c) {
  743. if(c.getOutStream() != null) {
  744. c.getOutStream().createFrame(85);
  745. c.getOutStream().writeByteC((y - (c.getMapRegionY() * 8)) - 2);
  746. c.getOutStream().writeByteC((x - (c.getMapRegionX() * 8)) - 3);
  747. c.getOutStream().createFrame(117);
  748. c.getOutStream().writeByte(angle);
  749. c.getOutStream().writeByte(offY);
  750. c.getOutStream().writeByte(offX);
  751. c.getOutStream().writeWord(lockon);
  752. c.getOutStream().writeWord(gfxMoving);
  753. c.getOutStream().writeByte(startHeight);
  754. c.getOutStream().writeByte(endHeight);
  755. c.getOutStream().writeWord(time);
  756. c.getOutStream().writeWord(speed);
  757. c.getOutStream().writeByte(16);
  758. c.getOutStream().writeByte(64);
  759. c.flushOutStream();
  760. }
  761. //}
  762. }
  763.  
  764. public void createProjectile2(int x, int y, int offX, int offY, int angle, int speed, int gfxMoving, int startHeight, int endHeight, int lockon, int time, int slope) {
  765. //synchronized(c) {
  766. if(c.getOutStream() != null) {
  767. c.getOutStream().createFrame(85);
  768. c.getOutStream().writeByteC((y - (c.getMapRegionY() * 8)) - 2);
  769. c.getOutStream().writeByteC((x - (c.getMapRegionX() * 8)) - 3);
  770. c.getOutStream().createFrame(117);
  771. c.getOutStream().writeByte(angle);
  772. c.getOutStream().writeByte(offY);
  773. c.getOutStream().writeByte(offX);
  774. c.getOutStream().writeWord(lockon);
  775. c.getOutStream().writeWord(gfxMoving);
  776. c.getOutStream().writeByte(startHeight);
  777. c.getOutStream().writeByte(endHeight);
  778. c.getOutStream().writeWord(time);
  779. c.getOutStream().writeWord(speed);
  780. c.getOutStream().writeByte(slope);
  781. c.getOutStream().writeByte(64);
  782. c.flushOutStream();
  783. }
  784. //}
  785. }
  786.  
  787. // projectiles for everyone within 25 squares
  788. public void createPlayersProjectile(int x, int y, int offX, int offY, int angle, int speed, int gfxMoving, int startHeight, int endHeight, int lockon, int time) {
  789. //synchronized(c) {
  790. for(int i = 0; i < Config.MAX_PLAYERS; i++) {
  791. Player p = Server.playerHandler.players[i];
  792. if(p != null) {
  793. Client person = (Client)p;
  794. if(person != null) {
  795. if(person.getOutStream() != null) {
  796. if(person.distanceToPoint(x, y) <= 25){
  797. if (p.heightLevel == c.heightLevel)
  798. person.getPA().createProjectile(x, y, offX, offY, angle, speed, gfxMoving, startHeight, endHeight, lockon, time);
  799. }
  800. }
  801. }
  802. }
  803. }
  804. //}
  805. }
  806.  
  807. public void createPlayersProjectile2(int x, int y, int offX, int offY, int angle, int speed, int gfxMoving, int startHeight, int endHeight, int lockon, int time, int slope) {
  808. //synchronized(c) {
  809. for(int i = 0; i < Config.MAX_PLAYERS; i++) {
  810. Player p = Server.playerHandler.players[i];
  811. if(p != null) {
  812. Client person = (Client)p;
  813. if(person != null) {
  814. if(person.getOutStream() != null) {
  815. if(person.distanceToPoint(x, y) <= 25){
  816. person.getPA().createProjectile2(x, y, offX, offY, angle, speed, gfxMoving, startHeight, endHeight, lockon, time, slope);
  817. }
  818. }
  819. }
  820. }
  821. }
  822. //}
  823. }
  824.  
  825.  
  826. /**
  827. ** GFX
  828. **/
  829. public void stillGfx(int id, int x, int y, int height, int time) {
  830. //synchronized(c) {
  831. if(c.getOutStream() != null) {
  832. c.getOutStream().createFrame(85);
  833. c.getOutStream().writeByteC(y - (c.getMapRegionY() * 8));
  834. c.getOutStream().writeByteC(x - (c.getMapRegionX() * 8));
  835. c.getOutStream().createFrame(4);
  836. c.getOutStream().writeByte(0);
  837. c.getOutStream().writeWord(id);
  838. c.getOutStream().writeByte(height);
  839. c.getOutStream().writeWord(time);
  840. c.flushOutStream();
  841. }
  842. //}
  843. }
  844.  
  845. //creates gfx for everyone
  846. public void createPlayersStillGfx(int id, int x, int y, int height, int time) {
  847. //synchronized(c) {
  848. for(int i = 0; i < Config.MAX_PLAYERS; i++) {
  849. Player p = Server.playerHandler.players[i];
  850. if(p != null) {
  851. Client person = (Client)p;
  852. if(person != null) {
  853. if(person.getOutStream() != null) {
  854. if(person.distanceToPoint(x, y) <= 25){
  855. person.getPA().stillGfx(id, x, y, height, time);
  856. }
  857. }
  858. }
  859. }
  860. // }
  861. }
  862. }
  863.  
  864. /**
  865. * Objects, add and remove
  866. **/
  867. public void object(int objectId, int objectX, int objectY, int face, int objectType) {
  868. //synchronized(c) {
  869. if(c.getOutStream() != null) {
  870. c.getOutStream().createFrame(85);
  871. c.getOutStream().writeByteC(objectY - (c.getMapRegionY() * 8));
  872. c.getOutStream().writeByteC(objectX - (c.getMapRegionX() * 8));
  873. c.getOutStream().createFrame(101);
  874. c.getOutStream().writeByteC((objectType<<2) + (face&3));
  875. c.getOutStream().writeByte(0);
  876.  
  877. if (objectId != -1) { // removing
  878. c.getOutStream().createFrame(151);
  879. c.getOutStream().writeByteS(0);
  880. c.getOutStream().writeWordBigEndian(objectId);
  881. c.getOutStream().writeByteS((objectType<<2) + (face&3));
  882. }
  883. c.flushOutStream();
  884. }
  885. //}
  886. }
  887.  
  888. public void checkObjectSpawn(int objectId, int objectX, int objectY, int face, int objectType) {
  889. if (c.distanceToPoint(objectX, objectY) > 60)
  890. return;
  891. //synchronized(c) {
  892. if(c.getOutStream() != null) {
  893. c.getOutStream().createFrame(85);
  894. c.getOutStream().writeByteC(objectY - (c.getMapRegionY() * 8));
  895. c.getOutStream().writeByteC(objectX - (c.getMapRegionX() * 8));
  896. c.getOutStream().createFrame(101);
  897. c.getOutStream().writeByteC((objectType<<2) + (face&3));
  898. c.getOutStream().writeByte(0);
  899.  
  900. if (objectId != -1) { // removing
  901. c.getOutStream().createFrame(151);
  902. c.getOutStream().writeByteS(0);
  903. c.getOutStream().writeWordBigEndian(objectId);
  904. c.getOutStream().writeByteS((objectType<<2) + (face&3));
  905. }
  906. c.flushOutStream();
  907. }
  908. //}
  909. }
  910.  
  911.  
  912. /**
  913. * Show option, attack, trade, follow etc
  914. **/
  915. public String optionType = "null";
  916. public void showOption(int i, int l, String s, int a) {
  917. //synchronized(c) {
  918. if(c.getOutStream() != null) {
  919. if(!optionType.equalsIgnoreCase(s)) {
  920. optionType = s;
  921. c.getOutStream().createFrameVarSize(104);
  922. c.getOutStream().writeByteC(i);
  923. c.getOutStream().writeByteA(l);
  924. c.getOutStream().writeString(s);
  925. c.getOutStream().endFrameVarSize();
  926. c.flushOutStream();
  927. }
  928. }
  929. //}
  930. }
  931.  
  932. /**
  933. * Open bank
  934. **/
  935. public void openUpBank(){
  936. //synchronized(c) {
  937. if(c.inWild() && !c.safeZone())
  938. {
  939. c.sendMessage("You can't bank in the wilderness!");
  940. return;
  941. }
  942. if(c.getOutStream() != null) {
  943. c.isBanking = true;
  944. c.getItems().resetItems(5064);
  945. c.getItems().rearrangeBank();
  946. c.getItems().resetBank();
  947. c.getItems().resetTempItems();
  948. c.getOutStream().createFrame(248);
  949. c.getOutStream().writeWordA(5292);
  950. c.getOutStream().writeWord(5063);
  951. c.flushOutStream();
  952. }
  953. //}
  954. }
  955.  
  956. /**
  957. * Private Messaging
  958. **/
  959. public void logIntoPM() {
  960. setPrivateMessaging(2);
  961. for(int i1 = 0; i1 < Config.MAX_PLAYERS; i1++) {
  962. Player p = Server.playerHandler.players[i1];
  963. if(p != null && p.isActive) {
  964. Client o = (Client)p;
  965. if(o != null) {
  966. o.getPA().updatePM(c.playerId, 1);
  967. }
  968. }
  969. }
  970. boolean pmLoaded = false;
  971.  
  972. for(int i = 0; i < c.friends.length; i++) {
  973. if(c.friends[i] != 0) {
  974. for(int i2 = 1; i2 < Config.MAX_PLAYERS; i2++) {
  975. Player p = Server.playerHandler.players[i2];
  976. if (p != null && p.isActive && Misc.playerNameToInt64(p.playerName) == c.friends[i]) {
  977. Client o = (Client)p;
  978. if(o != null) {
  979. if (c.playerRights >= 2 || p.privateChat == 0 || (p.privateChat == 1 && o.getPA().isInPM(Misc.playerNameToInt64(c.playerName)))) {
  980. loadPM(c.friends[i], 1);
  981. pmLoaded = true;
  982. }
  983. break;
  984. }
  985. }
  986. }
  987. if(!pmLoaded) {
  988. loadPM(c.friends[i], 0);
  989. }
  990. pmLoaded = false;
  991. }
  992. for(int i1 = 1; i1 < Config.MAX_PLAYERS; i1++) {
  993. Player p = Server.playerHandler.players[i1];
  994. if(p != null && p.isActive) {
  995. Client o = (Client)p;
  996. if(o != null) {
  997. o.getPA().updatePM(c.playerId, 1);
  998. }
  999. }
  1000. }
  1001. }
  1002. }
  1003.  
  1004.  
  1005. public void updatePM(int pID, int world) { // used for private chat updates
  1006. Player p = Server.playerHandler.players[pID];
  1007. if(p == null || p.playerName == null || p.playerName.equals("null")){
  1008. return;
  1009. }
  1010. Client o = (Client)p;
  1011. if(o == null) {
  1012. return;
  1013. }
  1014. long l = Misc.playerNameToInt64(Server.playerHandler.players[pID].playerName);
  1015.  
  1016. if (p.privateChat == 0) {
  1017. for (int i = 0; i < c.friends.length; i++) {
  1018. if (c.friends[i] != 0) {
  1019. if (l == c.friends[i]) {
  1020. loadPM(l, world);
  1021. return;
  1022. }
  1023. }
  1024. }
  1025. } else if (p.privateChat == 1) {
  1026. for (int i = 0; i < c.friends.length; i++) {
  1027. if (c.friends[i] != 0) {
  1028. if (l == c.friends[i]) {
  1029. if (o.getPA().isInPM(Misc.playerNameToInt64(c.playerName))) {
  1030. loadPM(l, world);
  1031. return;
  1032. } else {
  1033. loadPM(l, 0);
  1034. return;
  1035. }
  1036. }
  1037. }
  1038. }
  1039. } else if (p.privateChat == 2) {
  1040. for (int i = 0; i < c.friends.length; i++) {
  1041. if (c.friends[i] != 0) {
  1042. if (l == c.friends[i] && c.playerRights < 2) {
  1043. loadPM(l, 0);
  1044. return;
  1045. }
  1046. }
  1047. }
  1048. }
  1049. }
  1050.  
  1051. public boolean isInPM(long l) {
  1052. for (int i = 0; i < c.friends.length; i++) {
  1053. if (c.friends[i] != 0) {
  1054. if (l == c.friends[i]) {
  1055. return true;
  1056. }
  1057. }
  1058. }
  1059. return false;
  1060. }
  1061.  
  1062.  
  1063. /**
  1064. * Drink AntiPosion Potions
  1065. * @param itemId The itemId
  1066. * @param itemSlot The itemSlot
  1067. * @param newItemId The new item After Drinking
  1068. * @param healType The type of poison it heals
  1069. */
  1070. public void potionPoisonHeal(int itemId, int itemSlot, int newItemId, int healType) {
  1071. c.attackTimer = c.getCombat().getAttackDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
  1072. if(c.duelRule[5]) {
  1073. c.sendMessage("Potions has been disabled in this duel!");
  1074. return;
  1075. }
  1076. if(!c.isDead && System.currentTimeMillis() - c.foodDelay > 2000) {
  1077. if(c.getItems().playerHasItem(itemId, 1, itemSlot)) {
  1078. c.sendMessage("You drink the "+c.getItems().getItemName(itemId).toLowerCase()+".");
  1079. c.foodDelay = System.currentTimeMillis();
  1080. // Actions
  1081. if(healType == 1) {
  1082. //Cures The Poison
  1083. } else if(healType == 2) {
  1084. //Cures The Poison + protects from getting poison again
  1085. }
  1086. c.startAnimation(0x33D);
  1087. c.getItems().deleteItem(itemId, itemSlot, 1);
  1088. c.getItems().addItem(newItemId, 1);
  1089. requestUpdates();
  1090. }
  1091. }
  1092. }
  1093.  
  1094.  
  1095. /**
  1096. * Magic on items
  1097. **/
  1098.  
  1099. public void magicOnItems(int slot, int itemId, int spellId) {
  1100. if(itemId == 9813 || itemId == 9814)
  1101. return;
  1102.  
  1103. switch(spellId) {
  1104.  
  1105. case 1162: // low alch
  1106. if (Misc.random(75) == 0) {
  1107. c.randomEvent();
  1108. return;
  1109. }
  1110. if(System.currentTimeMillis() - c.alchDelay > 1000) {
  1111. if(!c.getCombat().checkMagicReqs(49)) {
  1112. break;
  1113. }
  1114. if(itemId == 995) {
  1115. c.sendMessage("You can't alch coins");
  1116. break;
  1117. }
  1118. c.getItems().deleteItem(itemId, slot, 1);
  1119. c.getItems().addItem(995, c.getShops().getItemShopValue(itemId)/3);
  1120. c.startAnimation(c.MAGIC_SPELLS[49][2]);
  1121. c.gfx100(c.MAGIC_SPELLS[49][3]);
  1122. c.alchDelay = System.currentTimeMillis();
  1123. sendFrame106(6);
  1124. addSkillXP(c.MAGIC_SPELLS[49][7] * Config.MAGIC_EXP_RATE, 6);
  1125. refreshSkill(6);
  1126. }
  1127. break;
  1128.  
  1129. case 1178: // high alch
  1130. if (Misc.random(75) == 0) {
  1131. c.randomEvent();
  1132. return;
  1133. }
  1134. if (c.inRandom)
  1135. return;
  1136. if(System.currentTimeMillis() - c.alchDelay > 2000) {
  1137. if(!c.getCombat().checkMagicReqs(50)) {
  1138. break;
  1139. }
  1140. if(itemId == 995) {
  1141. c.sendMessage("You can't alch coins");
  1142. break;
  1143. }
  1144. c.getItems().deleteItem(itemId, slot, 1);
  1145. c.getItems().addItem(995, (int)(c.getShops().getItemShopValue(itemId)*.75));
  1146. c.startAnimation(c.MAGIC_SPELLS[50][2]);
  1147. c.gfx100(c.MAGIC_SPELLS[50][3]);
  1148. c.alchDelay = System.currentTimeMillis();
  1149. sendFrame106(6);
  1150. addSkillXP(c.MAGIC_SPELLS[50][7] * Config.MAGIC_EXP_RATE, 6);
  1151. refreshSkill(6);
  1152. }
  1153. break;
  1154. }
  1155. }
  1156.  
  1157. /**
  1158. * Dieing
  1159. **/
  1160. public String killedLast = "";
  1161.  
  1162. public void handlePKP(String name) {
  1163. int base = 5;
  1164. if (c.inWild() && !c.isInArd() && !c.isInFala())
  1165. {
  1166. base *= 5;
  1167. }
  1168. c.pkp+=base;
  1169. killedLast = name;
  1170. c.sendMessage("You gain "+base+" PK points. You now have "+c.pkp+" PK points.");
  1171. }
  1172. public void handlePKRating(String name) {
  1173. int base = 5;
  1174. if (c.inWild() && !c.isInArd() && !c.isInFala())
  1175. {
  1176. base *= 5;
  1177. }
  1178. c.pkRating+=base;
  1179. killedLast = name;
  1180. c.sendMessage("You gain "+base+" pk rating points. You rate at "+c.pkRating+" points.");
  1181. }
  1182.  
  1183. public void applyDead() {
  1184. int weapon = c.playerEquipment[c.playerWeapon];
  1185. c.respawnTimer = 15;
  1186. c.isDead = false;
  1187. c.killerId = findKiller();
  1188. Client o = (Client) Server.playerHandler.players[c.killerId];
  1189. if(c.duelStatus != 6) {
  1190. //c.killerId = c.getCombat().getKillerId(c.playerId);
  1191.  
  1192. if(o != null) {
  1193. if (c.killerId != c.playerId)
  1194. {
  1195. if (c.duelStatus <= 4) {
  1196. if (CastleWars.isInCw(c)) {
  1197. c.cwDeaths += 1;
  1198. o.cwKills += 1;
  1199. }
  1200. o.pcPoints += 1;
  1201. o.getPA().handlePKP(c.playerName);
  1202. o.getPA().handlePKRating(c.playerName);
  1203. c.pkRating-=10;
  1204. c.sendMessage("You lose 10 rating points for dieing.");
  1205. o.playerKills++;
  1206. if (Math.random() <= .25)
  1207. {
  1208. c.pkp -= 25;
  1209. c.sendMessage("You lose 25 pkp points");
  1210. if (c.pkp < 0)
  1211. c.pkp = 0;
  1212. c.sendMessage("You now have "+c.pkp+" pkp points");
  1213. }
  1214. }
  1215. }
  1216. if (weapon == CastleWars.SARA_BANNER || weapon == CastleWars.ZAMMY_BANNER) {
  1217. c.getItems().removeItem(weapon, 3);
  1218. c.getItems().deleteItem2(weapon, 1);
  1219. CastleWars.dropFlag(c, weapon);
  1220. }
  1221. c.playerKilled = c.playerId;
  1222. if(o.duelStatus == 5) {
  1223. o.duelStatus++;
  1224. }
  1225. }
  1226. }
  1227.  
  1228. c.playerDeaths++;
  1229. c.faceUpdate(0);
  1230. EventManager.getSingleton().addEvent(new Event() {
  1231. public void execute(EventContainer b) {
  1232. c.npcIndex = 0;
  1233. c.playerIndex = 0;
  1234. b.stop();
  1235. }
  1236. }, 2500);
  1237. c.stopMovement();
  1238. if(c.duelStatus <= 4) {
  1239. c.sendMessage("Oh dear you are dead!");
  1240.  
  1241.  
  1242. } else if(c.duelStatus != 6) {
  1243. c.sendMessage("You have lost the duel!");
  1244. }
  1245. resetDamageDone();
  1246. c.specAmount = 10;
  1247. c.getItems().addSpecialBar(c.playerEquipment[c.playerWeapon]);
  1248. c.lastVeng = 0;
  1249. c.vengOn = false;
  1250. resetFollowers();
  1251. c.attackTimer = 10;
  1252. }
  1253.  
  1254. public void resetDamageDone() {
  1255. for (int i = 0; i < PlayerHandler.players.length; i++) {
  1256. if (PlayerHandler.players[i] != null) {
  1257. PlayerHandler.players[i].damageTaken[c.playerId] = 0;
  1258. }
  1259. }
  1260. }
  1261. /*
  1262. *Vengeance
  1263. */
  1264. public void castVeng() {
  1265. if(c.playerLevel[6] < 94) {
  1266. c.sendMessage("You need a magic level of 94 to cast this spell.");
  1267. return;
  1268. }
  1269. if(c.playerLevel[1] < 40) {
  1270. c.sendMessage("You need a defence level of 40 to cast this spell.");
  1271. return;
  1272. }
  1273. if(!c.getItems().playerHasItem(9075, 4) || !c.getItems().playerHasItem(557, 10) || !c.getItems().playerHasItem(560, 2)) {
  1274. c.sendMessage("You don't have the required runes to cast this spell.");
  1275. return;
  1276. }
  1277. if(System.currentTimeMillis() - c.lastCast < 30000) {
  1278. c.sendMessage("You can only cast vengeance every 30 seconds.");
  1279. return;
  1280. }
  1281. if(c.vengOn) {
  1282. c.sendMessage("You already have vengeance casted.");
  1283. return;
  1284. }
  1285. c.startAnimation(4410);
  1286. c.gfx0(604);//Just use c.gfx100
  1287. c.getItems().deleteItem2(9075, 4);
  1288. c.getItems().deleteItem2(557, 10);//For these you need to change to deleteItem(item, itemslot, amount);.
  1289. c.getItems().deleteItem2(560, 2);
  1290. addSkillXP(10000, 6);
  1291. refreshSkill(6);
  1292. c.vengOn = true;
  1293. c.lastCast = System.currentTimeMillis();
  1294. }
  1295. public void vengMe() {
  1296. if (System.currentTimeMillis() - c.lastVeng > 30000) {
  1297. if (c.getItems().playerHasItem(557,10) && c.getItems().playerHasItem(9075,4) && c.getItems().playerHasItem(560,2)) {
  1298. c.vengOn = true;
  1299. c.lastVeng = System.currentTimeMillis();
  1300. c.startAnimation(4410);
  1301. c.gfx100(726);
  1302. c.getItems().deleteItem(557,c.getItems().getItemSlot(557),10);
  1303. c.getItems().deleteItem(560,c.getItems().getItemSlot(560),2);
  1304. c.getItems().deleteItem(9075,c.getItems().getItemSlot(9075),4);
  1305. } else {
  1306. c.sendMessage("You do not have the required runes to cast this spell. (9075 for astrals)");
  1307. }
  1308. } else {
  1309. c.sendMessage("You must wait 30 seconds before casting this again.");
  1310. }
  1311. }
  1312.  
  1313. public void resetTb() {
  1314. c.teleBlockLength = 0;
  1315. c.teleBlockDelay = 0;
  1316. }
  1317.  
  1318. public void handleStatus(int i, int i2, int i3) {
  1319.  
  1320. }
  1321.  
  1322. public void resetFollowers() {
  1323. for (int j = 0; j < Server.playerHandler.players.length; j++) {
  1324. if (Server.playerHandler.players[j] != null) {
  1325. if (Server.playerHandler.players[j].followId == c.playerId) {
  1326. Client c = (Client)Server.playerHandler.players[j];
  1327. c.getPA().resetFollow();
  1328. }
  1329. }
  1330. }
  1331. }
  1332.  
  1333. public void giveLife() {
  1334. c.isDead = false;
  1335. c.faceUpdate(-1);
  1336. c.freezeTimer = 0;
  1337. if(c.duelStatus <= 4 && !c.getPA().inPitsWait()) { // if we are not in a duel we must be in wildy so remove items
  1338. if(!CastleWars.isInCw(c) && !c.inPits && !c.inFightCaves()) {
  1339. c.getItems().resetKeepItems();
  1340. if((c.playerRights == 2 && Config.ADMIN_DROP_ITEMS) || c.playerRights != 2) {
  1341. if(!c.isSkulled) { // what items to keep
  1342. c.getItems().keepItem(0, true);
  1343. c.getItems().keepItem(1, true);
  1344. c.getItems().keepItem(2, true);
  1345. }
  1346. if((c.prayerActive[10] && System.currentTimeMillis() - c.lastProtItem > 700)) {
  1347. c.getItems().keepItem(3, true);
  1348. }
  1349.  
  1350. c.getItems().dropAllItems(); // drop all items
  1351. c.getItems().deleteAllItems(); // delete all items
  1352.  
  1353.  
  1354. if(!c.isSkulled) { // add the kept items once we finish deleting and dropping them
  1355. for (int i1 = 0; i1 < 3; i1++) {
  1356. if(c.itemKeptId[i1] > 0) {
  1357. c.getItems().addItem(c.itemKeptId[i1], 1);
  1358. }
  1359. }
  1360. }
  1361. if(c.prayerActive[10]) { // if we have protect items
  1362. if(c.itemKeptId[3] > 0) {
  1363. c.getItems().addItem(c.itemKeptId[3], 1);
  1364. }
  1365. }
  1366. }
  1367. c.getItems().resetKeepItems();
  1368. } else if (c.inPits) {
  1369. Server.fightPits.removePlayerFromPits(c.playerId);
  1370. c.pitsStatus = 1;
  1371. }
  1372. }
  1373. c.getCombat().resetPrayers();
  1374. for (int i = 0; i < 20; i++) {
  1375. c.playerLevel[i] = getLevelForXP(c.playerXP[i]);
  1376. c.getPA().refreshSkill(i);
  1377. }
  1378. if (CastleWars.isInCw(c)) {
  1379. if (CastleWars.getTeamNumber(c) == 1) {
  1380. c.getPA().movePlayer(2426 + Misc.random(3), 3076 - Misc.random(3), 1);
  1381. } else {
  1382. c.getPA().movePlayer(2373 + Misc.random(3), 3131 - Misc.random(3), 1);
  1383. }
  1384. } else if (c.pitsStatus == 1) {
  1385. movePlayer(2399, 5173, 0);
  1386. } else if(c.duelStatus <= 4) { // if we are not in a duel repawn to wildy
  1387. movePlayer(Config.RESPAWN_X, Config.RESPAWN_Y, 0);
  1388. c.isSkulled = false;
  1389. c.skullTimer = 0;
  1390. c.attackedPlayers.clear();
  1391. } else if (c.inFightCaves()) {
  1392. c.getPA().resetTzhaar();
  1393. } else { // we are in a duel, respawn outside of arena
  1394. Client o = (Client) Server.playerHandler.players[c.duelingWith];
  1395. if(o != null) {
  1396. o.getPA().createPlayerHints(10, -1);
  1397. if(o.duelStatus == 6) {
  1398. o.getTradeAndDuel().duelVictory();
  1399. o.pcPoints += 1;
  1400. o.sendMessage("You have gained 1 Soul Split Points for winning a duel");
  1401. }
  1402. }
  1403. movePlayer(Config.DUELING_RESPAWN_X+(Misc.random(Config.RANDOM_DUELING_RESPAWN)), Config.DUELING_RESPAWN_Y+(Misc.random(Config.RANDOM_DUELING_RESPAWN)), 0);
  1404. if(c.duelStatus != 6) { // if we have won but have died, don't reset the duel status.
  1405. c.getTradeAndDuel().resetDuel();
  1406. }
  1407. }
  1408. //PlayerSaving.getSingleton().requestSave(c.playerId);
  1409. PlayerSave.saveGame(c);
  1410. c.getCombat().resetPlayerAttack();
  1411. resetAnimation();
  1412. c.startAnimation(65535);
  1413. frame1();
  1414. resetTb();
  1415. c.isSkulled = false;
  1416. c.attackedPlayers.clear();
  1417. c.headIconPk = -1;
  1418. c.skullTimer = -1;
  1419. c.damageTaken = new int[Config.MAX_PLAYERS];
  1420. c.getPA().requestUpdates();
  1421. }
  1422.  
  1423. /**
  1424. * Location change for digging, levers etc
  1425. **/
  1426.  
  1427. public void changeLocation() {
  1428. switch(c.newLocation) {
  1429. case 1:
  1430. sendFrame99(2);
  1431. movePlayer(3578,9706,-1);
  1432. break;
  1433. case 2:
  1434. sendFrame99(2);
  1435. movePlayer(3568,9683,-1);
  1436. break;
  1437. case 3:
  1438. sendFrame99(2);
  1439. movePlayer(3557,9703,-1);
  1440. break;
  1441. case 4:
  1442. sendFrame99(2);
  1443. movePlayer(3556,9718,-1);
  1444. break;
  1445. case 5:
  1446. sendFrame99(2);
  1447. movePlayer(3534,9704,-1);
  1448. break;
  1449. case 6:
  1450. sendFrame99(2);
  1451. movePlayer(3546,9684,-1);
  1452. break;
  1453. }
  1454. c.newLocation = 0;
  1455. }
  1456.  
  1457.  
  1458. /**
  1459. * Teleporting
  1460. **/
  1461. public void spellTeleport(int x, int y, int height) {
  1462. c.getPA().startTeleport(x, y, height, c.playerMagicBook == 1 ? "ancient" : "modern");
  1463. if (CastleWars.isInCw(c)) {
  1464. c.sendMessage("You cannot tele from a Castle Wars Game!");
  1465. return;
  1466. }
  1467. c.teleAction = 0;
  1468. }
  1469. public void startMovement(int x, int y, int height) {
  1470. if(c.duelStatus == 5) {
  1471. c.sendMessage("You can't teleport during a duel!");
  1472. return;
  1473. }
  1474. if (CastleWars.isInCw(c)) {
  1475. c.sendMessage("You cannot tele from a Castle Wars Game!");
  1476. return;
  1477. }
  1478. if(c.inWild() && c.wildLevel > Config.NO_TELEPORT_WILD_LEVEL) {
  1479. c.sendMessage("You can't teleport above level "+Config.NO_TELEPORT_WILD_LEVEL+" in the wilderness.");
  1480. return;
  1481. }
  1482. if(System.currentTimeMillis() - c.teleBlockDelay < c.teleBlockLength) {
  1483. c.sendMessage("You are teleblocked and can't teleport.");
  1484. return;
  1485. }
  1486. if(!c.isDead && c.teleTimer == 0 && c.respawnTimer == -6) {
  1487. if (c.playerIndex > 0 || c.npcIndex > 0)
  1488. c.getCombat().resetPlayerAttack();
  1489. c.stopMovement();
  1490. removeAllWindows();
  1491. c.teleX = x;
  1492. c.teleY = y;
  1493. c.npcIndex = 0;
  1494. c.playerIndex = 0;
  1495. c.faceUpdate(0);
  1496. c.teleHeight = height;
  1497.  
  1498. }
  1499.  
  1500.  
  1501. }
  1502. public void startTeleport(int x, int y, int height, String teleportType) {
  1503. if(c.duelStatus == 5) {
  1504. c.sendMessage("You can't teleport during a duel!");
  1505. return;
  1506. }
  1507. if (CastleWars.isInCw(c)) {
  1508. c.sendMessage("You cannot tele from a Castle Wars Game!");
  1509. return;
  1510. }
  1511. if(c.inWild() && c.wildLevel > Config.NO_TELEPORT_WILD_LEVEL) {
  1512. c.sendMessage("You can't teleport above level "+Config.NO_TELEPORT_WILD_LEVEL+" in the wilderness.");
  1513. return;
  1514. }
  1515. if(System.currentTimeMillis() - c.teleBlockDelay < c.teleBlockLength) {
  1516. c.sendMessage("You are teleblocked and can't teleport.");
  1517. return;
  1518. }
  1519. if(!c.isDead && c.teleTimer == 0 && c.respawnTimer == -6) {
  1520. if (c.playerIndex > 0 || c.npcIndex > 0)
  1521. c.getCombat().resetPlayerAttack();
  1522. c.stopMovement();
  1523. removeAllWindows();
  1524. c.teleX = x;
  1525. c.teleY = y;
  1526. c.npcIndex = 0;
  1527. c.playerIndex = 0;
  1528. c.faceUpdate(0);
  1529. c.teleHeight = height;
  1530. if(teleportType.equalsIgnoreCase("modern")) {
  1531. c.startAnimation(714);
  1532. c.teleTimer = 11;
  1533. c.teleGfx = 308;
  1534. c.teleEndAnimation = 715;
  1535. }
  1536. if(teleportType.equalsIgnoreCase("ancient")) {
  1537. c.startAnimation(1979);
  1538. c.teleGfx = 0;
  1539. c.teleTimer = 9;
  1540. c.teleEndAnimation = 0;
  1541. c.gfx0(392);
  1542. }
  1543.  
  1544. }
  1545. }
  1546. public void startTeleport2(int x, int y, int height) {
  1547. if(c.duelStatus == 5) {
  1548. c.sendMessage("You can't teleport during a duel!");
  1549. return;
  1550. }
  1551. if (CastleWars.isInCw(c)) {
  1552. c.sendMessage("You cannot tele from a Castle Wars Game!");
  1553. return;
  1554. }
  1555. if(System.currentTimeMillis() - c.teleBlockDelay < c.teleBlockLength) {
  1556. c.sendMessage("You are teleblocked and can't teleport.");
  1557. return;
  1558. }
  1559. if(!c.isDead && c.teleTimer == 0) {
  1560. c.stopMovement();
  1561. removeAllWindows();
  1562. c.teleX = x;
  1563. c.teleY = y;
  1564. c.npcIndex = 0;
  1565. c.playerIndex = 0;
  1566. c.faceUpdate(0);
  1567. c.teleHeight = height;
  1568. c.startAnimation(714);
  1569. c.teleTimer = 11;
  1570. c.teleGfx = 308;
  1571. c.teleEndAnimation = 715;
  1572.  
  1573. }
  1574. }
  1575.  
  1576. public void processTeleport() {
  1577. c.teleportToX = c.teleX;
  1578. c.teleportToY = c.teleY;
  1579. c.heightLevel = c.teleHeight;
  1580. if(c.teleEndAnimation > 0) {
  1581. c.startAnimation(c.teleEndAnimation);
  1582. }
  1583. }
  1584.  
  1585. public void movePlayer(int x, int y, int h) {
  1586. c.resetWalkingQueue();
  1587. c.teleportToX = x;
  1588. c.teleportToY = y;
  1589. c.heightLevel = h;
  1590. requestUpdates();
  1591. }
  1592.  
  1593. /**
  1594. * Following
  1595. **/
  1596.  
  1597. /*public void Player() {
  1598. if(Server.playerHandler.players[c.followId] == null || Server.playerHandler.players[c.followId].isDead) {
  1599. c.getPA().resetFollow();
  1600. return;
  1601. }
  1602. if(c.freezeTimer > 0) {
  1603. return;
  1604. }
  1605. int otherX = Server.playerHandler.players[c.followId].getX();
  1606. int otherY = Server.playerHandler.players[c.followId].getY();
  1607. boolean withinDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
  1608. boolean hallyDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
  1609. boolean bowDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 6);
  1610. boolean rangeWeaponDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
  1611. boolean sameSpot = (c.absX == otherX && c.absY == otherY);
  1612. if(!c.goodDistance(otherX, otherY, c.getX(), c.getY(), 25)) {
  1613. c.followId = 0;
  1614. c.getPA().resetFollow();
  1615. return;
  1616. }
  1617. c.faceUpdate(c.followId+32768);
  1618. if ((c.usingBow || c.mageFollow || c.autocastId > 0 && (c.npcIndex > 0 || c.playerIndex > 0)) && bowDistance && !sameSpot) {
  1619. c.stopMovement();
  1620. return;
  1621. }
  1622. if (c.usingRangeWeapon && rangeWeaponDistance && !sameSpot && (c.npcIndex > 0 || c.playerIndex > 0)) {
  1623. c.stopMovement();
  1624. return;
  1625. }
  1626. if(c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1) && !sameSpot) {
  1627. return;
  1628. }
  1629. c.outStream.createFrame(174);
  1630. boolean followPlayer = c.followId > 0;
  1631. if (c.freezeTimer <= 0)
  1632. if (followPlayer)
  1633. c.outStream.writeWord(c.followId);
  1634. else
  1635. c.outStream.writeWord(c.followId2);
  1636. else
  1637. c.outStream.writeWord(0);
  1638.  
  1639. if (followPlayer)
  1640. c.outStream.writeByte(1);
  1641. else
  1642. c.outStream.writeByte(0);
  1643. if (c.usingBow && c.playerIndex > 0)
  1644. c.followDistance = 5;
  1645. else if (c.usingRangeWeapon && c.playerIndex > 0)
  1646. c.followDistance = 3;
  1647. else if (c.spellId > 0 && c.playerIndex > 0)
  1648. c.followDistance = 5;
  1649. else
  1650. c.followDistance = 1;
  1651. c.outStream.writeWord(c.followDistance);
  1652. }*/
  1653.  
  1654. public void followPlayer() {
  1655. if(Server.playerHandler.players[c.followId] == null || Server.playerHandler.players[c.followId].isDead) {
  1656. c.followId = 0;
  1657. return;
  1658. }
  1659. if(c.freezeTimer > 0) {
  1660. return;
  1661. }
  1662. if (c.isDead || c.playerLevel[3] <= 0)
  1663. return;
  1664.  
  1665. int otherX = Server.playerHandler.players[c.followId].getX();
  1666. int otherY = Server.playerHandler.players[c.followId].getY();
  1667. boolean withinDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
  1668. boolean goodDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1);
  1669. boolean hallyDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
  1670. boolean bowDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 8);
  1671. boolean rangeWeaponDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 4);
  1672. boolean sameSpot = c.absX == otherX && c.absY == otherY;
  1673. if(!c.goodDistance(otherX, otherY, c.getX(), c.getY(), 25)) {
  1674. c.followId = 0;
  1675. return;
  1676. }
  1677. if(c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1)) {
  1678. if (otherX != c.getX() && otherY != c.getY()) {
  1679. stopDiagonal(otherX, otherY);
  1680. return;
  1681. }
  1682. }
  1683.  
  1684. if((c.usingBow || c.mageFollow || (c.playerIndex > 0 && c.autocastId > 0)) && bowDistance && !sameSpot) {
  1685. return;
  1686. }
  1687.  
  1688. if(c.getCombat().usingHally() && hallyDistance && !sameSpot) {
  1689. return;
  1690. }
  1691.  
  1692. if(c.usingRangeWeapon && rangeWeaponDistance && !sameSpot) {
  1693. return;
  1694. }
  1695.  
  1696. c.faceUpdate(c.followId+32768);
  1697. if (otherX == c.absX && otherY == c.absY) {
  1698. int r = Misc.random(3);
  1699. switch (r) {
  1700. case 0:
  1701. walkTo(0,-1);
  1702. break;
  1703. case 1:
  1704. walkTo(0,1);
  1705. break;
  1706. case 2:
  1707. walkTo(1,0);
  1708. break;
  1709. case 3:
  1710. walkTo(-1,0);
  1711. break;
  1712. }
  1713. } else if(c.isRunning2 && !withinDistance) {
  1714. if(otherY > c.getY() && otherX == c.getX()) {
  1715. walkTo(0, getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
  1716. } else if(otherY < c.getY() && otherX == c.getX()) {
  1717. walkTo(0, getMove(c.getY(), otherY + 1) + getMove(c.getY(), otherY + 1));
  1718. } else if(otherX > c.getX() && otherY == c.getY()) {
  1719. walkTo(getMove(c.getX(), otherX - 1) + getMove(c.getX(), otherX - 1), 0);
  1720. } else if(otherX < c.getX() && otherY == c.getY()) {
  1721. walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), 0);
  1722. } else if(otherX < c.getX() && otherY < c.getY()) {
  1723. walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY + 1) + getMove(c.getY(), otherY + 1));
  1724. } else if(otherX > c.getX() && otherY > c.getY()) {
  1725. walkTo(getMove(c.getX(), otherX - 1) + getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
  1726. } else if(otherX < c.getX() && otherY > c.getY()) {
  1727. walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
  1728. } else if(otherX > c.getX() && otherY < c.getY()) {
  1729. walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
  1730. }
  1731. } else {
  1732. if(otherY > c.getY() && otherX == c.getX()) {
  1733. walkTo(0, getMove(c.getY(), otherY - 1));
  1734. } else if(otherY < c.getY() && otherX == c.getX()) {
  1735. walkTo(0, getMove(c.getY(), otherY + 1));
  1736. } else if(otherX > c.getX() && otherY == c.getY()) {
  1737. walkTo(getMove(c.getX(), otherX - 1), 0);
  1738. } else if(otherX < c.getX() && otherY == c.getY()) {
  1739. walkTo(getMove(c.getX(), otherX + 1), 0);
  1740. } else if(otherX < c.getX() && otherY < c.getY()) {
  1741. walkTo(getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY + 1));
  1742. } else if(otherX > c.getX() && otherY > c.getY()) {
  1743. walkTo(getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY - 1));
  1744. } else if(otherX < c.getX() && otherY > c.getY()) {
  1745. walkTo(getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1));
  1746. } else if(otherX > c.getX() && otherY < c.getY()) {
  1747. walkTo(getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY + 1));
  1748. }
  1749. }
  1750. c.faceUpdate(c.followId+32768);
  1751. }
  1752.  
  1753. public void followNpc() {
  1754. if(Server.npcHandler.npcs[c.followId2] == null || Server.npcHandler.npcs[c.followId2].isDead) {
  1755. c.followId2 = 0;
  1756. return;
  1757. }
  1758. if(c.freezeTimer > 0) {
  1759. return;
  1760. }
  1761. if (c.isDead || c.playerLevel[3] <= 0)
  1762. return;
  1763.  
  1764. int otherX = Server.npcHandler.npcs[c.followId2].getX();
  1765. int otherY = Server.npcHandler.npcs[c.followId2].getY();
  1766. boolean withinDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
  1767. boolean goodDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1);
  1768. boolean hallyDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
  1769. boolean bowDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 8);
  1770. boolean rangeWeaponDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 4);
  1771. boolean sameSpot = c.absX == otherX && c.absY == otherY;
  1772. if(!c.goodDistance(otherX, otherY, c.getX(), c.getY(), 25)) {
  1773. c.followId2 = 0;
  1774. return;
  1775. }
  1776. if(c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1)) {
  1777. if (otherX != c.getX() && otherY != c.getY()) {
  1778. stopDiagonal(otherX, otherY);
  1779. return;
  1780. }
  1781. }
  1782.  
  1783. if((c.usingBow || c.mageFollow || (c.npcIndex > 0 && c.autocastId > 0)) && bowDistance && !sameSpot) {
  1784. return;
  1785. }
  1786.  
  1787. if(c.getCombat().usingHally() && hallyDistance && !sameSpot) {
  1788. return;
  1789. }
  1790.  
  1791. if(c.usingRangeWeapon && rangeWeaponDistance && !sameSpot) {
  1792. return;
  1793. }
  1794.  
  1795. c.faceUpdate(c.followId2);
  1796. if (otherX == c.absX && otherY == c.absY) {
  1797. int r = Misc.random(3);
  1798. switch (r) {
  1799. case 0:
  1800. walkTo(0,-1);
  1801. break;
  1802. case 1:
  1803. walkTo(0,1);
  1804. break;
  1805. case 2:
  1806. walkTo(1,0);
  1807. break;
  1808. case 3:
  1809. walkTo(-1,0);
  1810. break;
  1811. }
  1812. } else if(c.isRunning2 && !withinDistance) {
  1813. if(otherY > c.getY() && otherX == c.getX()) {
  1814. walkTo(0, getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
  1815. } else if(otherY < c.getY() && otherX == c.getX()) {
  1816. walkTo(0, getMove(c.getY(), otherY + 1) + getMove(c.getY(), otherY + 1));
  1817. } else if(otherX > c.getX() && otherY == c.getY()) {
  1818. walkTo(getMove(c.getX(), otherX - 1) + getMove(c.getX(), otherX - 1), 0);
  1819. } else if(otherX < c.getX() && otherY == c.getY()) {
  1820. walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), 0);
  1821. } else if(otherX < c.getX() && otherY < c.getY()) {
  1822. walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY + 1) + getMove(c.getY(), otherY + 1));
  1823. } else if(otherX > c.getX() && otherY > c.getY()) {
  1824. walkTo(getMove(c.getX(), otherX - 1) + getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
  1825. } else if(otherX < c.getX() && otherY > c.getY()) {
  1826. walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
  1827. } else if(otherX > c.getX() && otherY < c.getY()) {
  1828. walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
  1829. }
  1830. } else {
  1831. if(otherY > c.getY() && otherX == c.getX()) {
  1832. walkTo(0, getMove(c.getY(), otherY - 1));
  1833. } else if(otherY < c.getY() && otherX == c.getX()) {
  1834. walkTo(0, getMove(c.getY(), otherY + 1));
  1835. } else if(otherX > c.getX() && otherY == c.getY()) {
  1836. walkTo(getMove(c.getX(), otherX - 1), 0);
  1837. } else if(otherX < c.getX() && otherY == c.getY()) {
  1838. walkTo(getMove(c.getX(), otherX + 1), 0);
  1839. } else if(otherX < c.getX() && otherY < c.getY()) {
  1840. walkTo(getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY + 1));
  1841. } else if(otherX > c.getX() && otherY > c.getY()) {
  1842. walkTo(getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY - 1));
  1843. } else if(otherX < c.getX() && otherY > c.getY()) {
  1844. walkTo(getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1));
  1845. } else if(otherX > c.getX() && otherY < c.getY()) {
  1846. walkTo(getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY + 1));
  1847. }
  1848. }
  1849. c.faceUpdate(c.followId2);
  1850. }
  1851.  
  1852.  
  1853.  
  1854.  
  1855. public int getRunningMove(int i, int j) {
  1856. if (j - i > 2)
  1857. return 2;
  1858. else if (j - i < -2)
  1859. return -2;
  1860. else return j-i;
  1861. }
  1862.  
  1863. public void resetFollow() {
  1864. c.followId = 0;
  1865. c.followId2 = 0;
  1866. c.mageFollow = false;
  1867. c.outStream.createFrame(174);
  1868. c.outStream.writeWord(0);
  1869. c.outStream.writeByte(0);
  1870. c.outStream.writeWord(1);
  1871. }
  1872.  
  1873. public void walkTo(int i, int j) {
  1874. c.newWalkCmdSteps = 0;
  1875. if(++c.newWalkCmdSteps > 50)
  1876. c.newWalkCmdSteps = 0;
  1877. int k = c.getX() + i;
  1878. k -= c.mapRegionX * 8;
  1879. c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
  1880. int l = c.getY() + j;
  1881. l -= c.mapRegionY * 8;
  1882.  
  1883. for(int n = 0; n < c.newWalkCmdSteps; n++) {
  1884. c.getNewWalkCmdX()[n] += k;
  1885. c.getNewWalkCmdY()[n] += l;
  1886. }
  1887. }
  1888.  
  1889. public void walkTo2(int i, int j) {
  1890. if (c.freezeDelay > 0)
  1891. return;
  1892. c.newWalkCmdSteps = 0;
  1893. if(++c.newWalkCmdSteps > 50)
  1894. c.newWalkCmdSteps = 0;
  1895. int k = c.getX() + i;
  1896. k -= c.mapRegionX * 8;
  1897. c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
  1898. int l = c.getY() + j;
  1899. l -= c.mapRegionY * 8;
  1900.  
  1901. for(int n = 0; n < c.newWalkCmdSteps; n++) {
  1902. c.getNewWalkCmdX()[n] += k;
  1903. c.getNewWalkCmdY()[n] += l;
  1904. }
  1905. }
  1906.  
  1907. public void stopDiagonal(int otherX, int otherY) {
  1908. if (c.freezeDelay > 0)
  1909. return;
  1910. c.newWalkCmdSteps = 1;
  1911. int xMove = otherX - c.getX();
  1912. int yMove = 0;
  1913. if (xMove == 0)
  1914. yMove = otherY - c.getY();
  1915. /*if (!clipHor) {
  1916. yMove = 0;
  1917. } else if (!clipVer) {
  1918. xMove = 0;
  1919. }*/
  1920.  
  1921. int k = c.getX() + xMove;
  1922. k -= c.mapRegionX * 8;
  1923. c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
  1924. int l = c.getY() + yMove;
  1925. l -= c.mapRegionY * 8;
  1926.  
  1927. for(int n = 0; n < c.newWalkCmdSteps; n++) {
  1928. c.getNewWalkCmdX()[n] += k;
  1929. c.getNewWalkCmdY()[n] += l;
  1930. }
  1931.  
  1932. }
  1933.  
  1934.  
  1935.  
  1936. public void walkToCheck(int i, int j) {
  1937. if (c.freezeDelay > 0)
  1938. return;
  1939. c.newWalkCmdSteps = 0;
  1940. if(++c.newWalkCmdSteps > 50)
  1941. c.newWalkCmdSteps = 0;
  1942. int k = c.getX() + i;
  1943. k -= c.mapRegionX * 8;
  1944. c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
  1945. int l = c.getY() + j;
  1946. l -= c.mapRegionY * 8;
  1947.  
  1948. for(int n = 0; n < c.newWalkCmdSteps; n++) {
  1949. c.getNewWalkCmdX()[n] += k;
  1950. c.getNewWalkCmdY()[n] += l;
  1951. }
  1952. }
  1953.  
  1954.  
  1955. public int getMove(int place1,int place2) {
  1956. if (System.currentTimeMillis() - c.lastSpear < 4000)
  1957. return 0;
  1958. if ((place1 - place2) == 0) {
  1959. return 0;
  1960. } else if ((place1 - place2) < 0) {
  1961. return 1;
  1962. } else if ((place1 - place2) > 0) {
  1963. return -1;
  1964. }
  1965. return 0;
  1966. }
  1967. public void destroyInterface(int itemId) {
  1968. String itemName = c.getItems().getItemName(itemId);
  1969. String[][] info = {{"Are you sure you want to destroy this item?", "14174"}, {"Yes.", "14175"}, {"No.", "14176"}, {"", "14177"}, {"You can't get it back", "14182"},
  1970. {"Really, it's gone forever.", "14183"}, {itemName, "14184"}};
  1971. sendFrame34(itemId, 0, 14171, 1);
  1972. for (int i = 0; i < info.length; i++)
  1973. sendFrame126(info[i][0], Integer.parseInt(info[i][1]));
  1974. c.destroyItem = itemId;
  1975. sendFrame164(14170);
  1976. }
  1977.  
  1978. public void destroyItem(int itemId) {
  1979. String itemName = c.getItems().getItemName(itemId);
  1980. c.getItems().deleteItem(itemId, 1);
  1981. c.sendMessage("Your " + itemName + " vanishes as you drop it on the ground.");
  1982. c.destroyItem = 0;
  1983. }
  1984. public boolean fullVeracs() {
  1985. boolean hHat, hWep, hTop, hLegs;
  1986. hHat = hWep = hTop = hLegs = false;
  1987. int[] hat = new int[] {4976, 4981};
  1988. if (c.playerEquipment[c.playerHat] >= hat[0] && c.playerEquipment[c.playerHat] <= hat[1])
  1989. hHat = true;
  1990. int[] wep = new int[] {4982, 4987};
  1991. if (c.playerEquipment[c.playerWeapon] >= wep[0] && c.playerEquipment[c.playerWeapon] <= wep[1])
  1992. hWep = true;
  1993. int[] top = new int[] {4988, 4993};
  1994. if (c.playerEquipment[c.playerChest] >= top[0] && c.playerEquipment[c.playerChest] <= top[1])
  1995. hTop = true;
  1996. int[] legs = new int[] {4994, 4999};
  1997. if (c.playerEquipment[c.playerLegs] >= legs[0] && c.playerEquipment[c.playerLegs] <= legs[1])
  1998. hLegs = true;
  1999. if (c.playerEquipment[c.playerHat] == 4753)
  2000. hHat = true;
  2001. if (c.playerEquipment[c.playerWeapon] == 4755)
  2002. hWep = true;
  2003. if (c.playerEquipment[c.playerChest] == 4757)
  2004. hTop = true;
  2005. if (c.playerEquipment[c.playerLegs] == 4759)
  2006. hLegs = true;
  2007. if (hHat && hWep && hTop && hLegs)
  2008. return true;
  2009.  
  2010. return false;
  2011. }
  2012. public boolean fullGuthans() {
  2013. return c.playerEquipment[c.playerHat] == 4724 && c.playerEquipment[c.playerChest] == 4728 && c.playerEquipment[c.playerLegs] == 4730 && c.playerEquipment[c.playerWeapon] == 4726;
  2014. }
  2015. public boolean inPartyRoom() {
  2016. return c.absX >= 2726 && c.absY <= 3480 && c.absX <= 2749 && c.absY >= 3458;
  2017. }
  2018. public boolean inPartyRoom(int x, int y) {
  2019. return x >= 2726 && y <= 3480 && x <= 2749 && y >= 3458;
  2020. }
  2021.  
  2022. /**
  2023. * reseting animation
  2024. **/
  2025. public void resetAnimation() {
  2026. c.getCombat().getPlayerAnimIndex(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
  2027. c.startAnimation(c.playerStandIndex);
  2028. requestUpdates();
  2029. }
  2030.  
  2031. public void requestUpdates() {
  2032. c.updateRequired = true;
  2033. c.setAppearanceUpdateRequired(true);
  2034. }
  2035.  
  2036. public void levelUp(int skill) {
  2037. int totalLevel = c.totalLevel();
  2038. sendFrame126("Total Lvl: "+totalLevel, 3984);
  2039. switch(skill) {
  2040. case 0:
  2041. sendFrame126("Congratulations, you just advanced an attack level!", 6248);
  2042. sendFrame126("Your attack level is now "+getLevelForXP(c.playerXP[skill])+".", 6249);
  2043. c.sendMessage("Congratulations, you just advanced an attack level.");
  2044. sendFrame164(6247);
  2045. break;
  2046.  
  2047. case 1:
  2048. sendFrame126("Congratulations, you just advanced a defence level!", 6254);
  2049. sendFrame126("Your defence level is now "+getLevelForXP(c.playerXP[skill])+".", 6255);
  2050. c.sendMessage("Congratulations, you just advanced a defence level.");
  2051. sendFrame164(6253);
  2052. break;
  2053.  
  2054. case 2:
  2055. sendFrame126("Congratulations, you just advanced a strength level!", 6207);
  2056. sendFrame126("Your strength level is now "+getLevelForXP(c.playerXP[skill])+".", 6208);
  2057. c.sendMessage("Congratulations, you just advanced a strength level.");
  2058. sendFrame164(6206);
  2059. break;
  2060.  
  2061. case 3:
  2062. sendFrame126("Congratulations, you just advanced a hitpoints level!", 6217);
  2063. sendFrame126("Your hitpoints level is now "+getLevelForXP(c.playerXP[skill])+".", 6218);
  2064. c.sendMessage("Congratulations, you just advanced a hitpoints level.");
  2065. sendFrame164(6216);
  2066. break;
  2067.  
  2068. case 4:
  2069. sendFrame126("Congratulations, you just advanced a ranged level!", 5453);
  2070. sendFrame126("Your ranged level is now "+getLevelForXP(c.playerXP[skill])+".", 6114);
  2071. c.sendMessage("Congratulations, you just advanced a ranging level.");
  2072. sendFrame164(4443);
  2073. break;
  2074.  
  2075. case 5:
  2076. sendFrame126("Congratulations, you just advanced a prayer level!", 6243);
  2077. sendFrame126("Your prayer level is now "+getLevelForXP(c.playerXP[skill])+".", 6244);
  2078. c.sendMessage("Congratulations, you just advanced a prayer level.");
  2079. sendFrame164(6242);
  2080. break;
  2081.  
  2082. case 6:
  2083. sendFrame126("Congratulations, you just advanced a magic level!", 6212);
  2084. sendFrame126("Your magic level is now "+getLevelForXP(c.playerXP[skill])+".", 6213);
  2085. c.sendMessage("Congratulations, you just advanced a magic level.");
  2086. sendFrame164(6211);
  2087. break;
  2088.  
  2089. case 7:
  2090. sendFrame126("Congratulations, you just advanced a cooking level!", 6227);
  2091. sendFrame126("Your cooking level is now "+getLevelForXP(c.playerXP[skill])+".", 6228);
  2092. c.sendMessage("Congratulations, you just advanced a cooking level.");
  2093. sendFrame164(6226);
  2094. break;
  2095.  
  2096. case 8:
  2097. sendFrame126("Congratulations, you just advanced a woodcutting level!", 4273);
  2098. sendFrame126("Your woodcutting level is now "+getLevelForXP(c.playerXP[skill])+".", 4274);
  2099. c.sendMessage("Congratulations, you just advanced a woodcutting level.");
  2100. sendFrame164(4272);
  2101. break;
  2102.  
  2103. case 9:
  2104. sendFrame126("Congratulations, you just advanced a fletching level!", 6232);
  2105. sendFrame126("Your fletching level is now "+getLevelForXP(c.playerXP[skill])+".", 6233);
  2106. c.sendMessage("Congratulations, you just advanced a fletching level.");
  2107. sendFrame164(6231);
  2108. break;
  2109.  
  2110. case 10:
  2111. sendFrame126("Congratulations, you just advanced a fishing level!", 6259);
  2112. sendFrame126("Your fishing level is now "+getLevelForXP(c.playerXP[skill])+".", 6260);
  2113. c.sendMessage("Congratulations, you just advanced a fishing level.");
  2114. sendFrame164(6258);
  2115. break;
  2116.  
  2117. case 11:
  2118. sendFrame126("Congratulations, you just advanced a fire making level!", 4283);
  2119. sendFrame126("Your firemaking level is now "+getLevelForXP(c.playerXP[skill])+".", 4284);
  2120. c.sendMessage("Congratulations, you just advanced a fire making level.");
  2121. sendFrame164(4282);
  2122. break;
  2123.  
  2124. case 12:
  2125. sendFrame126("Congratulations, you just advanced a crafting level!", 6264);
  2126. sendFrame126("Your crafting level is now "+getLevelForXP(c.playerXP[skill])+".", 6265);
  2127. c.sendMessage("Congratulations, you just advanced a crafting level.");
  2128. sendFrame164(6263);
  2129. break;
  2130.  
  2131. case 13:
  2132. sendFrame126("Congratulations, you just advanced a smithing level!", 6222);
  2133. sendFrame126("Your smithing level is now "+getLevelForXP(c.playerXP[skill])+".", 6223);
  2134. c.sendMessage("Congratulations, you just advanced a smithing level.");
  2135. sendFrame164(6221);
  2136. break;
  2137.  
  2138. case 14:
  2139. sendFrame126("Congratulations, you just advanced a mining level!", 4417);
  2140. sendFrame126("Your mining level is now "+getLevelForXP(c.playerXP[skill])+".", 4438);
  2141. c.sendMessage("Congratulations, you just advanced a mining level.");
  2142. sendFrame164(4416);
  2143. break;
  2144.  
  2145. case 15:
  2146. sendFrame126("Congratulations, you just advanced a herblore level!", 6238);
  2147. sendFrame126("Your herblore level is now "+getLevelForXP(c.playerXP[skill])+".", 6239);
  2148. c.sendMessage("Congratulations, you just advanced a herblore level.");
  2149. sendFrame164(6237);
  2150. break;
  2151.  
  2152. case 16:
  2153. sendFrame126("Congratulations, you just advanced a agility level!", 4278);
  2154. sendFrame126("Your agility level is now "+getLevelForXP(c.playerXP[skill])+".", 4279);
  2155. c.sendMessage("Congratulations, you just advanced an agility level.");
  2156. sendFrame164(4277);
  2157. break;
  2158.  
  2159. case 17:
  2160. sendFrame126("Congratulations, you just advanced a thieving level!", 4263);
  2161. sendFrame126("Your theiving level is now "+getLevelForXP(c.playerXP[skill])+".", 4264);
  2162. c.sendMessage("Congratulations, you just advanced a thieving level.");
  2163. sendFrame164(4261);
  2164. break;
  2165.  
  2166. case 18:
  2167. sendFrame126("Congratulations, you just advanced a slayer level!", 12123);
  2168. sendFrame126("Your slayer level is now "+getLevelForXP(c.playerXP[skill])+".", 12124);
  2169. c.sendMessage("Congratulations, you just advanced a slayer level.");
  2170. sendFrame164(12122);
  2171. break;
  2172.  
  2173. case 20:
  2174. sendFrame126("Congratulations, you just advanced a runecrafting level!", 4268);
  2175. sendFrame126("Your runecrafting level is now "+getLevelForXP(c.playerXP[skill])+".", 4269);
  2176. c.sendMessage("Congratulations, you just advanced a runecrafting level.");
  2177. sendFrame164(4267);
  2178. break;
  2179. }
  2180. c.dialogueAction = 0;
  2181. c.nextChat = 0;
  2182. }
  2183.  
  2184. public void refreshSkill(int i) {
  2185. switch (i) {
  2186. case 0:
  2187. sendFrame126("" + c.playerLevel[0] + "", 4004);
  2188. sendFrame126("" + getLevelForXP(c.playerXP[0]) + "", 4005);
  2189. sendFrame126("" + c.playerXP[0] + "", 4044);
  2190. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[0]) + 1) + "", 4045);
  2191. break;
  2192.  
  2193. case 1:
  2194. sendFrame126("" + c.playerLevel[1] + "", 4008);
  2195. sendFrame126("" + getLevelForXP(c.playerXP[1]) + "", 4009);
  2196. sendFrame126("" + c.playerXP[1] + "", 4056);
  2197. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[1]) + 1) + "", 4057);
  2198. break;
  2199.  
  2200. case 2:
  2201. sendFrame126("" + c.playerLevel[2] + "", 4006);
  2202. sendFrame126("" + getLevelForXP(c.playerXP[2]) + "", 4007);
  2203. sendFrame126("" + c.playerXP[2] + "", 4050);
  2204. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[2]) + 1) + "", 4051);
  2205. break;
  2206.  
  2207. case 3:
  2208. sendFrame126("" + c.playerLevel[3] + "", 4016);
  2209. sendFrame126("" + getLevelForXP(c.playerXP[3]) + "", 4017);
  2210. sendFrame126("" + c.playerXP[3] + "", 4080);
  2211. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[3])+1) + "", 4081);
  2212. break;
  2213.  
  2214. case 4:
  2215. sendFrame126("" + c.playerLevel[4] + "", 4010);
  2216. sendFrame126("" + getLevelForXP(c.playerXP[4]) + "", 4011);
  2217. sendFrame126("" + c.playerXP[4] + "", 4062);
  2218. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[4]) + 1) + "", 4063);
  2219. break;
  2220.  
  2221. case 5:
  2222. sendFrame126("" + c.playerLevel[5] + "", 4012);
  2223. sendFrame126("" + getLevelForXP(c.playerXP[5]) + "", 4013);
  2224. sendFrame126("" + c.playerXP[5] + "", 4068);
  2225. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[5]) + 1) + "", 4069);
  2226. sendFrame126("" +c.playerLevel[5]+"/"+getLevelForXP(c.playerXP[5])+"", 687);//Prayer frame
  2227. break;
  2228.  
  2229. case 6:
  2230. sendFrame126("" + c.playerLevel[6] + "", 4014);
  2231. sendFrame126("" + getLevelForXP(c.playerXP[6]) + "", 4015);
  2232. sendFrame126("" + c.playerXP[6] + "", 4074);
  2233. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[6]) + 1) + "", 4075);
  2234. break;
  2235.  
  2236. case 7:
  2237. sendFrame126("" + c.playerLevel[7] + "", 4034);
  2238. sendFrame126("" + getLevelForXP(c.playerXP[7]) + "", 4035);
  2239. sendFrame126("" + c.playerXP[7] + "", 4134);
  2240. sendFrame126("" +getXPForLevel(getLevelForXP(c.playerXP[7]) + 1) + "", 4135);
  2241. break;
  2242.  
  2243. case 8:
  2244. sendFrame126("" + c.playerLevel[8] + "", 4038);
  2245. sendFrame126("" + getLevelForXP(c.playerXP[8]) + "", 4039);
  2246. sendFrame126("" + c.playerXP[8] + "", 4146);
  2247. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[8]) + 1) + "", 4147);
  2248. break;
  2249.  
  2250. case 9:
  2251. sendFrame126("" + c.playerLevel[9] + "", 4026);
  2252. sendFrame126("" + getLevelForXP(c.playerXP[9]) + "", 4027);
  2253. sendFrame126("" + c.playerXP[9] + "", 4110);
  2254. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[9]) + 1) + "", 4111);
  2255. break;
  2256.  
  2257. case 10:
  2258. sendFrame126("" + c.playerLevel[10] + "", 4032);
  2259. sendFrame126("" + getLevelForXP(c.playerXP[10]) + "", 4033);
  2260. sendFrame126("" + c.playerXP[10] + "", 4128);
  2261. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[10]) + 1) + "", 4129);
  2262. break;
  2263.  
  2264. case 11:
  2265. sendFrame126("" + c.playerLevel[11] + "", 4036);
  2266. sendFrame126("" + getLevelForXP(c.playerXP[11]) + "", 4037);
  2267. sendFrame126("" + c.playerXP[11] + "", 4140);
  2268. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[11]) + 1) + "", 4141);
  2269. break;
  2270.  
  2271. case 12:
  2272. sendFrame126("" + c.playerLevel[12] + "", 4024);
  2273. sendFrame126("" + getLevelForXP(c.playerXP[12]) + "", 4025);
  2274. sendFrame126("" + c.playerXP[12] + "", 4104);
  2275. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[12]) + 1) + "", 4105);
  2276. break;
  2277.  
  2278. case 13:
  2279. sendFrame126("" + c.playerLevel[13] + "", 4030);
  2280. sendFrame126("" + getLevelForXP(c.playerXP[13]) + "", 4031);
  2281. sendFrame126("" + c.playerXP[13] + "", 4122);
  2282. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[13]) + 1) + "", 4123);
  2283. break;
  2284.  
  2285. case 14:
  2286. sendFrame126("" + c.playerLevel[14] + "", 4028);
  2287. sendFrame126("" + getLevelForXP(c.playerXP[14]) + "", 4029);
  2288. sendFrame126("" + c.playerXP[14] + "", 4116);
  2289. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[14]) + 1)+ "", 4117);
  2290. break;
  2291.  
  2292. case 15:
  2293. sendFrame126("" + c.playerLevel[15] + "", 4020);
  2294. sendFrame126("" + getLevelForXP(c.playerXP[15]) + "", 4021);
  2295. sendFrame126("" + c.playerXP[15] + "", 4092);
  2296. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[15]) + 1) + "", 4093);
  2297. break;
  2298.  
  2299. case 16:
  2300. sendFrame126("" + c.playerLevel[16] + "", 4018);
  2301. sendFrame126("" + getLevelForXP(c.playerXP[16]) + "", 4019);
  2302. sendFrame126("" + c.playerXP[16] + "", 4086);
  2303. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[16]) + 1) + "", 4087);
  2304. break;
  2305.  
  2306. case 17:
  2307. sendFrame126("" + c.playerLevel[17] + "", 4022);
  2308. sendFrame126("" + getLevelForXP(c.playerXP[17]) + "", 4023);
  2309. sendFrame126("" + c.playerXP[17] + "", 4098);
  2310. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[17]) + 1) + "", 4099);
  2311. break;
  2312.  
  2313. case 18:
  2314. sendFrame126("" + c.playerLevel[18] + "", 12166);
  2315. sendFrame126("" + getLevelForXP(c.playerXP[18]) + "", 12167);
  2316. sendFrame126("" + c.playerXP[18] + "", 12171);
  2317. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[18]) + 1) + "", 12172);
  2318. break;
  2319.  
  2320. case 19:
  2321. sendFrame126("" + c.playerLevel[19] + "", 13926);
  2322. sendFrame126("" + getLevelForXP(c.playerXP[19]) + "", 13927);
  2323. sendFrame126("" + c.playerXP[19] + "", 13921);
  2324. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[19]) + 1) + "", 13922);
  2325. break;
  2326.  
  2327. case 20:
  2328. sendFrame126("" + c.playerLevel[20] + "", 4152);
  2329. sendFrame126("" + getLevelForXP(c.playerXP[20]) + "", 4153);
  2330. sendFrame126("" + c.playerXP[20] + "", 4157);
  2331. sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[20]) + 1) + "", 4158);
  2332. break;
  2333. }
  2334. }
  2335.  
  2336. public int getXPForLevel(int level) {
  2337. int points = 0;
  2338. int output = 0;
  2339.  
  2340. for (int lvl = 1; lvl <= level; lvl++) {
  2341. points += Math.floor((double)lvl + 300.0 * Math.pow(2.0, (double)lvl / 7.0));
  2342. if (lvl >= level)
  2343. return output;
  2344. output = (int)Math.floor(points / 4);
  2345. }
  2346. return 0;
  2347. }
  2348.  
  2349. public int getLevelForXP(int exp) {
  2350. int points = 0;
  2351. int output = 0;
  2352. if (exp > 13034430)
  2353. return 99;
  2354. for (int lvl = 1; lvl <= 99; lvl++) {
  2355. points += Math.floor((double) lvl + 300.0
  2356. * Math.pow(2.0, (double) lvl / 7.0));
  2357. output = (int) Math.floor(points / 4);
  2358. if (output >= exp) {
  2359. return lvl;
  2360. }
  2361. }
  2362. return 0;
  2363. }
  2364.  
  2365. public boolean addSkillXP(int amount, int skill){
  2366. if(c.lockedEXP == 1) {
  2367. return false;
  2368. }
  2369. if (amount+c.playerXP[skill] < 0 || c.playerXP[skill] > 200000000) {
  2370. if(c.playerXP[skill] > 200000000) {
  2371. c.playerXP[skill] = 200000000;
  2372. }
  2373. return false;
  2374. }
  2375. amount *= Config.SERVER_EXP_BONUS;
  2376. if (c.playerEquipment[c.playerRing] == 2572)
  2377. amount *= 2; //double exp when ring of wealth equipt.
  2378. if (c.xpTime > System.currentTimeMillis())
  2379. amount *= 2;
  2380. int oldLevel = getLevelForXP(c.playerXP[skill]);
  2381. c.playerXP[skill] += amount;
  2382. if (oldLevel < getLevelForXP(c.playerXP[skill])) {
  2383. if (c.playerLevel[skill] < c.getLevelForXP(c.playerXP[skill]) && skill != 3 && skill != 5)
  2384. c.playerLevel[skill] = c.getLevelForXP(c.playerXP[skill]);
  2385. levelUp(skill);
  2386. c.gfx100(199);
  2387. requestUpdates();
  2388. }
  2389. setSkillLevel(skill, c.playerLevel[skill], c.playerXP[skill]);
  2390. refreshSkill(skill);
  2391. return true;
  2392. }
  2393.  
  2394.  
  2395. public void resetBarrows() {
  2396. c.barrowsNpcs[0][1] = 0;
  2397. c.barrowsNpcs[1][1] = 0;
  2398. c.barrowsNpcs[2][1] = 0;
  2399. c.barrowsNpcs[3][1] = 0;
  2400. c.barrowsNpcs[4][1] = 0;
  2401. c.barrowsNpcs[5][1] = 0;
  2402. c.barrowsKillCount = 0;
  2403. c.randomCoffin = Misc.random(3) + 1;
  2404. }
  2405.  
  2406. public static int Barrows[] = {4708, 4710, 4712, 4714, 4716, 4718, 4720, 4722, 4724, 4726, 4728, 4730, 4732, 4734, 4736, 4738, 4745, 4747, 4749, 4751, 4753, 4755, 4757, 4759};
  2407. public static int Runes[] = {4740,558,560,565};
  2408. public static int Pots[] = {};
  2409.  
  2410. public int randomBarrows() {
  2411. return Barrows[(int)(Math.random()*Barrows.length)];
  2412. }
  2413.  
  2414. public int randomRunes() {
  2415. return Runes[(int) (Math.random()*Runes.length)];
  2416. }
  2417.  
  2418. public int randomPots() {
  2419. return Pots[(int) (Math.random()*Pots.length)];
  2420. }
  2421. /**
  2422. * Show an arrow icon on the selected player.
  2423. * @Param i - Either 0 or 1; 1 is arrow, 0 is none.
  2424. * @Param j - The player/Npc that the arrow will be displayed above.
  2425. * @Param k - Keep this set as 0
  2426. * @Param l - Keep this set as 0
  2427. */
  2428. public void drawHeadicon(int i, int j, int k, int l) {
  2429. //synchronized(c) {
  2430. c.outStream.createFrame(254);
  2431. c.outStream.writeByte(i);
  2432.  
  2433. if (i == 1 || i == 10) {
  2434. c.outStream.writeWord(j);
  2435. c.outStream.writeWord(k);
  2436. c.outStream.writeByte(l);
  2437. } else {
  2438. c.outStream.writeWord(k);
  2439. c.outStream.writeWord(l);
  2440. c.outStream.writeByte(j);
  2441. }
  2442. //}
  2443. }
  2444.  
  2445. public int getNpcId(int id) {
  2446. for(int i = 0; i < NPCHandler.maxNPCs; i++) {
  2447. if(NPCHandler.npcs[i] != null) {
  2448. if(Server.npcHandler.npcs[i].npcId == id) {
  2449. return i;
  2450. }
  2451. }
  2452. }
  2453. return -1;
  2454. }
  2455.  
  2456. public void removeObject(int x, int y) {
  2457. object(-1, x, x, 10, 10);
  2458. }
  2459.  
  2460. private void objectToRemove(int X, int Y) {
  2461. object(-1, X, Y, 10, 10);
  2462. }
  2463.  
  2464. private void objectToRemove2(int X, int Y) {
  2465. object(-1, X, Y, -1, 0);
  2466. }
  2467.  
  2468. public void removeObjects() {
  2469. objectToRemove(2638, 4688);
  2470. objectToRemove2(2635, 4693);
  2471. objectToRemove2(2634, 4693);
  2472. }
  2473.  
  2474.  
  2475. public void handleGlory(int gloryId) {
  2476. c.getDH().sendOption4("Edgeville", "Al Kharid", "Karamja", "Mage Bank");
  2477. c.usingGlory = true;
  2478. }
  2479.  
  2480. public void resetVariables() {
  2481. c.getFishing().resetFishing();
  2482. c.getCrafting().resetCrafting();
  2483. c.usingGlory = false;
  2484. c.smeltInterface = false;
  2485. c.smeltType = 0;
  2486. c.smeltAmount = 0;
  2487. c.woodcut[0] = c.woodcut[1] = c.woodcut[2] = 0;
  2488. c.mining[0] = c.mining[1] = c.mining[2] = 0;
  2489. }
  2490.  
  2491. public boolean inPitsWait() {
  2492. return c.getX() <= 2404 && c.getX() >= 2394 && c.getY() <= 5175 && c.getY() >= 5169;
  2493. }
  2494.  
  2495. public void castleWarsObjects() {
  2496. object(-1, 2373, 3119, -3, 10);
  2497. object(-1, 2372, 3119, -3, 10);
  2498. }
  2499.  
  2500. public int antiFire() {
  2501. int toReturn = 0;
  2502. if (c.antiFirePot)
  2503. toReturn++;
  2504. if (c.playerEquipment[c.playerShield] == 1540 || c.prayerActive[12] || c.playerEquipment[c.playerShield] == 11284)
  2505. toReturn++;
  2506. return toReturn;
  2507. }
  2508.  
  2509. public boolean checkForFlags() {
  2510. int[][] itemsToCheck = {{995,100000000},{35,5},{667,5},{2402,5},{746,5},{4151,150},{565,100000},{560,100000},{555,300000},{11235,10}};
  2511. for (int j = 0; j < itemsToCheck.length; j++) {
  2512. if (itemsToCheck[j][1] < c.getItems().getTotalCount(itemsToCheck[j][0]))
  2513. return true;
  2514. }
  2515. return false;
  2516. }
  2517.  
  2518. public void addStarter() {
  2519. c.getItems().addItem(995,1500000);
  2520. c.getItems().addItem(1731, 1);
  2521. c.getItems().addItem(554,200);
  2522. c.getItems().addItem(555,10000);
  2523. c.getItems().addItem(556,200);
  2524. c.getItems().addItem(558,600);
  2525. c.getItems().addItem(560,1000);
  2526. c.getItems().addItem(565,1000);
  2527. c.getItems().addItem(1381,1);
  2528. c.getItems().addItem(1323,1);
  2529. c.getItems().addItem(841,1);
  2530. c.getItems().addItem(882,500);
  2531. c.getItems().addItem(392,1000);
  2532. c.sendMessage("@dre@Use the teleports in the mage bar to get around!");
  2533.  
  2534. }
  2535.  
  2536. public int getWearingAmount() {
  2537. int count = 0;
  2538. for (int j = 0; j < c.playerEquipment.length; j++) {
  2539. if (c.playerEquipment[j] > 0)
  2540. count++;
  2541. }
  2542. return count;
  2543. }
  2544.  
  2545. public void useOperate(int itemId) {
  2546. c.skillCapeEmotes(itemId);
  2547.  
  2548. switch (itemId) {
  2549. case 1712:
  2550. case 1710:
  2551. case 1708:
  2552. case 1706:
  2553.  
  2554. handleGlory(itemId);
  2555. break;
  2556. case 11283:
  2557. case 11284:
  2558.  
  2559. if (c.playerIndex > 0) {
  2560. c.getCombat().handleDfs(c);
  2561. } else if (c.npcIndex > 0) {
  2562. c.getCombat().handleDfsNPC(c);
  2563. }
  2564. break;
  2565. case 4566:
  2566. c.startAnimation(1833);
  2567. break;
  2568. }
  2569. }
  2570.  
  2571. public void getSpeared(int otherX, int otherY) {
  2572. int x = c.absX - otherX;
  2573. int y = c.absY - otherY;
  2574. if (x > 0)
  2575. x = 1;
  2576. else if (x < 0)
  2577. x = -1;
  2578. if (y > 0)
  2579. y = 1;
  2580. else if (y < 0)
  2581. y = -1;
  2582. moveCheck(x,y);
  2583. c.lastSpear = System.currentTimeMillis();
  2584. }
  2585.  
  2586. public void moveCheck(int xMove, int yMove) {
  2587. movePlayer(c.absX + xMove, c.absY + yMove, c.heightLevel);
  2588. }
  2589.  
  2590. public int findKiller() {
  2591. int killer = c.playerId;
  2592. int damage = 0;
  2593. for (int j = 0; j < Config.MAX_PLAYERS; j++) {
  2594. if (PlayerHandler.players[j] == null)
  2595. continue;
  2596. if (j == c.playerId)
  2597. continue;
  2598. if (c.goodDistance(c.absX, c.absY, PlayerHandler.players[j].absX, PlayerHandler.players[j].absY, 40)
  2599. || c.goodDistance(c.absX, c.absY + 9400, PlayerHandler.players[j].absX, PlayerHandler.players[j].absY, 40)
  2600. || c.goodDistance(c.absX, c.absY, PlayerHandler.players[j].absX, PlayerHandler.players[j].absY + 9400, 40))
  2601. if (c.damageTaken[j] > damage) {
  2602. damage = c.damageTaken[j];
  2603. killer = j;
  2604. }
  2605. }
  2606. return killer;
  2607. }
  2608.  
  2609. public void resetTzhaar() {
  2610. c.waveId = -1;
  2611. c.tzhaarToKill = -1;
  2612. c.tzhaarKilled = -1;
  2613. c.getPA().movePlayer(2438,5168,0);
  2614. }
  2615.  
  2616. public void enterCaves() {
  2617. c.getPA().movePlayer(2413,5117, c.playerId * 4);
  2618. c.waveId = 0;
  2619. c.tzhaarToKill = -1;
  2620. c.tzhaarKilled = -1;
  2621. Server.fightCaves.spawnNextWave(c);
  2622. }
  2623.  
  2624. public void appendPoison(int damage) {
  2625. if (System.currentTimeMillis() - c.lastPoisonSip > c.poisonImmune) {
  2626. c.sendMessage("You have been poisoned.");
  2627. c.poisonDamage = damage;
  2628. }
  2629. }
  2630.  
  2631. public boolean checkForPlayer(int x, int y) {
  2632. for (Player p : PlayerHandler.players) {
  2633. if (p != null) {
  2634. if (p.getX() == x && p.getY() == y)
  2635. return true;
  2636. }
  2637. }
  2638. return false;
  2639. }
  2640.  
  2641. public void checkPouch(int i) {
  2642. if (i < 0)
  2643. return;
  2644. c.sendMessage("This pouch has " + c.pouches[i] + " rune ess in it.");
  2645. }
  2646.  
  2647. public void fillPouch(int i) {
  2648. if (i < 0)
  2649. return;
  2650. int toAdd = c.POUCH_SIZE[i] - c.pouches[i];
  2651. if (toAdd > c.getItems().getItemAmount(1436)) {
  2652. toAdd = c.getItems().getItemAmount(1436);
  2653. }
  2654. if (toAdd > c.POUCH_SIZE[i] - c.pouches[i])
  2655. toAdd = c.POUCH_SIZE[i] - c.pouches[i];
  2656. if (toAdd > 0) {
  2657. c.getItems().deleteItem(1436, toAdd);
  2658. c.pouches[i] += toAdd;
  2659. }
  2660. }
  2661.  
  2662. public void emptyPouch(int i) {
  2663. if (i < 0)
  2664. return;
  2665. int toAdd = c.pouches[i];
  2666. if (toAdd > c.getItems().freeSlots()) {
  2667. toAdd = c.getItems().freeSlots();
  2668. }
  2669. if (toAdd > 0) {
  2670. c.getItems().addItem(1436, toAdd);
  2671. c.pouches[i] -= toAdd;
  2672. }
  2673. }
  2674.  
  2675. public void fixAllBarrows() {
  2676. int totalCost = 0;
  2677. int cashAmount = c.getItems().getItemAmount(995);
  2678. for (int j = 0; j < c.playerItems.length; j++) {
  2679. boolean breakOut = false;
  2680. for (int i = 0; i < c.getItems().brokenBarrows.length; i++) {
  2681. if (c.playerItems[j]-1 == c.getItems().brokenBarrows[i][1]) {
  2682. if (totalCost + 80000 > cashAmount) {
  2683. breakOut = true;
  2684. c.sendMessage("You have run out of money.");
  2685. break;
  2686. } else {
  2687. totalCost += 80000;
  2688. }
  2689. c.playerItems[j] = c.getItems().brokenBarrows[i][0]+1;
  2690. }
  2691. }
  2692. if (breakOut)
  2693. break;
  2694. }
  2695. if (totalCost > 0)
  2696. c.getItems().deleteItem(995, c.getItems().getItemSlot(995), totalCost);
  2697. }
  2698.  
  2699. public void handleLoginText() {
  2700. c.getPA().sendFrame126("Monster Teleport", 13037);
  2701. c.getPA().sendFrame126("Minigame Teleport", 13047);
  2702. c.getPA().sendFrame126("Boss Teleport", 13055);
  2703. c.getPA().sendFrame126("Pking Teleport", 13063);
  2704. c.getPA().sendFrame126("Skill Teleport", 13071);
  2705. c.getPA().sendFrame126("Monster Teleport", 1300);
  2706. c.getPA().sendFrame126("Minigame Teleport", 1325);
  2707. c.getPA().sendFrame126("Boss Teleport", 1350);
  2708. c.getPA().sendFrame126("Pking Teleport", 1382);
  2709. c.getPA().sendFrame126("Skill Teleport", 1415);
  2710. c.getPA().sendFrame126("City Teleport", 1454);
  2711. c.getPA().sendFrame126("Skills (2)", 7457);
  2712. c.getPA().sendFrame126("Coming Soon (3)", 13097);
  2713. c.getPA().sendFrame126("Skills (2)", 13089);
  2714. c.getPA().sendFrame126("City Teleport", 13081);
  2715. c.getPA().sendFrame126("@gre@Items Kept on Death", questSends[0]);
  2716. c.getPA().sendFrame126("@gre@View Stats", questSends[1]);
  2717. c.getPA().sendFrame126("@gre@Top 10 Pkers", questSends[2]);
  2718.  
  2719.  
  2720. }
  2721. public static int[] questSends = {7332,7333, 7334, 7336, 7383, 7339, 7338, 7340, 7346, 7341, 7342, 7337, 7343, 7335, 7344, 7345, 7347, 7348};
  2722.  
  2723.  
  2724. public void handleWeaponStyle() {
  2725. if (c.fightMode == 0) {
  2726. c.getPA().sendFrame36(43, c.fightMode);
  2727. } else if (c.fightMode == 1) {
  2728. c.getPA().sendFrame36(43, 3);
  2729. } else if (c.fightMode == 2) {
  2730. c.getPA().sendFrame36(43, 1);
  2731. } else if (c.fightMode == 3) {
  2732. c.getPA().sendFrame36(43, 2);
  2733. }
  2734. }
  2735.  
  2736.  
  2737.  
  2738. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement