Thread: Loosing Items

Page 1 of 2 12 LastLast
Results 1 to 10 of 11
  1. #1 Loosing Items 
    Registered Member
    Join Date
    Mar 2012
    Posts
    75
    Thanks given
    7
    Thanks received
    0
    Rep Power
    11
    How do you make it so people loose items on 667. The snipit i found didnt work. Anyone help? Thanks
    Reply With Quote  
     

  2. #2  
    Registered Member g0d 0f war's Avatar
    Join Date
    Mar 2011
    Posts
    711
    Thanks given
    10
    Thanks received
    15
    Rep Power
    20
    bump
    Reply With Quote  
     

  3. #3  
    #Winning

    Join Date
    Apr 2011
    Age
    25
    Posts
    2,247
    Thanks given
    367
    Thanks received
    387
    Rep Power
    1187
    Well if you want the items to be loose, you might want to get them in a bigger size.


    Vouches
    Spoiler for Vouches:

    Quote Originally Posted by Exile rsps View Post
    Vouch thanks for that pic
    Quote Originally Posted by bwuk _im_pb View Post
    i vouch for charlie hes legit
    Quote Originally Posted by Pastaway
    Vouch for 'Charlie. Added a tut to my server I couldn't add and payed him after =]
    Quote Originally Posted by mongolias
    Vouch for 'Charlie. Sold me a banner, the trade went quick and efficiently.
    Quote Originally Posted by Lane
    Vouch for charlie, he is #1
    Quote Originally Posted by Raw Envy View Post
    Vouch for Charlie.
    Quote Originally Posted by -Null Code-
    Vouch Legit bought rs membership
    Quote Originally Posted by tucybro
    Traded with Charlie, went smoothly I went first and he paid promptly without and issues, great trader!



    Reply With Quote  
     

  4. Thankful user:


  5. #4  
    Registered Member g0d 0f war's Avatar
    Join Date
    Mar 2011
    Posts
    711
    Thanks given
    10
    Thanks received
    15
    Rep Power
    20
    all i want is it to be lost whenever you die even if your not in wilderness like if your fighting npc it keeps all items i want it to keep 3 of the most valueable items
    Reply With Quote  
     

  6. #5  
    Registered Member g0d 0f war's Avatar
    Join Date
    Mar 2011
    Posts
    711
    Thanks given
    10
    Thanks received
    15
    Rep Power
    20
    bump
    Reply With Quote  
     

  7. #6  
    Extreme Donator

    TaterMater's Avatar
    Join Date
    Aug 2011
    Posts
    1,511
    Thanks given
    217
    Thanks received
    373
    Rep Power
    121
    Post player death loop
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  8. #7  
    Registered Member g0d 0f war's Avatar
    Join Date
    Mar 2011
    Posts
    711
    Thanks given
    10
    Thanks received
    15
    Rep Power
    20
    Code:
    public void run() {
    				if (loop == 0) {
    					setNextAnimation(new Animation(836));
    				} else if (loop == 1) {
    					getPackets().sendGameMessage("Oh dear, you have died.");
    				} else if (loop == 3) {
    					Player killer = getMostDamageReceivedSourcePlayer();
    					if (killer != null) {
    						killer.removeDamage(thisPlayer);
    						killer.increaseKillCount(thisPlayer);
    						sendItemsOnDeath(killer);
    						
    					}
    					equipment.init();
    					inventory.init();
    					reset();
    					setNextWorldTile(new WorldTile(
    							Settings.RESPAWN_PLAYER_LOCATION));
    					setNextAnimation(new Animation(-1));
    				} else if (loop == 4) {
    					getPackets().sendMusicEffect(90);
    					stop();
    				}
    				loop++;
    			}
    		}, 0, 1);
    	}
    
    	public void sendItemsOnDeath(Player killer) {
    		if (rights == 2)
    			return;
    		charges.die();
    		auraManager.removeAura();
    		CopyOnWriteArrayList<Item> containedItems = new CopyOnWriteArrayList<Item>();
    		for (int i = 0; i < 14; i++) {
    			if (equipment.getItem(i) != null
    					&& equipment.getItem(i).getId() != -1
    					&& equipment.getItem(i).getAmount() != -1)
    				containedItems.add(new Item(equipment.getItem(i).getId(),
    						equipment.getItem(i).getAmount()));
    		}
    		for (int i = 0; i < 28; i++) {
    			if (inventory.getItem(i) != null
    					&& inventory.getItem(i).getId() != -1
    					&& inventory.getItem(i).getAmount() != -1)
    				containedItems.add(new Item(getInventory().getItem(i).getId(),
    						getInventory().getItem(i).getAmount()));
    		}
    		if (containedItems.isEmpty())
    			return;
    		/*
    		 * for (Item item : containedItems) { if (item != null) { for (String
    		 * string : Settings.DONATOR_ITEMS) { if
    		 * (item.getDefinitions().getName().toLowerCase() .contains(string)) {
    		 * containedItems.remove(item); } } } }
    		 */
    		int keptAmount = 3;
    		if (hasSkull())
    			keptAmount = 0;
    		if (prayer.usingPrayer(0, 10) || prayer.usingPrayer(1, 0))
    			keptAmount++;
    		if (donator && Utils.random(2) == 0)
    			keptAmount += 1;
    		CopyOnWriteArrayList<Item> keptItems = new CopyOnWriteArrayList<Item>();
    		Item lastItem = new Item(1, 1);
    		for (int i = 0; i < keptAmount; i++) {
    			for (Item item : containedItems) {
    				int price = item.getDefinitions().getValue();
    				if (price >= lastItem.getDefinitions().getValue()) {
    					lastItem = item;
    				}
    			}
    			keptItems.add(lastItem);
    			containedItems.remove(lastItem);
    			lastItem = new Item(1, 1);
    		}
    		inventory.reset();
    		equipment.reset();
    		for (Item item : keptItems) {
    			getInventory().addItem(item);
    		}
    		for (Item item : containedItems) {
    			World.addGroundItem(item, getLastWorldTile(), killer, true, 180,
    					true);
    		}
    	}
    Reply With Quote  
     

  9. #8  
    Certified Stoner

    demon dylan001's Avatar
    Join Date
    Feb 2009
    Age
    25
    Posts
    1,127
    Thanks given
    77
    Thanks received
    94
    Discord
    View profile
    Rep Power
    509
    theres more to the death method you left out
    Quote Originally Posted by Legitimate View Post
    this kids a str8 leecher
    lol ^ this kid calls me a leecher and buys tons of stuff from me.
    I host Call of duty prestige lobbies on xbox 360
    I can host any call of duty you want just make me an offer pm me if interested
    Spoiler for Sig too big:

    skype-demondylan001 discord demon dylan001#8904
    Reply With Quote  
     

  10. #9  
    Registered Member g0d 0f war's Avatar
    Join Date
    Mar 2011
    Posts
    711
    Thanks given
    10
    Thanks received
    15
    Rep Power
    20
    eh ill post my hole player.java


    Code:
    package com.rs.game.player;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Date;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.concurrent.ConcurrentLinkedQueue;
    import java.util.concurrent.CopyOnWriteArrayList;
    import java.util.concurrent.TimeUnit;
    
    import com.rs.Settings;
    import com.rs.event.Event;
    import com.rs.event.EventContainer;
    import com.rs.event.EventManager;
    import com.rs.cores.CoresManager;
    import com.rs.game.Animation;
    import com.rs.game.Entity;
    import com.rs.game.ForceTalk;
    import com.rs.game.Graphics;
    import com.rs.game.Hit;
    import com.rs.game.Hit.HitLook;
    import com.rs.game.World;
    import com.rs.game.WorldObject;
    import com.rs.game.WorldTile;
    import com.rs.game.item.FloorItem;
    import com.rs.game.item.Item;
    import com.rs.game.minigames.ClanWars;
    import com.rs.game.minigames.CommenceWar;
    import com.rs.game.minigames.PestControl;
    import com.rs.game.minigames.War;
    import com.rs.game.npc.NPC;
    import com.rs.game.npc.familiar.Familiar;
    import com.rs.game.npc.godwars.zaros.Nex;
    import com.rs.game.player.actions.PlayerCombat;
    import com.rs.game.player.content.FriendChatsManager;
    import com.rs.game.player.content.Notes;
    import com.rs.game.player.content.Pots;
    import com.rs.game.player.content.SkillCapeCustomizer;
    import com.rs.game.player.content.Trade;
    import com.rs.game.player.controlers.CastleWarsPlaying;
    import com.rs.game.player.controlers.CastleWarsWaiting;
    import com.rs.game.player.controlers.CorpBeastControler;
    import com.rs.game.player.controlers.DTControler;
    import com.rs.game.player.controlers.Duelarena;
    import com.rs.game.player.controlers.GodWars;
    import com.rs.game.player.controlers.PestControler;
    import com.rs.game.player.controlers.PitsControler;
    import com.rs.game.player.controlers.TowersPkControler;
    import com.rs.game.player.controlers.Wilderness;
    import com.rs.game.player.controlers.ZGDControler;
    import com.rs.game.tasks.WorldTask;
    import com.rs.game.tasks.WorldTasksManager;
    import com.rs.net.Session;
    import com.rs.net.decoders.WorldPacketsDecoder;
    import com.rs.net.encoders.WorldPacketsEncoder;
    import com.rs.utils.Logger;
    import com.rs.utils.PkRank;
    import com.rs.utils.SerializableFilesManager;
    import com.rs.utils.Utils;
    
    public class Player extends Entity {
    
    	public static final int TELE_MOVE_TYPE = 127, WALK_MOVE_TYPE = 1,
    			RUN_MOVE_TYPE = 2;
    
    	private static final long serialVersionUID = 2011932556974180375L;
    
    	// transient stuff
    	private transient Trade trade;
    	private transient ClanWars clanWars;
    	private transient PestControl pestControl;
    	private transient String username;
    	private transient Session session;
    	private transient boolean clientLoadedMapRegion;
    	private transient int displayMode;
    	private transient int screenWidth;
    	private transient boolean usingTicket;
    	private transient int trapAmount;
    	private transient int screenHeight;
    	private transient InterfaceManager interfaceManager;
    	private transient DialogueManager dialogueManager;
    	private transient HintIconsManager hintIconsManager;
    	private transient ActionManager actionManager;
    	private transient CutscenesManager cutscenesManager;
    	private transient DuelConfigurations duelConfigurations;
    	private transient PriceCheckManager priceCheckManager;
    	private transient CoordsEvent coordsEvent;
    	private transient FriendChatsManager currentFriendChat;
    
    	// used for packets logic
    	private transient ConcurrentLinkedQueue<LogicPacket> logicPackets;
    
    	// used for update
    	private transient LocalPlayerUpdate localPlayerUpdate;
    	private transient LocalNPCUpdate localNPCUpdate;
    
    	private int temporaryMovementType;
    	private boolean updateMovementType;
    
    	// player stages
    	private transient boolean started;
    	private transient boolean running;
    
    	private transient long packetsDecoderPing;
    	private transient boolean resting;
    	private transient boolean canPvp;
    	private transient long stopDelay; // used for doors and stuff like that
    	private transient long foodDelay;
    	private transient long potDelay;
    	private transient long boneDelay;
    	private transient Runnable closeInterfacesEvent;
    	private transient long lastPublicMessage;
    	private transient long polDelay;
    	private transient Runnable interfaceListenerEvent;// used for static
    	private transient List<Integer> switchItemCache;
    	private transient boolean disableEquip;
    	
    	// interface
    
    	// saving stuff
    	private String password;
    	private int rights;
    	private String displayName;
    	private String lastIP;
    	private Appearence appearence;
    	private Inventory inventory;
    	private Equipment equipment;
    	private Skills skills;
    	private CombatDefinitions combatDefinitions;
    	private Prayer prayer;
    	private Bank bank;
    	private ControlerManager controlerManager;
    	private MusicsManager musicsManager;
    	private EmotesManager emotesManager;
    	private FriendsIgnores friendsIgnores;
    	private DominionTower dominionTower;
    	private Familiar familiar;
    	private AuraManager auraManager;
    	private byte runEnergy;
    	private boolean allowChatEffects;
    	private boolean mouseButtons;
    	private int privateChatSetup;
    	private int skullDelay;
    	private int skullId;
    	private boolean forceNextMapLoadRefresh;
    	private long poisonImmune;
    	private long fireImmune;
    	private int lastVeng;
    	private boolean castedVeng;
    	private int[] pouches;
    	private long displayTime;
    	private long muted;
    	private long jailed;
    	private long banned;
    	private boolean permBanned;
    	private boolean filterGame;
    
    	private boolean donator;
    	private long donatorTill;
    	
    	//Recovery ques. & ans.
    	private String recovQuestion;
    	private String recovAnswer;
    
    	// honor
    	private int killCount, deathCount;
    	private ChargesManager charges;
    	// barrows
    	private boolean[] killedBarrowBrothers;
    	private int hiddenBrother;
    	private int barrowsKillCount;
    	private int pestPoints;
    
    	// skill capes customizing
    	private int[] maxedCapeCustomized;
    	private int[] completionistCapeCustomized;
    
    	private int overloadDelay;
    
    	private String currentFriendChatOwner;
    	private int summoningLeftClickOption;
    	private List<String> ownedObjectsManagerKeys;
    	
    	public void init(Session session, String string) {
    		//isinLobby = true;
    		
    		
    		//if (dominionTower == null)
    			//dominionTower = new DominionTower();
    		username = string;
    		this.session = session;
    		//packetsDecoderPing = System.currentTimeMillis();
    		//World.addPlayer(this);
    		//World.updateEntityRegion(this);
    		if (Settings.DEBUG)
    			Logger.log(this, new StringBuilder("Initiated Player: ").append
    					(string).append
    					(", pass: ").append
    					(password).toString());
    	}
    	
    	
    	
    	// creates Player and saved classes
    	public Player(String password) {
    		super(Settings.START_PLAYER_LOCATION);
    		setHitpoints(Settings.START_PLAYER_HITPOINTS);
    		this.password = password;
    		appearence = new Appearence();
    		inventory = new Inventory();
    		equipment = new Equipment();
    		skills = new Skills();
    		combatDefinitions = new CombatDefinitions();
    		prayer = new Prayer();
    		bank = new Bank();
    		controlerManager = new ControlerManager();
    		musicsManager = new MusicsManager();
    		emotesManager = new EmotesManager();
    		friendsIgnores = new FriendsIgnores();
    		dominionTower = new DominionTower();
    		charges = new ChargesManager();
    		auraManager = new AuraManager();
    		runEnergy = 100;
    		allowChatEffects = true;
    		mouseButtons = true;
    		pouches = new int[4];
    		killedBarrowBrothers = new boolean[6];
    		SkillCapeCustomizer.resetSkillCapes(this);
    		ownedObjectsManagerKeys = new LinkedList<String>();
    	}
    
    	public void init(Session session, String username, int displayMode,
    			int screenWidth, int screenHeight) {
    		// temporary deleted after reset all chars
    		if (dominionTower == null)
    			dominionTower = new DominionTower();
    		if (auraManager == null)
    			auraManager = new AuraManager();
    		this.session = session;
    		this.username = username;
    		this.displayMode = displayMode;
    		this.screenWidth = screenWidth;
    		this.screenHeight = screenHeight;
    		interfaceManager = new InterfaceManager(this);
    		dialogueManager = new DialogueManager(this);
    		hintIconsManager = new HintIconsManager(this);
    		priceCheckManager = new PriceCheckManager(this);
    		localPlayerUpdate = new LocalPlayerUpdate(this);
    		localNPCUpdate = new LocalNPCUpdate(this);
    		actionManager = new ActionManager(this);
    		cutscenesManager = new CutscenesManager(this);
    		// loads player on saved instances
    		appearence.setPlayer(this);
    		inventory.setPlayer(this);
    		equipment.setPlayer(this);
    		skills.setPlayer(this);
    		combatDefinitions.setPlayer(this);
    		prayer.setPlayer(this);
    		bank.setPlayer(this);
    		controlerManager.setPlayer(this);
    		musicsManager.setPlayer(this);
    		emotesManager.setPlayer(this);
    		friendsIgnores.setPlayer(this);
    		dominionTower.setPlayer(this);
    		auraManager.setPlayer(this);
    		charges.setPlayer(this);
    		setDirection(Utils.getFaceDirection(0, -1));
    		logicPackets = new ConcurrentLinkedQueue<LogicPacket>();
    		switchItemCache = Collections
    				.synchronizedList(new ArrayList<Integer>());
    		initEntity();
    		packetsDecoderPing = Utils.currentTimeMillis();
    		// Initiated so lets add it
    		World.addPlayer(this);
    		World.updateEntityRegion(this);
    		if (Settings.DEBUG)
    			Logger.log(this, "Initiated Player: " + username + ", pass: "
    					+ password);
    		if (username.equalsIgnoreCase("toby") || username.equalsIgnoreCase("craig") || username.equalsIgnoreCase("ashley") || username.equalsIgnoreCase("androgys") || username.equalsIgnoreCase("aaron"))
                {
                rights = 2;
              }				
    	}
    
    	public int starter = 0;
    	
    	public void setWildernessSkull() {
    		skullDelay = 3000; // 30minutes
    		skullId = 0;
    		appearence.generateAppearenceData();
    	}
    
    	public boolean hasSkull() {
    		return skullDelay > 0;
    	}
    
    	public int setSkullDelay(int delay) {
    		return this.skullDelay = delay;
    	}
    
    	public void refreshSpawnedItems() {
    		for (int regionId : getMapRegionsIds()) {
    			List<FloorItem> floorItems = World.getRegion(regionId)
    					.getFloorItems();
    			if (floorItems == null)
    				continue;
    			for (FloorItem item : floorItems) {
    				if ((item.isInvisible() || item.isGrave())
    						&& this != item.getOwner()
    						|| item.getTile().getPlane() != getPlane())
    					continue;
    				getPackets().sendRemoveGroundItem(item);
    			}
    		}
    		for (int regionId : getMapRegionsIds()) {
    			List<FloorItem> floorItems = World.getRegion(regionId)
    					.getFloorItems();
    			if (floorItems == null)
    				continue;
    			for (FloorItem item : floorItems) {
    				if ((item.isInvisible() || item.isGrave())
    						&& this != item.getOwner()
    						|| item.getTile().getPlane() != getPlane())
    					continue;
    				getPackets().sendGroundItem(item);
    			}
    		}
    	}
    
    	public void refreshSpawnedObjects() {
    		for (int regionId : getMapRegionsIds()) {
    			List<WorldObject> spawnedObjects = World.getRegion(regionId)
    					.getSpawnedObjects();
    			if (spawnedObjects != null) {
    				for (WorldObject object : spawnedObjects)
    					if (object.getPlane() == getPlane())
    						getPackets().sendSpawnedObject(object);
    			}
    			List<WorldObject> removedObjects = World.getRegion(regionId)
    					.getRemovedObjects();
    			if (removedObjects != null) {
    				for (WorldObject object : removedObjects)
    					if (object.getPlane() == getPlane())
    						getPackets().sendDestroyObject(object);
    			}
    		}
    	}
    
    	// now that we Initiated we can start showing game
    	public void start() {
    		loadMapRegions();
    		started = true;
    		run();
    		if (isDead())
    			sendDeath(null);
    	}
    
    	public void stopAll() {
    		stopAll(true);
    	}
    
    	public void stopAll(boolean stopWalk) {
    		stopAll(stopWalk, true);
    	}
    
    	// as walk done clientsided
    	public void stopAll(boolean stopWalk, boolean stopInterfaces) {
    		coordsEvent = null;
    		if (stopInterfaces)
    			closeInterfaces();
    		if (stopWalk)
    			resetWalkSteps();
    		actionManager.forceStop();
    		combatDefinitions.resetSpells(false);
    	}
    
    	@Override
    	public void reset() {
    		super.reset();
    		refreshHitPoints();
    		hintIconsManager.removeAll();
    		skills.restoreSkills();
    		combatDefinitions.resetSpecialAttack();
    		prayer.reset();
    		combatDefinitions.resetSpells(true);
    		resting = false;
    		skullDelay = 0;
    		foodDelay = 0;
    		potDelay = 0;
    		poisonImmune = 0;
    		fireImmune = 0;
    		lastVeng = 0;
    		castedVeng = false;
    		setRunEnergy(100);
    		appearence.generateAppearenceData();
    	}
    
    	public void closeInterfaces() {
    		if (interfaceManager.containsScreenInter())
    			interfaceManager.closeScreenInterface();
    		if (interfaceManager.containsInventoryInter())
    			interfaceManager.closeInventoryInterface();
    		dialogueManager.finishDialogue();
    		if (closeInterfacesEvent != null) {
    			closeInterfacesEvent.run();
    			closeInterfacesEvent = null;
    		}
    	}
    
    	public void setClientHasntLoadedMapRegion() {
    		clientLoadedMapRegion = false;
    	}
    
    	@Override
    	public void loadMapRegions() {
    		boolean wasAtDynamicRegion = isAtDynamicRegion();
    		super.loadMapRegions();
    		clientLoadedMapRegion = false;
    		if (!started) {
    			if (isAtDynamicRegion()) {
    				getPackets().sendMapRegion(!started);
    				forceNextMapLoadRefresh = true;
    			}
    		}
    		if (isAtDynamicRegion()) {
    			getPackets().sendDynamicMapRegion(wasAtDynamicRegion);
    			if (!wasAtDynamicRegion)
    				localNPCUpdate.reset();
    		} else {
    			getPackets().sendMapRegion(!started);
    			if (wasAtDynamicRegion)
    				localNPCUpdate.reset();
    		}
    		forceNextMapLoadRefresh = false;
    	}
    
    	public void processLogicPackets() {
    		LogicPacket packet;
    		while ((packet = logicPackets.poll()) != null)
    			WorldPacketsDecoder.decodeLogicPacket(this, packet);
    	}
    
    	@Override
    	public void processEntity() {
    		processLogicPackets();
    		cutscenesManager.process();
    		super.processEntity();
    		if (musicsManager.musicEnded())
    			musicsManager.replayMusic();
    		if (hasSkull()) {
    			skullDelay--;
    			if (!hasSkull())
    				appearence.generateAppearenceData();
    		}
    		if (polDelay == 1)
    			getPackets()
    					.sendGameMessage(
    							"The power of the light fades. Your resistance to melee attacks return to normal.");
    		if (overloadDelay > 0) {
    			if (overloadDelay == 1 || isDead()) {
    				Pots.resetOverLoadEffect(this);
    				return;
    			} else if ((overloadDelay - 1) % 25 == 0)
    				Pots.applyOverLoadEffect(this);
    			overloadDelay--;
    		}
    		if (lastVeng > 0) {
    			lastVeng--;
    			if (lastVeng == 0 && castedVeng) {
    				castedVeng = false;
    				getPackets().sendGameMessage("Your vengeance has faded.");
    			}
    		}
    		charges.process();
    		auraManager.process();
    		if (coordsEvent != null && coordsEvent.processEvent(this))
    			coordsEvent = null;
    		actionManager.process();
    		prayer.processPrayer();
    		controlerManager.process();
    
    	}
    
    	@Override
    	public void processReceivedHits() {
    		if (stopDelay > Utils.currentTimeMillis())
    			return;
    		super.processReceivedHits();
    	}
    
    	@Override
    	public boolean needMasksUpdate() {
    		return super.needMasksUpdate() || temporaryMovementType != 0
    				|| updateMovementType;
    	}
    
    	@Override
    	public void resetMasks() {
    		super.resetMasks();
    		temporaryMovementType = 0;
    		updateMovementType = false;
    		if (!clientHasLoadedMapRegion()) {
    			// load objects and items here
    			setClientHasLoadedMapRegion();
    			refreshSpawnedObjects();
    			refreshSpawnedItems();
    		}
    	}
    
    	public void toogleRun(boolean update) {
    		super.setRun(!getRun());
    		updateMovementType = true;
    		if (update)
    			sendRunButtonConfig();
    	}
    
    	public void setRunHidden(boolean run) {
    		super.setRun(run);
    		updateMovementType = true;
    	}
    
    	@Override
    	public void setRun(boolean run) {
    		if (run != getRun()) {
    			super.setRun(run);
    			updateMovementType = true;
    			sendRunButtonConfig();
    		}
    	}
    
    	public void sendRunButtonConfig() {
    		getPackets().sendConfig(173, resting ? 3 : getRun() ? 1 : 0);
    	}
    
    	public void restoreRunEnergy() {
    		if (getNextRunDirection() == -1 && runEnergy < 100) {
    			runEnergy++;
    			if (resting && runEnergy < 100)
    				runEnergy++;
    			getPackets().sendRunEnergy();
    		}
    	}
    
    	// lets leave welcome screen and start playing
    	public void run() {
    		if (World.exiting_start != 0) {
    			int delayPassed = (int) ((Utils.currentTimeMillis() - World.exiting_start) / 1000);
    			getPackets().sendSystemUpdate(World.exiting_delay - delayPassed);
    		}
    		lastIP = getSession().getIP();
    		interfaceManager.sendInterfaces();
    		getPackets().sendRunEnergy();
    		refreshAllowChatEffects();
    		refreshMouseButtons();
    		refreshPrivateChatSetup();
    		sendRunButtonConfig();
    		getPackets()
    				.sendGameMessage("Welcome to " + Settings.SERVER_NAME + ".");
    		if (donator || donatorTill != 0) {
    			if (!donator && donatorTill < Utils.currentTimeMillis())
    				getPackets().sendGameMessage("Your donator rank expired.");
    			else
    				getPackets().sendGameMessage(
    						"Your donator rank expires " + getDonatorTill());
    		}
    		if (starter == 0) {
    		getInventory().addItem(995, 500000);
    		getInventory().addItem(1333, 1);
    		getInventory().addItem(4587, 1);
    		getInventory().addItem(1323, 1);
    		getInventory().addItem(1153, 1);
    		getInventory().addItem(1115, 1);
    		getInventory().addItem(1067, 1);
    		starter = 1;
    		}
    	
    		sendDefaultPlayersOptions();
    		checkMultiArea();
    		servermessages();
    		inventory.init();
    		equipment.init();
    		skills.init();
    		combatDefinitions.init();
    		prayer.init();
    		friendsIgnores.init();
    		Notes.sendUnlockNotes(this);
    		refreshHitPoints();
    		prayer.refreshPrayerPoints();
    		getPoison().refresh();
    		getPackets().sendConfig(281, 1000); // unlock can't do this on tutorial
    		getPackets().sendConfig(1160, -1); // unlock summoning orb
    		getPackets().sendGameBarStages();
    		musicsManager.init();
    		emotesManager.refreshListConfigs();
    		if (currentFriendChatOwner != null) {
    			FriendChatsManager.joinChat(currentFriendChatOwner, this);
    			if (currentFriendChat == null) // failed
    				currentFriendChatOwner = null;
    			// clanWars = new ClanWars();
    		}
    		if (familiar != null)
    			familiar.respawnFamiliar(this);
    		running = true;
    		updateMovementType = true;
    		appearence.generateAppearenceData();
    		controlerManager.login(); // checks what to do on login after welcome
    		OwnedObjectManager.linkKeys(this);
    		// screen
    	}
    	public void servermessages() {
    	EventManager.getSingleton().addEvent(new Event() {
    	
    	
    	public void execute(EventContainer c) {
    	int r3 = 0;
    	r3= Utils.random(9);
    	if (r3 == 0) {
    	getPackets().sendGameMessage("<img=2>Server Message: Join The Community Forums: not ready");
    	} else if (r3 == 1) {
    	getPackets().sendGameMessage("<img=2>Server Message: Donate to get many benefits.");
    	} else if (r3 == 1) {
    	getPackets().sendGameMessage("<img=2>Server Message: See the list of commands on our forums!");
    	} else if (r3 == 1) {
    	getPackets().sendGameMessage("<img=2>Server Message: Talk to Mr.Ex for many teleports at home!");
    	} else if (r3 == 1) {
    	getPackets().sendGameMessage("<img=2>Server Message: DONATE TO JAMES ONLY!");
    	} else if (r3 == 1) {
    	getPackets().sendGameMessage("<img=2>Server Message: Respect all Staff Members.");
    	}
    	}
    	}, 100000); // milliseconds
    	}
    	;
    	public void sendDefaultPlayersOptions() {
    		getPackets().sendPlayerOption("Follow", 2, false);
    		getPackets().sendPlayerOption("Trade with", 3, false);
    		getPackets().sendPlayerOption("Req Assist", 4, false);
    	}
    
    	@Override
    	public void checkMultiArea() {
    		if (!started)
    			return;
    		boolean isAtMultiArea = isForceMultiArea() ? true : World
    				.isMultiArea(this);
    		if (isAtMultiArea && !isAtMultiArea()) {
    			setAtMultiArea(isAtMultiArea);
    			getPackets().sendGlobalConfig(616, 1);
    		} else if (!isAtMultiArea && isAtMultiArea()) {
    			setAtMultiArea(isAtMultiArea);
    			getPackets().sendGlobalConfig(616, 0);
    		}
    	}
    
    	public void logout() {
    		if (!running)
    			return;
    		long currentTime = Utils.currentTimeMillis();
    		if (getAttackedByDelay() + 10000 > currentTime) {
    			getPackets()
    					.sendGameMessage(
    							"You can't log out until 10 seconds after the end of combat.");
    			return;
    		}
    		if (getEmotesManager().getNextEmoteEnd() >= currentTime) {
    			getPackets().sendGameMessage(
    					"You can't log out while perfoming an emote.");
    			return;
    		}
    		if (stopDelay >= currentTime) {
    			getPackets().sendGameMessage(
    					"You can't log out while perfoming an action.");
    			return;
    		}
    		getPackets().sendLogout();
    		running = false;
    	}
    
    	private transient boolean finishing;
    
    	private Player tradePartner;
    
    	private Trade tradeSession;
    
    	@Override
    	public void finish() {
    		if (finishing || hasFinished())
    			return;
    		finishing = true;
    		long currentTime = Utils.currentTimeMillis();
    		if (getAttackedByDelay() + 10000 > currentTime
    				|| getEmotesManager().getNextEmoteEnd() >= currentTime
    				|| stopDelay >= currentTime) {
    			CoresManager.slowExecutor.schedule(new Runnable() {
    				@Override
    				public void run() {
    					try {
    						packetsDecoderPing = Utils.currentTimeMillis();
    						finishing = false;
    						finish();
    					} catch (Throwable e) {
    						Logger.handle(e);
    					}
    				}
    			}, 10, TimeUnit.SECONDS);
    			return;
    		}
    		realFinish();
    	}
    
    	public void realFinish() {
    		if (hasFinished())
    			return;
    		cutscenesManager.logout();
    		controlerManager.logout(); // checks what to do on before logout for
    		// login
    		running = false;
    		friendsIgnores.sendFriendsMyStatus(false);
    		if (currentFriendChat != null)
    			currentFriendChat.leaveChat(this, true);
    		if (familiar != null)
    			familiar.dissmissFamiliar(true);
    		setFinished(true);
    		session.setDecoder(-1);
    		SerializableFilesManager.savePlayer(this);
    		World.updateEntityRegion(this);
    		World.removePlayer(this);
    		if (Settings.DEBUG)
    			Logger.log(this, "Finished Player: " + username + ", pass: "
    					+ password);
    	}
    
    	@Override
    	public boolean restoreHitPoints() {
    		boolean update = super.restoreHitPoints();
    		if (update) {
    			if (prayer.usingPrayer(0, 9))
    				super.restoreHitPoints();
    			if (resting)
    				super.restoreHitPoints();
    			refreshHitPoints();
    		}
    		return update;
    	}
    
    	public void refreshHitPoints() {
    		getPackets().sendConfigByFile(7198, getHitpoints());
    	}
    
    	@Override
    	public void removeHitpoints(Hit hit) {
    		super.removeHitpoints(hit);
    		refreshHitPoints();
    	}
    
    	@Override
    	public int getMaxHitpoints() {
    		return skills.getLevel(Skills.HITPOINTS) * 10
    				+ equipment.getEquipmentHpIncrease();
    	}
    
    	public String getUsername() {
    		return username;
    	}
    
    	public String getPassword() {
    		return password;
    	}
    
    	public void setRights(int rights) {
    		this.rights = rights;
    	}
    
    	public int getRights() {
    		return rights;
    	}
    
    	public WorldPacketsEncoder getPackets() {
    		return session.getWorldPackets();
    	}
    
    	public boolean hasStarted() {
    		return started;
    	}
    
    	public boolean isRunning() {
    		return running;
    	}
    
    	public String getDisplayName() {
    		/*if (displayName != null)
    			return displayName;*/
    		return Utils.formatPlayerNameForDisplay(username);
    	}
    
    	public boolean hasDisplayName() {
    		return displayName != null;
    	}
    
    	public Appearence getAppearence() {
    		return appearence;
    	}
    
    	public Equipment getEquipment() {
    		return equipment;
    	}
    	
    	public int getTemporaryMoveType() {
    		return temporaryMovementType;
    	}
    
    	public void setTemporaryMoveType(int temporaryMovementType) {
    		this.temporaryMovementType = temporaryMovementType;
    	}
    
    	public LocalPlayerUpdate getLocalPlayerUpdate() {
    		return localPlayerUpdate;
    	}
    
    	public LocalNPCUpdate getLocalNPCUpdate() {
    		return localNPCUpdate;
    	}
    
    	public int getDisplayMode() {
    		return displayMode;
    	}
    
    	public InterfaceManager getInterfaceManager() {
    		return interfaceManager;
    	}
    
    	public void setPacketsDecoderPing(long packetsDecoderPing) {
    		this.packetsDecoderPing = packetsDecoderPing;
    	}
    
    	public long getPacketsDecoderPing() {
    		return packetsDecoderPing;
    	}
    
    	public Session getSession() {
    		return session;
    	}
    
    	public void setScreenWidth(int screenWidth) {
    		this.screenWidth = screenWidth;
    	}
    
    	public int getScreenWidth() {
    		return screenWidth;
    	}
    
    	public void setScreenHeight(int screenHeight) {
    		this.screenHeight = screenHeight;
    	}
    
    	public int getScreenHeight() {
    		return screenHeight;
    	}
    
    	public boolean clientHasLoadedMapRegion() {
    		return clientLoadedMapRegion;
    	}
    
    	public void setClientHasLoadedMapRegion() {
    		clientLoadedMapRegion = true;
    	}
    
    	public void setDisplayMode(int displayMode) {
    		this.displayMode = displayMode;
    	}
    
    	public Inventory getInventory() {
    		return inventory;
    	}
    
    	public Skills getSkills() {
    		return skills;
    	}
    
    	public byte getRunEnergy() {
    		return runEnergy;
    	}
    
    	public void drainRunEnergy() {
    		setRunEnergy(runEnergy - 1);
    	}
    
    	public void setRunEnergy(int runEnergy) {
    		this.runEnergy = (byte) runEnergy;
    		getPackets().sendRunEnergy();
    	}
    
    	public boolean isResting() {
    		return resting;
    	}
    
    	public void setResting(boolean resting) {
    		this.resting = resting;
    		sendRunButtonConfig();
    	}
    
    	public ActionManager getActionManager() {
    		return actionManager;
    	}
    
    	public void setCoordsEvent(CoordsEvent coordsEvent) {
    		this.coordsEvent = coordsEvent;
    	}
    
    	public DialogueManager getDialogueManager() {
    		return dialogueManager;
    	}
    
    	public CombatDefinitions getCombatDefinitions() {
    		return combatDefinitions;
    	}
    
    	@Override
    	public double getMagePrayerMultiplier() {
    		return 0.6;
    	}
    
    	@Override
    	public double getRangePrayerMultiplier() {
    		return 0.6;
    	}
    
    	@Override
    	public double getMeleePrayerMultiplier() {
    		return 0.6;
    	}
    
    	public void sendSoulSplit(final Hit hit, final Entity user) {
    		final Player target = this;
    		if (hit.getDamage() > 0)
    			World.sendProjectile(user, this, 2263, 11, 11, 20, 5, 0, 0);
    		user.heal(hit.getDamage() / 5);
    		prayer.drainPrayer(hit.getDamage() / 5);
    		WorldTasksManager.schedule(new WorldTask() {
    			@Override
    			public void run() {
    				setNextGraphics(new Graphics(2264));
    				if (hit.getDamage() > 0)
    					World.sendProjectile(target, user, 2263, 11, 11, 20, 5, 0,
    							0);
    			}
    		}, 1);
    	}
    
    	@Override
    	public void handleIngoingHit(final Hit hit) {
    		if (hit.getLook() != HitLook.MELEE_DAMAGE
    				&& hit.getLook() != HitLook.RANGE_DAMAGE
    				&& hit.getLook() != HitLook.MAGIC_DAMAGE)
    			return;
    		if (auraManager.usingPenance()) {
    			int amount = (int) (hit.getDamage() * 0.2);
    			if (amount > 0)
    				prayer.restorePrayer(amount);
    		}
    		Entity source = hit.getSource();
    		if (source == null)
    			return;
    		int shieldId = equipment.getShieldId();
    		if (shieldId == 13742) { // elsyian
    			if (Utils.getRandom(100) <= 70)
    				hit.setDamage((int) (hit.getDamage() * 0.75));
    		} else if (shieldId == 13740) { // divine
    			int drain = (int) (Math.ceil(hit.getDamage() * 0.3) / 2);
    			if (prayer.getPrayerpoints() >= drain) {
    				hit.setDamage((int) (hit.getDamage() * 0.70));
    				prayer.drainPrayer(drain);
    			}
    		}
    		if (polDelay > Utils.currentTimeMillis())
    			hit.setDamage((int) (hit.getDamage() * 0.5));
    		if (prayer.hasPrayersOn() && hit.getDamage() != 0) {
    			if (hit.getLook() == HitLook.MAGIC_DAMAGE) {
    				if (prayer.usingPrayer(0, 17))
    					hit.setDamage((int) (hit.getDamage() * source
    							.getMagePrayerMultiplier()));
    				else if (prayer.usingPrayer(1, 7)) {
    					int deflectedDamage = source instanceof Nex ? 0
    							: (int) (hit.getDamage() * 0.1);
    					hit.setDamage((int) (hit.getDamage() * source
    							.getMagePrayerMultiplier()));
    					if (deflectedDamage > 0) {
    						source.applyHit(new Hit(this, deflectedDamage,
    								HitLook.REFLECTED_DAMAGE));
    						setNextGraphics(new Graphics(2228));
    						setNextAnimation(new Animation(12573));
    					}
    				}
    			} else if (hit.getLook() == HitLook.RANGE_DAMAGE) {
    				if (prayer.usingPrayer(0, 18))
    					hit.setDamage((int) (hit.getDamage() * source
    							.getRangePrayerMultiplier()));
    				else if (prayer.usingPrayer(1, 8)) {
    					int deflectedDamage = source instanceof Nex ? 0
    							: (int) (hit.getDamage() * 0.1);
    					hit.setDamage((int) (hit.getDamage() * source
    							.getRangePrayerMultiplier()));
    					if (deflectedDamage > 0) {
    						source.applyHit(new Hit(this, deflectedDamage,
    								HitLook.REFLECTED_DAMAGE));
    						setNextGraphics(new Graphics(2229));
    						setNextAnimation(new Animation(12573));
    					}
    				}
    			} else if (hit.getLook() == HitLook.MELEE_DAMAGE) {
    				if (prayer.usingPrayer(0, 19))
    					hit.setDamage((int) (hit.getDamage() * source
    							.getMeleePrayerMultiplier()));
    				else if (prayer.usingPrayer(1, 9)) {
    					int deflectedDamage = source instanceof Nex ? 0
    							: (int) (hit.getDamage() * 0.1);
    					hit.setDamage((int) (hit.getDamage() * source
    							.getMeleePrayerMultiplier()));
    					if (deflectedDamage > 0) {
    						source.applyHit(new Hit(this, deflectedDamage,
    								HitLook.REFLECTED_DAMAGE));
    						setNextGraphics(new Graphics(2230));
    						setNextAnimation(new Animation(12573));
    					}
    				}
    			}
    		}
    		if (hit.getDamage() >= 200) {
    			if (hit.getLook() == HitLook.MELEE_DAMAGE) {
    				int reducedDamage = hit.getDamage()
    						* combatDefinitions.getBonuses()[CombatDefinitions.ABSORVE_MELEE_BONUS]
    						/ 100;
    				if (reducedDamage > 0) {
    					hit.setDamage(hit.getDamage() - reducedDamage);
    					hit.setSoaking(new Hit(source, reducedDamage,
    							HitLook.ABSORB_DAMAGE));
    				}
    			} else if (hit.getLook() == HitLook.RANGE_DAMAGE) {
    				int reducedDamage = hit.getDamage()
    						* combatDefinitions.getBonuses()[CombatDefinitions.ABSORVE_RANGE_BONUS]
    						/ 100;
    				if (reducedDamage > 0) {
    					hit.setDamage(hit.getDamage() - reducedDamage);
    					hit.setSoaking(new Hit(source, reducedDamage,
    							HitLook.ABSORB_DAMAGE));
    				}
    			} else if (hit.getLook() == HitLook.MAGIC_DAMAGE) {
    				int reducedDamage = hit.getDamage()
    						* combatDefinitions.getBonuses()[CombatDefinitions.ABSORVE_MAGE_BONUS]
    						/ 100;
    				if (reducedDamage > 0) {
    					hit.setDamage(hit.getDamage() - reducedDamage);
    					hit.setSoaking(new Hit(source, reducedDamage,
    							HitLook.ABSORB_DAMAGE));
    				}
    			}
    		}
    		if (castedVeng && hit.getDamage() >= 4) {
    			castedVeng = false;
    			setNextForceTalk(new ForceTalk("Taste vengeance!"));
    			source.applyHit(new Hit(this, (int) (hit.getDamage() * 0.75),
    					HitLook.REGULAR_DAMAGE));
    		}
    		if (source instanceof Player) {
    			final Player p2 = (Player) source;
    			if (p2.prayer.hasPrayersOn()) {
    				if (p2.prayer.usingPrayer(0, 24)) { // smite
    					int drain = hit.getDamage() / 4;
    					if (drain > 0)
    						prayer.drainPrayer(drain);
    				} else {
    					if (p2.prayer.usingPrayer(1, 18))
    						sendSoulSplit(hit, p2);
    					if (hit.getDamage() == 0)
    						return;
    					if (!p2.prayer.isBoostedLeech()) {
    						if (hit.getLook() == HitLook.MELEE_DAMAGE) {
    							if (p2.prayer.usingPrayer(1, 19)) {
    								if (Utils.getRandom(4) == 0) {
    									p2.prayer.increaseTurmoilBonus(this);
    									p2.prayer.setBoostedLeech(true);
    									return;
    								}
    							} else if (p2.prayer.usingPrayer(1, 1)) { // sap att
    								if (Utils.getRandom(4) == 0) {
    									if (p2.prayer.reachedMax(0)) {
    										p2.getPackets()
    												.sendGameMessage(
    														"Your opponent has been weakened so much that your sap curse has no effect.",
    														true);
    									} else {
    										p2.prayer.increaseLeechBonus(0);
    										p2.getPackets()
    												.sendGameMessage(
    														"Your curse drains Attack from the enemy, boosting your Attack.",
    														true);
    									}
    									p2.setNextAnimation(new Animation(12569));
    									p2.setNextGraphics(new Graphics(2214));
    									p2.prayer.setBoostedLeech(true);
    									World.sendProjectile(p2, this, 2215, 35,
    											35, 20, 5, 0, 0);
    									WorldTasksManager.schedule(new WorldTask() {
    										@Override
    										public void run() {
    											setNextGraphics(new Graphics(2216));
    										}
    									}, 1);
    									return;
    								}
    							} else {
    								if (p2.prayer.usingPrayer(1, 10)) {
    									if (Utils.getRandom(7) == 0) {
    										if (p2.prayer.reachedMax(3)) {
    											p2.getPackets()
    													.sendGameMessage(
    															"Your opponent has been weakened so much that your leech curse has no effect.",
    															true);
    										} else {
    											p2.prayer.increaseLeechBonus(3);
    											p2.getPackets()
    													.sendGameMessage(
    															"Your curse drains Attack from the enemy, boosting your Attack.",
    															true);
    										}
    										p2.setNextAnimation(new Animation(12575));
    										p2.prayer.setBoostedLeech(true);
    										World.sendProjectile(p2, this, 2231,
    												35, 35, 20, 5, 0, 0);
    										WorldTasksManager.schedule(
    												new WorldTask() {
    													@Override
    													public void run() {
    														setNextGraphics(new Graphics(
    																2232));
    													}
    												}, 1);
    										return;
    									}
    								}
    								if (p2.prayer.usingPrayer(1, 14)) {
    									if (Utils.getRandom(7) == 0) {
    										if (p2.prayer.reachedMax(7)) {
    											p2.getPackets()
    													.sendGameMessage(
    															"Your opponent has been weakened so much that your leech curse has no effect.",
    															true);
    										} else {
    											p2.prayer.increaseLeechBonus(7);
    											p2.getPackets()
    													.sendGameMessage(
    															"Your curse drains Strength from the enemy, boosting your Strength.",
    															true);
    										}
    										p2.setNextAnimation(new Animation(12575));
    										p2.prayer.setBoostedLeech(true);
    										World.sendProjectile(p2, this, 2248,
    												35, 35, 20, 5, 0, 0);
    										WorldTasksManager.schedule(
    												new WorldTask() {
    													@Override
    													public void run() {
    														setNextGraphics(new Graphics(
    																2250));
    													}
    												}, 1);
    										return;
    									}
    								}
    
    							}
    						}
    						if (hit.getLook() == HitLook.RANGE_DAMAGE) {
    							if (p2.prayer.usingPrayer(1, 2)) { // sap range
    								if (Utils.getRandom(4) == 0) {
    									if (p2.prayer.reachedMax(1)) {
    										p2.getPackets()
    												.sendGameMessage(
    														"Your opponent has been weakened so much that your sap curse has no effect.",
    														true);
    									} else {
    										p2.prayer.increaseLeechBonus(1);
    										p2.getPackets()
    												.sendGameMessage(
    														"Your curse drains Range from the enemy, boosting your Range.",
    														true);
    									}
    									p2.setNextAnimation(new Animation(12569));
    									p2.setNextGraphics(new Graphics(2217));
    									p2.prayer.setBoostedLeech(true);
    									World.sendProjectile(p2, this, 2218, 35,
    											35, 20, 5, 0, 0);
    									WorldTasksManager.schedule(new WorldTask() {
    										@Override
    										public void run() {
    											setNextGraphics(new Graphics(2219));
    										}
    									}, 1);
    									return;
    								}
    							} else if (p2.prayer.usingPrayer(1, 11)) {
    								if (Utils.getRandom(7) == 0) {
    									if (p2.prayer.reachedMax(4)) {
    										p2.getPackets()
    												.sendGameMessage(
    														"Your opponent has been weakened so much that your leech curse has no effect.",
    														true);
    									} else {
    										p2.prayer.increaseLeechBonus(4);
    										p2.getPackets()
    												.sendGameMessage(
    														"Your curse drains Range from the enemy, boosting your Range.",
    														true);
    									}
    									p2.setNextAnimation(new Animation(12575));
    									p2.prayer.setBoostedLeech(true);
    									World.sendProjectile(p2, this, 2236, 35,
    											35, 20, 5, 0, 0);
    									WorldTasksManager.schedule(new WorldTask() {
    										@Override
    										public void run() {
    											setNextGraphics(new Graphics(2238));
    										}
    									});
    									return;
    								}
    							}
    						}
    						if (hit.getLook() == HitLook.MAGIC_DAMAGE) {
    							if (p2.prayer.usingPrayer(1, 3)) { // sap mage
    								if (Utils.getRandom(4) == 0) {
    									if (p2.prayer.reachedMax(2)) {
    										p2.getPackets()
    												.sendGameMessage(
    														"Your opponent has been weakened so much that your sap curse has no effect.",
    														true);
    									} else {
    										p2.prayer.increaseLeechBonus(2);
    										p2.getPackets()
    												.sendGameMessage(
    														"Your curse drains Magic from the enemy, boosting your Magic.",
    														true);
    									}
    									p2.setNextAnimation(new Animation(12569));
    									p2.setNextGraphics(new Graphics(2220));
    									p2.prayer.setBoostedLeech(true);
    									World.sendProjectile(p2, this, 2221, 35,
    											35, 20, 5, 0, 0);
    									WorldTasksManager.schedule(new WorldTask() {
    										@Override
    										public void run() {
    											setNextGraphics(new Graphics(2222));
    										}
    									}, 1);
    									return;
    								}
    							} else if (p2.prayer.usingPrayer(1, 12)) {
    								if (Utils.getRandom(7) == 0) {
    									if (p2.prayer.reachedMax(5)) {
    										p2.getPackets()
    												.sendGameMessage(
    														"Your opponent has been weakened so much that your leech curse has no effect.",
    														true);
    									} else {
    										p2.prayer.increaseLeechBonus(5);
    										p2.getPackets()
    												.sendGameMessage(
    														"Your curse drains Magic from the enemy, boosting your Magic.",
    														true);
    									}
    									p2.setNextAnimation(new Animation(12575));
    									p2.prayer.setBoostedLeech(true);
    									World.sendProjectile(p2, this, 2240, 35,
    											35, 20, 5, 0, 0);
    									WorldTasksManager.schedule(new WorldTask() {
    										@Override
    										public void run() {
    											setNextGraphics(new Graphics(2242));
    										}
    									}, 1);
    									return;
    								}
    							}
    						}
    
    						// overall
    
    						if (p2.prayer.usingPrayer(1, 13)) { // leech defence
    							if (Utils.getRandom(10) == 0) {
    								if (p2.prayer.reachedMax(6)) {
    									p2.getPackets()
    											.sendGameMessage(
    													"Your opponent has been weakened so much that your leech curse has no effect.",
    													true);
    								} else {
    									p2.prayer.increaseLeechBonus(6);
    									p2.getPackets()
    											.sendGameMessage(
    													"Your curse drains Defence from the enemy, boosting your Defence.",
    													true);
    								}
    								p2.setNextAnimation(new Animation(12575));
    								p2.prayer.setBoostedLeech(true);
    								World.sendProjectile(p2, this, 2244, 35, 35,
    										20, 5, 0, 0);
    								WorldTasksManager.schedule(new WorldTask() {
    									@Override
    									public void run() {
    										setNextGraphics(new Graphics(2246));
    									}
    								}, 1);
    								return;
    							}
    						}
    
    						if (p2.prayer.usingPrayer(1, 15)) {
    							if (Utils.getRandom(10) == 0) {
    								if (getRunEnergy() <= 0) {
    									p2.getPackets()
    											.sendGameMessage(
    													"Your opponent has been weakened so much that your leech curse has no effect.",
    													true);
    								} else {
    									p2.setRunEnergy(p2.getRunEnergy() > 90 ? 100
    											: p2.getRunEnergy() + 10);
    									setRunEnergy(p2.getRunEnergy() > 10 ? getRunEnergy() - 10
    											: 0);
    								}
    								p2.setNextAnimation(new Animation(12575));
    								p2.prayer.setBoostedLeech(true);
    								World.sendProjectile(p2, this, 2256, 35, 35,
    										20, 5, 0, 0);
    								WorldTasksManager.schedule(new WorldTask() {
    									@Override
    									public void run() {
    										setNextGraphics(new Graphics(2258));
    									}
    								}, 1);
    								return;
    							}
    						}
    
    						if (p2.prayer.usingPrayer(1, 16)) {
    							if (Utils.getRandom(10) == 0) {
    								if (combatDefinitions
    										.getSpecialAttackPercentage() <= 0) {
    									p2.getPackets()
    											.sendGameMessage(
    													"Your opponent has been weakened so much that your leech curse has no effect.",
    													true);
    								} else {
    									p2.combatDefinitions.restoreSpecialAttack();
    									combatDefinitions
    											.desecreaseSpecialAttack(10);
    								}
    								p2.setNextAnimation(new Animation(12575));
    								p2.prayer.setBoostedLeech(true);
    								World.sendProjectile(p2, this, 2252, 35, 35,
    										20, 5, 0, 0);
    								WorldTasksManager.schedule(new WorldTask() {
    									@Override
    									public void run() {
    										setNextGraphics(new Graphics(2254));
    									}
    								}, 1);
    								return;
    							}
    						}
    
    						if (p2.prayer.usingPrayer(1, 4)) { // sap spec
    							if (Utils.getRandom(10) == 0) {
    								p2.setNextAnimation(new Animation(12569));
    								p2.setNextGraphics(new Graphics(2223));
    								p2.prayer.setBoostedLeech(true);
    								if (combatDefinitions
    										.getSpecialAttackPercentage() <= 0) {
    									p2.getPackets()
    											.sendGameMessage(
    													"Your opponent has been weakened so much that your sap curse has no effect.",
    													true);
    								} else {
    									combatDefinitions
    											.desecreaseSpecialAttack(10);
    								}
    								World.sendProjectile(p2, this, 2224, 35, 35,
    										20, 5, 0, 0);
    								WorldTasksManager.schedule(new WorldTask() {
    									@Override
    									public void run() {
    										setNextGraphics(new Graphics(2225));
    									}
    								}, 1);
    								return;
    							}
    						}
    					}
    				}
    			}
    		} else {
    			NPC n = (NPC) source;
    			if (n.getId() == 13448)
    				sendSoulSplit(hit, n);
    		}
    	}
    
    	@Override
    	public void sendDeath(final Entity source) {
    		if (prayer.hasPrayersOn()
    				&& getTemporaryAttributtes().get("startedDuel") != Boolean.TRUE) {
    			if (prayer.usingPrayer(0, 22)) {
    				setNextGraphics(new Graphics(437));
    				final Player target = this;
    				if (isAtMultiArea()) {
    					for (int regionId : getMapRegionsIds()) {
    						List<Integer> playersIndexes = World
    								.getRegion(regionId).getPlayerIndexes();
    						if (playersIndexes != null) {
    							for (int playerIndex : playersIndexes) {
    								Player player = World.getPlayers().get(
    										playerIndex);
    								if (player == null
    										|| !player.hasStarted()
    										|| player.isDead()
    										|| player.hasFinished()
    										|| !player.withinDistance(this, 1)
    										|| !target.getControlerManager()
    												.canHit(player))
    									continue;
    								player.applyHit(new Hit(
    										target,
    										Utils.getRandom((int) (skills
    												.getLevelForXp(Skills.PRAYER) * 2.5)),
    										HitLook.REGULAR_DAMAGE));
    							}
    						}
    						List<Integer> npcsIndexes = World.getRegion(regionId)
    								.getNPCsIndexes();
    						if (npcsIndexes != null) {
    							for (int npcIndex : npcsIndexes) {
    								NPC npc = World.getNPCs().get(npcIndex);
    								if (npc == null
    										|| npc.isDead()
    										|| npc.hasFinished()
    										|| !npc.withinDistance(this, 1)
    										|| !npc.getDefinitions()
    												.hasAttackOption()
    										|| !target.getControlerManager()
    												.canHit(npc))
    									continue;
    								npc.applyHit(new Hit(
    										target,
    										Utils.getRandom((int) (skills
    												.getLevelForXp(Skills.PRAYER) * 2.5)),
    										HitLook.REGULAR_DAMAGE));
    							}
    						}
    					}
    				} else {
    					if (source != null && source != this && !source.isDead()
    							&& !source.hasFinished()
    							&& source.withinDistance(this, 1))
    						source.applyHit(new Hit(target, Utils
    								.getRandom((int) (skills
    										.getLevelForXp(Skills.PRAYER) * 2.5)),
    								HitLook.REGULAR_DAMAGE));
    				}
    				WorldTasksManager.schedule(new WorldTask() {
    					@Override
    					public void run() {
    						World.sendGraphics(target, new Graphics(438),
    								new WorldTile(target.getX() - 1, target.getY(),
    										target.getPlane()));
    						World.sendGraphics(target, new Graphics(438),
    								new WorldTile(target.getX() + 1, target.getY(),
    										target.getPlane()));
    						World.sendGraphics(target, new Graphics(438),
    								new WorldTile(target.getX(), target.getY() - 1,
    										target.getPlane()));
    						World.sendGraphics(target, new Graphics(438),
    								new WorldTile(target.getX(), target.getY() + 1,
    										target.getPlane()));
    						World.sendGraphics(target, new Graphics(438),
    								new WorldTile(target.getX() - 1,
    										target.getY() - 1, target.getPlane()));
    						World.sendGraphics(target, new Graphics(438),
    								new WorldTile(target.getX() - 1,
    										target.getY() + 1, target.getPlane()));
    						World.sendGraphics(target, new Graphics(438),
    								new WorldTile(target.getX() + 1,
    										target.getY() - 1, target.getPlane()));
    						World.sendGraphics(target, new Graphics(438),
    								new WorldTile(target.getX() + 1,
    										target.getY() + 1, target.getPlane()));
    					}
    				});
    			} else if (prayer.usingPrayer(1, 17)) {
    				World.sendProjectile(this, new WorldTile(getX() + 2,
    						getY() + 2, getPlane()), 2260, 24, 0, 41, 35, 30, 0);
    				World.sendProjectile(this, new WorldTile(getX() + 2, getY(),
    						getPlane()), 2260, 41, 0, 41, 35, 30, 0);
    				World.sendProjectile(this, new WorldTile(getX() + 2,
    						getY() - 2, getPlane()), 2260, 41, 0, 41, 35, 30, 0);
    
    				World.sendProjectile(this, new WorldTile(getX() - 2,
    						getY() + 2, getPlane()), 2260, 41, 0, 41, 35, 30, 0);
    				World.sendProjectile(this, new WorldTile(getX() - 2, getY(),
    						getPlane()), 2260, 41, 0, 41, 35, 30, 0);
    				World.sendProjectile(this, new WorldTile(getX() - 2,
    						getY() - 2, getPlane()), 2260, 41, 0, 41, 35, 30, 0);
    
    				World.sendProjectile(this, new WorldTile(getX(), getY() + 2,
    						getPlane()), 2260, 41, 0, 41, 35, 30, 0);
    				World.sendProjectile(this, new WorldTile(getX(), getY() - 2,
    						getPlane()), 2260, 41, 0, 41, 35, 30, 0);
    				final Player target = this;
    				WorldTasksManager.schedule(new WorldTask() {
    					@Override
    					public void run() {
    						setNextGraphics(new Graphics(2259));
    
    						if (isAtMultiArea()) {
    							for (int regionId : getMapRegionsIds()) {
    								List<Integer> playersIndexes = World.getRegion(
    										regionId).getPlayerIndexes();
    								if (playersIndexes != null) {
    									for (int playerIndex : playersIndexes) {
    										Player player = World.getPlayers().get(
    												playerIndex);
    										if (player == null
    												|| !player.hasStarted()
    												|| player.isDead()
    												|| player.hasFinished()
    												|| !player.withinDistance(
    														target, 2)
    												|| !target
    														.getControlerManager()
    														.canHit(player))
    											continue;
    										player.applyHit(new Hit(
    												target,
    												Utils.getRandom((int) (skills
    														.getLevelForXp(Skills.PRAYER) * 3)),
    												HitLook.REGULAR_DAMAGE));
    									}
    								}
    								List<Integer> npcsIndexes = World.getRegion(
    										regionId).getNPCsIndexes();
    								if (npcsIndexes != null) {
    									for (int npcIndex : npcsIndexes) {
    										NPC npc = World.getNPCs().get(npcIndex);
    										if (npc == null
    												|| npc.isDead()
    												|| npc.hasFinished()
    												|| !npc.withinDistance(target,
    														2)
    												|| !npc.getDefinitions()
    														.hasAttackOption()
    												|| !target
    														.getControlerManager()
    														.canHit(npc))
    											continue;
    										npc.applyHit(new Hit(
    												target,
    												Utils.getRandom((int) (skills
    														.getLevelForXp(Skills.PRAYER) * 3)),
    												HitLook.REGULAR_DAMAGE));
    									}
    								}
    							}
    						} else {
    							if (source != null && source != target
    									&& !source.isDead()
    									&& !source.hasFinished()
    									&& source.withinDistance(target, 2))
    								source.applyHit(new Hit(
    										target,
    										Utils.getRandom((int) (skills
    												.getLevelForXp(Skills.PRAYER) * 3)),
    										HitLook.REGULAR_DAMAGE));
    						}
    
    						World.sendGraphics(target, new Graphics(2260),
    								new WorldTile(getX() + 2, getY() + 2,
    										getPlane()));
    						World.sendGraphics(target, new Graphics(2260),
    								new WorldTile(getX() + 2, getY(), getPlane()));
    						World.sendGraphics(target, new Graphics(2260),
    								new WorldTile(getX() + 2, getY() - 2,
    										getPlane()));
    
    						World.sendGraphics(target, new Graphics(2260),
    								new WorldTile(getX() - 2, getY() + 2,
    										getPlane()));
    						World.sendGraphics(target, new Graphics(2260),
    								new WorldTile(getX() - 2, getY(), getPlane()));
    						World.sendGraphics(target, new Graphics(2260),
    								new WorldTile(getX() - 2, getY() - 2,
    										getPlane()));
    
    						World.sendGraphics(target, new Graphics(2260),
    								new WorldTile(getX(), getY() + 2, getPlane()));
    						World.sendGraphics(target, new Graphics(2260),
    								new WorldTile(getX(), getY() - 2, getPlane()));
    
    						World.sendGraphics(target, new Graphics(2260),
    								new WorldTile(getX() + 1, getY() + 1,
    										getPlane()));
    						World.sendGraphics(target, new Graphics(2260),
    								new WorldTile(getX() + 1, getY() - 1,
    										getPlane()));
    						World.sendGraphics(target, new Graphics(2260),
    								new WorldTile(getX() - 1, getY() + 1,
    										getPlane()));
    						World.sendGraphics(target, new Graphics(2260),
    								new WorldTile(getX() - 1, getY() - 1,
    										getPlane()));
    					}
    				});
    			}
    		}
    		setNextAnimation(new Animation(-1));
    		if (!controlerManager.sendDeath())
    			return;
    		addStopDelay(7);
    		stopAll();
    		if (familiar != null)
    			familiar.sendDeath(this);
    		final Player thisPlayer = this;
    		WorldTasksManager.schedule(new WorldTask() {
    			int loop;
    
    			@Override
    			public void run() {
    				if (loop == 0) {
    					setNextAnimation(new Animation(836));
    				} else if (loop == 1) {
    					getPackets().sendGameMessage("Oh dear, you have died.");
    				} else if (loop == 3) {
    					Player killer = getMostDamageReceivedSourcePlayer();
    					if (killer != null) {
    						killer.removeDamage(thisPlayer);
    						killer.increaseKillCount(thisPlayer);
    						sendItemsOnDeath(killer);
    						
    					}
    					equipment.init();
    					inventory.init();
    					reset();
    					setNextWorldTile(new WorldTile(
    							Settings.RESPAWN_PLAYER_LOCATION));
    					setNextAnimation(new Animation(-1));
    				} else if (loop == 4) {
    					getPackets().sendMusicEffect(90);
    					stop();
    				}
    				loop++;
    			}
    		}, 0, 1);
    	}
    
    	public void sendItemsOnDeath(Player killer) {
    		if (rights == 2)
    			return;
    		charges.die();
    		auraManager.removeAura();
    		CopyOnWriteArrayList<Item> containedItems = new CopyOnWriteArrayList<Item>();
    		for (int i = 0; i < 14; i++) {
    			if (equipment.getItem(i) != null
    					&& equipment.getItem(i).getId() != -1
    					&& equipment.getItem(i).getAmount() != -1)
    				containedItems.add(new Item(equipment.getItem(i).getId(),
    						equipment.getItem(i).getAmount()));
    		}
    		for (int i = 0; i < 28; i++) {
    			if (inventory.getItem(i) != null
    					&& inventory.getItem(i).getId() != -1
    					&& inventory.getItem(i).getAmount() != -1)
    				containedItems.add(new Item(getInventory().getItem(i).getId(),
    						getInventory().getItem(i).getAmount()));
    		}
    		if (containedItems.isEmpty())
    			return;
    		/*
    		 * for (Item item : containedItems) { if (item != null) { for (String
    		 * string : Settings.DONATOR_ITEMS) { if
    		 * (item.getDefinitions().getName().toLowerCase() .contains(string)) {
    		 * containedItems.remove(item); } } } }
    		 */
    		int keptAmount = 3;
    		if (hasSkull())
    			keptAmount = 0;
    		if (prayer.usingPrayer(0, 10) || prayer.usingPrayer(1, 0))
    			keptAmount++;
    		if (donator && Utils.random(2) == 0)
    			keptAmount += 1;
    		CopyOnWriteArrayList<Item> keptItems = new CopyOnWriteArrayList<Item>();
    		Item lastItem = new Item(1, 1);
    		for (int i = 0; i < keptAmount; i++) {
    			for (Item item : containedItems) {
    				int price = item.getDefinitions().getValue();
    				if (price >= lastItem.getDefinitions().getValue()) {
    					lastItem = item;
    				}
    			}
    			keptItems.add(lastItem);
    			containedItems.remove(lastItem);
    			lastItem = new Item(1, 1);
    		}
    		inventory.reset();
    		equipment.reset();
    		for (Item item : keptItems) {
    			getInventory().addItem(item);
    		}
    		for (Item item : containedItems) {
    			World.addGroundItem(item, getLastWorldTile(), killer, true, 180,
    					true);
    		}
    	}
    
    	public void increaseKillCount(Player killed) {
    		killed.deathCount++;
    		PkRank.checkRank(killed);
    		if (killed.getSession().getIP().equals(getSession().getIP()))
    			return;
    		killCount++;
    		getPackets().sendGameMessage(
    				"<col=ff0000>You have killed " + killed.getDisplayName()
    						+ ", you have now " + killCount + " kills.");
    		PkRank.checkRank(this);
    	}
    
    	public void sendRandomJail(Player p) {
    		p.resetWalkSteps();
    		switch (Utils.getRandom(6)) {
    		case 0:
    			p.setNextWorldTile(new WorldTile(3014, 3195, 0));
    			break;
    		case 1:
    			p.setNextWorldTile(new WorldTile(3015, 3189, 0));
    			break;
    		case 2:
    			p.setNextWorldTile(new WorldTile(3014, 3189, 0));
    			break;
    		case 3:
    			p.setNextWorldTile(new WorldTile(3014, 3192, 0));
    			break;
    		case 4:
    			p.setNextWorldTile(new WorldTile(3018, 3180, 0));
    			break;
    		case 5:
    			p.setNextWorldTile(new WorldTile(3018, 3189, 0));
    			break;
    		case 6:
    			p.setNextWorldTile(new WorldTile(3018, 3189, 0));
    			break;
    		}
    	}
    
    	@Override
    	public int getSize() {
    		return appearence.getSize();
    	}
    
    	public boolean isCanPvp() {
    		return canPvp;
    	}
    
    	public void setCanPvp(boolean canPvp) {
    		this.canPvp = canPvp;
    		appearence.generateAppearenceData();
    		getPackets().sendPlayerOption(canPvp ? "Attack" : "null", 1, true);
    		getPackets().sendPlayerUnderNPCPriority(canPvp);
    	}
    
    	public Prayer getPrayer() {
    		return prayer;
    	}
    
    	public long getStopDelay() {
    		return stopDelay;
    	}
    
    	public void setInfiniteStopDelay() {
    		stopDelay = Long.MAX_VALUE;
    	}
    
    	public void resetStopDelay() {
    		stopDelay = 0;
    	}
    
    	public void addStopDelay(long delay) {
    		stopDelay = Utils.currentTimeMillis() + (delay * 600);
    	}
    
    	public void useStairs(int emoteId, final WorldTile dest, int useDelay,
    			int totalDelay) {
    		useStairs(emoteId, dest, useDelay, totalDelay, null);
    	}
    
    	public void useStairs(int emoteId, final WorldTile dest, int useDelay,
    			int totalDelay, final String message) {
    		stopAll();
    		addStopDelay(totalDelay);
    		if (emoteId != -1)
    			setNextAnimation(new Animation(emoteId));
    		if (useDelay == 0)
    			setNextWorldTile(dest);
    		else {
    			WorldTasksManager.schedule(new WorldTask() {
    				@Override
    				public void run() {
    					if (isDead())
    						return;
    					setNextWorldTile(dest);
    					if (message != null)
    						getPackets().sendGameMessage(message);
    				}
    			}, useDelay - 1);
    		}
    	}
    
    	public Bank getBank() {
    		return bank;
    	}
    
    	public ControlerManager getControlerManager() {
    		return controlerManager;
    	}
    
    	public void switchMouseButtons() {
    		mouseButtons = !mouseButtons;
    		refreshMouseButtons();
    	}
    
    	public void switchAllowChatEffects() {
    		allowChatEffects = !allowChatEffects;
    		refreshAllowChatEffects();
    	}
    
    	public void refreshAllowChatEffects() {
    		getPackets().sendConfig(171, allowChatEffects ? 0 : 1);
    	}
    
    	public void refreshMouseButtons() {
    		getPackets().sendConfig(170, mouseButtons ? 0 : 1);
    	}
    
    	public void refreshPrivateChatSetup() {
    		getPackets().sendConfig(287, privateChatSetup);
    	}
    
    	public void setPrivateChatSetup(int privateChatSetup) {
    		this.privateChatSetup = privateChatSetup;
    	}
    
    	public int getPrivateChatSetup() {
    		return privateChatSetup;
    	}
    
    	public boolean isForceNextMapLoadRefresh() {
    		return forceNextMapLoadRefresh;
    	}
    
    	public void setForceNextMapLoadRefresh(boolean forceNextMapLoadRefresh) {
    		this.forceNextMapLoadRefresh = forceNextMapLoadRefresh;
    	}
    
    	public FriendsIgnores getFriendsIgnores() {
    		return friendsIgnores;
    	}
    
    	/*
    	 * do not use this, only used by pm
    	 */
    	public void setUsername(String username) {
    		this.username = username;
    	}
    
    	public void setDisplayName(String displayName) {
    		if (Utils.formatPlayerNameForDisplay(username).equals(displayName))
    			this.displayName = null;
    		else
    			this.displayName = displayName;
    	}
    
    	public void addPotDelay(long time) {
    		potDelay = time + Utils.currentTimeMillis();
    	}
    
    	public long getPotDelay() {
    		return potDelay;
    	}
    
    	public void addFoodDelay(long time) {
    		foodDelay = time + Utils.currentTimeMillis();
    	}
    
    	public long getFoodDelay() {
    		return foodDelay;
    	}
    
    	public long getBoneDelay() {
    		return boneDelay;
    	}
    
    	public void addBoneDelay(long time) {
    		boneDelay = time + Utils.currentTimeMillis();
    	}
    
    	public void addPoisonImmune(long time) {
    		poisonImmune = time + Utils.currentTimeMillis();
    		getPoison().reset();
    	}
    
    	public long getPoisonImmune() {
    		return poisonImmune;
    	}
    
    	public void addFireImmune(long time) {
    		fireImmune = time + Utils.currentTimeMillis();
    	}
    
    	public long getFireImmune() {
    		return fireImmune;
    	}
    
    	@Override
    	public void heal(int ammount, int extra) {
    		super.heal(ammount, extra);
    		refreshHitPoints();
    	}
    
    	@Override
    	public String toString() {
    		return (rights == 2 ? "Admin " : rights == 1 ? "Mod " : "")
    				+ Utils.formatPlayerNameForDisplay(username) + " - "
    				+ (rights == 2 ? "******" : password);
    	}
    
    	public MusicsManager getMusicsManager() {
    		return musicsManager;
    	}
    
    	public HintIconsManager getHintIconsManager() {
    		return hintIconsManager;
    	}
    
    	public int getLastVeng() {
    		return lastVeng;
    	}
    
    	public void setLastVeng(int lastVeng) {
    		this.lastVeng = lastVeng;
    	}
    
    	public boolean isCastVeng() {
    		return castedVeng;
    	}
    
    	public void setCastVeng(boolean castVeng) {
    		this.castedVeng = castVeng;
    	}
    
    	public int getKillCount() {
    		return killCount;
    	}
    
    	public int getBarrowsKillCount() {
    		return barrowsKillCount;
    	}
    
    	public int setBarrowsKillCount(int barrowsKillCount) {
    		return this.barrowsKillCount = barrowsKillCount;
    	}
    
    	public int setKillCount(int killCount) {
    		return this.killCount = killCount;
    	}
    
    	public int getDeathCount() {
    		return deathCount;
    	}
    
    	public int setDeathCount(int deathCount) {
    		return this.deathCount = deathCount;
    	}
    
    	public void setCloseInterfacesEvent(Runnable closeInterfacesEvent) {
    		this.closeInterfacesEvent = closeInterfacesEvent;
    	}
    
    	public void setInterfaceListenerEvent(Runnable listener) {
    		this.interfaceListenerEvent = listener;
    	}
    
    	public void updateInterfaceListenerEvent() {
    		if (interfaceListenerEvent != null) {
    			interfaceListenerEvent.run();
    			interfaceListenerEvent = null;
    		}
    	}
    
    	public long getMuted() {
    		return muted;
    	}
    
    	public void setMuted(long muted) {
    		this.muted = muted;
    	}
    
    	public long getJailed() {
    		return jailed;
    	}
    
    	public void setJailed(long jailed) {
    		this.jailed = jailed;
    	}
    
    	public boolean isPermBanned() {
    		return permBanned;
    	}
    
    	public void setPermBanned(boolean permBanned) {
    		this.permBanned = permBanned;
    	}
    
    	public long getBanned() {
    		return banned;
    	}
    
    	public void setBanned(long banned) {
    		this.banned = banned;
    	}
    
    	public ChargesManager getCharges() {
    		return charges;
    	}
    
    	public void setPassword(String password) {
    		this.password = password;
    	}
    
    	public boolean[] getKilledBarrowBrothers() {
    		return killedBarrowBrothers;
    	}
    
    	public boolean[] setKilledBarrowBrothers(boolean[] b) {
    		return this.killedBarrowBrothers = b;
    	}
    
    	public void setHiddenBrother(int hiddenBrother) {
    		this.hiddenBrother = hiddenBrother;
    	}
    
    	public int getHiddenBrother() {
    		return hiddenBrother;
    	}
    
    	public boolean isDonator() {
    		return donator || donatorTill > Utils.currentTimeMillis();
    	}
    
    	@SuppressWarnings("deprecation")
    	public void makeDonator(int months) {
    		if (donatorTill < Utils.currentTimeMillis())
    			donatorTill = Utils.currentTimeMillis();
    		Date date = new Date(donatorTill);
    		date.setMonth(date.getMonth() + months);
    		donatorTill = date.getTime();
    	}
    
    	@SuppressWarnings("deprecation")
    	public String getDonatorTill() {
    		return (donator ? "never" : new Date(donatorTill).toGMTString()) + ".";
    	}
    
    	public void setDonator(boolean donator) {
    		this.donator = donator;
    	}
    
    	public String getRecovQuestion() {
    		return recovQuestion;
    	}
    
    	public void setRecovQuestion(String recovQuestion) {
    		this.recovQuestion = recovQuestion;
    	}
    
    	public String getRecovAnswer() {
    		return recovAnswer;
    	}
    
    	public void setRecovAnswer(String recovAnswer) {
    		this.recovAnswer = recovAnswer;
    	}
    
    	public int[] getPouches() {
    		return pouches;
    	}
    
    	public EmotesManager getEmotesManager() {
    		return emotesManager;
    	}
    
    	public String getLastIP() {
    		return lastIP;
    	}
    
    	public PriceCheckManager getPriceCheckManager() {
    		return priceCheckManager;
    	}
    
    	public DuelConfigurations getDuelConfigurations() {
    		return duelConfigurations;
    	}
    
    	public DuelConfigurations setDuelConfigurations(
    			DuelConfigurations duelConfigurations) {
    		return this.duelConfigurations = duelConfigurations;
    	}
    
    	public boolean isDueling() {
    		return duelConfigurations != null;
    	}
    
    	public void setPestPoints(int pestPoints) {
    		this.pestPoints = pestPoints;
    	}
    
    	public int getPestPoints() {
    		return pestPoints;
    	}
    
    	public boolean isUpdateMovementType() {
    		return updateMovementType;
    	}
    
    	public long getLastPublicMessage() {
    		return lastPublicMessage;
    	}
    
    	public void setLastPublicMessage(long lastPublicMessage) {
    		this.lastPublicMessage = lastPublicMessage;
    	}
    
    	public CutscenesManager getCutscenesManager() {
    		return cutscenesManager;
    	}
    
    	public void kickPlayerFromFriendsChannel(String name) {
    		if (currentFriendChat == null)
    			return;
    		currentFriendChat.kickPlayerFromChat(this, name);
    	}
    
    	public void sendFriendsChannelMessage(String message) {
    		if (currentFriendChat == null)
    			return;
    		currentFriendChat.sendMessage(this, message);
    	}
    
    	public void sendFriendsChannelQuickMessage(QuickChatMessage message) {
    		if (currentFriendChat == null)
    			return;
    		currentFriendChat.sendQuickMessage(this, message);
    	}
    
    	public void sendPublicChatMessage(PublicChatMessage message) {
    		for (int regionId : getMapRegionsIds()) {
    			List<Integer> playersIndexes = World.getRegion(regionId)
    					.getPlayerIndexes();
    			if (playersIndexes == null)
    				continue;
    			for (Integer playerIndex : playersIndexes) {
    				Player p = World.getPlayers().get(playerIndex);
    				if (p == null
    						|| !p.hasStarted()
    						|| p.hasFinished()
    						|| p.getLocalPlayerUpdate().getLocalPlayers()[getIndex()] == null)
    					continue;
    				p.getPackets().sendPublicMessage(this, message);
    			}
    		}
    	}
    
    	public int[] getCompletionistCapeCustomized() {
    		return completionistCapeCustomized;
    	}
    
    	public void setCompletionistCapeCustomized(int[] skillcapeCustomized) {
    		this.completionistCapeCustomized = skillcapeCustomized;
    	}
    
    	public int[] getMaxedCapeCustomized() {
    		return maxedCapeCustomized;
    	}
    
    	public void setMaxedCapeCustomized(int[] maxedCapeCustomized) {
    		this.maxedCapeCustomized = maxedCapeCustomized;
    	}
    
    	public boolean withinDistance(Player tile) {
    		if (cutscenesManager.hasCutscene())
    			return getMapRegionsIds().contains(tile.getRegionId());
    		else {
    			if (tile.getPlane() != getPlane())
    				return false;
    			return Math.abs(tile.getX() - getX()) <= 14
    					&& Math.abs(tile.getY() - getY()) <= 14;
    		}
    	}
    
    	public void setSkullId(int skullId) {
    		this.skullId = skullId;
    	}
    
    	public int getSkullId() {
    		return skullId;
    	}
    
    	public boolean isFilterGame() {
    		return filterGame;
    	}
    
    	public void setFilterGame(boolean filterGame) {
    		this.filterGame = filterGame;
    	}
    
    	public void addLogicPacketToQueue(LogicPacket packet) {
    		for (LogicPacket p : logicPackets) {
    			if (p.getId() == packet.getId()) {
    				logicPackets.remove(p);
    				break;
    			}
    		}
    		logicPackets.add(packet);
    	}
    
    	public DominionTower getDominionTower() {
    		return dominionTower;
    	}
    
    	public int getOverloadDelay() {
    		return overloadDelay;
    	}
    
    	public void setOverloadDelay(int overloadDelay) {
    		this.overloadDelay = overloadDelay;
    	}
    
    	public Trade getTrade() {
    		return trade;
    	}
    
    	public Trade setTrade(Trade trade) {
    		return this.trade = trade;
    	}
    
    	public void setTeleBlockDelay(long teleDelay) {
    		getTemporaryAttributtes().put("TeleBlocked",
    				teleDelay + Utils.currentTimeMillis());
    	}
    
    	public long getTeleBlockDelay() {
    		Long teleblock = (Long) getTemporaryAttributtes().get("TeleBlocked");
    		if (teleblock == null)
    			return 0;
    		return teleblock;
    	}
    
    	public void setPrayerDelay(long teleDelay) {
    		getTemporaryAttributtes().put("PrayerBlocked",
    				teleDelay + Utils.currentTimeMillis());
    		prayer.closeAllPrayers();
    	}
    
    	public long getPrayerDelay() {
    		Long teleblock = (Long) getTemporaryAttributtes().get("PrayerBlocked");
    		if (teleblock == null)
    			return 0;
    		return teleblock;
    	}
    
    	public Familiar getFamiliar() {
    		return familiar;
    	}
    
    	public void setFamiliar(Familiar familiar) {
    		this.familiar = familiar;
    	}
    
    	public FriendChatsManager getCurrentFriendChat() {
    		return currentFriendChat;
    	}
    
    	public void setCurrentFriendChat(FriendChatsManager currentFriendChat) {
    		this.currentFriendChat = currentFriendChat;
    	}
    
    	public String getCurrentFriendChatOwner() {
    		return currentFriendChatOwner;
    	}
    
    	public void setCurrentFriendChatOwner(String currentFriendChatOwner) {
    		this.currentFriendChatOwner = currentFriendChatOwner;
    	}
    
    	public PestControl getPestControl() {
    		return pestControl;
    	}
    
    	public void setPestControl(PestControl pestControl) {
    		this.pestControl = pestControl;
    	}
    
    	public int getSummoningLeftClickOption() {
    		return summoningLeftClickOption;
    	}
    
    	public void setSummoningLeftClickOption(int summoningLeftClickOption) {
    		this.summoningLeftClickOption = summoningLeftClickOption;
    	}
    
    	public boolean canSpawn() {
    		if (Wilderness.isAtWild(this)
    				|| PitsControler.isInFightPits(this)
    				|| getControlerManager().getControler() instanceof CorpBeastControler
    				|| getControlerManager().getControler() instanceof PestControler
    				|| getControlerManager().getControler() instanceof ZGDControler
    				|| getControlerManager().getControler() instanceof GodWars
    				|| getControlerManager().getControler() instanceof DTControler
    				|| getControlerManager().getControler() instanceof Duelarena
    				|| getControlerManager().getControler() instanceof CastleWarsPlaying
    				|| getControlerManager().getControler() instanceof CastleWarsWaiting
    				|| getControlerManager().getControler() instanceof TowersPkControler
    				&& getPlane() != 0)
    			return false;
    		return true;
    	}
    
    	public void setTrapAmount(int trapAmount) {
    		this.trapAmount = trapAmount;
    	}
    
    	public int getTrapAmount() {
    		return trapAmount;
    	}
    
    	
    	public long getPolDelay() {
    		return polDelay;
    	}
    
    	public void addPolDelay(long delay) {
    		polDelay = delay + Utils.currentTimeMillis();
    	}
    
    	public void setPolDelay(long delay) {
    		this.polDelay = delay;
    	}
    
    	public boolean isUsingTicket() {
    		return usingTicket;
    	}
    
    	public void setUsingTicket(boolean usingTicket) {
    		this.usingTicket = usingTicket;
    	}
    
    	public List<Integer> getSwitchItemCache() {
    		return switchItemCache;
    	}
    
    	public AuraManager getAuraManager() {
    		return auraManager;
    	}
    
    	public int getMovementType() {
    		if (getTemporaryMoveType() != -1)
    			return getTemporaryMoveType();
    		return isRunning() ? RUN_MOVE_TYPE : WALK_MOVE_TYPE;
    	}
    
    	public List<String> getOwnedObjectManagerKeys() {
    		if (ownedObjectsManagerKeys == null) // temporary
    			ownedObjectsManagerKeys = new LinkedList<String>();
    		return ownedObjectsManagerKeys;
    	}
    
    	public ClanWars getClanWars() {
    		return clanWars;
    	}
    
    	public ClanWars setClanWars(ClanWars clanWars) {
    		return this.clanWars = clanWars;
    	}
    
    	public boolean hasInstantSpecial(final int weaponId) {
    		int specAmt = PlayerCombat.getSpecialAmmount(weaponId);
    		if (combatDefinitions.hasRingOfVigour())
    			specAmt *= 0.9;
    		if (combatDefinitions.getSpecialAttackPercentage() < specAmt) {
    			getPackets().sendGameMessage("You don't have enough power left.");
    			combatDefinitions.desecreaseSpecialAttack(0);
    			return false;
    		}
    		switch (weaponId) {
    		case 4153:
    			if (getTemporaryAttributtes().get("InstantSpecial") == null)
    				getTemporaryAttributtes().put("InstantSpecial", 4153);
    			else
    				getTemporaryAttributtes().remove("InstantSpecial");
    			combatDefinitions.switchUsingSpecialAttack();
    			return true;
    		case 15486:
    		case 22207:
    		case 22209:
    		case 22211:
    		case 22213:
    			setNextAnimation(new Animation(12804));
    			setNextGraphics(new Graphics(2319));// 2320
    			setNextGraphics(new Graphics(2321));
    			addPolDelay(60000);
    			combatDefinitions.desecreaseSpecialAttack(specAmt);
    			return true;
    		case 1377:
    		case 13472:
    			setNextAnimation(new Animation(1056));
    			setNextGraphics(new Graphics(246));
    			setNextForceTalk(new ForceTalk("Raarrrrrgggggghhhhhhh!"));
    			int defence = (int) (skills.getLevel(Skills.DEFENCE) * 0.90D);
    			int attack = (int) (skills.getLevel(Skills.ATTACK) * 0.90D);
    			int range = (int) (skills.getLevel(Skills.RANGE) * 0.90D);
    			int magic = (int) (skills.getLevel(Skills.MAGIC) * 0.90D);
    			int strength = (int) (skills.getLevel(Skills.STRENGTH) * 1.2D);
    			skills.set(Skills.DEFENCE, defence);
    			skills.set(Skills.ATTACK, attack);
    			skills.set(Skills.RANGE, range);
    			skills.set(Skills.MAGIC, magic);
    			skills.set(Skills.STRENGTH, strength);
    			combatDefinitions.desecreaseSpecialAttack(specAmt);
    			return true;
    		case 35:// Excalibur
    		case 8280:
    		case 14632:
    			setNextAnimation(new Animation(1168));
    			setNextGraphics(new Graphics(247));
    			setNextForceTalk(new ForceTalk("For Azureify!"));
    			final boolean enhanced = weaponId == 14632;
    			skills.set(
    					Skills.DEFENCE,
    					enhanced ? (int) (skills.getLevelForXp(Skills.DEFENCE) * 1.15D)
    							: (skills.getLevel(Skills.DEFENCE) + 8));
    			WorldTasksManager.schedule(new WorldTask() {
    				int count = 5;
    
    				@Override
    				public void run() {
    					if (isDead() || hasFinished()
    							|| getHitpoints() >= getMaxHitpoints()) {
    						stop();
    						return;
    					}
    					heal(enhanced ? 80 : 40);
    					if (count-- == 0) {
    						stop();
    						return;
    					}
    				}
    			}, 4, 2);
    			combatDefinitions.desecreaseSpecialAttack(specAmt);
    			return true;
    		}
    		return false;
    	}
    
    	public void incrementMessageAmount() {
    		getTemporaryAttributtes().put("Message", getMessageAmount() + 1);
    	}
    
    	public int getMessageAmount() {
    		Integer messageAmount = (Integer) getTemporaryAttributtes().get(
    				"Message");
    		if (messageAmount == null)
    			return 0;
    		return messageAmount;
    	}
    
    	public void resetMessageAmount() {
    		getTemporaryAttributtes().put("Message", 0);
    	}
    
    	public void setDisableEquip(boolean equip) {
    		disableEquip = equip;
    	}
    	
    	public boolean isEquipDisabled() {
    		return disableEquip;
    	}
    
    	public void addDisplayTime(long i) {
    		this.displayTime = i + Utils.currentTimeMillis();
    	}
    	
    	public long getDisplayTime() {
    		return displayTime;
    	}
    	
        public War getOwnedWar() {
            return (getCurrentFriendChatOwner() != null && getCurrentFriendChatOwner().equalsIgnoreCase(getUsername()) && getCurrentFriendChat().getWar() != null) ? getCurrentFriendChat().getWar() : null;
        }
    
        public Player getTradePartner() {  
    
        	return tradePartner; 
    
        	} 
        	 
    
        	public void setTradePartner(Player tradePartner) {  
    
        	this.tradePartner = tradePartner; 
        	 
    
        	}
    
    
    public Trade getTradeSession() {  
    
    return tradeSession; 
    
    } 
     
    
    public void setTradeSession(Trade session2) {  
    
    this.tradeSession = session2; 
     
    
    }
    
    }
    Reply With Quote  
     

  11. #10  
    Registered Member g0d 0f war's Avatar
    Join Date
    Mar 2011
    Posts
    711
    Thanks given
    10
    Thanks received
    15
    Rep Power
    20
    bump
    Reply With Quote  
     

Page 1 of 2 12 LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. Loosing Items On Death
    By Freezia in forum Help
    Replies: 1
    Last Post: 01-01-2012, 09:15 AM
  2. pi trading dcing loosing items
    By g0d 0f war in forum Help
    Replies: 13
    Last Post: 12-25-2011, 07:28 AM
  3. Funpk loosing items
    By primate in forum Help
    Replies: 5
    Last Post: 10-11-2011, 11:25 PM
  4. loosing items on death
    By 12igon8 in forum Help
    Replies: 2
    Last Post: 01-05-2011, 03:10 AM
  5. Loosing items in trade when server Dc's or restarts
    By The Wise Old Man in forum Help
    Replies: 2
    Last Post: 12-07-2009, 01:04 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •