Advertisement
Guest User

Untitled

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