Advertisement
wreed12345

Untitled

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