Advertisement
Guest User

Untitled

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