Advertisement
Guest User

Untitled

a guest
May 21st, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 83.22 KB | None | 0 0
  1. package com.rs.game.player;
  2.  
  3. import java.net.InetAddress;
  4. import java.net.UnknownHostException;
  5. import java.util.ArrayList;
  6. import java.util.Collections;
  7. import java.util.Date;
  8. import java.util.LinkedList;
  9. import java.util.List;
  10. import java.util.concurrent.ConcurrentLinkedQueue;
  11. import java.util.concurrent.CopyOnWriteArrayList;
  12. import java.util.concurrent.TimeUnit;
  13.  
  14. import com.rs.Settings;
  15. import com.rs.cores.CoresManager;
  16. import com.rs.game.Animation;
  17. import com.rs.game.Entity;
  18. import com.rs.game.ForceTalk;
  19. import com.rs.game.Graphics;
  20. import com.rs.game.Hit;
  21. import com.rs.game.Hit.HitLook;
  22. import com.rs.game.World;
  23. import com.rs.game.WorldObject;
  24. import com.rs.game.WorldTile;
  25. import com.rs.game.item.FloorItem;
  26. import com.rs.game.item.Item;
  27. import com.rs.game.minigames.clanwars.FfaZone;
  28. import com.rs.game.minigames.clanwars.WarControler;
  29. import com.rs.game.minigames.duel.DuelArena;
  30. import com.rs.game.minigames.duel.DuelRules;
  31. import com.rs.game.npc.NPC;
  32. import com.rs.game.npc.familiar.Familiar;
  33. import com.rs.game.npc.godwars.zaros.Nex;
  34. import com.rs.game.npc.pet.Pet;
  35. import com.rs.game.player.actions.PlayerCombat;
  36. import com.rs.game.player.actions.Slayer.Master;
  37. import com.rs.game.player.actions.Slayer.SlayerTask;
  38. import com.rs.game.player.content.FriendChatsManager;
  39. import com.rs.game.player.content.Notes;
  40. import com.rs.game.player.content.Pots;
  41. import com.rs.game.player.content.SkillCapeCustomizer;
  42. import com.rs.game.player.content.pet.PetManager;
  43. import com.rs.game.player.controlers.CorpBeastControler;
  44. import com.rs.game.player.controlers.CrucibleControler;
  45. import com.rs.game.player.controlers.DTControler;
  46. import com.rs.game.player.controlers.FightCaves;
  47. import com.rs.game.player.controlers.FightKiln;
  48. import com.rs.game.player.controlers.GodWars;
  49. import com.rs.game.player.controlers.NomadsRequiem;
  50. import com.rs.game.player.controlers.QueenBlackDragonController;
  51. import com.rs.game.player.controlers.Wilderness;
  52. import com.rs.game.player.controlers.ZGDControler;
  53. import com.rs.game.player.controlers.castlewars.CastleWarsPlaying;
  54. import com.rs.game.player.controlers.castlewars.CastleWarsWaiting;
  55. import com.rs.game.player.controlers.fightpits.FightPitsArena;
  56. import com.rs.game.player.controlers.pestcontrol.PestControlGame;
  57. import com.rs.game.player.controlers.pestcontrol.PestControlLobby;
  58. import com.rs.game.tasks.WorldTask;
  59. import com.rs.game.tasks.WorldTasksManager;
  60. import com.rs.net.Session;
  61. import com.rs.net.decoders.WorldPacketsDecoder;
  62. import com.rs.net.decoders.handlers.ButtonHandler;
  63. import com.rs.net.encoders.WorldPacketsEncoder;
  64. import com.rs.utils.IsaacKeyPair;
  65. import com.rs.utils.Logger;
  66. import com.rs.utils.MachineInformation;
  67. import com.rs.utils.PkRank;
  68. import com.rs.utils.SerializableFilesManager;
  69. import com.rs.utils.Utils;
  70.  
  71. public class Player extends Entity {
  72.  
  73. public static final int TELE_MOVE_TYPE = 127, WALK_MOVE_TYPE = 1,
  74. RUN_MOVE_TYPE = 2;
  75.  
  76. private static final long serialVersionUID = 2011932556974180375L;
  77.  
  78. // transient stuff
  79. private transient String username;
  80. private transient Session session;
  81. private transient boolean clientLoadedMapRegion;
  82. private transient int displayMode;
  83. private transient int screenWidth;
  84. private transient int screenHeight;
  85. private transient InterfaceManager interfaceManager;
  86. private transient DialogueManager dialogueManager;
  87. private transient HintIconsManager hintIconsManager;
  88. private transient ActionManager actionManager;
  89. private transient CutscenesManager cutscenesManager;
  90. private transient PriceCheckManager priceCheckManager;
  91. private transient CoordsEvent coordsEvent;
  92. private transient FriendChatsManager currentFriendChat;
  93. private transient Trade trade;
  94. private transient DuelRules lastDuelRules;
  95. private transient IsaacKeyPair isaacKeyPair;
  96. private transient Pet pet;
  97.  
  98. // used for packets logic
  99. private transient ConcurrentLinkedQueue<LogicPacket> logicPackets;
  100.  
  101. // used for update
  102. private transient LocalPlayerUpdate localPlayerUpdate;
  103. private transient LocalNPCUpdate localNPCUpdate;
  104.  
  105. private int temporaryMovementType;
  106. private boolean updateMovementType;
  107.  
  108. // player stages
  109. private transient boolean started;
  110. private transient boolean running;
  111.  
  112. private transient long packetsDecoderPing;
  113. private transient boolean resting;
  114. private transient boolean canPvp;
  115. private transient boolean cantTrade;
  116. private transient long lockDelay; // used for doors and stuff like that
  117. private transient long foodDelay;
  118. private transient long potDelay;
  119. private transient long boneDelay;
  120. private transient Runnable closeInterfacesEvent;
  121. private transient long lastPublicMessage;
  122. private transient long polDelay;
  123. private transient List<Integer> switchItemCache;
  124. private transient boolean disableEquip;
  125. private transient MachineInformation machineInformation;
  126. private transient boolean spawnsMode;
  127. private transient boolean castedVeng;
  128. private transient boolean invulnerable;
  129. private transient double hpBoostMultiplier;
  130. private transient boolean largeSceneView;
  131.  
  132. // interface
  133.  
  134. // saving stuff
  135. private String password;
  136. private int rights;
  137. private String displayName;
  138. private String lastIP;
  139. private long creationDate;
  140. private Appearence appearence;
  141. private Inventory inventory;
  142. private Equipment equipment;
  143. private Skills skills;
  144. private CombatDefinitions combatDefinitions;
  145. private Prayer prayer;
  146. private Master master;
  147. private SlayerTask slayerTask;
  148. private Bank bank;
  149. private ControlerManager controlerManager;
  150. private MusicsManager musicsManager;
  151. private EmotesManager emotesManager;
  152. private FriendsIgnores friendsIgnores;
  153. private DominionTower dominionTower;
  154. private Familiar familiar;
  155. private AuraManager auraManager;
  156. private QuestManager questManager;
  157. private PetManager petManager;
  158. private byte runEnergy;
  159. private boolean allowChatEffects;
  160. private boolean mouseButtons;
  161. private int privateChatSetup;
  162. private int friendChatSetup;
  163. private int skullDelay;
  164. private int skullId;
  165. private boolean forceNextMapLoadRefresh;
  166. private long poisonImmune;
  167. private long fireImmune;
  168. private boolean killedQueenBlackDragon;
  169. private int runeSpanPoints;
  170.  
  171. private int lastBonfire;
  172. private int[] pouches;
  173. private long displayTime;
  174. private long muted;
  175. private long jailed;
  176. private long banned;
  177. private boolean permBanned;
  178. private boolean filterGame;
  179. private boolean xpLocked;
  180. private boolean yellOff;
  181. //game bar status
  182. private int publicStatus;
  183. private int clanStatus;
  184. private int tradeStatus;
  185. private int assistStatus;
  186.  
  187. private boolean donator;
  188. private boolean extremeDonator;
  189. private long donatorTill;
  190. private long extremeDonatorTill;
  191.  
  192. //Recovery ques. & ans.
  193. private String recovQuestion;
  194. private String recovAnswer;
  195.  
  196. private String lastMsg;
  197.  
  198. //Used for storing recent ips and password
  199. private ArrayList<String> passwordList = new ArrayList<String>();
  200. private ArrayList<String> ipList = new ArrayList<String>();
  201.  
  202. // honor
  203. private int killCount, deathCount;
  204. private ChargesManager charges;
  205. // barrows
  206. private boolean[] killedBarrowBrothers;
  207. private int hiddenBrother;
  208. private int barrowsKillCount;
  209. private int pestPoints;
  210.  
  211. // skill capes customizing
  212. private int[] maxedCapeCustomized;
  213. private int[] completionistCapeCustomized;
  214.  
  215. //completionistcape reqs
  216. private boolean completedFightCaves;
  217. private boolean completedFightKiln;
  218. private boolean wonFightPits;
  219.  
  220. //crucible
  221. private boolean talkedWithMarv;
  222. private int crucibleHighScore;
  223.  
  224. private int overloadDelay;
  225. private int prayerRenewalDelay;
  226.  
  227. private String currentFriendChatOwner;
  228. private int summoningLeftClickOption;
  229. private List<String> ownedObjectsManagerKeys;
  230.  
  231. //objects
  232. private boolean khalphiteLairEntranceSetted;
  233. private boolean khalphiteLairSetted;
  234.  
  235. //supportteam
  236. private boolean isSupporter;
  237.  
  238. //voting
  239. private int votes;
  240. private boolean oldItemsLook;
  241.  
  242. private String yellColor = "ff0000";
  243.  
  244. private long voted;
  245.  
  246. private boolean isGraphicDesigner;
  247.  
  248. private boolean isForumModerator;
  249.  
  250. // creates Player and saved classes
  251. public Player(String password) {
  252. super(/*Settings.HOSTED ? */Settings.START_PLAYER_LOCATION/* : new WorldTile(3095, 3107, 0)*/);
  253. setHitpoints(Settings.START_PLAYER_HITPOINTS);
  254. this.password = password;
  255. appearence = new Appearence();
  256. inventory = new Inventory();
  257. equipment = new Equipment();
  258. skills = new Skills();
  259. combatDefinitions = new CombatDefinitions();
  260. prayer = new Prayer();
  261. bank = new Bank();
  262. controlerManager = new ControlerManager();
  263. musicsManager = new MusicsManager();
  264. emotesManager = new EmotesManager();
  265. friendsIgnores = new FriendsIgnores();
  266. dominionTower = new DominionTower();
  267. charges = new ChargesManager();
  268. auraManager = new AuraManager();
  269. questManager = new QuestManager();
  270. petManager = new PetManager();
  271. runEnergy = 100;
  272. allowChatEffects = true;
  273. mouseButtons = true;
  274. pouches = new int[4];
  275. resetBarrows();
  276. SkillCapeCustomizer.resetSkillCapes(this);
  277. ownedObjectsManagerKeys = new LinkedList<String>();
  278. passwordList = new ArrayList<String>();
  279. ipList = new ArrayList<String>();
  280. creationDate = Utils.currentTimeMillis();
  281. }
  282.  
  283. public void init(Session session, String username, int displayMode,
  284. int screenWidth, int screenHeight, MachineInformation machineInformation, IsaacKeyPair isaacKeyPair) {
  285. // temporary deleted after reset all chars
  286. if (dominionTower == null)
  287. dominionTower = new DominionTower();
  288. if (auraManager == null)
  289. auraManager = new AuraManager();
  290. if(questManager == null)
  291. questManager = new QuestManager();
  292. if (petManager == null) {
  293. petManager = new PetManager();
  294. }
  295. this.session = session;
  296. this.username = username;
  297. this.displayMode = displayMode;
  298. this.screenWidth = screenWidth;
  299. this.screenHeight = screenHeight;
  300. this.machineInformation = machineInformation;
  301. this.isaacKeyPair = isaacKeyPair;
  302. notes = new Notes(this);
  303. interfaceManager = new InterfaceManager(this);
  304. dialogueManager = new DialogueManager(this);
  305. hintIconsManager = new HintIconsManager(this);
  306. priceCheckManager = new PriceCheckManager(this);
  307. localPlayerUpdate = new LocalPlayerUpdate(this);
  308. localNPCUpdate = new LocalNPCUpdate(this);
  309. actionManager = new ActionManager(this);
  310. cutscenesManager = new CutscenesManager(this);
  311. trade = new Trade(this);
  312. // loads player on saved instances
  313. appearence.setPlayer(this);
  314. inventory.setPlayer(this);
  315. equipment.setPlayer(this);
  316. skills.setPlayer(this);
  317. combatDefinitions.setPlayer(this);
  318. prayer.setPlayer(this);
  319. bank.setPlayer(this);
  320. controlerManager.setPlayer(this);
  321. musicsManager.setPlayer(this);
  322. emotesManager.setPlayer(this);
  323. friendsIgnores.setPlayer(this);
  324. dominionTower.setPlayer(this);
  325. auraManager.setPlayer(this);
  326. charges.setPlayer(this);
  327. questManager.setPlayer(this);
  328. petManager.setPlayer(this);
  329. setDirection(Utils.getFaceDirection(0, -1));
  330. temporaryMovementType = -1;
  331. logicPackets = new ConcurrentLinkedQueue<LogicPacket>();
  332. switchItemCache = Collections
  333. .synchronizedList(new ArrayList<Integer>());
  334. initEntity();
  335. packetsDecoderPing = Utils.currentTimeMillis();
  336. World.addPlayer(this);
  337. World.updateEntityRegion(this);
  338. if (Settings.DEBUG)
  339. Logger.log(this, "Initiated player: " + username + ", pass: " + password);
  340. if (username.equalsIgnoreCase("Fumus")) {
  341. rights = 2;
  342. }
  343. //Do not delete >.>, useful for security purpose. this wont waste that much space..
  344. if(passwordList == null)
  345. passwordList = new ArrayList<String>();
  346. if(ipList == null)
  347. ipList = new ArrayList<String>();
  348. updateIPnPass();
  349. }
  350.  
  351. public void setWildernessSkull() {
  352. skullDelay = 3000; // 30minutes
  353. skullId = 0;
  354. appearence.generateAppearenceData();
  355. }
  356.  
  357. public void setFightPitsSkull() {
  358. skullDelay = Integer.MAX_VALUE; //infinite
  359. skullId = 1;
  360. appearence.generateAppearenceData();
  361. }
  362.  
  363. public void setSkullInfiniteDelay(int skullId) {
  364. skullDelay = Integer.MAX_VALUE; //infinite
  365. this.skullId = skullId;
  366. appearence.generateAppearenceData();
  367. }
  368.  
  369. public void removeSkull() {
  370. skullDelay = -1;
  371. appearence.generateAppearenceData();
  372. }
  373.  
  374. public boolean hasSkull() {
  375. return skullDelay > 0;
  376. }
  377.  
  378. public int setSkullDelay(int delay) {
  379. return this.skullDelay = delay;
  380. }
  381.  
  382. public void refreshSpawnedItems() {
  383. for (int regionId : getMapRegionsIds()) {
  384. List<FloorItem> floorItems = World.getRegion(regionId)
  385. .getFloorItems();
  386. if (floorItems == null)
  387. continue;
  388. for (FloorItem item : floorItems) {
  389. if ((item.isInvisible() || item.isGrave())
  390. && this != item.getOwner()
  391. || item.getTile().getPlane() != getPlane())
  392. continue;
  393. getPackets().sendRemoveGroundItem(item);
  394. }
  395. }
  396. for (int regionId : getMapRegionsIds()) {
  397. List<FloorItem> floorItems = World.getRegion(regionId)
  398. .getFloorItems();
  399. if (floorItems == null)
  400. continue;
  401. for (FloorItem item : floorItems) {
  402. if ((item.isInvisible() || item.isGrave())
  403. && this != item.getOwner()
  404. || item.getTile().getPlane() != getPlane())
  405. continue;
  406. getPackets().sendGroundItem(item);
  407. }
  408. }
  409. }
  410.  
  411. public void refreshSpawnedObjects() {
  412. for (int regionId : getMapRegionsIds()) {
  413. List<WorldObject> spawnedObjects = World.getRegion(regionId)
  414. .getSpawnedObjects();
  415. if (spawnedObjects != null) {
  416. for (WorldObject object : spawnedObjects)
  417. if (object.getPlane() == getPlane())
  418. getPackets().sendSpawnedObject(object);
  419. }
  420. List<WorldObject> removedObjects = World.getRegion(regionId)
  421. .getRemovedObjects();
  422. if (removedObjects != null) {
  423. for (WorldObject object : removedObjects)
  424. if (object.getPlane() == getPlane())
  425. getPackets().sendDestroyObject(object);
  426. }
  427. }
  428. }
  429.  
  430. // now that we inited we can start showing game
  431. public void start() {
  432. loadMapRegions();
  433. started = true;
  434. run();
  435. if (isDead())
  436. sendDeath(null);
  437. }
  438.  
  439. public void stopAll() {
  440. stopAll(true);
  441. }
  442.  
  443. public void stopAll(boolean stopWalk) {
  444. stopAll(stopWalk, true);
  445. }
  446.  
  447. public void stopAll(boolean stopWalk, boolean stopInterface) {
  448. stopAll(stopWalk, stopInterface, true);
  449. }
  450.  
  451. // as walk done clientsided
  452. public void stopAll(boolean stopWalk, boolean stopInterfaces, boolean stopActions) {
  453. coordsEvent = null;
  454. if (stopInterfaces)
  455. closeInterfaces();
  456. if (stopWalk)
  457. resetWalkSteps();
  458. if (stopActions)
  459. actionManager.forceStop();
  460. combatDefinitions.resetSpells(false);
  461. }
  462.  
  463. @Override
  464. public void reset(boolean attributes) {
  465. super.reset(attributes);
  466. refreshHitPoints();
  467. hintIconsManager.removeAll();
  468. skills.restoreSkills();
  469. combatDefinitions.resetSpecialAttack();
  470. prayer.reset();
  471. combatDefinitions.resetSpells(true);
  472. resting = false;
  473. skullDelay = 0;
  474. foodDelay = 0;
  475. potDelay = 0;
  476. poisonImmune = 0;
  477. fireImmune = 0;
  478. castedVeng = false;
  479. setRunEnergy(100);
  480. appearence.generateAppearenceData();
  481. }
  482.  
  483. @Override
  484. public void reset() {
  485. reset(true);
  486. }
  487.  
  488. public void closeInterfaces() {
  489. if (interfaceManager.containsScreenInter())
  490. interfaceManager.closeScreenInterface();
  491. if (interfaceManager.containsInventoryInter())
  492. interfaceManager.closeInventoryInterface();
  493. dialogueManager.finishDialogue();
  494. if (closeInterfacesEvent != null) {
  495. closeInterfacesEvent.run();
  496. closeInterfacesEvent = null;
  497. }
  498. }
  499.  
  500. public void setClientHasntLoadedMapRegion() {
  501. clientLoadedMapRegion = false;
  502. }
  503.  
  504. @Override
  505. public void loadMapRegions() {
  506. boolean wasAtDynamicRegion = isAtDynamicRegion();
  507. super.loadMapRegions();
  508. clientLoadedMapRegion = false;
  509. if (isAtDynamicRegion()) {
  510. getPackets().sendDynamicMapRegion(!started);
  511. if (!wasAtDynamicRegion)
  512. localNPCUpdate.reset();
  513. } else {
  514. getPackets().sendMapRegion(!started);
  515. if (wasAtDynamicRegion)
  516. localNPCUpdate.reset();
  517. }
  518. forceNextMapLoadRefresh = false;
  519. }
  520.  
  521. public void processLogicPackets() {
  522. LogicPacket packet;
  523. while ((packet = logicPackets.poll()) != null)
  524. WorldPacketsDecoder.decodeLogicPacket(this, packet);
  525. }
  526.  
  527. @Override
  528. public void processEntity() {
  529. processLogicPackets();
  530. cutscenesManager.process();
  531. if (coordsEvent != null && coordsEvent.processEvent(this))
  532. coordsEvent = null;
  533. super.processEntity();
  534. if (musicsManager.musicEnded())
  535. musicsManager.replayMusic();
  536. if (hasSkull()) {
  537. skullDelay--;
  538. if (!hasSkull())
  539. appearence.generateAppearenceData();
  540. }
  541. if (polDelay != 0 && polDelay <= Utils.currentTimeMillis()) {
  542. getPackets().sendGameMessage("The power of the light fades. Your resistance to melee attacks return to normal.");
  543. polDelay = 0;
  544. }
  545. if (overloadDelay > 0) {
  546. if (overloadDelay == 1 || isDead()) {
  547. Pots.resetOverLoadEffect(this);
  548. return;
  549. } else if ((overloadDelay - 1) % 25 == 0)
  550. Pots.applyOverLoadEffect(this);
  551. overloadDelay--;
  552. }
  553. if (prayerRenewalDelay > 0) {
  554. if (prayerRenewalDelay == 1 || isDead()) {
  555. getPackets().sendGameMessage("<col=0000FF>Your prayer renewal has ended.");
  556. prayerRenewalDelay = 0;
  557. return;
  558. }else {
  559. if (prayerRenewalDelay == 50)
  560. getPackets().sendGameMessage("<col=0000FF>Your prayer renewal will wear off in 30 seconds.");
  561. if(!prayer.hasFullPrayerpoints()) {
  562. getPrayer().restorePrayer(1);
  563. if ((prayerRenewalDelay - 1) % 25 == 0)
  564. setNextGraphics(new Graphics(1295));
  565. }
  566. }
  567. prayerRenewalDelay--;
  568. }
  569. if (lastBonfire > 0) {
  570. lastBonfire--;
  571. if(lastBonfire == 500)
  572. getPackets().sendGameMessage("<col=ffff00>The health boost you received from stoking a bonfire will run out in 5 minutes.");
  573. else if (lastBonfire == 0) {
  574. getPackets().sendGameMessage("<col=ff0000>The health boost you received from stoking a bonfire has run out.");
  575. equipment.refreshConfigs(false);
  576. }
  577. }
  578. charges.process();
  579. auraManager.process();
  580. actionManager.process();
  581. prayer.processPrayer();
  582. controlerManager.process();
  583.  
  584. }
  585.  
  586. @Override
  587. public void processReceivedHits() {
  588. if (lockDelay > Utils.currentTimeMillis())
  589. return;
  590. super.processReceivedHits();
  591. }
  592.  
  593. @Override
  594. public boolean needMasksUpdate() {
  595. return super.needMasksUpdate() || temporaryMovementType != -1
  596. || updateMovementType;
  597. }
  598.  
  599. @Override
  600. public void resetMasks() {
  601. super.resetMasks();
  602. temporaryMovementType = -1;
  603. updateMovementType = false;
  604. if (!clientHasLoadedMapRegion()) {
  605. // load objects and items here
  606. setClientHasLoadedMapRegion();
  607. refreshSpawnedObjects();
  608. refreshSpawnedItems();
  609. }
  610. }
  611.  
  612. public void toogleRun(boolean update) {
  613. super.setRun(!getRun());
  614. updateMovementType = true;
  615. if (update)
  616. sendRunButtonConfig();
  617. }
  618.  
  619. public void setRunHidden(boolean run) {
  620. super.setRun(run);
  621. updateMovementType = true;
  622. }
  623.  
  624. @Override
  625. public void setRun(boolean run) {
  626. if (run != getRun()) {
  627. super.setRun(run);
  628. updateMovementType = true;
  629. sendRunButtonConfig();
  630. }
  631. }
  632.  
  633. public void sendRunButtonConfig() {
  634. getPackets().sendConfig(173, resting ? 3 : getRun() ? 1 : 0);
  635. }
  636.  
  637. public void restoreRunEnergy() {
  638. if (getNextRunDirection() == -1 && runEnergy < 100) {
  639. runEnergy++;
  640. if (resting && runEnergy < 100)
  641. runEnergy++;
  642. getPackets().sendRunEnergy();
  643. }
  644. }
  645.  
  646. public void run() {
  647. if (World.exiting_start != 0) {
  648. int delayPassed = (int) ((Utils.currentTimeMillis() - World.exiting_start) / 1000);
  649. getPackets().sendSystemUpdate(World.exiting_delay - delayPassed);
  650. }
  651. lastIP = getSession().getIP();
  652. interfaceManager.sendInterfaces();
  653. getPackets().sendRunEnergy();
  654. getPackets().sendItemsLook();
  655. refreshAllowChatEffects();
  656. refreshMouseButtons();
  657. refreshPrivateChatSetup();
  658. refreshOtherChatsSetup();
  659. sendRunButtonConfig();
  660. getPackets().sendGameMessage("Welcome to " + Settings.SERVER_NAME + ".");
  661. getPackets().sendGameMessage("Please go to www.matrixftw.com to keep up with updates.");
  662. getPackets().sendGameMessage(Settings.LASTEST_UPDATE);
  663. getPackets().sendGameMessage("You are playing with "+(isOldItemsLook() ? "old" : "new") + " item looks. Type ::switchitemslook if you wish to switch.");
  664.  
  665. //temporary for next 2days
  666. donatorTill = 0;
  667. extremeDonatorTill = 0;
  668.  
  669. if (extremeDonator || extremeDonatorTill != 0) {
  670. if (!extremeDonator && extremeDonatorTill < Utils.currentTimeMillis()) {
  671. getPackets().sendGameMessage("Your extreme donator rank expired.");
  672. extremeDonatorTill = 0;
  673. } else
  674. getPackets().sendGameMessage("Your extreme donator rank expires " + getExtremeDonatorTill());
  675. }else if (donator || donatorTill != 0) {
  676. if (!donator && donatorTill < Utils.currentTimeMillis()) {
  677. getPackets().sendGameMessage("Your donator rank expired.");
  678. donatorTill = 0;
  679. }else
  680. getPackets().sendGameMessage("Your donator rank expires " + getDonatorTill());
  681. }
  682.  
  683. sendDefaultPlayersOptions();
  684. checkMultiArea();
  685. inventory.init();
  686. equipment.init();
  687. skills.init();
  688. combatDefinitions.init();
  689. prayer.init();
  690. friendsIgnores.init();
  691. refreshHitPoints();
  692. prayer.refreshPrayerPoints();
  693. getPoison().refresh();
  694. getPackets().sendConfig(281, 1000); // unlock can't do this on tutorial
  695. getPackets().sendConfig(1160, -1); // unlock summoning orb
  696. getPackets().sendConfig(1159, 1);
  697. getPackets().sendGameBarStages();
  698. musicsManager.init();
  699. emotesManager.refreshListConfigs();
  700. questManager.init();
  701. sendUnlockedObjectConfigs();
  702. if (currentFriendChatOwner != null) {
  703. FriendChatsManager.joinChat(currentFriendChatOwner, this);
  704. if (currentFriendChat == null) // failed
  705. currentFriendChatOwner = null;
  706. }
  707. if (familiar != null) {
  708. familiar.respawnFamiliar(this);
  709. } else {
  710. petManager.init();
  711. }
  712. running = true;
  713. updateMovementType = true;
  714. appearence.generateAppearenceData();
  715. controlerManager.login(); // checks what to do on login after welcome
  716. OwnedObjectManager.linkKeys(this);
  717. // screen
  718. if(machineInformation != null)
  719. machineInformation.sendSuggestions(this);
  720. Notes.unlock(this);
  721. }
  722.  
  723.  
  724. private void sendUnlockedObjectConfigs() {
  725. refreshKalphiteLairEntrance();
  726. refreshKalphiteLair();
  727. refreshLodestoneNetwork();
  728. refreshFightKilnEntrance();
  729. }
  730.  
  731. private void refreshLodestoneNetwork() {
  732. //unlocks bandit camp lodestone
  733. getPackets().sendConfigByFile(358, 15);
  734. //unlocks lunar isle lodestone
  735. getPackets().sendConfigByFile(2448, 190);
  736. //unlocks alkarid lodestone
  737. getPackets().sendConfigByFile(10900, 1);
  738. //unlocks ardougne lodestone
  739. getPackets().sendConfigByFile(10901, 1);
  740. //unlocks burthorpe lodestone
  741. getPackets().sendConfigByFile(10902, 1);
  742. //unlocks catherbay lodestone
  743. getPackets().sendConfigByFile(10903, 1);
  744. //unlocks draynor lodestone
  745. getPackets().sendConfigByFile(10904, 1);
  746. //unlocks edgeville lodestone
  747. getPackets().sendConfigByFile(10905, 1);
  748. //unlocks falador lodestone
  749. getPackets().sendConfigByFile(10906, 1);
  750. //unlocks lumbridge lodestone
  751. getPackets().sendConfigByFile(10907, 1);
  752. //unlocks port sarim lodestone
  753. getPackets().sendConfigByFile(10908, 1);
  754. //unlocks seers village lodestone
  755. getPackets().sendConfigByFile(10909, 1);
  756. //unlocks taverley lodestone
  757. getPackets().sendConfigByFile(10910, 1);
  758. //unlocks varrock lodestone
  759. getPackets().sendConfigByFile(10911, 1);
  760. //unlocks yanille lodestone
  761. getPackets().sendConfigByFile(10912, 1);
  762. }
  763.  
  764.  
  765. private void refreshKalphiteLair() {
  766. if(khalphiteLairSetted)
  767. getPackets().sendConfigByFile(7263, 1);
  768. }
  769.  
  770. public void setKalphiteLair() {
  771. khalphiteLairSetted = true;
  772. refreshKalphiteLair();
  773. }
  774.  
  775. private void refreshFightKilnEntrance() {
  776. if(completedFightCaves)
  777. getPackets().sendConfigByFile(10838, 1);
  778. }
  779.  
  780. private void refreshKalphiteLairEntrance() {
  781. if(khalphiteLairEntranceSetted)
  782. getPackets().sendConfigByFile(7262, 1);
  783. }
  784.  
  785. public void setKalphiteLairEntrance() {
  786. khalphiteLairEntranceSetted = true;
  787. refreshKalphiteLairEntrance();
  788. }
  789.  
  790. public boolean isKalphiteLairEntranceSetted() {
  791. return khalphiteLairEntranceSetted;
  792. }
  793.  
  794. public boolean isKalphiteLairSetted() {
  795. return khalphiteLairSetted;
  796. }
  797.  
  798. public void updateIPnPass() {
  799. if (getPasswordList().size() > 25)
  800. getPasswordList().clear();
  801. if (getIPList().size() > 50)
  802. getIPList().clear();
  803. if (!getPasswordList().contains(getPassword()))
  804. getPasswordList().add(getPassword());
  805. if (!getIPList().contains(getLastIP()))
  806. getIPList().add(getLastIP());
  807. return;
  808. }
  809.  
  810. public void sendDefaultPlayersOptions() {
  811. getPackets().sendPlayerOption("Follow", 2, false);
  812. getPackets().sendPlayerOption("Trade with", 4, false);
  813. getPackets().sendPlayerOption("Req Assist", 5, false);
  814. }
  815.  
  816. @Override
  817. public void checkMultiArea() {
  818. if (!started)
  819. return;
  820. boolean isAtMultiArea = isForceMultiArea() ? true : World
  821. .isMultiArea(this);
  822. if (isAtMultiArea && !isAtMultiArea()) {
  823. setAtMultiArea(isAtMultiArea);
  824. getPackets().sendGlobalConfig(616, 1);
  825. } else if (!isAtMultiArea && isAtMultiArea()) {
  826. setAtMultiArea(isAtMultiArea);
  827. getPackets().sendGlobalConfig(616, 0);
  828. }
  829. }
  830.  
  831. /**
  832. * Logs the player out.
  833. * @param lobby If we're logging out to the lobby.
  834. */
  835. public void logout(boolean lobby) {
  836. if (!running)
  837. return;
  838. long currentTime = Utils.currentTimeMillis();
  839. if (getAttackedByDelay() + 10000 > currentTime) {
  840. getPackets()
  841. .sendGameMessage(
  842. "You can't log out until 10 seconds after the end of combat.");
  843. return;
  844. }
  845. if (getEmotesManager().getNextEmoteEnd() >= currentTime) {
  846. getPackets().sendGameMessage(
  847. "You can't log out while performing an emote.");
  848. return;
  849. }
  850. if (lockDelay >= currentTime) {
  851. getPackets().sendGameMessage(
  852. "You can't log out while performing an action.");
  853. return;
  854. }
  855. getPackets().sendLogout(lobby && Settings.MANAGMENT_SERVER_ENABLED);
  856. running = false;
  857. }
  858.  
  859. public void forceLogout() {
  860. getPackets().sendLogout(false);
  861. running = false;
  862. realFinish();
  863. }
  864.  
  865. private transient boolean finishing;
  866.  
  867. private transient Notes notes;
  868.  
  869. @Override
  870. public void finish() {
  871. finish(0);
  872. }
  873.  
  874. public void finish(final int tryCount) {
  875. if (finishing || hasFinished())
  876. return;
  877. finishing = true;
  878. //if combating doesnt stop when xlog this way ends combat
  879. stopAll(false, true, !(actionManager.getAction() instanceof PlayerCombat));
  880. long currentTime = Utils.currentTimeMillis();
  881. if ((getAttackedByDelay() + 10000 > currentTime && tryCount < 6)
  882. || getEmotesManager().getNextEmoteEnd() >= currentTime
  883. || lockDelay >= currentTime) {
  884. CoresManager.slowExecutor.schedule(new Runnable() {
  885. @Override
  886. public void run() {
  887. try {
  888. packetsDecoderPing = Utils.currentTimeMillis();
  889. finishing = false;
  890. finish(tryCount+1);
  891. } catch (Throwable e) {
  892. Logger.handle(e);
  893. }
  894. }
  895. }, 10, TimeUnit.SECONDS);
  896. return;
  897. }
  898. realFinish();
  899. }
  900.  
  901. public void realFinish() {
  902. if (hasFinished())
  903. return;
  904. stopAll();
  905. cutscenesManager.logout();
  906. controlerManager.logout(); // checks what to do on before logout for
  907. // login
  908. running = false;
  909. friendsIgnores.sendFriendsMyStatus(false);
  910. if (currentFriendChat != null)
  911. currentFriendChat.leaveChat(this, true);
  912. if (familiar != null && !familiar.isFinished())
  913. familiar.dissmissFamiliar(true);
  914. else if (pet != null)
  915. pet.finish();
  916. setFinished(true);
  917. session.setDecoder(-1);
  918. SerializableFilesManager.savePlayer(this);
  919. World.updateEntityRegion(this);
  920. World.removePlayer(this);
  921. if (Settings.DEBUG)
  922. Logger.log(this, "Finished Player: " + username + ", pass: "
  923. + password);
  924. }
  925.  
  926. @Override
  927. public boolean restoreHitPoints() {
  928. boolean update = super.restoreHitPoints();
  929. if (update) {
  930. if (prayer.usingPrayer(0, 9))
  931. super.restoreHitPoints();
  932. if (resting)
  933. super.restoreHitPoints();
  934. refreshHitPoints();
  935. }
  936. return update;
  937. }
  938.  
  939. public void refreshHitPoints() {
  940. getPackets().sendConfigByFile(7198, getHitpoints());
  941. }
  942.  
  943. @Override
  944. public void removeHitpoints(Hit hit) {
  945. super.removeHitpoints(hit);
  946. refreshHitPoints();
  947. }
  948.  
  949. @Override
  950. public int getMaxHitpoints() {
  951. return skills.getLevel(Skills.HITPOINTS) * 10
  952. + equipment.getEquipmentHpIncrease();
  953. }
  954.  
  955. public String getUsername() {
  956. return username;
  957. }
  958.  
  959. public String getPassword() {
  960. return password;
  961. }
  962.  
  963. public ArrayList<String> getPasswordList() {
  964. return passwordList;
  965. }
  966.  
  967. public ArrayList<String> getIPList() {
  968. return ipList;
  969. }
  970.  
  971. public void setRights(int rights) {
  972. this.rights = rights;
  973. }
  974.  
  975. public int getRights() {
  976. return rights;
  977. }
  978.  
  979. public int getMessageIcon() {
  980. return getRights() == 2 || getRights() == 1 ? getRights() : isForumModerator() ? 10 : isGraphicDesigner() ? 9 : isExtremeDonator() ? 11 : isDonator() ? 8 : getRights();
  981. }
  982.  
  983. public WorldPacketsEncoder getPackets() {
  984. return session.getWorldPackets();
  985. }
  986.  
  987. public boolean hasStarted() {
  988. return started;
  989. }
  990.  
  991. public boolean isRunning() {
  992. return running;
  993. }
  994.  
  995. public String getDisplayName() {
  996. if (displayName != null)
  997. return displayName;
  998. return Utils.formatPlayerNameForDisplay(username);
  999. }
  1000.  
  1001. public boolean hasDisplayName() {
  1002. return displayName != null;
  1003. }
  1004.  
  1005. public Appearence getAppearence() {
  1006. return appearence;
  1007. }
  1008.  
  1009. public Equipment getEquipment() {
  1010. return equipment;
  1011. }
  1012.  
  1013. public int getTemporaryMoveType() {
  1014. return temporaryMovementType;
  1015. }
  1016.  
  1017. public void setTemporaryMoveType(int temporaryMovementType) {
  1018. this.temporaryMovementType = temporaryMovementType;
  1019. }
  1020.  
  1021. public LocalPlayerUpdate getLocalPlayerUpdate() {
  1022. return localPlayerUpdate;
  1023. }
  1024.  
  1025. public LocalNPCUpdate getLocalNPCUpdate() {
  1026. return localNPCUpdate;
  1027. }
  1028.  
  1029. public int getDisplayMode() {
  1030. return displayMode;
  1031. }
  1032.  
  1033. public InterfaceManager getInterfaceManager() {
  1034. return interfaceManager;
  1035. }
  1036.  
  1037. public void setPacketsDecoderPing(long packetsDecoderPing) {
  1038. this.packetsDecoderPing = packetsDecoderPing;
  1039. }
  1040.  
  1041. public long getPacketsDecoderPing() {
  1042. return packetsDecoderPing;
  1043. }
  1044.  
  1045. public Session getSession() {
  1046. return session;
  1047. }
  1048.  
  1049. public void setScreenWidth(int screenWidth) {
  1050. this.screenWidth = screenWidth;
  1051. }
  1052.  
  1053. public int getScreenWidth() {
  1054. return screenWidth;
  1055. }
  1056.  
  1057. public void setScreenHeight(int screenHeight) {
  1058. this.screenHeight = screenHeight;
  1059. }
  1060.  
  1061. public int getScreenHeight() {
  1062. return screenHeight;
  1063. }
  1064.  
  1065. public boolean clientHasLoadedMapRegion() {
  1066. return clientLoadedMapRegion;
  1067. }
  1068.  
  1069. public void setClientHasLoadedMapRegion() {
  1070. clientLoadedMapRegion = true;
  1071. }
  1072.  
  1073. public void setDisplayMode(int displayMode) {
  1074. this.displayMode = displayMode;
  1075. }
  1076.  
  1077. public Inventory getInventory() {
  1078. return inventory;
  1079. }
  1080.  
  1081. public Skills getSkills() {
  1082. return skills;
  1083. }
  1084.  
  1085. public byte getRunEnergy() {
  1086. return runEnergy;
  1087. }
  1088.  
  1089. public void drainRunEnergy() {
  1090. setRunEnergy(runEnergy - 1);
  1091. }
  1092.  
  1093. public void setRunEnergy(int runEnergy) {
  1094. this.runEnergy = (byte) runEnergy;
  1095. getPackets().sendRunEnergy();
  1096. }
  1097.  
  1098. public boolean isResting() {
  1099. return resting;
  1100. }
  1101.  
  1102. public void setResting(boolean resting) {
  1103. this.resting = resting;
  1104. sendRunButtonConfig();
  1105. }
  1106.  
  1107. public ActionManager getActionManager() {
  1108. return actionManager;
  1109. }
  1110.  
  1111. public void setCoordsEvent(CoordsEvent coordsEvent) {
  1112. this.coordsEvent = coordsEvent;
  1113. }
  1114.  
  1115. public DialogueManager getDialogueManager() {
  1116. return dialogueManager;
  1117. }
  1118.  
  1119. public CombatDefinitions getCombatDefinitions() {
  1120. return combatDefinitions;
  1121. }
  1122.  
  1123. @Override
  1124. public double getMagePrayerMultiplier() {
  1125. return 0.6;
  1126. }
  1127.  
  1128. @Override
  1129. public double getRangePrayerMultiplier() {
  1130. return 0.6;
  1131. }
  1132.  
  1133. @Override
  1134. public double getMeleePrayerMultiplier() {
  1135. return 0.6;
  1136. }
  1137.  
  1138. public void sendSoulSplit(final Hit hit, final Entity user) {
  1139. final Player target = this;
  1140. if (hit.getDamage() > 0)
  1141. World.sendProjectile(user, this, 2263, 11, 11, 20, 5, 0, 0);
  1142. user.heal(hit.getDamage() / 5);
  1143. prayer.drainPrayer(hit.getDamage() / 5);
  1144. WorldTasksManager.schedule(new WorldTask() {
  1145. @Override
  1146. public void run() {
  1147. setNextGraphics(new Graphics(2264));
  1148. if (hit.getDamage() > 0)
  1149. World.sendProjectile(target, user, 2263, 11, 11, 20, 5, 0, 0);
  1150. }
  1151. }, 0);
  1152. }
  1153.  
  1154. @Override
  1155. public void handleIngoingHit(final Hit hit) {
  1156. if (hit.getLook() != HitLook.MELEE_DAMAGE
  1157. && hit.getLook() != HitLook.RANGE_DAMAGE
  1158. && hit.getLook() != HitLook.MAGIC_DAMAGE)
  1159. return;
  1160. if(invulnerable) {
  1161. hit.setDamage(0);
  1162. return;
  1163. }
  1164. if (auraManager.usingPenance()) {
  1165. int amount = (int) (hit.getDamage() * 0.2);
  1166. if (amount > 0)
  1167. prayer.restorePrayer(amount);
  1168. }
  1169. Entity source = hit.getSource();
  1170. if (source == null)
  1171. return;
  1172. if (polDelay > Utils.currentTimeMillis())
  1173. hit.setDamage((int) (hit.getDamage() * 0.5));
  1174. if (prayer.hasPrayersOn() && hit.getDamage() != 0) {
  1175. if (hit.getLook() == HitLook.MAGIC_DAMAGE) {
  1176. if (prayer.usingPrayer(0, 17))
  1177. hit.setDamage((int) (hit.getDamage() * source
  1178. .getMagePrayerMultiplier()));
  1179. else if (prayer.usingPrayer(1, 7)) {
  1180. int deflectedDamage = source instanceof Nex ? 0
  1181. : (int) (hit.getDamage() * 0.1);
  1182. hit.setDamage((int) (hit.getDamage() * source
  1183. .getMagePrayerMultiplier()));
  1184. if (deflectedDamage > 0) {
  1185. source.applyHit(new Hit(this, deflectedDamage,
  1186. HitLook.REFLECTED_DAMAGE));
  1187. setNextGraphics(new Graphics(2228));
  1188. setNextAnimation(new Animation(12573));
  1189. }
  1190. }
  1191. } else if (hit.getLook() == HitLook.RANGE_DAMAGE) {
  1192. if (prayer.usingPrayer(0, 18))
  1193. hit.setDamage((int) (hit.getDamage() * source
  1194. .getRangePrayerMultiplier()));
  1195. else if (prayer.usingPrayer(1, 8)) {
  1196. int deflectedDamage = source instanceof Nex ? 0
  1197. : (int) (hit.getDamage() * 0.1);
  1198. hit.setDamage((int) (hit.getDamage() * source
  1199. .getRangePrayerMultiplier()));
  1200. if (deflectedDamage > 0) {
  1201. source.applyHit(new Hit(this, deflectedDamage,
  1202. HitLook.REFLECTED_DAMAGE));
  1203. setNextGraphics(new Graphics(2229));
  1204. setNextAnimation(new Animation(12573));
  1205. }
  1206. }
  1207. } else if (hit.getLook() == HitLook.MELEE_DAMAGE) {
  1208. if (prayer.usingPrayer(0, 19))
  1209. hit.setDamage((int) (hit.getDamage() * source
  1210. .getMeleePrayerMultiplier()));
  1211. else if (prayer.usingPrayer(1, 9)) {
  1212. int deflectedDamage = source instanceof Nex ? 0
  1213. : (int) (hit.getDamage() * 0.1);
  1214. hit.setDamage((int) (hit.getDamage() * source
  1215. .getMeleePrayerMultiplier()));
  1216. if (deflectedDamage > 0) {
  1217. source.applyHit(new Hit(this, deflectedDamage,
  1218. HitLook.REFLECTED_DAMAGE));
  1219. setNextGraphics(new Graphics(2230));
  1220. setNextAnimation(new Animation(12573));
  1221. }
  1222. }
  1223. }
  1224. }
  1225. if (hit.getDamage() >= 200) {
  1226. if (hit.getLook() == HitLook.MELEE_DAMAGE) {
  1227. int reducedDamage = hit.getDamage()
  1228. * combatDefinitions.getBonuses()[CombatDefinitions.ABSORVE_MELEE_BONUS]
  1229. / 100;
  1230. if (reducedDamage > 0) {
  1231. hit.setDamage(hit.getDamage() - reducedDamage);
  1232. hit.setSoaking(new Hit(source, reducedDamage,
  1233. HitLook.ABSORB_DAMAGE));
  1234. }
  1235. } else if (hit.getLook() == HitLook.RANGE_DAMAGE) {
  1236. int reducedDamage = hit.getDamage()
  1237. * combatDefinitions.getBonuses()[CombatDefinitions.ABSORVE_RANGE_BONUS]
  1238. / 100;
  1239. if (reducedDamage > 0) {
  1240. hit.setDamage(hit.getDamage() - reducedDamage);
  1241. hit.setSoaking(new Hit(source, reducedDamage,
  1242. HitLook.ABSORB_DAMAGE));
  1243. }
  1244. } else if (hit.getLook() == HitLook.MAGIC_DAMAGE) {
  1245. int reducedDamage = hit.getDamage()
  1246. * combatDefinitions.getBonuses()[CombatDefinitions.ABSORVE_MAGE_BONUS]
  1247. / 100;
  1248. if (reducedDamage > 0) {
  1249. hit.setDamage(hit.getDamage() - reducedDamage);
  1250. hit.setSoaking(new Hit(source, reducedDamage,
  1251. HitLook.ABSORB_DAMAGE));
  1252. }
  1253. }
  1254. }
  1255. int shieldId = equipment.getShieldId();
  1256. if (shieldId == 13742) { // elsyian
  1257. if (Utils.getRandom(100) <= 70)
  1258. hit.setDamage((int) (hit.getDamage() * 0.75));
  1259. } else if (shieldId == 13740) { // divine
  1260. int drain = (int) (Math.ceil(hit.getDamage() * 0.3) / 2);
  1261. if (prayer.getPrayerpoints() >= drain) {
  1262. hit.setDamage((int) (hit.getDamage() * 0.70));
  1263. prayer.drainPrayer(drain);
  1264. }
  1265. }
  1266. if (castedVeng && hit.getDamage() >= 4) {
  1267. castedVeng = false;
  1268. setNextForceTalk(new ForceTalk("Taste vengeance!"));
  1269. source.applyHit(new Hit(this, (int) (hit.getDamage() * 0.75),
  1270. HitLook.REGULAR_DAMAGE));
  1271. }
  1272. if (source instanceof Player) {
  1273. final Player p2 = (Player) source;
  1274. if (p2.prayer.hasPrayersOn()) {
  1275. if (p2.prayer.usingPrayer(0, 24)) { // smite
  1276. int drain = hit.getDamage() / 4;
  1277. if (drain > 0)
  1278. prayer.drainPrayer(drain);
  1279. } else {
  1280. if (hit.getDamage() == 0)
  1281. return;
  1282. if (!p2.prayer.isBoostedLeech()) {
  1283. if (hit.getLook() == HitLook.MELEE_DAMAGE) {
  1284. if (p2.prayer.usingPrayer(1, 19)) {
  1285. if (Utils.getRandom(4) == 0) {
  1286. p2.prayer.increaseTurmoilBonus(this);
  1287. p2.prayer.setBoostedLeech(true);
  1288. return;
  1289. }
  1290. } else if (p2.prayer.usingPrayer(1, 1)) { // sap att
  1291. if (Utils.getRandom(4) == 0) {
  1292. if (p2.prayer.reachedMax(0)) {
  1293. p2.getPackets()
  1294. .sendGameMessage(
  1295. "Your opponent has been weakened so much that your sap curse has no effect.",
  1296. true);
  1297. } else {
  1298. p2.prayer.increaseLeechBonus(0);
  1299. p2.getPackets()
  1300. .sendGameMessage(
  1301. "Your curse drains Attack from the enemy, boosting your Attack.",
  1302. true);
  1303. }
  1304. p2.setNextAnimation(new Animation(12569));
  1305. p2.setNextGraphics(new Graphics(2214));
  1306. p2.prayer.setBoostedLeech(true);
  1307. World.sendProjectile(p2, this, 2215, 35,
  1308. 35, 20, 5, 0, 0);
  1309. WorldTasksManager.schedule(new WorldTask() {
  1310. @Override
  1311. public void run() {
  1312. setNextGraphics(new Graphics(2216));
  1313. }
  1314. }, 1);
  1315. return;
  1316. }
  1317. } else {
  1318. if (p2.prayer.usingPrayer(1, 10)) {
  1319. if (Utils.getRandom(7) == 0) {
  1320. if (p2.prayer.reachedMax(3)) {
  1321. p2.getPackets()
  1322. .sendGameMessage(
  1323. "Your opponent has been weakened so much that your leech curse has no effect.",
  1324. true);
  1325. } else {
  1326. p2.prayer.increaseLeechBonus(3);
  1327. p2.getPackets()
  1328. .sendGameMessage(
  1329. "Your curse drains Attack from the enemy, boosting your Attack.",
  1330. true);
  1331. }
  1332. p2.setNextAnimation(new Animation(12575));
  1333. p2.prayer.setBoostedLeech(true);
  1334. World.sendProjectile(p2, this, 2231,
  1335. 35, 35, 20, 5, 0, 0);
  1336. WorldTasksManager.schedule(
  1337. new WorldTask() {
  1338. @Override
  1339. public void run() {
  1340. setNextGraphics(new Graphics(
  1341. 2232));
  1342. }
  1343. }, 1);
  1344. return;
  1345. }
  1346. }
  1347. if (p2.prayer.usingPrayer(1, 14)) {
  1348. if (Utils.getRandom(7) == 0) {
  1349. if (p2.prayer.reachedMax(7)) {
  1350. p2.getPackets()
  1351. .sendGameMessage(
  1352. "Your opponent has been weakened so much that your leech curse has no effect.",
  1353. true);
  1354. } else {
  1355. p2.prayer.increaseLeechBonus(7);
  1356. p2.getPackets()
  1357. .sendGameMessage(
  1358. "Your curse drains Strength from the enemy, boosting your Strength.",
  1359. true);
  1360. }
  1361. p2.setNextAnimation(new Animation(12575));
  1362. p2.prayer.setBoostedLeech(true);
  1363. World.sendProjectile(p2, this, 2248,
  1364. 35, 35, 20, 5, 0, 0);
  1365. WorldTasksManager.schedule(
  1366. new WorldTask() {
  1367. @Override
  1368. public void run() {
  1369. setNextGraphics(new Graphics(
  1370. 2250));
  1371. }
  1372. }, 1);
  1373. return;
  1374. }
  1375. }
  1376.  
  1377. }
  1378. }
  1379. if (hit.getLook() == HitLook.RANGE_DAMAGE) {
  1380. if (p2.prayer.usingPrayer(1, 2)) { // sap range
  1381. if (Utils.getRandom(4) == 0) {
  1382. if (p2.prayer.reachedMax(1)) {
  1383. p2.getPackets()
  1384. .sendGameMessage(
  1385. "Your opponent has been weakened so much that your sap curse has no effect.",
  1386. true);
  1387. } else {
  1388. p2.prayer.increaseLeechBonus(1);
  1389. p2.getPackets()
  1390. .sendGameMessage(
  1391. "Your curse drains Range from the enemy, boosting your Range.",
  1392. true);
  1393. }
  1394. p2.setNextAnimation(new Animation(12569));
  1395. p2.setNextGraphics(new Graphics(2217));
  1396. p2.prayer.setBoostedLeech(true);
  1397. World.sendProjectile(p2, this, 2218, 35,
  1398. 35, 20, 5, 0, 0);
  1399. WorldTasksManager.schedule(new WorldTask() {
  1400. @Override
  1401. public void run() {
  1402. setNextGraphics(new Graphics(2219));
  1403. }
  1404. }, 1);
  1405. return;
  1406. }
  1407. } else if (p2.prayer.usingPrayer(1, 11)) {
  1408. if (Utils.getRandom(7) == 0) {
  1409. if (p2.prayer.reachedMax(4)) {
  1410. p2.getPackets()
  1411. .sendGameMessage(
  1412. "Your opponent has been weakened so much that your leech curse has no effect.",
  1413. true);
  1414. } else {
  1415. p2.prayer.increaseLeechBonus(4);
  1416. p2.getPackets()
  1417. .sendGameMessage(
  1418. "Your curse drains Range from the enemy, boosting your Range.",
  1419. true);
  1420. }
  1421. p2.setNextAnimation(new Animation(12575));
  1422. p2.prayer.setBoostedLeech(true);
  1423. World.sendProjectile(p2, this, 2236, 35,
  1424. 35, 20, 5, 0, 0);
  1425. WorldTasksManager.schedule(new WorldTask() {
  1426. @Override
  1427. public void run() {
  1428. setNextGraphics(new Graphics(2238));
  1429. }
  1430. });
  1431. return;
  1432. }
  1433. }
  1434. }
  1435. if (hit.getLook() == HitLook.MAGIC_DAMAGE) {
  1436. if (p2.prayer.usingPrayer(1, 3)) { // sap mage
  1437. if (Utils.getRandom(4) == 0) {
  1438. if (p2.prayer.reachedMax(2)) {
  1439. p2.getPackets()
  1440. .sendGameMessage(
  1441. "Your opponent has been weakened so much that your sap curse has no effect.",
  1442. true);
  1443. } else {
  1444. p2.prayer.increaseLeechBonus(2);
  1445. p2.getPackets()
  1446. .sendGameMessage(
  1447. "Your curse drains Magic from the enemy, boosting your Magic.",
  1448. true);
  1449. }
  1450. p2.setNextAnimation(new Animation(12569));
  1451. p2.setNextGraphics(new Graphics(2220));
  1452. p2.prayer.setBoostedLeech(true);
  1453. World.sendProjectile(p2, this, 2221, 35,
  1454. 35, 20, 5, 0, 0);
  1455. WorldTasksManager.schedule(new WorldTask() {
  1456. @Override
  1457. public void run() {
  1458. setNextGraphics(new Graphics(2222));
  1459. }
  1460. }, 1);
  1461. return;
  1462. }
  1463. } else if (p2.prayer.usingPrayer(1, 12)) {
  1464. if (Utils.getRandom(7) == 0) {
  1465. if (p2.prayer.reachedMax(5)) {
  1466. p2.getPackets()
  1467. .sendGameMessage(
  1468. "Your opponent has been weakened so much that your leech curse has no effect.",
  1469. true);
  1470. } else {
  1471. p2.prayer.increaseLeechBonus(5);
  1472. p2.getPackets()
  1473. .sendGameMessage(
  1474. "Your curse drains Magic from the enemy, boosting your Magic.",
  1475. true);
  1476. }
  1477. p2.setNextAnimation(new Animation(12575));
  1478. p2.prayer.setBoostedLeech(true);
  1479. World.sendProjectile(p2, this, 2240, 35,
  1480. 35, 20, 5, 0, 0);
  1481. WorldTasksManager.schedule(new WorldTask() {
  1482. @Override
  1483. public void run() {
  1484. setNextGraphics(new Graphics(2242));
  1485. }
  1486. }, 1);
  1487. return;
  1488. }
  1489. }
  1490. }
  1491.  
  1492. // overall
  1493.  
  1494. if (p2.prayer.usingPrayer(1, 13)) { // leech defence
  1495. if (Utils.getRandom(10) == 0) {
  1496. if (p2.prayer.reachedMax(6)) {
  1497. p2.getPackets()
  1498. .sendGameMessage(
  1499. "Your opponent has been weakened so much that your leech curse has no effect.",
  1500. true);
  1501. } else {
  1502. p2.prayer.increaseLeechBonus(6);
  1503. p2.getPackets()
  1504. .sendGameMessage(
  1505. "Your curse drains Defence from the enemy, boosting your Defence.",
  1506. true);
  1507. }
  1508. p2.setNextAnimation(new Animation(12575));
  1509. p2.prayer.setBoostedLeech(true);
  1510. World.sendProjectile(p2, this, 2244, 35, 35,
  1511. 20, 5, 0, 0);
  1512. WorldTasksManager.schedule(new WorldTask() {
  1513. @Override
  1514. public void run() {
  1515. setNextGraphics(new Graphics(2246));
  1516. }
  1517. }, 1);
  1518. return;
  1519. }
  1520. }
  1521.  
  1522. if (p2.prayer.usingPrayer(1, 15)) {
  1523. if (Utils.getRandom(10) == 0) {
  1524. if (getRunEnergy() <= 0) {
  1525. p2.getPackets()
  1526. .sendGameMessage(
  1527. "Your opponent has been weakened so much that your leech curse has no effect.",
  1528. true);
  1529. } else {
  1530. p2.setRunEnergy(p2.getRunEnergy() > 90 ? 100
  1531. : p2.getRunEnergy() + 10);
  1532. setRunEnergy(p2.getRunEnergy() > 10 ? getRunEnergy() - 10
  1533. : 0);
  1534. }
  1535. p2.setNextAnimation(new Animation(12575));
  1536. p2.prayer.setBoostedLeech(true);
  1537. World.sendProjectile(p2, this, 2256, 35, 35,
  1538. 20, 5, 0, 0);
  1539. WorldTasksManager.schedule(new WorldTask() {
  1540. @Override
  1541. public void run() {
  1542. setNextGraphics(new Graphics(2258));
  1543. }
  1544. }, 1);
  1545. return;
  1546. }
  1547. }
  1548.  
  1549. if (p2.prayer.usingPrayer(1, 16)) {
  1550. if (Utils.getRandom(10) == 0) {
  1551. if (combatDefinitions
  1552. .getSpecialAttackPercentage() <= 0) {
  1553. p2.getPackets()
  1554. .sendGameMessage(
  1555. "Your opponent has been weakened so much that your leech curse has no effect.",
  1556. true);
  1557. } else {
  1558. p2.combatDefinitions.restoreSpecialAttack();
  1559. combatDefinitions
  1560. .desecreaseSpecialAttack(10);
  1561. }
  1562. p2.setNextAnimation(new Animation(12575));
  1563. p2.prayer.setBoostedLeech(true);
  1564. World.sendProjectile(p2, this, 2252, 35, 35,
  1565. 20, 5, 0, 0);
  1566. WorldTasksManager.schedule(new WorldTask() {
  1567. @Override
  1568. public void run() {
  1569. setNextGraphics(new Graphics(2254));
  1570. }
  1571. }, 1);
  1572. return;
  1573. }
  1574. }
  1575.  
  1576. if (p2.prayer.usingPrayer(1, 4)) { // sap spec
  1577. if (Utils.getRandom(10) == 0) {
  1578. p2.setNextAnimation(new Animation(12569));
  1579. p2.setNextGraphics(new Graphics(2223));
  1580. p2.prayer.setBoostedLeech(true);
  1581. if (combatDefinitions
  1582. .getSpecialAttackPercentage() <= 0) {
  1583. p2.getPackets()
  1584. .sendGameMessage(
  1585. "Your opponent has been weakened so much that your sap curse has no effect.",
  1586. true);
  1587. } else {
  1588. combatDefinitions
  1589. .desecreaseSpecialAttack(10);
  1590. }
  1591. World.sendProjectile(p2, this, 2224, 35, 35,
  1592. 20, 5, 0, 0);
  1593. WorldTasksManager.schedule(new WorldTask() {
  1594. @Override
  1595. public void run() {
  1596. setNextGraphics(new Graphics(2225));
  1597. }
  1598. }, 1);
  1599. return;
  1600. }
  1601. }
  1602. }
  1603. }
  1604. }
  1605. } else {
  1606. NPC n = (NPC) source;
  1607. if (n.getId() == 13448)
  1608. sendSoulSplit(hit, n);
  1609. }
  1610. }
  1611.  
  1612. @Override
  1613. public void sendDeath(final Entity source) {
  1614. if (prayer.hasPrayersOn()
  1615. && getTemporaryAttributtes().get("startedDuel") != Boolean.TRUE) {
  1616. if (prayer.usingPrayer(0, 22)) {
  1617. setNextGraphics(new Graphics(437));
  1618. final Player target = this;
  1619. if (isAtMultiArea()) {
  1620. for (int regionId : getMapRegionsIds()) {
  1621. List<Integer> playersIndexes = World
  1622. .getRegion(regionId).getPlayerIndexes();
  1623. if (playersIndexes != null) {
  1624. for (int playerIndex : playersIndexes) {
  1625. Player player = World.getPlayers().get(
  1626. playerIndex);
  1627. if (player == null
  1628. || !player.hasStarted()
  1629. || player.isDead()
  1630. || player.hasFinished()
  1631. || !player.withinDistance(this, 1)
  1632. || !player.isCanPvp()
  1633. || !target.getControlerManager()
  1634. .canHit(player))
  1635. continue;
  1636. player.applyHit(new Hit(
  1637. target,
  1638. Utils.getRandom((int) (skills
  1639. .getLevelForXp(Skills.PRAYER) * 2.5)),
  1640. HitLook.REGULAR_DAMAGE));
  1641. }
  1642. }
  1643. List<Integer> npcsIndexes = World.getRegion(regionId)
  1644. .getNPCsIndexes();
  1645. if (npcsIndexes != null) {
  1646. for (int npcIndex : npcsIndexes) {
  1647. NPC npc = World.getNPCs().get(npcIndex);
  1648. if (npc == null
  1649. || npc.isDead()
  1650. || npc.hasFinished()
  1651. || !npc.withinDistance(this, 1)
  1652. || !npc.getDefinitions()
  1653. .hasAttackOption()
  1654. || !target.getControlerManager()
  1655. .canHit(npc))
  1656. continue;
  1657. npc.applyHit(new Hit(
  1658. target,
  1659. Utils.getRandom((int) (skills
  1660. .getLevelForXp(Skills.PRAYER) * 2.5)),
  1661. HitLook.REGULAR_DAMAGE));
  1662. }
  1663. }
  1664. }
  1665. } else {
  1666. if (source != null && source != this && !source.isDead()
  1667. && !source.hasFinished()
  1668. && source.withinDistance(this, 1))
  1669. source.applyHit(new Hit(target, Utils
  1670. .getRandom((int) (skills
  1671. .getLevelForXp(Skills.PRAYER) * 2.5)),
  1672. HitLook.REGULAR_DAMAGE));
  1673. }
  1674. WorldTasksManager.schedule(new WorldTask() {
  1675. @Override
  1676. public void run() {
  1677. World.sendGraphics(target, new Graphics(438),
  1678. new WorldTile(target.getX() - 1, target.getY(),
  1679. target.getPlane()));
  1680. World.sendGraphics(target, new Graphics(438),
  1681. new WorldTile(target.getX() + 1, target.getY(),
  1682. target.getPlane()));
  1683. World.sendGraphics(target, new Graphics(438),
  1684. new WorldTile(target.getX(), target.getY() - 1,
  1685. target.getPlane()));
  1686. World.sendGraphics(target, new Graphics(438),
  1687. new WorldTile(target.getX(), target.getY() + 1,
  1688. target.getPlane()));
  1689. World.sendGraphics(target, new Graphics(438),
  1690. new WorldTile(target.getX() - 1,
  1691. target.getY() - 1, target.getPlane()));
  1692. World.sendGraphics(target, new Graphics(438),
  1693. new WorldTile(target.getX() - 1,
  1694. target.getY() + 1, target.getPlane()));
  1695. World.sendGraphics(target, new Graphics(438),
  1696. new WorldTile(target.getX() + 1,
  1697. target.getY() - 1, target.getPlane()));
  1698. World.sendGraphics(target, new Graphics(438),
  1699. new WorldTile(target.getX() + 1,
  1700. target.getY() + 1, target.getPlane()));
  1701. }
  1702. });
  1703. } else if (prayer.usingPrayer(1, 17)) {
  1704. World.sendProjectile(this, new WorldTile(getX() + 2,
  1705. getY() + 2, getPlane()), 2260, 24, 0, 41, 35, 30, 0);
  1706. World.sendProjectile(this, new WorldTile(getX() + 2, getY(),
  1707. getPlane()), 2260, 41, 0, 41, 35, 30, 0);
  1708. World.sendProjectile(this, new WorldTile(getX() + 2,
  1709. getY() - 2, getPlane()), 2260, 41, 0, 41, 35, 30, 0);
  1710.  
  1711. World.sendProjectile(this, new WorldTile(getX() - 2,
  1712. getY() + 2, getPlane()), 2260, 41, 0, 41, 35, 30, 0);
  1713. World.sendProjectile(this, new WorldTile(getX() - 2, getY(),
  1714. getPlane()), 2260, 41, 0, 41, 35, 30, 0);
  1715. World.sendProjectile(this, new WorldTile(getX() - 2,
  1716. getY() - 2, getPlane()), 2260, 41, 0, 41, 35, 30, 0);
  1717.  
  1718. World.sendProjectile(this, new WorldTile(getX(), getY() + 2,
  1719. getPlane()), 2260, 41, 0, 41, 35, 30, 0);
  1720. World.sendProjectile(this, new WorldTile(getX(), getY() - 2,
  1721. getPlane()), 2260, 41, 0, 41, 35, 30, 0);
  1722. final Player target = this;
  1723. WorldTasksManager.schedule(new WorldTask() {
  1724. @Override
  1725. public void run() {
  1726. setNextGraphics(new Graphics(2259));
  1727.  
  1728. if (isAtMultiArea()) {
  1729. for (int regionId : getMapRegionsIds()) {
  1730. List<Integer> playersIndexes = World.getRegion(
  1731. regionId).getPlayerIndexes();
  1732. if (playersIndexes != null) {
  1733. for (int playerIndex : playersIndexes) {
  1734. Player player = World.getPlayers().get(
  1735. playerIndex);
  1736. if (player == null
  1737. || !player.hasStarted()
  1738. || player.isDead()
  1739. || player.hasFinished()
  1740. || !player.isCanPvp()
  1741. || !player.withinDistance(
  1742. target, 2)
  1743. || !target
  1744. .getControlerManager()
  1745. .canHit(player))
  1746. continue;
  1747. player.applyHit(new Hit(
  1748. target,
  1749. Utils.getRandom((skills
  1750. .getLevelForXp(Skills.PRAYER) * 3)),
  1751. HitLook.REGULAR_DAMAGE));
  1752. }
  1753. }
  1754. List<Integer> npcsIndexes = World.getRegion(
  1755. regionId).getNPCsIndexes();
  1756. if (npcsIndexes != null) {
  1757. for (int npcIndex : npcsIndexes) {
  1758. NPC npc = World.getNPCs().get(npcIndex);
  1759. if (npc == null
  1760. || npc.isDead()
  1761. || npc.hasFinished()
  1762. || !npc.withinDistance(target,
  1763. 2)
  1764. || !npc.getDefinitions()
  1765. .hasAttackOption()
  1766. || !target
  1767. .getControlerManager()
  1768. .canHit(npc))
  1769. continue;
  1770. npc.applyHit(new Hit(
  1771. target,
  1772. Utils.getRandom((skills
  1773. .getLevelForXp(Skills.PRAYER) * 3)),
  1774. HitLook.REGULAR_DAMAGE));
  1775. }
  1776. }
  1777. }
  1778. } else {
  1779. if (source != null && source != target
  1780. && !source.isDead()
  1781. && !source.hasFinished()
  1782. && source.withinDistance(target, 2))
  1783. source.applyHit(new Hit(
  1784. target,
  1785. Utils.getRandom((skills
  1786. .getLevelForXp(Skills.PRAYER) * 3)),
  1787. HitLook.REGULAR_DAMAGE));
  1788. }
  1789.  
  1790. World.sendGraphics(target, new Graphics(2260),
  1791. new WorldTile(getX() + 2, getY() + 2,
  1792. getPlane()));
  1793. World.sendGraphics(target, new Graphics(2260),
  1794. new WorldTile(getX() + 2, getY(), getPlane()));
  1795. World.sendGraphics(target, new Graphics(2260),
  1796. new WorldTile(getX() + 2, getY() - 2,
  1797. getPlane()));
  1798.  
  1799. World.sendGraphics(target, new Graphics(2260),
  1800. new WorldTile(getX() - 2, getY() + 2,
  1801. getPlane()));
  1802. World.sendGraphics(target, new Graphics(2260),
  1803. new WorldTile(getX() - 2, getY(), getPlane()));
  1804. World.sendGraphics(target, new Graphics(2260),
  1805. new WorldTile(getX() - 2, getY() - 2,
  1806. getPlane()));
  1807.  
  1808. World.sendGraphics(target, new Graphics(2260),
  1809. new WorldTile(getX(), getY() + 2, getPlane()));
  1810. World.sendGraphics(target, new Graphics(2260),
  1811. new WorldTile(getX(), getY() - 2, getPlane()));
  1812.  
  1813. World.sendGraphics(target, new Graphics(2260),
  1814. new WorldTile(getX() + 1, getY() + 1,
  1815. getPlane()));
  1816. World.sendGraphics(target, new Graphics(2260),
  1817. new WorldTile(getX() + 1, getY() - 1,
  1818. getPlane()));
  1819. World.sendGraphics(target, new Graphics(2260),
  1820. new WorldTile(getX() - 1, getY() + 1,
  1821. getPlane()));
  1822. World.sendGraphics(target, new Graphics(2260),
  1823. new WorldTile(getX() - 1, getY() - 1,
  1824. getPlane()));
  1825. }
  1826. });
  1827. }
  1828. }
  1829. setNextAnimation(new Animation(-1));
  1830. if (!controlerManager.sendDeath())
  1831. return;
  1832. lock(7);
  1833. stopAll();
  1834. if (familiar != null)
  1835. familiar.sendDeath(this);
  1836. WorldTasksManager.schedule(new WorldTask() {
  1837. int loop;
  1838.  
  1839. @Override
  1840. public void run() {
  1841. if (loop == 0) {
  1842. setNextAnimation(new Animation(836));
  1843. } else if (loop == 1) {
  1844. getPackets().sendGameMessage("Oh dear, you have died.");
  1845. if (source instanceof Player) {
  1846. Player killer = (Player) source;
  1847. killer.setAttackedByDelay(4);
  1848. }
  1849. } else if (loop == 3) {
  1850. controlerManager.startControler("DeathEvent");
  1851. } else if (loop == 4) {
  1852. getPackets().sendMusicEffect(90);
  1853. stop();
  1854. }
  1855. loop++;
  1856. }
  1857. }, 0, 1);
  1858. }
  1859.  
  1860. public void sendItemsOnDeath(Player killer) {
  1861. if (rights == 2)
  1862. return;
  1863. charges.die();
  1864. auraManager.removeAura();
  1865. CopyOnWriteArrayList<Item> containedItems = new CopyOnWriteArrayList<Item>();
  1866. for (int i = 0; i < 14; i++) {
  1867. if (equipment.getItem(i) != null
  1868. && equipment.getItem(i).getId() != -1
  1869. && equipment.getItem(i).getAmount() != -1)
  1870. containedItems.add(new Item(equipment.getItem(i).getId(),
  1871. equipment.getItem(i).getAmount()));
  1872. }
  1873. for (int i = 0; i < 28; i++) {
  1874. if (inventory.getItem(i) != null
  1875. && inventory.getItem(i).getId() != -1
  1876. && inventory.getItem(i).getAmount() != -1)
  1877. containedItems.add(new Item(getInventory().getItem(i).getId(),
  1878. getInventory().getItem(i).getAmount()));
  1879. }
  1880. if (containedItems.isEmpty())
  1881. return;
  1882. int keptAmount = 0;
  1883. if(!(controlerManager.getControler() instanceof CorpBeastControler)
  1884. && !(controlerManager.getControler() instanceof CrucibleControler)) {
  1885. keptAmount = hasSkull() ? 0 : 3;
  1886. if (prayer.usingPrayer(0, 10) || prayer.usingPrayer(1, 0))
  1887. keptAmount++;
  1888. }
  1889. if (donator && Utils.random(2) == 0)
  1890. keptAmount += 1;
  1891. CopyOnWriteArrayList<Item> keptItems = new CopyOnWriteArrayList<Item>();
  1892. Item lastItem = new Item(1, 1);
  1893. for (int i = 0; i < keptAmount; i++) {
  1894. for (Item item : containedItems) {
  1895. int price = item.getDefinitions().getValue();
  1896. if (price >= lastItem.getDefinitions().getValue()) {
  1897. lastItem = item;
  1898. }
  1899. }
  1900. keptItems.add(lastItem);
  1901. containedItems.remove(lastItem);
  1902. lastItem = new Item(1, 1);
  1903. }
  1904. inventory.reset();
  1905. equipment.reset();
  1906. for (Item item : keptItems) {
  1907. getInventory().addItem(item);
  1908. }
  1909. for (Item item : containedItems) {
  1910. World.addGroundItem(item, getLastWorldTile(), killer == null ? this : killer, false, 180,
  1911. true, true);
  1912. }
  1913. }
  1914.  
  1915. public void increaseKillCount(Player killed) {
  1916. killed.deathCount++;
  1917. PkRank.checkRank(killed);
  1918. if (killed.getSession().getIP().equals(getSession().getIP()))
  1919. return;
  1920. killCount++;
  1921. getPackets().sendGameMessage(
  1922. "<col=ff0000>You have killed " + killed.getDisplayName()
  1923. + ", you have now " + killCount + " kills.");
  1924. PkRank.checkRank(this);
  1925. }
  1926.  
  1927. public void increaseKillCountSafe(Player killed) {
  1928. PkRank.checkRank(killed);
  1929. if (killed.getSession().getIP().equals(getSession().getIP()))
  1930. return;
  1931. killCount++;
  1932. getPackets().sendGameMessage(
  1933. "<col=ff0000>You have killed " + killed.getDisplayName()
  1934. + ", you have now " + killCount + " kills.");
  1935. PkRank.checkRank(this);
  1936. }
  1937.  
  1938. public void sendRandomJail(Player p) {
  1939. p.resetWalkSteps();
  1940. switch (Utils.getRandom(6)) {
  1941. case 0:
  1942. p.setNextWorldTile(new WorldTile(2669, 10387, 0));
  1943. break;
  1944. case 1:
  1945. p.setNextWorldTile(new WorldTile(2669, 10383, 0));
  1946. break;
  1947. case 2:
  1948. p.setNextWorldTile(new WorldTile(2669, 10379, 0));
  1949. break;
  1950. case 3:
  1951. p.setNextWorldTile(new WorldTile(2673, 10379, 0));
  1952. break;
  1953. case 4:
  1954. p.setNextWorldTile(new WorldTile(2673, 10385, 0));
  1955. break;
  1956. case 5:
  1957. p.setNextWorldTile(new WorldTile(2677, 10387, 0));
  1958. break;
  1959. case 6:
  1960. p.setNextWorldTile(new WorldTile(2677, 10383, 0));
  1961. break;
  1962. }
  1963. }
  1964.  
  1965. @Override
  1966. public int getSize() {
  1967. return appearence.getSize();
  1968. }
  1969.  
  1970. public boolean isCanPvp() {
  1971. return canPvp;
  1972. }
  1973.  
  1974. public void setCanPvp(boolean canPvp) {
  1975. this.canPvp = canPvp;
  1976. appearence.generateAppearenceData();
  1977. getPackets().sendPlayerOption(canPvp ? "Attack" : "null", 1, true);
  1978. getPackets().sendPlayerUnderNPCPriority(canPvp);
  1979. }
  1980.  
  1981. public Prayer getPrayer() {
  1982. return prayer;
  1983. }
  1984.  
  1985. public long getLockDelay() {
  1986. return lockDelay;
  1987. }
  1988.  
  1989. public boolean isLocked() {
  1990. return lockDelay >= Utils.currentTimeMillis();
  1991. }
  1992.  
  1993. public void lock() {
  1994. lockDelay = Long.MAX_VALUE;
  1995. }
  1996.  
  1997. public void lock(long time) {
  1998. lockDelay = Utils.currentTimeMillis() + (time * 600);
  1999. }
  2000.  
  2001. public void unlock() {
  2002. lockDelay = 0;
  2003. }
  2004.  
  2005. public void useStairs(int emoteId, final WorldTile dest, int useDelay,
  2006. int totalDelay) {
  2007. useStairs(emoteId, dest, useDelay, totalDelay, null);
  2008. }
  2009.  
  2010. public void useStairs(int emoteId, final WorldTile dest, int useDelay,
  2011. int totalDelay, final String message) {
  2012. stopAll();
  2013. lock(totalDelay);
  2014. if (emoteId != -1)
  2015. setNextAnimation(new Animation(emoteId));
  2016. if (useDelay == 0)
  2017. setNextWorldTile(dest);
  2018. else {
  2019. WorldTasksManager.schedule(new WorldTask() {
  2020. @Override
  2021. public void run() {
  2022. if (isDead())
  2023. return;
  2024. setNextWorldTile(dest);
  2025. if (message != null)
  2026. getPackets().sendGameMessage(message);
  2027. }
  2028. }, useDelay - 1);
  2029. }
  2030. }
  2031.  
  2032. public Bank getBank() {
  2033. return bank;
  2034. }
  2035.  
  2036. public ControlerManager getControlerManager() {
  2037. return controlerManager;
  2038. }
  2039.  
  2040. public void switchMouseButtons() {
  2041. mouseButtons = !mouseButtons;
  2042. refreshMouseButtons();
  2043. }
  2044.  
  2045. public void switchAllowChatEffects() {
  2046. allowChatEffects = !allowChatEffects;
  2047. refreshAllowChatEffects();
  2048. }
  2049.  
  2050. public void refreshAllowChatEffects() {
  2051. getPackets().sendConfig(171, allowChatEffects ? 0 : 1);
  2052. }
  2053.  
  2054. public void refreshMouseButtons() {
  2055. getPackets().sendConfig(170, mouseButtons ? 0 : 1);
  2056. }
  2057.  
  2058. public void refreshPrivateChatSetup() {
  2059. getPackets().sendConfig(287, privateChatSetup);
  2060. }
  2061.  
  2062. public void refreshOtherChatsSetup() {
  2063. int value = friendChatSetup << 6;
  2064. getPackets().sendConfig(1438, value);
  2065. }
  2066.  
  2067. public void setPrivateChatSetup(int privateChatSetup) {
  2068. this.privateChatSetup = privateChatSetup;
  2069. }
  2070.  
  2071. public void setFriendChatSetup(int friendChatSetup) {
  2072. this.friendChatSetup = friendChatSetup;
  2073. }
  2074.  
  2075. public int getPrivateChatSetup() {
  2076. return privateChatSetup;
  2077. }
  2078.  
  2079. public boolean isForceNextMapLoadRefresh() {
  2080. return forceNextMapLoadRefresh;
  2081. }
  2082.  
  2083. public void setForceNextMapLoadRefresh(boolean forceNextMapLoadRefresh) {
  2084. this.forceNextMapLoadRefresh = forceNextMapLoadRefresh;
  2085. }
  2086.  
  2087. public FriendsIgnores getFriendsIgnores() {
  2088. return friendsIgnores;
  2089. }
  2090.  
  2091. /*
  2092. * do not use this, only used by pm
  2093. */
  2094. public void setUsername(String username) {
  2095. this.username = username;
  2096. }
  2097.  
  2098. public void setDisplayName(String displayName) {
  2099. this.displayName = displayName;
  2100. }
  2101.  
  2102. public void addPotDelay(long time) {
  2103. potDelay = time + Utils.currentTimeMillis();
  2104. }
  2105.  
  2106. public long getPotDelay() {
  2107. return potDelay;
  2108. }
  2109.  
  2110. public void addFoodDelay(long time) {
  2111. foodDelay = time + Utils.currentTimeMillis();
  2112. }
  2113.  
  2114. public long getFoodDelay() {
  2115. return foodDelay;
  2116. }
  2117.  
  2118. public long getBoneDelay() {
  2119. return boneDelay;
  2120. }
  2121.  
  2122. public void addBoneDelay(long time) {
  2123. boneDelay = time + Utils.currentTimeMillis();
  2124. }
  2125.  
  2126. public void addPoisonImmune(long time) {
  2127. poisonImmune = time + Utils.currentTimeMillis();
  2128. getPoison().reset();
  2129. }
  2130.  
  2131. public long getPoisonImmune() {
  2132. return poisonImmune;
  2133. }
  2134.  
  2135. public void addFireImmune(long time) {
  2136. fireImmune = time + Utils.currentTimeMillis();
  2137. }
  2138.  
  2139. public long getFireImmune() {
  2140. return fireImmune;
  2141. }
  2142.  
  2143. @Override
  2144. public void heal(int ammount, int extra) {
  2145. super.heal(ammount, extra);
  2146. refreshHitPoints();
  2147. }
  2148.  
  2149. public MusicsManager getMusicsManager() {
  2150. return musicsManager;
  2151. }
  2152.  
  2153. public HintIconsManager getHintIconsManager() {
  2154. return hintIconsManager;
  2155. }
  2156.  
  2157. public boolean isCastVeng() {
  2158. return castedVeng;
  2159. }
  2160.  
  2161. public void setCastVeng(boolean castVeng) {
  2162. this.castedVeng = castVeng;
  2163. }
  2164.  
  2165. public int getKillCount() {
  2166. return killCount;
  2167. }
  2168.  
  2169. public int getBarrowsKillCount() {
  2170. return barrowsKillCount;
  2171. }
  2172.  
  2173. public int setBarrowsKillCount(int barrowsKillCount) {
  2174. return this.barrowsKillCount = barrowsKillCount;
  2175. }
  2176.  
  2177. public int setKillCount(int killCount) {
  2178. return this.killCount = killCount;
  2179. }
  2180.  
  2181. public int getDeathCount() {
  2182. return deathCount;
  2183. }
  2184.  
  2185. public int setDeathCount(int deathCount) {
  2186. return this.deathCount = deathCount;
  2187. }
  2188.  
  2189. public void setCloseInterfacesEvent(Runnable closeInterfacesEvent) {
  2190. this.closeInterfacesEvent = closeInterfacesEvent;
  2191. }
  2192.  
  2193. public long getMuted() {
  2194. return muted;
  2195. }
  2196.  
  2197. public void setMuted(long muted) {
  2198. this.muted = muted;
  2199. }
  2200.  
  2201. public long getJailed() {
  2202. return jailed;
  2203. }
  2204.  
  2205. public void setJailed(long jailed) {
  2206. this.jailed = jailed;
  2207. }
  2208.  
  2209. public boolean isPermBanned() {
  2210. return permBanned;
  2211. }
  2212.  
  2213. public void setPermBanned(boolean permBanned) {
  2214. this.permBanned = permBanned;
  2215. }
  2216.  
  2217. public long getBanned() {
  2218. return banned;
  2219. }
  2220.  
  2221. public void setBanned(long banned) {
  2222. this.banned = banned;
  2223. }
  2224.  
  2225. public ChargesManager getCharges() {
  2226. return charges;
  2227. }
  2228.  
  2229. public void setPassword(String password) {
  2230. this.password = password;
  2231. }
  2232.  
  2233. public boolean[] getKilledBarrowBrothers() {
  2234. return killedBarrowBrothers;
  2235. }
  2236.  
  2237. public void setHiddenBrother(int hiddenBrother) {
  2238. this.hiddenBrother = hiddenBrother;
  2239. }
  2240.  
  2241. public int getHiddenBrother() {
  2242. return hiddenBrother;
  2243. }
  2244.  
  2245. public void resetBarrows() {
  2246. hiddenBrother = -1;
  2247. killedBarrowBrothers = new boolean[7]; //includes new bro for future use
  2248. barrowsKillCount = 0;
  2249. }
  2250.  
  2251. public int getVotes() {
  2252. return votes;
  2253. }
  2254.  
  2255. public void setVotes(int votes) {
  2256. this.votes = votes;
  2257. }
  2258.  
  2259. public boolean isDonator() {
  2260. return isExtremeDonator() || donator || donatorTill > Utils.currentTimeMillis();
  2261. }
  2262.  
  2263. public boolean isExtremeDonator() {
  2264. return extremeDonator || extremeDonatorTill > Utils.currentTimeMillis();
  2265. }
  2266.  
  2267. public boolean isExtremePermDonator() {
  2268. return extremeDonator;
  2269. }
  2270.  
  2271. public void setExtremeDonator(boolean extremeDonator) {
  2272. this.extremeDonator = extremeDonator;
  2273. }
  2274.  
  2275. public boolean isGraphicDesigner() {
  2276. return isGraphicDesigner;
  2277. }
  2278.  
  2279. public boolean isForumModerator() {
  2280. return isForumModerator;
  2281. }
  2282.  
  2283. public void setGraphicDesigner(boolean isGraphicDesigner) {
  2284. this.isGraphicDesigner = isGraphicDesigner;
  2285. }
  2286.  
  2287. public void setForumModerator(boolean isForumModerator) {
  2288. this.isForumModerator = isForumModerator;
  2289. }
  2290.  
  2291. @SuppressWarnings("deprecation")
  2292. public void makeDonator(int months) {
  2293. if (donatorTill < Utils.currentTimeMillis())
  2294. donatorTill = Utils.currentTimeMillis();
  2295. Date date = new Date(donatorTill);
  2296. date.setMonth(date.getMonth() + months);
  2297. donatorTill = date.getTime();
  2298. }
  2299.  
  2300. @SuppressWarnings("deprecation")
  2301. public void makeDonatorDays(int days) {
  2302. if (donatorTill < Utils.currentTimeMillis())
  2303. donatorTill = Utils.currentTimeMillis();
  2304. Date date = new Date(donatorTill);
  2305. date.setDate(date.getDate()+days);
  2306. donatorTill = date.getTime();
  2307. }
  2308.  
  2309. @SuppressWarnings("deprecation")
  2310. public void makeExtremeDonatorDays(int days) {
  2311. if (extremeDonatorTill < Utils.currentTimeMillis())
  2312. extremeDonatorTill = Utils.currentTimeMillis();
  2313. Date date = new Date(extremeDonatorTill);
  2314. date.setDate(date.getDate()+days);
  2315. extremeDonatorTill = date.getTime();
  2316. }
  2317.  
  2318. @SuppressWarnings("deprecation")
  2319. public String getDonatorTill() {
  2320. return (donator ? "never" : new Date(donatorTill).toGMTString()) + ".";
  2321. }
  2322.  
  2323. @SuppressWarnings("deprecation")
  2324. public String getExtremeDonatorTill() {
  2325. return (extremeDonator ? "never" : new Date(extremeDonatorTill).toGMTString()) + ".";
  2326. }
  2327.  
  2328. public void setDonator(boolean donator) {
  2329. this.donator = donator;
  2330. }
  2331.  
  2332. public String getRecovQuestion() {
  2333. return recovQuestion;
  2334. }
  2335.  
  2336. public void setRecovQuestion(String recovQuestion) {
  2337. this.recovQuestion = recovQuestion;
  2338. }
  2339.  
  2340. public String getRecovAnswer() {
  2341. return recovAnswer;
  2342. }
  2343.  
  2344. public void setRecovAnswer(String recovAnswer) {
  2345. this.recovAnswer = recovAnswer;
  2346. }
  2347.  
  2348. public String getLastMsg() {
  2349. return lastMsg;
  2350. }
  2351.  
  2352. public void setLastMsg(String lastMsg) {
  2353. this.lastMsg = lastMsg;
  2354. }
  2355.  
  2356. public int[] getPouches() {
  2357. return pouches;
  2358. }
  2359.  
  2360. public EmotesManager getEmotesManager() {
  2361. return emotesManager;
  2362. }
  2363.  
  2364. public String getLastIP() {
  2365. return lastIP;
  2366. }
  2367.  
  2368. public String getLastHostname() {
  2369. InetAddress addr;
  2370. try {
  2371. addr = InetAddress.getByName(getLastIP());
  2372. String hostname = addr.getHostName();
  2373. return hostname;
  2374. } catch (UnknownHostException e) {
  2375. e.printStackTrace();
  2376. }
  2377. return null;
  2378. }
  2379.  
  2380. public PriceCheckManager getPriceCheckManager() {
  2381. return priceCheckManager;
  2382. }
  2383.  
  2384. public void setPestPoints(int pestPoints) {
  2385. this.pestPoints = pestPoints;
  2386. }
  2387.  
  2388. public int getPestPoints() {
  2389. return pestPoints;
  2390. }
  2391.  
  2392. public boolean isUpdateMovementType() {
  2393. return updateMovementType;
  2394. }
  2395.  
  2396. public long getLastPublicMessage() {
  2397. return lastPublicMessage;
  2398. }
  2399.  
  2400. public void setLastPublicMessage(long lastPublicMessage) {
  2401. this.lastPublicMessage = lastPublicMessage;
  2402. }
  2403.  
  2404. public CutscenesManager getCutscenesManager() {
  2405. return cutscenesManager;
  2406. }
  2407.  
  2408. public void kickPlayerFromFriendsChannel(String name) {
  2409. if (currentFriendChat == null)
  2410. return;
  2411. currentFriendChat.kickPlayerFromChat(this, name);
  2412. }
  2413.  
  2414. public void sendFriendsChannelMessage(String message) {
  2415. if (currentFriendChat == null)
  2416. return;
  2417. currentFriendChat.sendMessage(this, message);
  2418. }
  2419.  
  2420. public void sendFriendsChannelQuickMessage(QuickChatMessage message) {
  2421. if (currentFriendChat == null)
  2422. return;
  2423. currentFriendChat.sendQuickMessage(this, message);
  2424. }
  2425.  
  2426. public void sendPublicChatMessage(PublicChatMessage message) {
  2427. for (int regionId : getMapRegionsIds()) {
  2428. List<Integer> playersIndexes = World.getRegion(regionId)
  2429. .getPlayerIndexes();
  2430. if (playersIndexes == null)
  2431. continue;
  2432. for (Integer playerIndex : playersIndexes) {
  2433. Player p = World.getPlayers().get(playerIndex);
  2434. if (p == null
  2435. || !p.hasStarted()
  2436. || p.hasFinished()
  2437. || p.getLocalPlayerUpdate().getLocalPlayers()[getIndex()] == null)
  2438. continue;
  2439. p.getPackets().sendPublicMessage(this, message);
  2440. }
  2441. }
  2442. }
  2443.  
  2444. public int[] getCompletionistCapeCustomized() {
  2445. return completionistCapeCustomized;
  2446. }
  2447.  
  2448. public void setCompletionistCapeCustomized(int[] skillcapeCustomized) {
  2449. this.completionistCapeCustomized = skillcapeCustomized;
  2450. }
  2451.  
  2452. public int[] getMaxedCapeCustomized() {
  2453. return maxedCapeCustomized;
  2454. }
  2455.  
  2456. public void setMaxedCapeCustomized(int[] maxedCapeCustomized) {
  2457. this.maxedCapeCustomized = maxedCapeCustomized;
  2458. }
  2459.  
  2460. public void setSkullId(int skullId) {
  2461. this.skullId = skullId;
  2462. }
  2463.  
  2464. public int getSkullId() {
  2465. return skullId;
  2466. }
  2467.  
  2468. public boolean isFilterGame() {
  2469. return filterGame;
  2470. }
  2471.  
  2472. public void setFilterGame(boolean filterGame) {
  2473. this.filterGame = filterGame;
  2474. }
  2475.  
  2476. public void addLogicPacketToQueue(LogicPacket packet) {
  2477. for (LogicPacket p : logicPackets) {
  2478. if (p.getId() == packet.getId()) {
  2479. logicPackets.remove(p);
  2480. break;
  2481. }
  2482. }
  2483. logicPackets.add(packet);
  2484. }
  2485.  
  2486. public DominionTower getDominionTower() {
  2487. return dominionTower;
  2488. }
  2489.  
  2490. public void setPrayerRenewalDelay(int delay) {
  2491. this.prayerRenewalDelay = delay;
  2492. }
  2493.  
  2494. public int getOverloadDelay() {
  2495. return overloadDelay;
  2496. }
  2497.  
  2498. public void setOverloadDelay(int overloadDelay) {
  2499. this.overloadDelay = overloadDelay;
  2500. }
  2501.  
  2502. public Trade getTrade() {
  2503. return trade;
  2504. }
  2505.  
  2506. public void setTeleBlockDelay(long teleDelay) {
  2507. getTemporaryAttributtes().put("TeleBlocked",
  2508. teleDelay + Utils.currentTimeMillis());
  2509. }
  2510.  
  2511. public long getTeleBlockDelay() {
  2512. Long teleblock = (Long) getTemporaryAttributtes().get("TeleBlocked");
  2513. if (teleblock == null)
  2514. return 0;
  2515. return teleblock;
  2516. }
  2517.  
  2518. public void setPrayerDelay(long teleDelay) {
  2519. getTemporaryAttributtes().put("PrayerBlocked",
  2520. teleDelay + Utils.currentTimeMillis());
  2521. prayer.closeAllPrayers();
  2522. }
  2523.  
  2524. public long getPrayerDelay() {
  2525. Long teleblock = (Long) getTemporaryAttributtes().get("PrayerBlocked");
  2526. if (teleblock == null)
  2527. return 0;
  2528. return teleblock;
  2529. }
  2530.  
  2531. public Familiar getFamiliar() {
  2532. return familiar;
  2533. }
  2534.  
  2535. public void setFamiliar(Familiar familiar) {
  2536. this.familiar = familiar;
  2537. }
  2538.  
  2539. public FriendChatsManager getCurrentFriendChat() {
  2540. return currentFriendChat;
  2541. }
  2542.  
  2543. public void setCurrentFriendChat(FriendChatsManager currentFriendChat) {
  2544. this.currentFriendChat = currentFriendChat;
  2545. }
  2546.  
  2547. public String getCurrentFriendChatOwner() {
  2548. return currentFriendChatOwner;
  2549. }
  2550.  
  2551. public void setCurrentFriendChatOwner(String currentFriendChatOwner) {
  2552. this.currentFriendChatOwner = currentFriendChatOwner;
  2553. }
  2554.  
  2555. public int getSummoningLeftClickOption() {
  2556. return summoningLeftClickOption;
  2557. }
  2558.  
  2559. public void setSummoningLeftClickOption(int summoningLeftClickOption) {
  2560. this.summoningLeftClickOption = summoningLeftClickOption;
  2561. }
  2562.  
  2563. public boolean canSpawn() {
  2564. if (Wilderness.isAtWild(this)
  2565. || getControlerManager().getControler() instanceof FightPitsArena
  2566. || getControlerManager().getControler() instanceof CorpBeastControler
  2567. || getControlerManager().getControler() instanceof PestControlLobby
  2568. || getControlerManager().getControler() instanceof PestControlGame
  2569. || getControlerManager().getControler() instanceof ZGDControler
  2570. || getControlerManager().getControler() instanceof GodWars
  2571. || getControlerManager().getControler() instanceof DTControler
  2572. || getControlerManager().getControler() instanceof DuelArena
  2573. || getControlerManager().getControler() instanceof CastleWarsPlaying
  2574. || getControlerManager().getControler() instanceof CastleWarsWaiting
  2575. || getControlerManager().getControler() instanceof FightCaves
  2576. || getControlerManager().getControler() instanceof FightKiln
  2577. || FfaZone.inPvpArea(this)
  2578. || getControlerManager().getControler() instanceof NomadsRequiem
  2579. || getControlerManager().getControler() instanceof QueenBlackDragonController
  2580. || getControlerManager().getControler() instanceof WarControler) {
  2581. return false;
  2582. }
  2583. if(getControlerManager().getControler() instanceof CrucibleControler) {
  2584. CrucibleControler controler = (CrucibleControler) getControlerManager().getControler();
  2585. return !controler.isInside();
  2586. }
  2587. return true;
  2588. }
  2589.  
  2590. public long getPolDelay() {
  2591. return polDelay;
  2592. }
  2593.  
  2594. public void addPolDelay(long delay) {
  2595. polDelay = delay + Utils.currentTimeMillis();
  2596. }
  2597.  
  2598. public void setPolDelay(long delay) {
  2599. this.polDelay = delay;
  2600. }
  2601.  
  2602. public List<Integer> getSwitchItemCache() {
  2603. return switchItemCache;
  2604. }
  2605.  
  2606. public AuraManager getAuraManager() {
  2607. return auraManager;
  2608. }
  2609.  
  2610. public int getMovementType() {
  2611. if (getTemporaryMoveType() != -1)
  2612. return getTemporaryMoveType();
  2613. return getRun() ? RUN_MOVE_TYPE : WALK_MOVE_TYPE;
  2614. }
  2615.  
  2616. public List<String> getOwnedObjectManagerKeys() {
  2617. if (ownedObjectsManagerKeys == null) // temporary
  2618. ownedObjectsManagerKeys = new LinkedList<String>();
  2619. return ownedObjectsManagerKeys;
  2620. }
  2621.  
  2622. public boolean hasInstantSpecial(final int weaponId) {
  2623. switch (weaponId) {
  2624. case 4153:
  2625. case 15486:
  2626. case 22207:
  2627. case 22209:
  2628. case 22211:
  2629. case 22213:
  2630. case 1377:
  2631. case 13472:
  2632. case 35:// Excalibur
  2633. case 8280:
  2634. case 14632:
  2635. return true;
  2636. default: return false;
  2637. }
  2638. }
  2639.  
  2640. public void performInstantSpecial(final int weaponId) {
  2641. int specAmt = PlayerCombat.getSpecialAmmount(weaponId);
  2642. if (combatDefinitions.hasRingOfVigour())
  2643. specAmt *= 0.9;
  2644. if (combatDefinitions.getSpecialAttackPercentage() < specAmt) {
  2645. getPackets().sendGameMessage("You don't have enough power left.");
  2646. combatDefinitions.desecreaseSpecialAttack(0);
  2647. return;
  2648. }
  2649. if (this.getSwitchItemCache().size() > 0) {
  2650. ButtonHandler.submitSpecialRequest(this);
  2651. return;
  2652. }
  2653. switch (weaponId) {
  2654. case 4153:
  2655. combatDefinitions.setInstantAttack(true);
  2656. combatDefinitions.switchUsingSpecialAttack();
  2657. Entity target = (Entity) getTemporaryAttributtes().get("last_target");
  2658. if (target != null && target.getTemporaryAttributtes().get("last_attacker") == this) {
  2659. if (!(getActionManager().getAction() instanceof PlayerCombat) || ((PlayerCombat) getActionManager().getAction()).getTarget() != target) {
  2660. getActionManager().setAction(new PlayerCombat(target));
  2661. }
  2662. }
  2663. break;
  2664. case 1377:
  2665. case 13472:
  2666. setNextAnimation(new Animation(1056));
  2667. setNextGraphics(new Graphics(246));
  2668. setNextForceTalk(new ForceTalk("Raarrrrrgggggghhhhhhh!"));
  2669. int defence = (int) (skills.getLevelForXp(Skills.DEFENCE) * 0.90D);
  2670. int attack = (int) (skills.getLevelForXp(Skills.ATTACK) * 0.90D);
  2671. int range = (int) (skills.getLevelForXp(Skills.RANGE) * 0.90D);
  2672. int magic = (int) (skills.getLevelForXp(Skills.MAGIC) * 0.90D);
  2673. int strength = (int) (skills.getLevelForXp(Skills.STRENGTH) * 1.2D);
  2674. skills.set(Skills.DEFENCE, defence);
  2675. skills.set(Skills.ATTACK, attack);
  2676. skills.set(Skills.RANGE, range);
  2677. skills.set(Skills.MAGIC, magic);
  2678. skills.set(Skills.STRENGTH, strength);
  2679. combatDefinitions.desecreaseSpecialAttack(specAmt);
  2680. break;
  2681. case 35:// Excalibur
  2682. case 8280:
  2683. case 14632:
  2684. setNextAnimation(new Animation(1168));
  2685. setNextGraphics(new Graphics(247));
  2686. setNextForceTalk(new ForceTalk("For Matrix!"));
  2687. final boolean enhanced = weaponId == 14632;
  2688. skills.set(
  2689. Skills.DEFENCE,
  2690. enhanced ? (int) (skills.getLevelForXp(Skills.DEFENCE) * 1.15D)
  2691. : (skills.getLevel(Skills.DEFENCE) + 8));
  2692. WorldTasksManager.schedule(new WorldTask() {
  2693. int count = 5;
  2694.  
  2695. @Override
  2696. public void run() {
  2697. if (isDead() || hasFinished()
  2698. || getHitpoints() >= getMaxHitpoints()) {
  2699. stop();
  2700. return;
  2701. }
  2702. heal(enhanced ? 80 : 40);
  2703. if (count-- == 0) {
  2704. stop();
  2705. return;
  2706. }
  2707. }
  2708. }, 4, 2);
  2709. combatDefinitions.desecreaseSpecialAttack(specAmt);
  2710. break;
  2711. case 15486:
  2712. case 22207:
  2713. case 22209:
  2714. case 22211:
  2715. case 22213:
  2716. setNextAnimation(new Animation(12804));
  2717. setNextGraphics(new Graphics(2319));// 2320
  2718. setNextGraphics(new Graphics(2321));
  2719. addPolDelay(60000);
  2720. combatDefinitions.desecreaseSpecialAttack(specAmt);
  2721. break;
  2722. }
  2723. }
  2724.  
  2725. public void setDisableEquip(boolean equip) {
  2726. disableEquip = equip;
  2727. }
  2728.  
  2729. public boolean isEquipDisabled() {
  2730. return disableEquip;
  2731. }
  2732.  
  2733. public void addDisplayTime(long i) {
  2734. this.displayTime = i + Utils.currentTimeMillis();
  2735. }
  2736.  
  2737. public long getDisplayTime() {
  2738. return displayTime;
  2739. }
  2740.  
  2741. public int getPublicStatus() {
  2742. return publicStatus;
  2743. }
  2744.  
  2745. public void setPublicStatus(int publicStatus) {
  2746. this.publicStatus = publicStatus;
  2747. }
  2748.  
  2749. public int getClanStatus() {
  2750. return clanStatus;
  2751. }
  2752.  
  2753. public void setClanStatus(int clanStatus) {
  2754. this.clanStatus = clanStatus;
  2755. }
  2756.  
  2757. public int getTradeStatus() {
  2758. return tradeStatus;
  2759. }
  2760.  
  2761. public void setTradeStatus(int tradeStatus) {
  2762. this.tradeStatus = tradeStatus;
  2763. }
  2764.  
  2765. public int getAssistStatus() {
  2766. return assistStatus;
  2767. }
  2768.  
  2769. public void setAssistStatus(int assistStatus) {
  2770. this.assistStatus = assistStatus;
  2771. }
  2772.  
  2773. public boolean isSpawnsMode() {
  2774. return spawnsMode;
  2775. }
  2776.  
  2777. public void setSpawnsMode(boolean spawnsMode) {
  2778. this.spawnsMode = spawnsMode;
  2779. }
  2780.  
  2781. public Notes getNotes() {
  2782. return notes;
  2783. }
  2784.  
  2785. public IsaacKeyPair getIsaacKeyPair() {
  2786. return isaacKeyPair;
  2787. }
  2788.  
  2789. public QuestManager getQuestManager() {
  2790. return questManager;
  2791. }
  2792.  
  2793. public boolean isCompletedFightCaves() {
  2794. return completedFightCaves;
  2795. }
  2796.  
  2797. public void setCompletedFightCaves() {
  2798. if(!completedFightCaves) {
  2799. completedFightCaves = true;
  2800. refreshFightKilnEntrance();
  2801. }
  2802. }
  2803.  
  2804. public boolean isCompletedFightKiln() {
  2805. return completedFightKiln;
  2806. }
  2807.  
  2808. public void setCompletedFightKiln() {
  2809. completedFightKiln = true;
  2810. }
  2811.  
  2812.  
  2813. public boolean isWonFightPits() {
  2814. return wonFightPits;
  2815. }
  2816.  
  2817. public void setWonFightPits() {
  2818. wonFightPits = true;
  2819. }
  2820.  
  2821. public boolean isCantTrade() {
  2822. return cantTrade;
  2823. }
  2824.  
  2825. public void setCantTrade(boolean canTrade) {
  2826. this.cantTrade = canTrade;
  2827. }
  2828.  
  2829. public String getYellColor() {
  2830. return yellColor;
  2831. }
  2832.  
  2833. public void setYellColor(String yellColor) {
  2834. this.yellColor = yellColor;
  2835. }
  2836.  
  2837. /**
  2838. * Gets the pet.
  2839. * @return The pet.
  2840. */
  2841. public Pet getPet() {
  2842. return pet;
  2843. }
  2844.  
  2845. /**
  2846. * Sets the pet.
  2847. * @param pet The pet to set.
  2848. */
  2849. public void setPet(Pet pet) {
  2850. this.pet = pet;
  2851. }
  2852.  
  2853. public boolean isSupporter() {
  2854. return isSupporter;
  2855. }
  2856.  
  2857. public void setSupporter(boolean isSupporter) {
  2858. this.isSupporter = isSupporter;
  2859. }
  2860.  
  2861. public Master getSlayerMaster() {
  2862. return master;
  2863. }
  2864.  
  2865. public void setSlayerMaster(Master master) {
  2866. this.master = master;
  2867. }
  2868.  
  2869. public SlayerTask getSlayerTask() {
  2870. return slayerTask;
  2871. }
  2872.  
  2873. public void setSlayerTask(SlayerTask slayerTask) {
  2874. this.slayerTask = slayerTask;
  2875. }
  2876.  
  2877. /**
  2878. * Gets the petManager.
  2879. * @return The petManager.
  2880. */
  2881. public PetManager getPetManager() {
  2882. return petManager;
  2883. }
  2884.  
  2885. /**
  2886. * Sets the petManager.
  2887. * @param petManager The petManager to set.
  2888. */
  2889. public void setPetManager(PetManager petManager) {
  2890. this.petManager = petManager;
  2891. }
  2892.  
  2893. public boolean isXpLocked() {
  2894. return xpLocked;
  2895. }
  2896.  
  2897. public void setXpLocked(boolean locked) {
  2898. this.xpLocked = locked;
  2899. }
  2900.  
  2901. public int getLastBonfire() {
  2902. return lastBonfire;
  2903. }
  2904.  
  2905. public void setLastBonfire(int lastBonfire) {
  2906. this.lastBonfire = lastBonfire;
  2907. }
  2908.  
  2909. public boolean isYellOff() {
  2910. return yellOff;
  2911. }
  2912.  
  2913. public void setYellOff(boolean yellOff) {
  2914. this.yellOff = yellOff;
  2915. }
  2916.  
  2917. public void setInvulnerable(boolean invulnerable) {
  2918. this.invulnerable = invulnerable;
  2919. }
  2920.  
  2921. public double getHpBoostMultiplier() {
  2922. return hpBoostMultiplier;
  2923. }
  2924.  
  2925. public void setHpBoostMultiplier(double hpBoostMultiplier) {
  2926. this.hpBoostMultiplier = hpBoostMultiplier;
  2927. }
  2928.  
  2929. /**
  2930. * Gets the killedQueenBlackDragon.
  2931. * @return The killedQueenBlackDragon.
  2932. */
  2933. public boolean isKilledQueenBlackDragon() {
  2934. return killedQueenBlackDragon;
  2935. }
  2936.  
  2937. /**
  2938. * Sets the killedQueenBlackDragon.
  2939. * @param killedQueenBlackDragon The killedQueenBlackDragon to set.
  2940. */
  2941. public void setKilledQueenBlackDragon(boolean killedQueenBlackDragon) {
  2942. this.killedQueenBlackDragon = killedQueenBlackDragon;
  2943. }
  2944.  
  2945. public boolean hasLargeSceneView() {
  2946. return largeSceneView;
  2947. }
  2948.  
  2949. public void setLargeSceneView(boolean largeSceneView) {
  2950. this.largeSceneView = largeSceneView;
  2951. }
  2952.  
  2953. public boolean isOldItemsLook() {
  2954. return oldItemsLook;
  2955. }
  2956.  
  2957. public void switchItemsLook() {
  2958. oldItemsLook = !oldItemsLook;
  2959. getPackets().sendItemsLook();
  2960. }
  2961.  
  2962. /**
  2963. * @return the runeSpanPoint
  2964. */
  2965. public int getRuneSpanPoints() {
  2966. return runeSpanPoints;
  2967. }
  2968.  
  2969. /**
  2970. * @param runeSpanPoint the runeSpanPoint to set
  2971. */
  2972. public void setRuneSpanPoint(int runeSpanPoints) {
  2973. this.runeSpanPoints = runeSpanPoints;
  2974. }
  2975. /**
  2976. * Adds points
  2977. * @param points
  2978. */
  2979. public void addRunespanPoints(int points) {
  2980. this.runeSpanPoints += points;
  2981. }
  2982.  
  2983. public DuelRules getLastDuelRules() {
  2984. return lastDuelRules;
  2985. }
  2986.  
  2987. public void setLastDuelRules(DuelRules duelRules) {
  2988. this.lastDuelRules = duelRules;
  2989. }
  2990.  
  2991. public boolean isTalkedWithMarv() {
  2992. return talkedWithMarv;
  2993. }
  2994.  
  2995. public void setTalkedWithMarv() {
  2996. talkedWithMarv = true;
  2997. }
  2998.  
  2999. public int getCrucibleHighScore() {
  3000. return crucibleHighScore;
  3001. }
  3002.  
  3003. public void increaseCrucibleHighScore() {
  3004. crucibleHighScore++;
  3005. }
  3006.  
  3007. public void setVoted(long ms) {
  3008. voted = ms + Utils.currentTimeMillis();
  3009. }
  3010.  
  3011. public boolean hasVoted() {
  3012. //disabled so that donators vote for the first 2 days of list reset ^^
  3013. return isDonator() || voted > Utils.currentTimeMillis();
  3014. }
  3015. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement