Advertisement
Guest User

Untitled

a guest
Nov 13th, 2012
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.66 KB | None | 0 0
  1. package server.model.players;
  2.  
  3. import java.util.LinkedList;
  4. import java.util.Queue;
  5. import java.util.concurrent.Future;
  6.  
  7. import org.apache.mina.common.IoSession;
  8.  
  9. import server.Config;
  10. import server.Server;
  11. import server.model.items.ItemAssistant;
  12. import server.model.shops.ShopAssistant;
  13. import server.net.HostList;
  14. import server.net.Packet;
  15. import server.net.StaticPacketBuilder;
  16. import server.util.Misc;
  17. import server.util.Stream;
  18. import server.model.items.Item;
  19. import server.model.players.skills.*;
  20. import server.event.EventManager;
  21. import server.event.Event;
  22. import server.event.EventContainer;
  23. import server.event.CycleEventHandler;
  24. import server.model.players.PlayerSave;
  25. import server.model.players.PlayerHandler;
  26. //import server.model.players.grimreaper;
  27.  
  28. public class Client extends Player {
  29.  
  30. public byte buffer[] = null;
  31. public Stream inStream = null, outStream = null;
  32. private IoSession session;
  33. private ItemAssistant itemAssistant = new ItemAssistant(this);
  34. private ShopAssistant shopAssistant = new ShopAssistant(this);
  35. private TradeAndDuel tradeAndDuel = new TradeAndDuel(this);
  36. private PlayerAssistant playerAssistant = new PlayerAssistant(this);
  37. private CombatAssistant combatAssistant = new CombatAssistant(this);
  38. private ActionHandler actionHandler = new ActionHandler(this);
  39. private DialogueHandler dialogueHandler = new DialogueHandler(this);
  40. private Queue<Packet> queuedPackets = new LinkedList<Packet>();
  41. private Potions potions = new Potions(this);
  42. private PotionMixing potionMixing = new PotionMixing(this);
  43. private Food food = new Food(this);
  44. private Curse curse = new Curse(this);
  45. /**
  46. * Skill instances
  47. */
  48. private Slayer slayer = new Slayer(this);
  49. private Runecrafting runecrafting = new Runecrafting(this);
  50. private Agility agility = new Agility(this);
  51. private Crafting crafting = new Crafting(this);
  52. private Smithing smith = new Smithing(this);
  53. private Prayer prayer = new Prayer(this);
  54. private Fletching fletching = new Fletching(this);
  55. private SmithingInterface smithInt = new SmithingInterface(this);
  56. private Farming farming = new Farming(this);
  57. private Thieving thieving = new Thieving(this);
  58. private Firemaking firemaking = new Firemaking(this);
  59. private Herblore herblore = new Herblore(this);
  60.  
  61. private int somejunk;
  62. public int lowMemoryVersion = 0;
  63. public int timeOutCounter = 0;
  64. public int returnCode = 2;
  65. public boolean usingClaws = false;
  66. private Future<?> currentTask;
  67.  
  68. public Client(IoSession s, int _playerId) {
  69. super(_playerId);
  70. this.session = s;
  71. synchronized(this) {
  72. outStream = new Stream(new byte[Config.BUFFER_SIZE]);
  73. outStream.currentOffset = 0;
  74. }
  75. inStream = new Stream(new byte[Config.BUFFER_SIZE]);
  76. inStream.currentOffset = 0;
  77. buffer = new byte[Config.BUFFER_SIZE];
  78. }
  79.  
  80. public void flushOutStream() {
  81. if(disconnected || outStream.currentOffset == 0) return;
  82. synchronized(this) {
  83. StaticPacketBuilder out = new StaticPacketBuilder().setBare(true);
  84. byte[] temp = new byte[outStream.currentOffset];
  85. System.arraycopy(outStream.buffer, 0, temp, 0, temp.length);
  86. out.addBytes(temp);
  87. session.write(out.toPacket());
  88. outStream.currentOffset = 0;
  89. }
  90. }
  91.  
  92. public void sendClan(String name, String message, String clan, int rights) {
  93. outStream.createFrameVarSizeWord(217);
  94. outStream.writeString(name);
  95. outStream.writeString(message);
  96. outStream.writeString(clan);
  97. outStream.writeWord(rights);
  98. outStream.endFrameVarSize();
  99. }
  100. public static PlayerSave save;
  101. public static Client cliento2;
  102.  
  103. public static final int PACKET_SIZES[] = {
  104. 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, //0
  105. 0, 0, 0, 0, 8, 0, 6, 2, 2, 0, //10
  106. 0, 2, 0, 6, 0, 12, 0, 0, 0, 0, //20
  107. 0, 0, 0, 0, 0, 8, 4, 0, 0, 2, //30
  108. 2, 6, 0, 6, 0, -1, 0, 0, 0, 0, //40
  109. 0, 0, 0, 12, 0, 0, 0, 8, 8, 12, //50
  110. 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, //60
  111. 6, 0, 2, 2, 8, 6, 0, -1, 0, 6, //70
  112. 0, 0, 0, 0, 0, 1, 4, 6, 0, 0, //80
  113. 0, 0, 0, 0, 0, 3, 0, 0, -1, 0, //90
  114. 0, 13, 0, -1, 0, 0, 0, 0, 0, 0,//100
  115. 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, //110
  116. 1, 0, 6, 0, 0, 0, -1, 0, 2, 6, //120
  117. 0, 4, 6, 8, 0, 6, 0, 0, 0, 2, //130
  118. 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, //140
  119. 0, 0, 1, 2, 0, 2, 6, 0, 0, 0, //150
  120. 0, 0, 0, 0, -1, -1, 0, 0, 0, 0,//160
  121. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //170
  122. 0, 8, 0, 3, 0, 2, 0, 0, 8, 1, //180
  123. 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, //190
  124. 2, 0, 0, 0, 0, 0, 0, 0, 4, 0, //200
  125. 4, 0, 0, 0, 7, 8, 0, 0, 10, 0, //210
  126. 0, 0, 0, 0, 0, 0, -1, 0, 6, 0, //220
  127. 1, 0, 0, 0, 6, 0, 6, 8, 1, 0, //230
  128. 0, 4, 0, 0, 0, 0, -1, 0, -1, 4,//240
  129. 0, 0, 6, 6, 0, 0, 0 //250
  130. };
  131.  
  132. public void destruct() {
  133. if(session == null)
  134. return;
  135. CycleEventHandler.getSingleton().stopEvents(this);
  136. getPA().removeFromCW();
  137. if (inPits)
  138. Server.fightPits.removePlayerFromPits(playerId);
  139. if (clanId >= 0)
  140. Server.clanChat.leaveClan(playerId, clanId);
  141. Misc.println("[DEREGISTERED]: "+playerName+"");
  142. HostList.getHostList().remove(session);
  143. disconnected = true;
  144. session.close();
  145. session = null;
  146. inStream = null;
  147. outStream = null;
  148. isActive = false;
  149. buffer = null;
  150. super.destruct();
  151. }
  152.  
  153. public boolean isAutoButton(int button) {
  154. for (int j = 0; j < autocastIds.length; j += 2) {
  155. if (autocastIds[j] == button)
  156. return true;
  157. }
  158. return false;
  159. }
  160.  
  161.  
  162. public void sendMessage(String s) {
  163. synchronized (this) {
  164. if(getOutStream() != null) {
  165. outStream.createFrameVarSize(253);
  166. outStream.writeString(s);
  167. outStream.endFrameVarSize();
  168. }
  169. }
  170. }
  171.  
  172. public void setSidebarInterface(int menuId, int form) {
  173. synchronized (this) {
  174. if(getOutStream() != null) {
  175. outStream.createFrame(71);
  176. outStream.writeWord(form);
  177. outStream.writeByteA(menuId);
  178. }
  179. }
  180. }
  181.  
  182. public void Combo() {
  183. if(Combos >= 1 && Combos <= 2) {
  184. getPA().sendFrame126("@gre@"+Combos+" Hit", 25601);
  185. } else if(Combos >= 3 && Combos <= 5) {
  186. getPA().sendFrame126("@yel@"+Combos+" Hit", 25601);
  187. } else if(Combos >= 6 && Combos <= 8) {
  188. getPA().sendFrame126("@or3@"+Combos+" Hit", 25601);
  189. } else if(Combos >= 9) {
  190. getPA().sendFrame126("@red@"+Combos+" Hit", 25601);
  191. }
  192. }
  193.  
  194. public void ComboShow() {
  195. if(underAttackBy > 0 || underAttackBy2 > 0) {
  196. getPA().walkableInterface(25600);
  197. } else {
  198. Combos = 0;
  199. }
  200. }
  201.  
  202. public void initialize() {
  203. synchronized (this) {
  204. outStream.createFrame(249);
  205. outStream.writeByteA(1); // 1 for members, zero for free
  206. outStream.writeWordBigEndianA(playerId);
  207. for (int j = 0; j < Server.playerHandler.players.length; j++) {
  208. if (j == playerId)
  209. continue;
  210. if (Server.playerHandler.players[j] != null) {
  211. if (Server.playerHandler.players[j].playerName.equalsIgnoreCase(playerName))
  212. disconnected = true;
  213. }
  214. }
  215. for (int i = 0; i < 25; i++) {
  216. getPA().setSkillLevel(i, playerLevel[i], playerXP[i]);
  217. getPA().refreshSkill(i);
  218. }
  219. for(int p = 0; p < PRAYER.length; p++) { // reset prayer glows
  220. prayerActive[p] = false;
  221. getPA().sendFrame36(PRAYER_GLOW[p], 0);
  222. }
  223. for(int p = 0; p < CURSE.length; p++) { // reset prayer glows
  224. curseActive[p] = false;
  225. getPA().sendFrame36(CURSE_GLOW[p], 0);
  226. }
  227. getPA().sendCrashFrame();
  228. getPA().sendFrame126("Monsters", 21833);
  229. getPA().sendFrame126("Minigames", 21933);
  230. getPA().sendFrame126("Bosses", 22052);
  231. getPA().sendFrame126("Pking", 22123);
  232. getPA().sendFrame126("Skilling", 22232);
  233.  
  234. getPA().sendFrame126("Monsters", 19641);
  235. getPA().sendFrame126("Minigames", 19722);
  236. getPA().sendFrame126("Bosses", 19803);
  237. getPA().sendFrame126("Pking", 19860);
  238. getPA().sendFrame126("Skilling", 20195);
  239. for(int i = 744; i <= 760; i++) { // Emote icons
  240. getPA().sendFrame36(i, 1); // 0 = off 1 = on
  241. }
  242. getPA().handleWeaponStyle();
  243. getPA().handleLoginText();
  244. accountFlagged = getPA().checkForFlags();
  245. //getPA().sendFrame36(43, fightMode-1);
  246. getPA().sendFrame36(108, 0);//resets autocast button
  247. getPA().sendFrame36(172, 1);
  248. getPA().sendFrame107(); // reset screen
  249. getPA().setChatOptions(0, 0, 0); // reset private messaging options
  250. getPA().sendFrame126("Pk Points: "+pkPoints+"", 663);
  251. getPA().sendFrame126("Kills: "+KC+"", 13136);
  252. getPA().sendFrame126("Death: "+DC+"", 673);
  253. getPA().sendFrame126("", 7332);
  254. getPA().sendFrame126("", 7333);
  255. getPA().sendFrame126("", 7334);
  256. getPA().sendFrame126("", 7336);
  257. getPA().sendFrame126("", 7383);
  258. getPA().sendFrame126("", 7339);
  259. getPA().sendFrame126("", 7338);
  260. getPA().sendFrame126("", 7340);
  261. getPA().sendFrame126("", 7346);
  262. getPA().sendFrame126("", 7341);
  263. getPA().sendFrame126("", 7342);
  264. getPA().sendFrame126("", 7337);
  265. getPA().sendFrame126("", 7343);
  266. getPA().sendFrame126("", 7335);
  267. getPA().sendFrame126("", 7344);
  268. getPA().sendFrame126("", 7345);
  269. getPA().sendFrame126("", 7347);
  270. getPA().sendFrame126("", 7348);
  271.  
  272. /*Members Quests*/
  273. getPA().sendFrame126("", 12772);
  274. getPA().sendFrame126("", 7352);
  275. getPA().sendFrame126("", 12129);
  276. getPA().sendFrame126("", 8438);
  277. getPA().sendFrame126("", 18517);
  278. getPA().sendFrame126("", 15847);
  279. getPA().sendFrame126("", 15487);
  280. getPA().sendFrame126("", 12852);
  281. getPA().sendFrame126("", 7354);
  282. getPA().sendFrame126("", 7355);
  283. getPA().sendFrame126("", 7356);
  284. getPA().sendFrame126("", 8679);
  285. getPA().sendFrame126("", 7459);
  286. getPA().sendFrame126("", 7357);
  287. getPA().sendFrame126("", 14912);
  288. getPA().sendFrame126("", 249);
  289. getPA().sendFrame126("", 6024);
  290. getPA().sendFrame126("", 191);
  291. getPA().sendFrame126("", 15235);
  292. getPA().sendFrame126("", 15592);
  293. getPA().sendFrame126("", 6987);
  294. getPA().sendFrame126("", 15098);
  295. getPA().sendFrame126("", 15352);
  296. getPA().sendFrame126("", 18306);
  297. getPA().sendFrame126("", 15499);
  298. getPA().sendFrame126("", 668);
  299. getPA().sendFrame126("", 18684);
  300. getPA().sendFrame126("", 6027);
  301. getPA().sendFrame126("", 18157);
  302. getPA().sendFrame126("", 15847);
  303. getPA().sendFrame126("", 16128);
  304. getPA().sendFrame126("", 12836);
  305. getPA().sendFrame126("", 16149);
  306. getPA().sendFrame126("", 15841);
  307. getPA().sendFrame126("", 7353);
  308. getPA().sendFrame126("", 7358);
  309. getPA().sendFrame126("", 17510);
  310. getPA().sendFrame126("", 7359);
  311. getPA().sendFrame126("", 14169);
  312. getPA().sendFrame126("", 10115);
  313. getPA().sendFrame126("", 14604);
  314. getPA().sendFrame126("", 7360);
  315. getPA().sendFrame126("", 12282);
  316. getPA().sendFrame126("", 13577);
  317. getPA().sendFrame126("", 12839);
  318. getPA().sendFrame126("", 7361);
  319. getPA().sendFrame126("", 11857);
  320. getPA().sendFrame126("", 7362);
  321. getPA().sendFrame126("", 7363);
  322. getPA().sendFrame126("", 7364);
  323. getPA().sendFrame126("", 10135);
  324. getPA().sendFrame126("", 4508);
  325. getPA().sendFrame126("", 11907);
  326. getPA().sendFrame126("", 7365);
  327. getPA().sendFrame126("", 7366);
  328. getPA().sendFrame126("", 7367);
  329. getPA().sendFrame126("", 13389);
  330. getPA().sendFrame126("", 7368);
  331. getPA().sendFrame126("", 11132);
  332. getPA().sendFrame126("", 7369);
  333. getPA().sendFrame126("", 12389);
  334. getPA().sendFrame126("", 13974);
  335. getPA().sendFrame126("", 7370);
  336. getPA().sendFrame126("", 8137);
  337. getPA().sendFrame126("", 7371);
  338. getPA().sendFrame126("", 12345);
  339. getPA().sendFrame126("", 7372);
  340. getPA().sendFrame126("", 8115);
  341. getPA().sendFrame126("", 8576);
  342. getPA().sendFrame126("", 12139);
  343. getPA().sendFrame126("", 7373);
  344. getPA().sendFrame126("", 7374);
  345. getPA().sendFrame126("", 8969);
  346. getPA().sendFrame126("", 7375);
  347. getPA().sendFrame126("", 7376);
  348. getPA().sendFrame126("", 1740);
  349. getPA().sendFrame126("", 3278);
  350. getPA().sendFrame126("", 7378);
  351. getPA().sendFrame126("", 6518);
  352. getPA().sendFrame126("", 7379);
  353. getPA().sendFrame126("", 7380);
  354. getPA().sendFrame126("", 7381);
  355. getPA().sendFrame126("", 11858);
  356. getPA().sendFrame126("", 9927);
  357. getPA().sendFrame126("", 7349);
  358. getPA().sendFrame126("", 7350);
  359. getPA().sendFrame126("", 7351);
  360. getPA().sendFrame126("", 13356);
  361. /*END OF ALL QUESTS*/
  362. setSidebarInterface(1, 3917);
  363. setSidebarInterface(2, 638);
  364. setSidebarInterface(3, 3213);
  365. setSidebarInterface(4, 1644);
  366. if(prayerBook == 0) {
  367. setSidebarInterface(5, 5608);
  368. } else if(prayerBook == 1) {
  369. setSidebarInterface(5, 21356);
  370. }
  371. if(playerMagicBook == 0) {
  372. setSidebarInterface(6, 1151);
  373. } else if(playerMagicBook == 1) {
  374. setSidebarInterface(6, 12855);
  375. } else if(playerMagicBook == 2) {
  376. setSidebarInterface(6, 16640);
  377. }
  378. if (splitChat == false) {
  379. getPA().sendFrame36(502, 0);
  380. getPA().sendFrame36(287, 0);
  381. }
  382. if (splitChat == true) {
  383. getPA().sendFrame36(502, 1);
  384. getPA().sendFrame36(287, 1);
  385. }
  386. correctCoordinates();
  387. setSidebarInterface(7, 18128);
  388. setSidebarInterface(8, 5065);
  389. setSidebarInterface(9, 5715);
  390. setSidebarInterface(10, 2449);
  391. //setSidebarInterface(11, 4445); // wrench tab
  392. setSidebarInterface(11, 904); // wrench tab
  393. setSidebarInterface(12, 147); // run tab
  394. setSidebarInterface(13, -1);
  395. setSidebarInterface(0, 2423);
  396. sendMessage("<col=16711680>Welcome to "+Config.SERVER_NAME);
  397. sendMessage("Please remember to vote so we can have more players!");
  398. getPA().showOption(4, 0,"Trade With", 3);
  399. getPA().showOption(5, 0,"Follow", 4);
  400. getItems().resetItems(3214);
  401. getItems().sendWeapon(playerEquipment[playerWeapon], getItems ().getItemName(playerEquipment[playerWeapon]));
  402. getItems().resetBonus();
  403. getItems().getBonus();
  404. getItems().writeBonus();
  405. getItems().setEquipment(playerEquipment[playerHat],1,playerHat);
  406. getItems().setEquipment(playerEquipment[playerCape],1,playerCape);
  407. getItems().setEquipment(playerEquipment[playerAmulet],1,playerAmulet);
  408. getItems().setEquipment(playerEquipment[playerArrows],playerEquipmentN[playerArrows],playerArrows);
  409. getItems().setEquipment(playerEquipment[playerChest],1,playerChest);
  410. getItems().setEquipment(playerEquipment[playerShield],1,playerShield);
  411. getItems().setEquipment(playerEquipment[playerLegs],1,playerLegs);
  412. getItems().setEquipment(playerEquipment[playerHands],1,playerHands);
  413. getItems().setEquipment(playerEquipment[playerFeet],1,playerFeet);
  414. getItems().setEquipment(playerEquipment[playerRing],1,playerRing);
  415. getItems().setEquipment(playerEquipment[playerWeapon],playerEquipmentN[playerWeapon],playerWeapon);
  416. getCombat().getPlayerAnimIndex(getItems().getItemName(playerEquipment[playerWeapon]).toLowerCase());
  417. getPA().logIntoPM();
  418. getItems().addSpecialBar(playerEquipment[playerWeapon]);
  419. saveTimer = Config.SAVE_TIMER;
  420. saveCharacter = true;
  421. Misc.println("[REGISTERED]: "+playerName+"");
  422. handler.updatePlayer(this, outStream);
  423. handler.updateNPC(this, outStream);
  424. flushOutStream();
  425. getPA().clearClanChat();
  426. follow(0, 3, 1);
  427. if (addStarter)
  428. getPA().addStarter();
  429. if (autoRet == 1)
  430. getPA().sendFrame36(172, 1);
  431. else
  432. getPA().sendFrame36(172, 0);
  433. }
  434. }
  435.  
  436.  
  437.  
  438. public void update() {
  439. synchronized (this) {
  440. handler.updatePlayer(this, outStream);
  441. handler.updateNPC(this, outStream);
  442. flushOutStream();
  443. }
  444. }
  445.  
  446. public void applyFollowing()
  447. {
  448. if (follow2 > 0)
  449. {
  450. //Client p = Server.playerHandler.client[followId];
  451. Client p = (Client) Server.playerHandler.players[follow2];
  452. if (p != null)
  453. {
  454. if (isDead)
  455. {
  456. follow(0, 3, 1);
  457. return;
  458. }
  459. if (!goodDistance(p.absX, p.absY, absX, absY, 25))
  460. {
  461. follow(0, 3, 1);
  462. return;
  463. }
  464. }
  465. else if (p == null)
  466. {
  467. follow(0, 3, 1);
  468. }
  469. }
  470. else if (follow2 > 0)
  471. {
  472. //Server.npcHandler.npcs.NPC npc = Server.npcHandler.npcs[followId2];
  473. if (Server.npcHandler.npcs[followId2] != null)
  474. {
  475. if (Server.npcHandler.npcs[followId2].isDead)
  476. {
  477. follow(0, 3, 1);
  478. return;
  479. }
  480. if (!goodDistance(Server.npcHandler.npcs[followId2].absX, Server.npcHandler.npcs[followId2].absY, absX, absY, 25))
  481. {
  482. follow(0, 3, 1);
  483. return;
  484. }
  485. }
  486. else if (Server.npcHandler.npcs[followId2] == null)
  487. {
  488. follow(0, 3, 1);
  489. }
  490. }
  491. }
  492.  
  493. public int followDistance = 0;
  494.  
  495. public void follow(int slot, int type, int distance)
  496. {
  497. if (slot > 0 && slot == follow2 && type == 1 && follow2 > 0 && followDistance != distance && (/*usingOtherRangeWeapons || */usingBow || usingMagic))
  498. return;
  499. else if (slot > 0 && slot == followId2 && type == 0 && followId2 > 0 && followDistance >= distance && distance != 1)
  500. return;
  501. //else if (type == 3 && followId2 == 0 && follow2 == 0)
  502. //return;
  503. outStream.createFrame(174);
  504. if (freezeTimer > 0) {
  505. outStream.writeWord(0);
  506. } else {
  507. outStream.writeWord(slot);
  508. if (type == 0) {
  509. follow2 = 0;
  510. followId2 = slot;
  511. faceUpdate(followId2);
  512. } else if (type == 1) {
  513. followId2 = 0;
  514. follow2 = slot;
  515. faceUpdate(32768 + follow2);
  516. } else if (type == 3) {
  517. followId2 = 0;
  518. follow2 = 0;
  519. followDistance = 0;
  520. faceUpdate(65535);
  521. }
  522. followDistance = distance;
  523. }
  524. outStream.writeByte(type);
  525. outStream.writeWord(distance);
  526. }
  527.  
  528. public void logout() {
  529. synchronized (this) {
  530. if(System.currentTimeMillis() - logoutDelay > 10000) {
  531. CycleEventHandler.getSingleton().stopEvents(this);
  532. outStream.createFrame(109);
  533. properLogout = true;
  534. } else {
  535. sendMessage("You must wait a few seconds from being out of combat to logout.");
  536. }
  537. }
  538. }
  539.  
  540. public int packetSize = 0, packetType = -1;
  541.  
  542. public void process() {
  543. getPA().sendFrame126("Players Online: "+PlayerHandler.getPlayerCount(), 640);
  544. getCombat().handlePrayerDrain();
  545. if (smeltTimer > 0 && smeltType > 0) {
  546. smeltTimer--;
  547. } else if (smeltTimer == 0 && smeltType > 0) {
  548. getSmithing().smelt(smeltType);
  549. }
  550. if (System.currentTimeMillis() - lastPoison > 20000 && poisonDamage > 0) {
  551. int damage = poisonDamage/2;
  552. if (damage > 0) {
  553. sendMessage("Applying poison damage.");
  554. if (!getHitUpdateRequired()) {
  555. setHitUpdateRequired(true);
  556. setHitDiff(damage);
  557. updateRequired = true;
  558. poisonMask = 1;
  559. } else if (!getHitUpdateRequired2()) {
  560. setHitUpdateRequired2(true);
  561. setHitDiff2(damage);
  562. updateRequired = true;
  563. poisonMask = 2;
  564. }
  565. lastPoison = System.currentTimeMillis();
  566. poisonDamage--;
  567. dealDamage(damage);
  568. } else {
  569. poisonDamage = -1;
  570. sendMessage("You are no longer poisoned.");
  571. }
  572. }
  573.  
  574. if(System.currentTimeMillis() - specDelay > Config.INCREASE_SPECIAL_AMOUNT) {
  575. specDelay = System.currentTimeMillis();
  576. if(specAmount < 10) {
  577. specAmount += .5;
  578. if (specAmount > 10)
  579. specAmount = 10;
  580. getItems().addSpecialBar(playerEquipment[playerWeapon]);
  581. }
  582. }
  583.  
  584. if(clawDelay > 0) {
  585. clawDelay--;
  586. }
  587. if(clawDelay == 1) {
  588. double damage4 = 0;
  589. if(npcIndex > 0) {
  590. getCombat().applyNpcMeleeDamage(npcIndex, 1, previousDamage / 2);
  591. }
  592. if(playerIndex > 0) {
  593. getCombat().applyPlayerMeleeDamage(playerIndex, 1, previousDamage / 2);
  594. }
  595. damage4 = previousDamage % 2;
  596. if(damage4 >= 0.001) {
  597. previousDamage = previousDamage + 1;
  598. damage4 = 0;
  599. }
  600. if(npcIndex > 0) {
  601. getCombat().applyNpcMeleeDamage(npcIndex, 2, previousDamage);
  602. }
  603. if(playerIndex > 0) {
  604. getCombat().applyPlayerMeleeDamage(playerIndex, 2, previousDamage);
  605. }
  606. clawDelay = 0;
  607. specEffect = 0;
  608. previousDamage = 0;
  609. usingClaws = false;
  610. }
  611.  
  612. applyFollowing();
  613. if(followId > 0) {
  614. getPA().followPlayer();
  615. } else if (followId2 > 0) {
  616. getPA().followNpc();
  617. }
  618.  
  619. if(System.currentTimeMillis() - singleCombatDelay > 3300) {
  620. underAttackBy = 0;
  621. }
  622. if (System.currentTimeMillis() - singleCombatDelay2 > 3300) {
  623. underAttackBy2 = 0;
  624. }
  625.  
  626. if(System.currentTimeMillis() - restoreStatsDelay > 60000) {
  627. restoreStatsDelay = System.currentTimeMillis();
  628. for (int level = 0; level < playerLevel.length; level++) {
  629. if (playerLevel[level] < getLevelForXP(playerXP[level])) {
  630. if(level != 5) { // prayer doesn't restore
  631. playerLevel[level] += 1;
  632. getPA().setSkillLevel(level, playerLevel[level], playerXP[level]);
  633. getPA().refreshSkill(level);
  634. }
  635. } else if (playerLevel[level] > getLevelForXP(playerXP[level])) {
  636. playerLevel[level] -= 1;
  637. getPA().setSkillLevel(level, playerLevel[level], playerXP[level]);
  638. getPA().refreshSkill(level);
  639. }
  640. }
  641. }
  642.  
  643. if(!hasMultiSign && inMulti()) {
  644. hasMultiSign = true;
  645. getPA().multiWay(1);
  646. }
  647.  
  648. if(hasMultiSign && !inMulti()) {
  649. hasMultiSign = false;
  650. getPA().multiWay(-1);
  651. }
  652.  
  653. if(skullTimer > 0) {
  654. skullTimer--;
  655. if(skullTimer == 1) {
  656. isSkulled = false;
  657. attackedPlayers.clear();
  658. headIconPk = -1;
  659. skullTimer = -1;
  660. getPA().requestUpdates();
  661. }
  662. }
  663.  
  664. if(isDead && respawnTimer == -6) {
  665. getPA().applyDead();
  666. //getPA().handleDeathsActions();
  667. }
  668.  
  669. if(respawnTimer == 7) {
  670. respawnTimer = -6;
  671. getPA().giveLife();
  672. } else if(respawnTimer == 12) {
  673. respawnTimer--;
  674. startAnimation(0x900);
  675. poisonDamage = -1;
  676. }
  677.  
  678. if(respawnTimer > -6) {
  679. respawnTimer--;
  680. }
  681. if(freezeTimer > -6) {
  682. freezeTimer--;
  683. if (frozenBy > 0) {
  684. if (Server.playerHandler.players[frozenBy] == null) {
  685. freezeTimer = -1;
  686. frozenBy = -1;
  687. } else if (!goodDistance(absX, absY, Server.playerHandler.players[frozenBy].absX, Server.playerHandler.players[frozenBy].absY, 20)) {
  688. freezeTimer = -1;
  689. frozenBy = -1;
  690. }
  691. }
  692. }
  693.  
  694. if(hitDelay > 0) {
  695. hitDelay--;
  696. }
  697.  
  698. if(teleTimer > 0) {
  699. teleTimer--;
  700. if (!isDead) {
  701. if(teleTimer == 1 && newLocation > 0) {
  702. teleTimer = 0;
  703. getPA().changeLocation();
  704. }
  705. if(teleTimer == 5) {
  706. teleTimer--;
  707. getPA().processTeleport();
  708. }
  709. if(teleTimer == 9 && teleGfx > 0) {
  710. teleTimer--;
  711. gfx100(teleGfx);
  712. }
  713. } else {
  714. teleTimer = 0;
  715. }
  716. }
  717.  
  718. if(hitDelay == 1) {
  719. if(oldNpcIndex > 0) {
  720. getCombat().delayedHit(oldNpcIndex);
  721. }
  722. if(oldPlayerIndex > 0) {
  723. getCombat().playerDelayedHit(oldPlayerIndex);
  724. }
  725. }
  726.  
  727. if(attackTimer > 0) {
  728. attackTimer--;
  729. }
  730.  
  731. if(attackTimer == 1){
  732. if(npcIndex > 0 && clickNpcType == 0) {
  733. getCombat().attackNpc(npcIndex);
  734. }
  735. if(playerIndex > 0) {
  736. getCombat().attackPlayer(playerIndex);
  737. }
  738. } else if (attackTimer <= 0 && (npcIndex > 0 || playerIndex > 0)) {
  739. if (npcIndex > 0) {
  740. attackTimer = 0;
  741. getCombat().attackNpc(npcIndex);
  742. } else if (playerIndex > 0) {
  743. attackTimer = 0;
  744. getCombat().attackPlayer(playerIndex);
  745. }
  746. }
  747.  
  748. if(timeOutCounter > Config.TIMEOUT) {
  749. disconnected = true;
  750. }
  751.  
  752. timeOutCounter++;
  753. }
  754.  
  755. public void updateWalkEntities() {
  756. if(inWild()) {
  757. int modY = absY > 6400 ? absY - 6400 : absY;
  758. wildLevel = (((modY - 3520) / 8) + 1);
  759. getPA().walkableInterface(197);
  760. if(Config.SINGLE_AND_MULTI_ZONES) {
  761. if(inMulti()) {
  762. getPA().sendFrame126("@yel@Level: "+wildLevel, 199);
  763. } else {
  764. getPA().sendFrame126("@yel@Level: "+wildLevel, 199);
  765. }
  766. } else {
  767. getPA().multiWay(-1);
  768. getPA().sendFrame126("@yel@Level: "+wildLevel, 199);
  769. }
  770. getPA().showOption(3, 0, "Attack", 1);
  771. } else if (inDuelArena()) {
  772. getPA().walkableInterface(201);
  773. if(duelStatus == 5) {
  774. getPA().showOption(3, 0, "Attack", 1);
  775. } else {
  776. getPA().showOption(3, 0, "Challenge", 1);
  777. }
  778. } else if(inBarrows()){
  779. //getPA().sendFrame99(2);
  780. getPA().sendFrame126("Kill Count: "+barrowsKillCount, 4536);
  781. getPA().walkableInterface(4535);
  782. } else if(InZammy()){
  783. getPA().walkableInterface(12418);
  784. getPA().sendFrame36(166,1);
  785. } else if (inCwGame || inPits) {
  786. getPA().showOption(3, 0, "Attack", 1);
  787. } else if (getPA().inPitsWait()) {
  788. getPA().showOption(3, 0, "Null", 1);
  789. } else if (gwdCoords()) {
  790. getPA().walkableInterface(21346);
  791. }
  792. if (!inBarrows() && !InZammy() && !inWild() && !inDuelArena() && !inCwGame && !inPits && !getPA().inPitsWait() && !gwdCoords()) {
  793. getPA().walkableInterface(-1);
  794. }
  795. }
  796.  
  797. public void setCurrentTask(Future<?> task) {
  798. currentTask = task;
  799. }
  800.  
  801. public Future<?> getCurrentTask() {
  802. return currentTask;
  803. }
  804.  
  805. public synchronized Stream getInStream() {
  806. return inStream;
  807. }
  808.  
  809. public synchronized int getPacketType() {
  810. return packetType;
  811. }
  812.  
  813. public synchronized int getPacketSize() {
  814. return packetSize;
  815. }
  816.  
  817. public synchronized Stream getOutStream() {
  818. return outStream;
  819. }
  820.  
  821. public ItemAssistant getItems() {
  822. return itemAssistant;
  823. }
  824.  
  825. public PlayerAssistant getPA() {
  826. return playerAssistant;
  827. }
  828.  
  829. public DialogueHandler getDH() {
  830. return dialogueHandler;
  831. }
  832.  
  833. public ShopAssistant getShops() {
  834. return shopAssistant;
  835. }
  836.  
  837. public TradeAndDuel getTradeAndDuel() {
  838. return tradeAndDuel;
  839. }
  840.  
  841. public CombatAssistant getCombat() {
  842. return combatAssistant;
  843. }
  844.  
  845. public ActionHandler getActions() {
  846. return actionHandler;
  847. }
  848.  
  849. public IoSession getSession() {
  850. return session;
  851. }
  852.  
  853. public Potions getPotions() {
  854. return potions;
  855. }
  856.  
  857. public PotionMixing getPotMixing() {
  858. return potionMixing;
  859. }
  860.  
  861. public Food getFood() {
  862. return food;
  863. }
  864.  
  865. /**
  866. * Skill Constructors
  867. */
  868. public Slayer getSlayer() {
  869. return slayer;
  870. }
  871.  
  872. public Runecrafting getRunecrafting() {
  873. return runecrafting;
  874. }
  875.  
  876. public Agility getAgility() {
  877. return agility;
  878. }
  879.  
  880. public Crafting getCrafting() {
  881. return crafting;
  882. }
  883.  
  884. public Smithing getSmithing() {
  885. return smith;
  886. }
  887.  
  888. public Farming getFarming() {
  889. return farming;
  890. }
  891.  
  892. public Thieving getThieving() {
  893. return thieving;
  894. }
  895.  
  896. public Herblore getHerblore() {
  897. return herblore;
  898. }
  899.  
  900. public Firemaking getFiremaking() {
  901. return firemaking;
  902. }
  903.  
  904. public SmithingInterface getSmithingInt() {
  905. return smithInt;
  906. }
  907.  
  908. public Prayer getPrayer() {
  909. return prayer;
  910. }
  911.  
  912. public Curse getCurse() {
  913. return curse;
  914. }
  915.  
  916. public Fletching getFletching() {
  917. return fletching;
  918. }
  919.  
  920. /**
  921. * End of Skill Constructors
  922. */
  923.  
  924. public void queueMessage(Packet arg1) {
  925. synchronized(queuedPackets) {
  926. //if (arg1.getId() != 41)
  927. queuedPackets.add(arg1);
  928. //else
  929. //processPacket(arg1);
  930. }
  931. }
  932.  
  933. public synchronized boolean processQueuedPackets() {
  934. Packet p = null;
  935. synchronized(queuedPackets) {
  936. p = queuedPackets.poll();
  937. }
  938. if(p == null) {
  939. return false;
  940. }
  941. inStream.currentOffset = 0;
  942. packetType = p.getId();
  943. packetSize = p.getLength();
  944. inStream.buffer = p.getData();
  945. if(packetType > 0) {
  946. //sendMessage("PacketType: " + packetType);
  947. PacketHandler.processPacket(this, packetType, packetSize);
  948. }
  949. timeOutCounter = 0;
  950. return true;
  951. }
  952.  
  953. public synchronized boolean processPacket(Packet p) {
  954. synchronized (this) {
  955. if(p == null) {
  956. return false;
  957. }
  958. inStream.currentOffset = 0;
  959. packetType = p.getId();
  960. packetSize = p.getLength();
  961. inStream.buffer = p.getData();
  962. if(packetType > 0) {
  963. //sendMessage("PacketType: " + packetType);
  964. PacketHandler.processPacket(this, packetType, packetSize);
  965. }
  966. timeOutCounter = 0;
  967. return true;
  968. }
  969. }
  970.  
  971.  
  972. public void correctCoordinates() {
  973. if (inPcGame()) {
  974. getPA().movePlayer(2657, 2639, 0);
  975. }
  976. if (inFightCaves()) {
  977. getPA().movePlayer(absX, absY, playerId * 4);
  978. sendMessage("Your wave will start in 10 seconds.");
  979. EventManager.getSingleton().addEvent(new Event() {
  980. public void execute(EventContainer c) {
  981. Server.fightCaves.spawnNextWave((Client)Server.playerHandler.players[playerId]);
  982. c.stop();
  983. }
  984. }, 10000);
  985.  
  986. }
  987.  
  988. }
  989.  
  990. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement