Thread: [Pi] How to fix Player Drop in pvp?

Results 1 to 8 of 8
  1. #1 [Pi] How to fix Player Drop in pvp? 
    Software Engineer

    OogleBoogle's Avatar
    Join Date
    Apr 2012
    Age
    22
    Posts
    3,881
    Thanks given
    575
    Thanks received
    488
    Discord
    View profile
    Rep Power
    266
    How do i make players drop they're items in pvp? Donators and mods do so why not Normal players? Here is my ItemAss.java file

    Code:
    package server.model.items;
    
    import server.Config;
    import server.Server;
    import server.model.players.Client;
    import server.util.Misc;
    import server.model.players.EarningPotential;
    import server.model.minigames.CastleWars;
    
    public class ItemAssistant {
    
    	private Client c;
    	
    	public ItemAssistant(Client client) {
    		this.c = client;
    	}
    		
    	/**
    	Items
    	**/
    
    	public int getCarriedWealth() {
    		int toReturn = 0;
    		for (int i = 0; i < c.playerEquipment.length; i++) {
    			if (c.playerEquipment[i] > 0 && Server.itemHandler.ItemList[c.playerEquipment[i]] != null)
    				toReturn += (Server.itemHandler.ItemList[c.playerEquipment[i]].ShopValue * c.playerEquipmentN[i]);
    		}
    		for (int i = 0; i < c.playerItems.length; i++) {
    			if (c.playerItems[i] > 0 && Server.itemHandler.ItemList[c.playerItems[i]] != null)
    				toReturn += (Server.itemHandler.ItemList[c.playerItems[i]].ShopValue * c.playerItemsN[i]);
    		}
    		return toReturn;
    		
    	}
    
    	public boolean updateInventory = false;
    	
    	public void updateInventory() {
    		updateInventory = false;
    		resetItems(3214);
    	}
    	public static final int[] donItems = {13344, 13342, 13340, 13370, 13336, 13362, 13358, 13360, 13355, 13354, 13352, 13348, 13346};
    	public int[][] brokenBarrows = {{4708,4860},{4710,4866},{4712,4872},{4714,4878},{4716,4884},
    	{4720,4896},{4718,4890},{4720,4896},{4722,4902},{4732,4932},{4734,4938},{4736,4944},{4738,4950},
    	{4724,4908},{4726,4914},{4728,4920},{4730,4926},{4745,4956},{4747,4926},{4749,4968},{4751,4794},
    	{4753,4980},{4755,4986},{4757,4992},{4759,4998}};
    	
    	public void resetItems(int WriteFrame) {
    		synchronized(c) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrameVarSizeWord(53);
    				c.getOutStream().writeWord(WriteFrame);
    				c.getOutStream().writeWord(c.playerItems.length);
    				for (int i = 0; i < c.playerItems.length; i++) {
    					if(c.playerItemsN[i] > 254) {
    						c.getOutStream().writeByte(255); 		
    						c.getOutStream().writeDWord_v2(c.playerItemsN[i]);
    					} else {
    						c.getOutStream().writeByte(c.playerItemsN[i]);
    					}
    					c.getOutStream().writeWordBigEndianA(c.playerItems[i]); 
    				}
    				c.getOutStream().endFrameVarSizeWord();
    				c.flushOutStream();
    			}
    		}
    	}
    
    	/**
    	*Christmas Event
    	**/
            public boolean hasPlank() {
                    return playerHasItem(8794,1) && playerHasItem(1511,1);
            }
    
    	public void makePlank() {
                    deleteItem(1511,1);
                    addItem(960,1);
                    c.sendMessage("You make an Plank.");
            }
    
            public boolean hasHandles() {
                    return playerHasItem(946,1) && playerHasItem(960,1);
            }
    
    	public void makeHandles() {
                    deleteItem(960,1);
                    addItem(6864,1);
                    c.sendMessage("You make some Marionette Handles.");
            }
            public boolean hasBlueMari() {
                    return playerHasItem(946,1) && playerHasItem(960,1);
            }
    
    	public void makeBlueMari() {
                    deleteItem(6864,1);
                    deleteItem(6878,1);
                    addItem(6868,1);
                    c.sendMessage("You make a Blue Marionette.");
            }
            public boolean hasRedMari() {
                    return playerHasItem(946,1) && playerHasItem(960,1);
            }
    
    	public void makeRedMari() {
                    deleteItem(6864,1);
                    deleteItem(6874,1);
                    addItem(6870,1);
                    c.sendMessage("You make a Red Marionette.");
            }
            public boolean hasGreenMari() {
                    return playerHasItem(946,1) && playerHasItem(960,1);
            }
    
    	public void makeGreenMari() {
                    deleteItem(6864,1);
                    deleteItem(6882,1);
                    addItem(6869,1);
                    c.sendMessage("You make a Green Marionette.");
            }
            public boolean hasBlueTorso() {
                    return playerHasItem(6875,1);
            }
            public boolean hasRedTorso() {
                    return playerHasItem(6871,1);
            }
            public boolean hasGreenTorso() {
                    return playerHasItem(6879,1);
            }
            public boolean hasBlueHead() {
                    return playerHasItem(6876,1);
            }
            public boolean hasRedHead() {
                    return playerHasItem(6872,1);
            }
            public boolean hasGreenHead() {
                    return playerHasItem(6880,1);
            }
            public boolean hasBlueArms() {
                    return playerHasItem(6877,1);
            }
            public boolean hasRedArms() {
                    return playerHasItem(6873,1);
            }
            public boolean hasGreenArms() {
                    return playerHasItem(6881,1);
            }
    
    	/*
    	*End of Event
    	**/
    
    	public int getBankAmount(int item) {
    		int count = 0;	
    		for (int j = 0; j < c.bankItems.length; j++) {
    			if (c.bankItems[j] == item + 1) {
    				count += c.bankItemsN[j];
    			}		
    		}
    		return count;
    	}
    	
    	public int getItemCount(int itemID) {
    		int count = 0;	
    		for (int j = 0; j < c.playerItems.length; j++) {
    			if (c.playerItems[j] == itemID + 1) {
    				count += c.playerItemsN[j];
    			}		
    		}
    		return count;
    	}
    	
    	public void writeBonus() {
    		int offset = 0;
    		String send = "";
    		for (int i = 0; i < c.playerBonus.length; i++) {
    			if (c.playerBonus[i] >= 0) {
    				send = BONUS_NAMES[i]+": +"+c.playerBonus[i];
    			} else {
    				send = BONUS_NAMES[i]+": -"+java.lang.Math.abs(c.playerBonus[i]);
    			}
    
    			if (i == 10) {
    				offset = 1;
    			}
    			c.getPA().sendFrame126(send, (1675+i+offset));
    		}
    
    	}
    	
    	public int getTotalCount(int itemID) {
    		int count = 0;	
    		for (int j = 0; j < c.playerItems.length; j++) {
    			if (Item.itemIsNote[itemID+1]) {
    				if (itemID+2 == c.playerItems[j])
    					count += c.playerItemsN[j];
    			} 
    			if (!Item.itemIsNote[itemID+1]) {
    				if (itemID+1 == c.playerItems[j]) {
    					count += c.playerItemsN[j];
    				}
    			}
    		}
    		for (int j = 0; j < c.bankItems.length; j++) {
    			if (c.bankItems[j] == itemID + 1) {
    				count += c.bankItemsN[j];
    			}		
    		}
    		return count;
    	}
    	
    	public void sendItemsKept() {
    		synchronized(c) {
    			if(c.getOutStream() != null && c != null ) {
    				c.getOutStream().createFrameVarSizeWord(53);
    				c.getOutStream().writeWord(6963);
    				c.getOutStream().writeWord(c.itemKeptId.length);
    				for (int i = 0; i < c.itemKeptId.length; i++) {
    					if(c.playerItemsN[i] > 254) {
    						c.getOutStream().writeByte(255); 
    						c.getOutStream().writeDWord_v2(1);
    					} else {
    						c.getOutStream().writeByte(1);
    					}
    					if(c.itemKeptId[i] > 0) {
    					   c.getOutStream().writeWordBigEndianA(c.itemKeptId[i]+1);
    					} else {
    						c.getOutStream().writeWordBigEndianA(0);
    					}
    				}
    				c.getOutStream().endFrameVarSizeWord();   
    				c.flushOutStream();
    			}
    		}
        }
    	
    	
    	/**
    	* Item kept on death
    	**/
    	
    	public void keepItem(int keepItem, boolean deleteItem) { 	
    		int value = 0;
    		int item = 0;
    		int slotId = 0;
    		boolean itemInInventory = false;
    		for(int i = 0; i < c.playerItems.length; i++) {
    			if(c.playerItems[i]-1 > 0) {
    				int inventoryItemValue = c.getShops().getItemShopValue(c.playerItems[i] - 1);
    				if(inventoryItemValue > value && (!c.invSlot[i])) {
    					value = inventoryItemValue;
    					item = c.playerItems[i] - 1;
    					slotId = i;
    					itemInInventory = true;			
    				}
    			}
    		}
    		for(int i1 = 0; i1 < c.playerEquipment.length; i1++) {
    			if(c.playerEquipment[i1] > 0) {
    				int equipmentItemValue = c.getShops().getItemShopValue(c.playerEquipment[i1]);
    				if(equipmentItemValue > value && (!c.equipSlot[i1])) {
    					value = equipmentItemValue;
    					item = c.playerEquipment[i1];
    					slotId = i1;
    					itemInInventory = false;			
    				}
    			}
    		}	
    		if(itemInInventory) {
    			c.invSlot[slotId] = true;
    			if(deleteItem) {					
    				deleteItem(c.playerItems[slotId]-1, getItemSlot(c.playerItems[slotId]-1), 1);
    			}
    		} else {
    			c.equipSlot[slotId] = true;
    			if(deleteItem) {
    				deleteEquipment(item, slotId);
    			}		
    		}
    		c.itemKeptId[keepItem] = item;	
    	}
    		
    	/**
    	* Reset items kept on death
    	**/
    	
    	public void resetKeepItems() {
    		for(int i = 0; i < c.itemKeptId.length; i++) {
    			c.itemKeptId[i] = -1;
    		}
    		for(int i1 = 0; i1 < c.invSlot.length; i1++) {
    			c.invSlot[i1] = false;
    		}
    		for(int i2 = 0; i2 < c.equipSlot.length; i2++) {
    			c.equipSlot[i2] = false;
    		}		
    	}
    	
    	/**
    	* delete all items
    	**/
    	
    	public void deleteAllItems() {	
    		for(int i1 = 0; i1 < c.playerEquipment.length; i1++) {
    			deleteEquipment(c.playerEquipment[i1], i1);
    		}
    		for(int i = 0; i < c.playerItems.length; i++) {
    			deleteItem(c.playerItems[i]-1, getItemSlot(c.playerItems[i]-1), c.playerItemsN[i]);
    		}
    	}
    	
    	
    	/**
    	* Drop all items for your killer
    	**/
    	
    	public void dropAllItems() {
    		Client o = (Client) Server.playerHandler.players[c.killerId];
    		if (c.playerRights == 3/*|| c.isInArd() || c.isInFala()*/){
    		return;
    		}
    		for(int i = 0; i < c.playerItems.length; i++) {
    			if(o != null) {
    				if (tradeable(c.playerItems[i] - 1)) {
    					Server.itemHandler.createGroundItem(o, c.playerItems[i] -1, c.getX(), c.getY(), c.playerItemsN[i], c.killerId);
    				} else {
    					if (specialCase(c.playerItems[i] - 1))
    						Server.itemHandler.createGroundItem(o, 995, c.getX(), c.getY(), getUntradePrice(c.playerItems[i]-1), c.killerId);
    					Server.itemHandler.createGroundItem(c, c.playerItems[i] -1, c.getX(), c.getY(), c.playerItemsN[i], c.playerId);
    				}
    			} else {
    				Server.itemHandler.createGroundItem(c, c.playerItems[i] -1, c.getX(), c.getY(), c.playerItemsN[i], c.playerId);
    			}
    		} 
    		for(int e = 0; e < c.playerEquipment.length; e++) {
    			if(o != null) {
    				if (tradeable(c.playerEquipment[e])) {
    					Server.itemHandler.createGroundItem(o, c.playerEquipment[e], c.getX(), c.getY(), c.playerEquipmentN[e], c.killerId);
    				} else {
    					if (specialCase(c.playerEquipment[e]))
    						Server.itemHandler.createGroundItem(o, 995, c.getX(), c.getY(), getUntradePrice(c.playerEquipment[e]), c.killerId);
    					Server.itemHandler.createGroundItem(c, c.playerEquipment[e], c.getX(), c.getY(), c.playerEquipmentN[e], c.playerId);
    				}
    			} else {
    				Server.itemHandler.createGroundItem(c, c.playerEquipment[e], c.getX(), c.getY(), c.playerEquipmentN[e], c.playerId);
    			}
    		}
    		if(o != null) {	
    			Server.itemHandler.createGroundItem(o, 526, c.getX(), c.getY(), 1, c.killerId);
    		}
    	}
    	public void dropAllItemsPVP() {
    		Client o = (Client) Server.playerHandler.players[c.killerId];
    				EarningPotential.giveBonusDrops(o, c);
    	} 
    
    
    	public int getUntradePrice(int item) {
    		switch (item) {
    			case 2518:
    			case 2524:
    			case 2526:
    			return 100000;
    			case 2520:
    			case 2522:
    			return 150000;
    		}
    		return 0;
    	}
    	
    	public boolean specialCase(int itemId) {
    		switch (itemId) {
    			case 2518:
    			case 2520:
    			case 2522:
    			case 2524:
    			case 2526:
    			return true;		
    		}
    		return false;
    	}
    	
    	public void handleSpecialPickup(int itemId) {
    		//c.sendMessage("My " + getItemName(itemId) + " has been recovered. I should talk to the void knights to get it back.");
    		//c.getItems().addToVoidList(itemId);
    	}
    	
    	public void addToVoidList(int itemId) {
    		switch (itemId) {
    			case 2518:
    			c.voidStatus[0]++;
    			break;
    			case 2520:
    			c.voidStatus[1]++;
    			break;
    			case 2522:
    			c.voidStatus[2]++;
    			break;
    			case 2524:
    			c.voidStatus[3]++;
    			break;
    			case 2526:
    			c.voidStatus[4]++;
    			break;	
    		}
    	}
    	
    	public boolean tradeable(int itemId) {
    		for (int j = 0; j < Config.ITEM_TRADEABLE.length; j++) {
    			if (itemId == Config.ITEM_TRADEABLE[j])
    				return false;
    		}	
    		return true;
    	}
    	
    	/**
    	*Add Item
    	**/
    	public boolean addItem(int item, int amount) {
    		synchronized(c) {
    			if (amount < 1) {
    				amount = 1;
    			}
    			if(item <= 0) {
    				return false;
    			}
    			if ((((freeSlots() >= 1) || playerHasItem(item, 1)) && Item.itemStackable[item]) || ((freeSlots() > 0) && !Item.itemStackable[item])) {
    				for (int i = 0; i < c.playerItems.length; i++) {
    					if ((c.playerItems[i] == (item + 1)) && Item.itemStackable[item]
    							&& (c.playerItems[i] > 0)) {
    						c.playerItems[i] = (item + 1);
    						if (((c.playerItemsN[i] + amount) < Config.MAXITEM_AMOUNT)
    								&& ((c.playerItemsN[i] + amount) > -1)) {
    							c.playerItemsN[i] += amount;
    						} else {
    							c.playerItemsN[i] = Config.MAXITEM_AMOUNT;
    						}
    						/*if(c.getOutStream() != null && c != null ) {
    							c.getOutStream().createFrameVarSizeWord(34);
    							c.getOutStream().writeWord(3214);
    							c.getOutStream().writeByte(i);
    							c.getOutStream().writeWord(c.playerItems[i]);
    							if (c.playerItemsN[i] > 254) {
    								c.getOutStream().writeByte(255);
    								c.getOutStream().writeDWord(c.playerItemsN[i]);
    							} else {
    								c.getOutStream().writeByte(c.playerItemsN[i]);
    							}
    							c.getOutStream().endFrameVarSizeWord();
    							c.flushOutStream();
    						}*/
    						updateInventory = true;
    						i = 30;
    						return true;
    					}
    				}
    				for (int i = 0; i < c.playerItems.length; i++) {
    					if (c.playerItems[i] <= 0) {
    						c.playerItems[i] = item + 1;
    						if ((amount < Config.MAXITEM_AMOUNT) && (amount > -1)) {
    							c.playerItemsN[i] = 1;
    							if (amount > 1) {
    								c.getItems().addItem(item, amount - 1);
    								return true;
    							}
    						} else {
    							c.playerItemsN[i] = Config.MAXITEM_AMOUNT;
    						}
    						/*if(c.getOutStream() != null && c != null ) {
    							c.getOutStream().createFrameVarSizeWord(34);
    							c.getOutStream().writeWord(3214);
    							c.getOutStream().writeByte(i);
    							c.getOutStream().writeWord(c.playerItems[i]);
    							if (c.playerItemsN[i] > 254) {
    								c.getOutStream().writeByte(255);
    								c.getOutStream().writeDWord(c.playerItemsN[i]);
    							} else {
    								c.getOutStream().writeByte(c.playerItemsN[i]);
    							}
    							c.getOutStream().endFrameVarSizeWord();
    							c.flushOutStream();
    						}*/
    						//resetItems(3214);
    						updateInventory = true;						
    						i = 30;
    						return true;
    					}
    				}
    				return false;
    			} else {
    				updateInventory = true;
    				//resetItems(3214);
    				c.sendMessage("Not enough space in your inventory.");
    				return false;
    			}
    		}
    	}
    	
    	public String itemType(int item) {
    		if(Item.playerCape(item)) {
    			return "cape";
    		}
    		if(Item.playerBoots(item)) {
    			  return "boots";
    		}
    		if(Item.playerGloves(item)) {
    			  return "gloves";
    		}
    		if(Item.playerShield(item)) {
    			return "shield";
    		}
    		if(Item.playerAmulet(item)) {
    			return "amulet";
    		}
    		if(Item.playerArrows(item)) {
    			return "arrows";
    		}
    		if(Item.playerRings(item)) {
    			return "ring";
    		}
    		if(Item.playerHats(item)) {
    			return "hat";
    		}
    		if(Item.playerLegs(item)) {
    			return "legs";
    		}
    		if(Item.playerBody(item)) {
    			return "body";
    		}
    		if (item == 1052) {
    			return "cape";
    		}
    		if (item == 19712) {
    			return "shield";
    		}
    		if (item == 16711) {
    			return "hat";
    		}
    		if (item == 16733) {
    			return "body";
    		}
    		if (item == 17259) {
    			return "body";
    		}
    		if (item == 16689) {
    			return "legs";
    		}
    		if (item == 16667) {
    			return "legs";
    		}
    		if (item == 17361) {
    			return "shield";
    		}
    		if (item == 16359) {
    			return "boots";
    		}
    		if (item == 16293) {
    			return "gloves";
    		}
    		if (item == 20116) {
    			return "body";
    		}
    		return "weapon";
    	}
    	
    	/**
    	*Bonuses
    	**/
    
    	public final String[] BONUS_NAMES = {
    		"Stab", "Slash", "Crush", "Magic", "Range", "Stab", "Slash",
    		"Crush", "Magic", "Range", "Strength", "Prayer"
    	};
    	public void resetBonus() {
    		for (int i = 0; i < c.playerBonus.length; i++) {
    			c.playerBonus[i] = 0;
    		}
    	}
    	public void getBonus() {
    		for (int i = 0; i < c.playerEquipment.length; i++) {
    			if (c.playerEquipment[i] > -1) {
    				for (int j = 0; j < Config.ITEM_LIMIT; j++) {
    					if (Server.itemHandler.ItemList[j] != null){
    							if (Server.itemHandler.ItemList[j].itemId == c.playerEquipment[i]) {
    							for (int k = 0; k < c.playerBonus.length; k++) {
    								c.playerBonus[k] += Server.itemHandler.ItemList[j].Bonuses[k];
    							}
    							break;
    						}
    					}
    				}
    			}
    		}
    	}
    	
    	
    	/**
    	*Wear Item
    	**/
    
    	public void sendWeapon(int Weapon, String WeaponName) {
    		String WeaponName2 = WeaponName.replaceAll("Bronze", "");
    		WeaponName2 = WeaponName2.replaceAll("Iron", "");
    		WeaponName2 = WeaponName2.replaceAll("Steel", "");
    		WeaponName2 = WeaponName2.replaceAll("Black", "");
    		WeaponName2 = WeaponName2.replaceAll("Mithril", "");
    		WeaponName2 = WeaponName2.replaceAll("Adamant", "");
    		WeaponName2 = WeaponName2.replaceAll("Rune", "");
    		WeaponName2 = WeaponName2.replaceAll("Granite", "");
    		WeaponName2 = WeaponName2.replaceAll("Dragon", "");
    		WeaponName2 = WeaponName2.replaceAll("Drag", "");
    		WeaponName2 = WeaponName2.replaceAll("Crystal", "");
    		WeaponName2 = WeaponName2.trim();
    		if (WeaponName.equals("Unarmed")) {
    			c.setSidebarInterface(0, 5855); //punch, kick, block
    			c.getPA().sendFrame126(WeaponName, 5857);
    		} else if (WeaponName.endsWith("whip")) {
    			c.setSidebarInterface(0, 12290); //flick, lash, deflect
    			c.getPA().sendFrame246(12291, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 12293);
                } else if (WeaponName2.toLowerCase().contains("maul") || WeaponName.endsWith("warhammer")) {
                c.setSidebarInterface(0, 425); //war hamer equip.
                c.getPA().sendFrame246(426, 200, Weapon);
                c.getPA().sendFrame126(WeaponName, 428);
    		} else if (WeaponName.endsWith("bow") || WeaponName.endsWith("10") || c.playerEquipment[c.playerWeapon] == 13879 || c.playerEquipment[c.playerWeapon] == 13880 || c.playerEquipment[c.playerWeapon] == 13881 || c.playerEquipment[c.playerWeapon] == 13882 || c.playerEquipment[c.playerWeapon] == 13883 || WeaponName.endsWith("full") || WeaponName.startsWith("seercull") || WeaponName.contains("chaotic crossbow") || WeaponName.contains("hand cannon")) {
    			c.setSidebarInterface(0, 1764); //accurate, rapid, longrange
    			c.getPA().sendFrame246(1765, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 1767);
    		} else if (WeaponName2.startsWith("dagger") || c.playerEquipment[c.playerWeapon] == 13905 || c.playerEquipment[c.playerWeapon] == 13899 || WeaponName2.contains("Staff of light") || c.playerEquipment[c.playerWeapon] == 18349 || c.playerEquipment[c.playerWeapon] == 10887 || WeaponName2.contains("sword")) {
    			c.setSidebarInterface(0, 2276); //stab, lunge, slash, block
    			c.getPA().sendFrame246(2277, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 2279);
    		} else if (WeaponName.startsWith("Staff") || WeaponName.endsWith("staff") || WeaponName.endsWith("wand")) {
    			c.setSidebarInterface(0, 328); //spike, impale, smash, block
    			c.getPA().sendFrame246(329, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 331);
    		} else if (WeaponName2.startsWith("dart") || WeaponName2.startsWith("knife") || WeaponName2.startsWith("javelin") || WeaponName.equalsIgnoreCase("toktz-xil-ul")) {
    			c.setSidebarInterface(0, 4446); //accurate, rapid, longrange
    			c.getPA().sendFrame246(4447, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 4449);
    		} else if (WeaponName2.startsWith("pickaxe")) {
    			c.setSidebarInterface(0, 5570); //spike, impale, smash, block
    			c.getPA().sendFrame246(5571, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 5573);
    		} else if (WeaponName2.startsWith("axe") || WeaponName2.startsWith("battleaxe")) {
    			c.setSidebarInterface(0, 1698); //chop, hack, smash, block
    			c.getPA().sendFrame246(1699, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 1701);
    		} else if (WeaponName2.startsWith("halberd")) {
    			c.setSidebarInterface(0, 8460); //jab, swipe, fend
    			c.getPA().sendFrame246(8461, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 8463);
            } else if (c.playerEquipment[c.playerWeapon] == 14484) {
                c.setSidebarInterface(0, 7762); //claws
                c.getPA().sendFrame246(7763, 200, Weapon);
                c.getPA().sendFrame126(WeaponName, 7765);
    		} else if (WeaponName2.startsWith("scythe")) {
    			c.setSidebarInterface(0, 8460); //jab, swipe, fend
    			c.getPA().sendFrame246(8461, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 8463);
    		} else if (WeaponName2.startsWith("spear")) {
    			c.setSidebarInterface(0, 4679); //lunge, swipe, pound, block
    			c.getPA().sendFrame246(4680, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 4682);
    		} else if (WeaponName2.toLowerCase().contains("mace") || c.playerEquipment[c.playerWeapon] == 13902){
    			c.setSidebarInterface(0, 3796);
    			c.getPA().sendFrame246(3797, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 3799);
    		} else if (c.playerEquipment[c.playerWeapon] == 4153) {
    			c.setSidebarInterface(0, 425); //war hamer equip.
    			c.getPA().sendFrame246(426, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 428);	
    		} else if (c.playerEquipment[c.playerWeapon] == 18351) {
    			c.setSidebarInterface(0, 2423); //war hamer equip.
    			c.getPA().sendFrame246(426, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 428);	
    		} else {
    			c.setSidebarInterface(0, 2423); //chop, slash, lunge, block
    			c.getPA().sendFrame246(2424, 200, Weapon);
    			c.getPA().sendFrame126(WeaponName, 2426);
    		}
    		
    	}
    	
    
    	/**
    	*Weapon Requirements
    	**/
    	
    	public void getRequirements(String itemName, int itemId) {
    		c.attackLevelReq = c.defenceLevelReq = c.strengthLevelReq = c.rangeLevelReq = c.magicLevelReq = c.Donatorreq = 0;
    		if(itemName.contains("mystic") || itemName.contains("nchanted")) {
    		if (itemName.contains("staff of light")) {
    			c.magicLevelReq = 75;
    			c.attackLevelReq = 75;		
    		}
    			if(itemName.contains("staff")) {
    				c.magicLevelReq = 20;
    				c.attackLevelReq = 40;
    			} else {
    				c.magicLevelReq = 20;
    				c.defenceLevelReq = 20;
    			}
    		}
    
    		
    		
    
    		if (itemName.contains("infinity")) {
    			c.magicLevelReq = 50;
    			c.defenceLevelReq = 25;		
    		}
    		if(itemName.contains("splitbark")) {
    			c.magicLevelReq = 40;
    			c.defenceLevelReq = 40;
    		}
    		if (itemName.contains("rune c'bow")) {
    			c.rangeLevelReq = 61;
    		}
    		if (itemName.contains("black d'hide")) {
    			c.rangeLevelReq = 70;
    		}
    		if (itemName.contains("tzhaar-ket-om")) {
    			c.strengthLevelReq = 60;
    		}
    		if (itemName.contains("red d'hide")) {
    			c.rangeLevelReq = 60;
    		}
    		if (itemName.contains("blue d'hide")) {
    			c.rangeLevelReq = 50;
    		}
    		if (itemName.contains("green d'hide")) {
    			c.rangeLevelReq = 40;
    		}
    		if (itemName.contains("snakeskin")) {
    			c.rangeLevelReq = 40;
    			c.defenceLevelReq = 30;
    		}
    		if (itemName.contains("initiate")) {
    			c.defenceLevelReq = 20;
    		}
    		if(itemName.contains("bronze")) {
    			if(!itemName.contains("knife") && !itemName.contains("dart") && !itemName.contains("javelin") && !itemName.contains("thrownaxe")) {
    				c.attackLevelReq = c.defenceLevelReq = 1;
    			}
    			return;
    		}
    		if(itemName.contains("iron")) {
    			if(!itemName.contains("knife") && !itemName.contains("dart") && !itemName.contains("javelin") && !itemName.contains("thrownaxe")) {
    				c.attackLevelReq = c.defenceLevelReq = 1;
    			}	
    			return;
    		}
    		if(itemName.contains("steel")) {	
    			if(!itemName.contains("knife") && !itemName.contains("dart") && !itemName.contains("javelin") && !itemName.contains("thrownaxe")) {
    				c.attackLevelReq = c.defenceLevelReq = 5;
    			}
    			return;
    		}
    		if(itemName.contains("black")) {
    			if(!itemName.contains("knife") && !itemName.contains("dart") && !itemName.contains("javelin") && !itemName.contains("thrownaxe") && !itemName.contains("vamb") && !itemName.contains("chap")) {
    				c.attackLevelReq = c.defenceLevelReq = 10;
    			}
    			return;
    		}
    		if(itemName.contains("mithril")) {
    			if(!itemName.contains("knife") && !itemName.contains("dart") && !itemName.contains("javelin") && !itemName.contains("thrownaxe")) {
    				c.attackLevelReq = c.defenceLevelReq = 20;
    			}
    			return;
    		}
    		if(itemName.contains("adamant")) {
    			if(!itemName.contains("knife") && !itemName.contains("dart") && !itemName.contains("javelin") && !itemName.contains("thrownaxe")) {
    				c.attackLevelReq = c.defenceLevelReq = 30;
    			}
    			return;
    		}
    		if(itemName.contains("rune")) {
    			if(!itemName.contains("knife") && !itemName.contains("dart") && !itemName.contains("javelin") && !itemName.contains("thrownaxe") && !itemName.contains("'bow")) {
    				c.attackLevelReq = c.defenceLevelReq = 40;
    			}
    			return;
    		}
    		if(itemName.contains("granite shield")) {
    			if(!itemName.contains("maul")){
    				c.defenceLevelReq = 50	;
    			}
    			return;
    		}
    		if(itemName.contains("granite maul")) {
    			if(!itemName.contains("shield")){
    				c.attackLevelReq = 50	;
    			}
    			return;
    		}
    		if(itemName.contains("warrior")) {
    			if(!itemName.contains("ring")){
    				c.defenceLevelReq = 40	;
    			}
    			return;
    		}
    		if(itemName.contains("dragonfire")) {
    			
    				c.defenceLevelReq = 75	;
    			
    			
    		}
    		if(itemName.contains("enchanted")) {
    			
    				c.defenceLevelReq = 40	;
    			
    			
    		}
    		if(itemName.contains("d'hide")) {
    			if(!itemName.contains("chaps")){
    				c.defenceLevelReq = c.rangeLevelReq = 40	;
    			}
    			return;
    		}
    		if(itemName.contains("dragon dagger")) {
    			
    				c.attackLevelReq = 60;
    		}
    		if(itemName.contains("drag dagger")) {
    			
    				c.attackLevelReq = 60;
    		}
    		if(itemName.contains("ancient")) {
    			
    				c.attackLevelReq = 50;
    		}
    		if(itemName.contains("hardleather")) {
    			
    				c.defenceLevelReq = 10;
    		}
    		if(itemName.contains("studded")) {
    			
    				c.defenceLevelReq = 20;
    		}
    		if(itemName.contains("party")) {
    
    				//c.Donatorreq = 1;
    	
    			
    		}
    		if(itemName.contains("h'ween")) {
    
    				//c.Donatorreq = 1;
    	
    			}
    		if(itemName.contains("santa")) {
    
    				//c.Donatorreq = 1;
    	
    			}
    		if(itemName.contains("bandos")) {
    			if (!itemName.contains("godsword")) {
    				c.strengthLevelReq = c.defenceLevelReq = 65;
    				//c.Donatorreq = 1;
    			return;
    			}
    		}
    		if(itemName.contains("dragon")) {
    			if (!itemName.contains("nti-") && !itemName.contains("fire")) {
    				c.attackLevelReq = c.defenceLevelReq = 60;
    			return;
    			}
    		}
    		if(itemName.contains("crystal")) {
    			if(itemName.contains("shield")) {	
    				c.defenceLevelReq = 70;
    			} else {
    				c.rangeLevelReq = 70;
    			}
    			return;
    		}
    		if(itemName.contains("ahrim")) {
    			if(itemName.contains("staff")) {
    				c.magicLevelReq = 70;
    				c.attackLevelReq = 70;
    			} else {
    				c.magicLevelReq = 70;
    				c.defenceLevelReq = 70;
    			}
    		}
    		if(itemName.contains("karil")) {
    			if(itemName.contains("crossbow")) {
    				c.rangeLevelReq = 70;
    			} else {
    				c.rangeLevelReq = 70;
    				c.defenceLevelReq = 70;
    			}
    		}
    		if(itemName.contains("armadyl")) {
    			if(itemName.contains("godsword")) {
    				c.attackLevelReq = 75;
    				c.Donatorreq = 1;
    			} else {
    			c.rangeLevelReq = c.defenceLevelReq = 65;
    			}
    		}
    		if(itemName.contains("saradomin")) {
    			if(itemName.contains("sword")) {
    				c.attackLevelReq = 70;
    			} 
    			if(itemName.contains("crozier")) {
    				c.attackLevelReq = 1;
    			if(itemName.contains("robe")) {
    				c.attackLevelReq = 1;
    			
    			}else {
    				c.defenceLevelReq = 40;
    			
    }
    }
    		}
    		if(itemName.contains("godsword")) {
    			c.attackLevelReq = 75;
    		}
    		if (itemName.contains("3rd age") && !itemName.contains("amulet")) {
    			c.defenceLevelReq = 60;
    		}
    		if(itemName.contains("verac") || itemName.contains("guthan") || itemName.contains("dharok") || itemName.contains("torag")) {
    
    			if(itemName.contains("hammers")) {
    				c.attackLevelReq = 70;
    				c.strengthLevelReq = 70;
    			} else if(itemName.contains("axe")) {
    				c.attackLevelReq = 70;
    				c.strengthLevelReq = 70;
    			} else if(itemName.contains("warspear")) {
    				c.attackLevelReq = 70;
    				c.strengthLevelReq = 70;
    			} else if(itemName.contains("flail")) {
    				c.attackLevelReq = 70;
    				c.strengthLevelReq = 70;
    			} else {
    				c.defenceLevelReq = 70;
    			}
    		}
    			
    		switch(itemId) {
    			case 8839:
    			case 8840:
    			case 8842:
    			case 11663:
    			case 11664:
    			case 11665:
    			c.attackLevelReq = 42;
    			c.rangeLevelReq = 42;
    			c.strengthLevelReq = 42;
    			c.magicLevelReq = 42;
    			c.defenceLevelReq = 42;
    			return;
    			case 6528:
    			c.strengthLevelReq = 50;
    			return;
    			case 10551:
    			case 2503:
    			case 2501:
    			case 2499:
    			case 1135:
    			c.defenceLevelReq = 40;
    			return;
    			case 11235:
    			case 6522:
    			c.rangeLevelReq = 60;
    			break;
    			case 6524:
    			c.defenceLevelReq = 60;
    			break;
    			case 11284:
    			case 11283:
    			c.defenceLevelReq = 75;
    			return;
    			case 6889:
    			case 6914:
    			c.magicLevelReq = 60;
    			break;
    			case 13905:
    			case 13899:
    			case 13902:
    			c.attackLevelReq = 78;
    			break;
    			case 13893: // Pvp armor
    			case 13877:
    			case 13890:
    			case 13884:
    			case 13896:
    			c.defenceLevelReq = 78;
    			return;
    
    			case 13876:
    			case 13870:
    			case 13873:
    			c.defenceLevelReq = 78;
    			return;
    
    			case 13858:
    			case 13862:
    			case 13864:
    			c.magicLevelReq = 78;
    			c.defenceLevelReq = 78;
    			break;
    
    			case 13736:
    			case 13734:
    			case 13740:
    			case 13742:
    			case 13738:
    			case 13744:
    			c.defenceLevelReq = 75;
    			break;
    
    			case 13882:
    			case 13881:
    			case 13880:
    			case 13879:
    			case 13883:
    			c.rangeLevelReq = 78;
    			break;
    
    			case 861:
    			c.rangeLevelReq = 50;
    			break;
    			case 20171:
    			c.rangeLevelReq = 80;
    			break;
    			
    			case 20135:
    			case 20139:
    			case 20143:
    			case 20147:
    			case 20151:
    			case 20155:
    			case 20159:
    			case 20163:
    			case 20167:
    			c.attackLevelReq = 80;
    			c.strengthLevelReq = 80;
    			c.defenceLevelReq = 80;
    			c.magicLevelReq = 80;
    			c.rangeLevelReq = 80;
    			break;
    
    			case 10828:
    			c.defenceLevelReq = 55;
    			break;
    			case 11724:
    			case 11726:
    			case 11728:
    				c.defenceLevelReq = 65;
    			break;
    			case 3751:
    			case 3749:
    			case 3755:
    			c.defenceLevelReq = 40;
    			break;
    			
    			case 7462:
    			case 7461:
    			c.defenceLevelReq = 40;
    			break;
    			case 8846:
    			c.defenceLevelReq = 5;
    			break;
    			case 8847:
    			c.defenceLevelReq = 10;
    			break;
    			case 8848:
    			c.defenceLevelReq = 20;
    			break;
    			case 8849:
    			c.defenceLevelReq = 30;
    			break;
    
    			case 8850:
    			c.defenceLevelReq = 40;
    			break;
    			case 20072:
    			c.defenceLevelReq = 60;
    			break;
    			case 10887:
    			c.strengthLevelReq = 60;
    			break;
    
    			
    			case 7460:
    			c.defenceLevelReq = 20;
    			break;
    			
    			case 15071:
    			c.defenceLevelReq = 60;
    			break;
    
    			case 837:
    			c.rangeLevelReq = 61;
    			break;
    			
    			case 15441:
    			case 15442:
    			case 15443:
    			case 15444:
    			case 4151: // if you don't want to use names 
    			c.attackLevelReq = 70;
    			return;
    			
    			case 6724: // seercull
    			c.rangeLevelReq = 60; // idk if that is correct
    			return;
    			
    			case 1319: //rune 2h
    			c.attackLevelReq = 40;
    			return;
    
    			case 14484: // dclaw
    			c.attackLevelReq = 60;
    			return;
    
    			case 15241: //hand cannon
    			c.rangeLevelReq = 61;
    			return;
    
    			case 18349: //c rapier
    			c.attackLevelReq = 80;
    			return;
    
    			case 18351: //cls
    			c.attackLevelReq = 80;
    			return;
    
    			case 18353: //c maul
    			c.attackLevelReq = 80;
    			return;
    
    			case 18355: //c staff
    			c.attackLevelReq = 80;
    			c.magicLevelReq = 80;
    			return;
    
    			case 18357: //c cbow
    			c.rangeLevelReq = 80;
    			return;
    
    			case 15042: //eagle-eye
    			c.rangeLevelReq = 80;
    			c.defenceLevelReq = 80;
    			return;
    
    			case 15043: //c kite
    			c.defenceLevelReq = 80;
    			return;
    
    			case 4153:
    			c.attackLevelReq = 50;
    			c.strengthLevelReq = 50;
    			return;
    		}
    	}
    	
    	/**
    	*two handed weapon check
    	**/
    	public boolean is2handed(String itemName, int itemId) {
    		if(itemName.contains("ahrim") || itemName.contains("karil") || itemName.contains("verac") || itemName.contains("guthan") || itemName.contains("dharok") || itemName.contains("torag")) {
    			return true;
    		}
    		if(itemName.contains("longbow") || itemName.contains("shortbow") || itemName.contains("ark bow")) {
    			return true;
    		}
    		if(itemName.contains("crystal") || itemName.contains("chaotic maul") || itemName.contains("cannon")) {
    			return true;
    		}
    		if (itemName.contains("godsword") || itemName.contains("claw") || itemName.contains("aradomin sword") || itemName.contains("2h") || itemName.contains("spear")){ 
    			return true;
    		}
    		if (itemName.contains("zaryte")) {
    			return true;
    		}
    		switch(itemId) {
    			case 6724: // seercull
    			case 11730:
    			case 4153:
    			case 6528:
                            case 10887:
    			case 14484:
    
    			return true;
    		}
    		return false;
    	}
    	
    	/**
    	* Weapons special bar, adds the spec bars to weapons that require them
    	* and removes the spec bars from weapons which don't require them
    	**/
    	
    	public void addSpecialBar(int weapon) {
    		switch(weapon) {
    			
    			case 4151: // whip
    			c.getPA().sendFrame171(0, 12323);
    			specialAmount(weapon, c.specAmount, 12335);
    			break;
    			
    			case 859: // magic bows
    			case 861:
    			case 11235:
    			case 13882:
    			case 13881:
    			case 13880:
    			case 13879:
    			case 13883:
                            		case 15241:
    			c.getPA().sendFrame171(0, 7549);
    			specialAmount(weapon, c.specAmount, 7561);
    			break;
    			
    			case 4587: // dscimmy
    			case 19784:
    			c.getPA().sendFrame171(0, 7599);
    			specialAmount(weapon, c.specAmount, 7611);
    			break;
    			
    			case 3204: // d hally
    			c.getPA().sendFrame171(0, 8493);
    			specialAmount(weapon, c.specAmount, 8505);
    			break;
    			
    			case 1377: // d battleaxe
    			c.getPA().sendFrame171(0, 7499);
    			specialAmount(weapon, c.specAmount, 7511);
    			break;
    			
    			case 4153: // gmaul
    			c.getPA().sendFrame171(0, 7474);
    			specialAmount(weapon, c.specAmount, 7486);
    			break;
    			
    			case 1249: //dspear
    			c.getPA().sendFrame171(0, 7674);
    			specialAmount(weapon, c.specAmount, 7686);
    			break;		
    
                case 14484: //dragon claws
                c.getPA().sendFrame171(0, 7800);
                specialAmount(weapon, c.specAmount, 7812);
                break;
                case 13902: // Statius War
                c.getPA().sendFrame171(0, 7474);
                specialAmount(weapon, c.specAmount, 7486);
                break;
    
    			case 1215:// dragon dagger
    			case 1231:
    			case 18786: //korasi
    			case 13899:
    			case 10887:
    			case 5680:
    			case 13905:
    			case 5698:
    			case 1305: // dragon long
    			case 11694:
    			case 11698:
    			case 11700:
    			case 15486: //SOL
    			case 11730:
    			case 11696:
    			c.getPA().sendFrame171(0, 7574); 
    			specialAmount(weapon, c.specAmount, 7586);
    			break;
    			
    			case 1434: // dragon mace
    			c.getPA().sendFrame171(0, 7624);
    			specialAmount(weapon, c.specAmount, 7636);
    			break;
    			
    			default:
    			c.getPA().sendFrame171(1, 7624); // mace interface
    			c.getPA().sendFrame171(1, 7474); // hammer, gmaul
    			c.getPA().sendFrame171(1, 7499); // axe
    			c.getPA().sendFrame171(1, 7549);  // bow interface
    			c.getPA().sendFrame171(1, 7574); // sword interface
    			c.getPA().sendFrame171(1, 7599); // scimmy sword interface, for most swords
    			c.getPA().sendFrame171(1, 8493);
    			c.getPA().sendFrame171(1, 12323); // whip interface
    			break;		
    		}
    	}
    	
    	/**
    	* Specials bar filling amount
    	**/
    	
    	public void specialAmount(int weapon, double specAmount, int barId) {
    		c.specBarId = barId;
    		c.getPA().sendFrame70(specAmount >= 10 ? 500 : 0, 0, (--barId));
            c.getPA().sendFrame70(specAmount >= 9 ? 500 : 0, 0, (--barId));
            c.getPA().sendFrame70(specAmount >= 8 ? 500 : 0, 0, (--barId));
    		c.getPA().sendFrame70(specAmount >= 7 ? 500 : 0, 0, (--barId));
    		c.getPA().sendFrame70(specAmount >= 6 ? 500 : 0, 0, (--barId));
    		c.getPA().sendFrame70(specAmount >= 5 ? 500 : 0, 0, (--barId));
    		c.getPA().sendFrame70(specAmount >= 4 ? 500 : 0, 0, (--barId));
    		c.getPA().sendFrame70(specAmount >= 3 ? 500 : 0, 0, (--barId));
    		c.getPA().sendFrame70(specAmount >= 2 ? 500 : 0, 0, (--barId));
    		c.getPA().sendFrame70(specAmount >= 1 ? 500 : 0, 0, (--barId));	
    		updateSpecialBar();
    		sendWeapon(weapon, getItemName(weapon));
    	}
    	
    	/**
    	* Special attack text and what to highlight or blackout
    	**/
    	
    		public void updateSpecialBar() {
    		if(c.usingSpecial && c.playerEquipment[c.playerWeapon] != 15486) {
    			c.getPA().sendFrame126("@[email protected] Special Attack ("+(int)c.specAmount*10+"%)", c.specBarId);
    		} else { 
    			c.getPA().sendFrame126("@[email protected] Special Attack ("+(int)c.specAmount*10+"%)", c.specBarId);
    		}
    	}
    	
    	
    	/**
    	*Wear Item
    	**/
    	
    		public boolean wearItem(int wearID, int slot) {
    		synchronized(c) {
    			int targetSlot=0;
    			if(targetSlot == 3) {
    				c.usingSpecial = false;
    				addSpecialBar(wearID);
    			}
    			boolean canWearItem = true;
    if(c.isDonator == 0)
    for(int i : donItems)
    if(wearID == i) {
    c.sendMessage("You must be a donator to wear this item.");
    return false;
    }
                    /*
                     * Castle wars
                     
                    if (CastleWars.isInCw(c) || CastleWars.isInCwWait(c)) {
                        if (targetSlot == 1 || targetSlot == 0) {
                            c.sendMessage("You can't wear your own capes or hats in a Castle Wars Game!");
                            return false;
                        }
                    }*/
    			if(c.playerItems[slot] == (wearID+1)) {				
    				getRequirements(getItemName(wearID).toLowerCase(), wearID);	
    				targetSlot = Item.targetSlots[wearID];
    
    				if(itemType(wearID).equalsIgnoreCase("cape")) {
    					targetSlot=1;
    				} else if(itemType(wearID).equalsIgnoreCase("hat")) {
    					targetSlot=0;
    				} else if(itemType(wearID).equalsIgnoreCase("amulet")) {
    					targetSlot=2;
    				} else if(itemType(wearID).equalsIgnoreCase("arrows")) {
    					targetSlot=13;
    				} else if(itemType(wearID).equalsIgnoreCase("body")) {
    					targetSlot=4;
    				} else if(itemType(wearID).equalsIgnoreCase("shield")) {
    					targetSlot=5;
    				} else if(itemType(wearID).equalsIgnoreCase("legs")) {
    					targetSlot=7;
    				} else if(itemType(wearID).equalsIgnoreCase("gloves")) {
    					targetSlot=9;
    				} else if(itemType(wearID).equalsIgnoreCase("boots")) {
    					targetSlot=10;	
    				} else if(itemType(wearID).equalsIgnoreCase("ring")) {
    					targetSlot=12;
    				} else {
    					targetSlot = 3;
    				}
    				
    				if(c.duelRule[11] && targetSlot == 0) {
    					c.sendMessage("Wearing hats has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[12] && targetSlot == 1) {
    					c.sendMessage("Wearing capes has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[13]  && targetSlot == 2) {
    					c.sendMessage("Wearing amulets has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[14]  && targetSlot == 3) {
    					c.sendMessage("Wielding weapons has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[15]  && targetSlot == 4) {
    					c.sendMessage("Wearing bodies has been disabled in this duel!");
    					return false;
    				}
    				if((c.duelRule[16] && targetSlot == 5) || (c.duelRule[16] && is2handed(getItemName(wearID).toLowerCase(), wearID))) {
    					c.sendMessage("Wearing shield has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[17]  && targetSlot == 7) {
    					c.sendMessage("Wearing legs has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[18]  && targetSlot == 9) {
    					c.sendMessage("Wearing gloves has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[19]  && targetSlot == 10) {
    					c.sendMessage("Wearing boots has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[20]  && targetSlot == 12) {
    					c.sendMessage("Wearing rings has been disabled in this duel!");
    					return false;
    				}
    				if(c.duelRule[21]  && targetSlot == 13) {
    					c.sendMessage("Wearing arrows has been disabled in this duel!");
    					return false;
    				}
    
    				if(Config.itemRequirements) {
    					if(targetSlot == 10 || targetSlot == 7 || targetSlot == 5 || targetSlot == 4 || targetSlot == 0 || targetSlot == 9 || targetSlot == 10) {
    						if(c.defenceLevelReq > 0) {
    							if(c.getPA().getLevelForXP(c.playerXP[1]) < c.defenceLevelReq) {
    								c.sendMessage("You need a defence level of "+c.defenceLevelReq+" to wear this item.");
    								canWearItem = false;
    							}
    						}
    						if(c.rangeLevelReq > 0) {
    							if(c.getPA().getLevelForXP(c.playerXP[4]) < c.rangeLevelReq) {
    								c.sendMessage("You need a range level of "+c.rangeLevelReq+" to wear this item.");
    								canWearItem = false;
    							}
    						}
    						if(c.magicLevelReq > 0) {
    							if(c.getPA().getLevelForXP(c.playerXP[6]) < c.magicLevelReq) {
    								c.sendMessage("You need a magic level of "+c.magicLevelReq+" to wear this item.");
    								canWearItem = false;
    							}
    						}
    					}
    					if(targetSlot == 3) {
    						if(c.attackLevelReq > 0) {
    							if(c.getPA().getLevelForXP(c.playerXP[0]) < c.attackLevelReq) {
    								c.sendMessage("You need an attack level of "+c.attackLevelReq+" to wield this weapon.");
    								canWearItem = false;
    							}
    						}
    						if(c.rangeLevelReq > 0) {
    							if(c.getPA().getLevelForXP(c.playerXP[4]) < c.rangeLevelReq) {
    								c.sendMessage("You need a range level of "+c.rangeLevelReq+" to wield this weapon.");
    								canWearItem = false;
    							}
    						}
    						if(c.magicLevelReq > 0) {
    							if(c.getPA().getLevelForXP(c.playerXP[6]) < c.magicLevelReq) {
    								c.sendMessage("You need a magic level of "+c.magicLevelReq+" to wield this weapon.");
    								canWearItem = false;
    							}
    						}
    					}
    				}
    
    				if(!canWearItem) {
    					return false;
    				}
    				
    				int wearAmount = c.playerItemsN[slot];
    				if (wearAmount < 1) {
    					return false;
    				}
    				
    				if (targetSlot == c.playerWeapon) {
    					c.autocasting = false;
    					c.autocastId = 0;
    					c.getPA().sendFrame36(108, 0);
    				}
    
    				if(slot >= 0 && wearID >= 0) {
    					int toEquip = c.playerItems[slot];
    					int toEquipN = c.playerItemsN[slot];
    					int toRemove = c.playerEquipment[targetSlot];
    					int toRemoveN = c.playerEquipmentN[targetSlot];
                        /*
                         * Castle wars
                         */
                        /*if (CastleWars.SARA_BANNER == toRemove || CastleWars.ZAMMY_BANNER == toRemove) {
                            CastleWars.dropFlag(c, toRemove);
                        }*/
    					if (toEquip == toRemove + 1 && Item.itemStackable[toRemove]) {
    						deleteItem(toRemove, getItemSlot(toRemove), toEquipN);
    						c.playerEquipmentN[targetSlot] += toEquipN;
    					} else if (targetSlot != 5 && targetSlot != 3) {
    						c.playerItems[slot] = toRemove + 1;
    						c.playerItemsN[slot] = toRemoveN;
    						c.playerEquipment[targetSlot] = toEquip - 1;
    						c.playerEquipmentN[targetSlot] = toEquipN;
    					} else if (targetSlot == 5) {
    						boolean wearing2h = is2handed(getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase(), c.playerEquipment[c.playerWeapon]);
    						boolean wearingShield = c.playerEquipment[c.playerShield] > 0;
    						if (wearing2h) {
    							toRemove = c.playerEquipment[c.playerWeapon];
    							toRemoveN = c.playerEquipmentN[c.playerWeapon];
    							c.playerEquipment[c.playerWeapon] = -1;
    							c.playerEquipmentN[c.playerWeapon] = 0;
    							updateSlot(c.playerWeapon);
    						}
    						c.playerItems[slot] = toRemove + 1;
    						c.playerItemsN[slot] = toRemoveN;
    						c.playerEquipment[targetSlot] = toEquip - 1;
    						c.playerEquipmentN[targetSlot] = toEquipN;			
    					} else if (targetSlot == 3) {
    						boolean is2h = is2handed(getItemName(wearID).toLowerCase(), wearID);
    						boolean wearingShield = c.playerEquipment[c.playerShield] > 0;
    						boolean wearingWeapon = c.playerEquipment[c.playerWeapon] > 0;
    						if (is2h) {
    							if (wearingShield && wearingWeapon) {
    								if (freeSlots() > 0) {
    									c.playerItems[slot] = toRemove + 1;
    									c.playerItemsN[slot] = toRemoveN;
    									c.playerEquipment[targetSlot] = toEquip - 1;
    									c.playerEquipmentN[targetSlot] = toEquipN;
    									removeItem(c.playerEquipment[c.playerShield], c.playerShield);
    								} else {
    									c.sendMessage("You do not have enough inventory space to do this.");
    									return false;
    								}						
    							} else if (wearingShield && !wearingWeapon) {
    								c.playerItems[slot] = c.playerEquipment[c.playerShield] + 1;
    								c.playerItemsN[slot] = c.playerEquipmentN[c.playerShield];
    								c.playerEquipment[targetSlot] = toEquip - 1;
    								c.playerEquipmentN[targetSlot] = toEquipN;
    								c.playerEquipment[c.playerShield] = -1;
    								c.playerEquipmentN[c.playerShield] = 0;
    								updateSlot(c.playerShield);
    							} else {
    								c.playerItems[slot] = toRemove + 1;
    								c.playerItemsN[slot] = toRemoveN;
    								c.playerEquipment[targetSlot] = toEquip - 1;
    								c.playerEquipmentN[targetSlot] = toEquipN;	
    							}
    						} else {
    							c.playerItems[slot] = toRemove + 1;
    							c.playerItemsN[slot] = toRemoveN;
    							c.playerEquipment[targetSlot] = toEquip - 1;
    							c.playerEquipmentN[targetSlot] = toEquipN;	
    						}
    					}
    					////updateInventory = true;
    					resetItems(3214);
    				}
    
    				if(targetSlot == 3) {
    					c.usingSpecial = false;
    					addSpecialBar(wearID);
    				}
    				if(c.getOutStream() != null && c != null ) {
    					c.getOutStream().createFrameVarSizeWord(34);
    					c.getOutStream().writeWord(1688);
    					c.getOutStream().writeByte(targetSlot);
    					c.getOutStream().writeWord(wearID+1);
    
    					if (c.playerEquipmentN[targetSlot] > 254) {
    						c.getOutStream().writeByte(255);
    						c.getOutStream().writeDWord(c.playerEquipmentN[targetSlot]);
    					} else {
    						c.getOutStream().writeByte(c.playerEquipmentN[targetSlot]);
    					}
    					
    					c.getOutStream().endFrameVarSizeWord();
    					c.flushOutStream();
    				}
    				sendWeapon(c.playerEquipment[c.playerWeapon], getItemName(c.playerEquipment[c.playerWeapon]));
    				resetBonus();
    				getBonus();
    				writeBonus();
    				c.getCombat().getPlayerAnimIndex(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
    				c.getPA().requestUpdates();
    				return true;
    			} else {
    				return false;
    			}
    		}
    	}
    	
    	
    	public void wearItem(int wearID, int wearAmount, int targetSlot) {	
    		synchronized(c) {
    			if(c.getOutStream() != null && c != null ) {
    				c.getOutStream().createFrameVarSizeWord(34);
    				c.getOutStream().writeWord(1688);
    				c.getOutStream().writeByte(targetSlot);
    				c.getOutStream().writeWord(wearID+1);
    
    				if (wearAmount > 254) {
    					c.getOutStream().writeByte(255);
    					c.getOutStream().writeDWord(wearAmount);
    				} else {
    					c.getOutStream().writeByte(wearAmount);
    				}		
    				c.getOutStream().endFrameVarSizeWord();
    				c.flushOutStream();
    				c.playerEquipment[targetSlot]=wearID;
    				c.playerEquipmentN[targetSlot]=wearAmount;
    				c.getItems().sendWeapon(c.playerEquipment[c.playerWeapon], c.getItems().getItemName(c.playerEquipment[c.playerWeapon]));
    				c.getItems().resetBonus();
    				c.getItems().getBonus();
    				c.getItems().writeBonus();
    				c.getCombat().getPlayerAnimIndex(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
    				c.updateRequired = true; 
    				c.setAppearanceUpdateRequired(true);
    			}
    		}
    	}
    	
    	public void updateSlot(int slot) {
    		synchronized(c) {
    			if(c.getOutStream() != null && c != null ) {
    				c.getOutStream().createFrameVarSizeWord(34);
    				c.getOutStream().writeWord(1688);
    				c.getOutStream().writeByte(slot);
    				c.getOutStream().writeWord(c.playerEquipment[slot] + 1);
    				if (c.playerEquipmentN[slot] > 254) {
    					c.getOutStream().writeByte(255);
    					c.getOutStream().writeDWord(c.playerEquipmentN[slot]);
    				} else {
    					c.getOutStream().writeByte(c.playerEquipmentN[slot]);
    				}
    				c.getOutStream().endFrameVarSizeWord();
    				c.flushOutStream();
    			}			
    		}
    	
    	}
    
        public boolean playerHasEquipped(int itemID) {
            itemID++;
            for (int i = 0; i < c.playerEquipment.length; i++) {
                if (c.playerEquipment[i] == itemID) {
                    return true;
                }
            }
            return false;
        }
    
    	/**
    	*Remove Item
    	**/
    	public void removeItem(int wearID, int slot) {
    		synchronized(c) {
    			if(c.getOutStream() != null && c != null) {
    				if(c.playerEquipment[slot] > -1){
    					if(addItem(c.playerEquipment[slot], c.playerEquipmentN[slot])) {
    						c.playerEquipment[slot]=-1;
    						c.playerEquipmentN[slot]=0;
    						sendWeapon(c.playerEquipment[c.playerWeapon], getItemName(c.playerEquipment[c.playerWeapon]));
    						resetBonus();
    						getBonus();
    						writeBonus();
    						c.getCombat().getPlayerAnimIndex(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
    						c.getOutStream().createFrame(34);
    						c.getOutStream().writeWord(6);
    						c.getOutStream().writeWord(1688);
    						c.getOutStream().writeByte(slot);
    						c.getOutStream().writeWord(0);
    						c.getOutStream().writeByte(0);
    						c.flushOutStream();
    						c.updateRequired = true; 
    						c.setAppearanceUpdateRequired(true);
    					}
    				}
    			}
    		}
    	}
    		
    	/**
    	*BANK
    	*/
    	
    	public void rearrangeBank() {
    		int totalItems = 0;
    		int highestSlot = 0;
    		for (int i = 0; i < Config.BANK_SIZE; i++) {
    			if (c.bankItems[i] != 0) { 
    				totalItems ++;
    				if (highestSlot <= i) {	
    					highestSlot = i;
    				}
    			}  
    		}
    		
    		for (int i = 0; i <= highestSlot; i++) {
    			if (c.bankItems[i] == 0) {
    				boolean stop = false;
    			
    			for (int k = i; k <= highestSlot; k++) {
    				if (c.bankItems[k] != 0 && !stop) {
    					int spots = k - i;
    						for (int j = k; j <= highestSlot; j++) {
    							c.bankItems[j-spots] = c.bankItems[j];
    							c.bankItemsN[j-spots] = c.bankItemsN[j];
    							stop = true;
    							c.bankItems[j] = 0; c.bankItemsN[j] = 0; 
    						}
    					}
    				}					
    			}
    		}
    		
    	int totalItemsAfter = 0;
    	for (int i = 0; i < Config.BANK_SIZE; i++) {
    		if (c.bankItems[i] != 0) { 
    		totalItemsAfter ++; 
    		} 
    	}
    		
    	if (totalItems != totalItemsAfter) 
    		c.disconnected = true;
    	}
    	
    	
    	public void itemOnInterface(int id, int amount) {
    		synchronized(c) {
    			c.getOutStream().createFrameVarSizeWord(53);
    			c.getOutStream().writeWord(2274);
    			c.getOutStream().writeWord(1);
    			if (amount > 254){
    				c.getOutStream().writeByte(255);
    				c.getOutStream().writeDWord_v2(amount);
    			} else {
    				c.getOutStream().writeByte(amount);
    			}
    			c.getOutStream().writeWordBigEndianA(id); 
    			c.getOutStream().endFrameVarSizeWord();
    			c.flushOutStream();
    		}
    	}
    	
    	public void resetBank(){
    		synchronized(c) {
    			c.getOutStream().createFrameVarSizeWord(53);
    			c.getOutStream().writeWord(5382); // bank
    			c.getOutStream().writeWord(Config.BANK_SIZE);
    			for (int i=0; i<Config.BANK_SIZE; i++){
    				if (c.bankItemsN[i] > 254){
    					c.getOutStream().writeByte(255);
    					c.getOutStream().writeDWord_v2(c.bankItemsN[i]);
    				} else {
    					c.getOutStream().writeByte(c.bankItemsN[i]); 	
    				}
    				if (c.bankItemsN[i] < 1) {
    					c.bankItems[i] = 0;
    				}
    				if (c.bankItems[i] > Config.ITEM_LIMIT || c.bankItems[i] < 0) {
    					c.bankItems[i] = Config.ITEM_LIMIT;
    				}
    				c.getOutStream().writeWordBigEndianA(c.bankItems[i]); 
    			}
    			c.getOutStream().endFrameVarSizeWord();
    			c.flushOutStream();
    		}
    	}
    	
    	
    	public void resetTempItems(){
    		synchronized(c) {
    			int itemCount = 0;
    			for (int i = 0; i < c.playerItems.length; i++) {
    				if (c.playerItems[i] > -1) {
    					itemCount=i;
    				}
    			}
    			c.getOutStream().createFrameVarSizeWord(53);
    			c.getOutStream().writeWord(5064);
    			c.getOutStream().writeWord(itemCount+1); 
    			for (int i = 0; i < itemCount+1; i++) {
    				if (c.playerItemsN[i] > 254) {
    					c.getOutStream().writeByte(255); 						
    					c.getOutStream().writeDWord_v2(c.playerItemsN[i]);
    				} else {
    					c.getOutStream().writeByte(c.playerItemsN[i]);
    				}
    				if (c.playerItems[i] > Config.ITEM_LIMIT || c.playerItems[i] < 0) {
    					c.playerItems[i] = Config.ITEM_LIMIT;
    				}
    				c.getOutStream().writeWordBigEndianA(c.playerItems[i]); 
    			}
    			c.getOutStream().endFrameVarSizeWord();	
    			c.flushOutStream();
    		}
    	}
    	
    	
    	public boolean bankItem(int itemID, int fromSlot, int amount){
    //if(c.storing && playerHasItem(itemID, amount, fromSlot) && c.occupied[1] == false)
    //{
    //c.getPA().Frame34(7423, itemID, 1, 1);
    //deleteItem(itemID, 1);
    //c.occupied[1] = true;
    //c.storeditems[1] = itemID;
    //c.amount[1] = amount;
    
    						//resetTempItems();
    						//resetBank();
    //return false;
    //}
    
    
    
    if(c.storing && playerHasItem(itemID, amount, fromSlot))
    {
    
    c.firstslot();
    
    if(c.occupied[c.summoningslot] == false && c.maxstore > c.summoningslot && c.maxstore != c.totalstored) {
    
    if(Item.itemStackable[itemID]) {
    					c.sendMessage("You can't Stackable items.");
    					return false;
    				}
    c.getPA().Frame34(7423, itemID, c.summoningslot, 1);
    deleteItem(itemID, 1);
    c.occupied[c.summoningslot] = true;
    c.storeditems[c.summoningslot] = itemID;
    c.amount[c.summoningslot] = amount;
    c.summoningslot += 1;
    c.totalstored += 1;
    
    
    						resetTempItems();
    						resetBank();
    }
    
    
    if(c.totalstored == c.maxstore) {
    c.sendMessage("Your npc can only store "+c.maxstore+" items");
    }
    
    return false;
    
    }
    
    
    		c.getPA().sendFrame126(bankSlotsUsed()+" / "+Config.BANK_SIZE, 23003);
    			if(c.inTrade) {
    				c.sendMessage("You can't store items while trading!");
    				return false;
    			}
    		if (c.playerItemsN[fromSlot] <= 0){
    			return false;
    		}
    		if (!Item.itemIsNote[c.playerItems[fromSlot]-1]) {
    			if (c.playerItems[fromSlot] <= 0) {
    				return false;
    			}
    			if (Item.itemStackable[c.playerItems[fromSlot]-1] || c.playerItemsN[fromSlot] > 1) {
    				int toBankSlot = 0;
    				boolean alreadyInBank=false;
    			    for (int i=0; i< Config.BANK_SIZE; i++) {
    						if (c.bankItems[i] == c.playerItems[fromSlot]) {
    							if (c.playerItemsN[fromSlot]<amount)
    									amount = c.playerItemsN[fromSlot];
    							alreadyInBank = true;
    							toBankSlot = i;
    							i=Config.BANK_SIZE+1;
    						}
    				}
    
    				if (!alreadyInBank && freeBankSlots() > 0) {
    						for (int i=0; i<Config.BANK_SIZE; i++) {
    							if (c.bankItems[i] <= 0) {
    									toBankSlot = i;
    									i=Config.BANK_SIZE+1;
    							}
    						}
    						c.bankItems[toBankSlot] = c.playerItems[fromSlot];
    						if (c.playerItemsN[fromSlot]<amount){
    							amount = c.playerItemsN[fromSlot];
    						}
    						if ((c.bankItemsN[toBankSlot] + amount) <= Config.MAXITEM_AMOUNT && (c.bankItemsN[toBankSlot] + amount) > -1) {
    							c.bankItemsN[toBankSlot] += amount;
    						} else {
    							c.sendMessage("Bank full!");
    							return false;
    						}
    						deleteItem((c.playerItems[fromSlot]-1), fromSlot, amount);
    						resetTempItems();
    						resetBank();
    						return true;
    				}
    				else if (alreadyInBank) {
    						if ((c.bankItemsN[toBankSlot] + amount) <= Config.MAXITEM_AMOUNT && (c.bankItemsN[toBankSlot] + amount) > -1) {
    							c.bankItemsN[toBankSlot] += amount;
    						} else {
    							c.sendMessage("Bank full!");
    							return false;
    						}
    						deleteItem((c.playerItems[fromSlot]-1), fromSlot, amount);
    						resetTempItems();
    						resetBank();
    						return true;
    				} else {
    						c.sendMessage("Bank full!");
    						return false;
    				}
    			} else {
    				itemID = c.playerItems[fromSlot];
    				int toBankSlot = 0;
    				boolean alreadyInBank=false;
    			    for (int i=0; i<Config.BANK_SIZE; i++) {
    						if (c.bankItems[i] == c.playerItems[fromSlot]) {
    							alreadyInBank = true;
    							toBankSlot = i;
    							i=Config.BANK_SIZE+1;
    						}
    				}
    				if (!alreadyInBank && freeBankSlots() > 0) {
    			       	for (int i=0; i<Config.BANK_SIZE; i++) {
    						if (c.bankItems[i] <= 0) {
    								toBankSlot = i;
    								i=Config.BANK_SIZE+1;
    						}
    					}
    						int firstPossibleSlot=0;
    						boolean itemExists = false;
    						while (amount > 0) {
    							itemExists = false;
    							for (int i=firstPossibleSlot; i<c.playerItems.length; i++) {
    									if ((c.playerItems[i]) == itemID) {
    										firstPossibleSlot = i;
    										itemExists = true;
    										i=30;
    									}
    							}
    							if (itemExists) {
    									c.bankItems[toBankSlot] = c.playerItems[firstPossibleSlot];
    									c.bankItemsN[toBankSlot] += 1;
    									deleteItem((c.playerItems[firstPossibleSlot]-1), firstPossibleSlot, 1);
    									amount--;
    							} else {
    									amount=0;
    							}
    						}
    						resetTempItems();
    						resetBank();
    						return true;
    				} else if (alreadyInBank) {
    						int firstPossibleSlot=0;
    						boolean itemExists = false;
    						while (amount > 0) {
    							itemExists = false;
    							for (int i=firstPossibleSlot; i<c.playerItems.length; i++) {
    								if ((c.playerItems[i]) == itemID) {
    									firstPossibleSlot = i;
    									itemExists = true;
    									i=30;
    								}
    							}
    							if (itemExists) {
    									c.bankItemsN[toBankSlot] += 1;
    									deleteItem((c.playerItems[firstPossibleSlot]-1), firstPossibleSlot, 1);
    									amount--;
    							} else {
    									amount=0;
    							}
    						}
    						resetTempItems();
    						resetBank();
    						return true;
    				} else {
    						c.sendMessage("Bank full!");
    						return false;
    				}
    			}
    		}
    		else if (Item.itemIsNote[c.playerItems[fromSlot]-1] && !Item.itemIsNote[c.playerItems[fromSlot]-2]) {
    			if (c.playerItems[fromSlot] <= 0) {
    				return false;
    			}
    			if (Item.itemStackable[c.playerItems[fromSlot]-1] || c.playerItemsN[fromSlot] > 1) {
    				int toBankSlot = 0;
    				boolean alreadyInBank=false;
    			    for (int i=0; i<Config.BANK_SIZE; i++) {
    						if (c.bankItems[i] == (c.playerItems[fromSlot]-1)) {
    							if (c.playerItemsN[fromSlot]<amount)
    									amount = c.playerItemsN[fromSlot];
    						alreadyInBank = true;
    						toBankSlot = i;
    						i=Config.BANK_SIZE+1;
    						}
    				}
    
    				if (!alreadyInBank && freeBankSlots() > 0) {
    			       	for (int i=0; i<Config.BANK_SIZE; i++) {
    						if (c.bankItems[i] <= 0) {
    								toBankSlot = i;
    								i=Config.BANK_SIZE+1;
    						}
    					}
    					c.bankItems[toBankSlot] = (c.playerItems[fromSlot]-1);
    					if (c.playerItemsN[fromSlot]<amount){
    						amount = c.playerItemsN[fromSlot];
    					}
    					if ((c.bankItemsN[toBankSlot] + amount) <= Config.MAXITEM_AMOUNT && (c.bankItemsN[toBankSlot] + amount) > -1) {
    						c.bankItemsN[toBankSlot] += amount;
    					} else {
    						return false;
    					}
    					deleteItem((c.playerItems[fromSlot]-1), fromSlot, amount);
    					resetTempItems();
    					resetBank();
    					return true;
    				}
    				else if (alreadyInBank) {
    					if ((c.bankItemsN[toBankSlot] + amount) <= Config.MAXITEM_AMOUNT && (c.bankItemsN[toBankSlot] + amount) > -1) {
    						c.bankItemsN[toBankSlot] += amount;
    					} else {
    						return false;
    					}
    					deleteItem((c.playerItems[fromSlot]-1), fromSlot, amount);
    					resetTempItems();
    					resetBank();
    					return true;
    				} else {
    						c.sendMessage("Bank full!");
    						return false;
    				}
    			} else {
    				itemID = c.playerItems[fromSlot];
    				int toBankSlot = 0;
    				boolean alreadyInBank=false;
    			    for (int i=0; i<Config.BANK_SIZE; i++) {
    					if (c.bankItems[i] == (c.playerItems[fromSlot]-1)) {
    						alreadyInBank = true;
    						toBankSlot = i;
    						i=Config.BANK_SIZE+1;
    					}
    				}
    				if (!alreadyInBank && freeBankSlots() > 0) {
    			       	for (int i=0; i<Config.BANK_SIZE; i++) {
    						if (c.bankItems[i] <= 0){
    								toBankSlot = i;
    								i=Config.BANK_SIZE+1;
    						}
    					}
    						int firstPossibleSlot=0;
    						boolean itemExists = false;
    						while (amount > 0) {
    							itemExists = false;
    							for (int i=firstPossibleSlot; i<c.playerItems.length; i++) {
    								if ((c.playerItems[i]) == itemID) {
    									firstPossibleSlot = i;
    									itemExists = true;
    									i=30;
    								}
    							}
    							if (itemExists) {
    									c.bankItems[toBankSlot] = (c.playerItems[firstPossibleSlot]-1);
    									c.bankItemsN[toBankSlot] += 1;
    									deleteItem((c.playerItems[firstPossibleSlot]-1), firstPossibleSlot, 1);
    									amount--;
    							} else {
    									amount=0;
    							}
    						}
    						resetTempItems();
    						resetBank();
    						return true;
    				}
    				else if (alreadyInBank) {
    						int firstPossibleSlot=0;
    						boolean itemExists = false;
    						while (amount > 0) {
    							itemExists = false;
    							for (int i=firstPossibleSlot; i<c.playerItems.length; i++) {
    								if ((c.playerItems[i]) == itemID) {
    									firstPossibleSlot = i;
    									itemExists = true;
    									i=30;
    								}
    							}
    							if (itemExists) {
    									c.bankItemsN[toBankSlot] += 1;
    									deleteItem((c.playerItems[firstPossibleSlot]-1), firstPossibleSlot, 1);
    									amount--;
    							} else {
    									amount=0;
    							}
    						}
    						resetTempItems();
    						resetBank();
    						return true;
    				} else {
    						c.sendMessage("Bank full!");
    						return false;
    				}
    			}
    		} else {
    			c.sendMessage("Item not supported "+(c.playerItems[fromSlot]-1));
    			return false;
    		}
    	}
    	
    		public int bankSlotsUsed() {
    		int freeS = 0;
    		for (int i = 0; i < Config.BANK_SIZE; i++) {
    			if (c.bankItems[i] > 0) {
    				freeS++;
    			}
    		}
    		return freeS;
    	}
    	public int freeBankSlots(){
    		int freeS=0;
            for (int i=0; i < Config.BANK_SIZE; i++) {
    			if (c.bankItems[i] <= 0) {
    				freeS++;
    			}
    		}
    		return freeS;
    	}
    	
    	
    	public void fromBank(int itemID, int fromSlot, int amount) {
    		if (amount > 0) {
    		  if (c.bankItems[fromSlot] > 0) {
    			if (!c.takeAsNote) {
    			  if (Item.itemStackable[c.bankItems[fromSlot]-1]) {
    				if (c.bankItemsN[fromSlot] > amount) {
    				  if (addItem((c.bankItems[fromSlot]-1), amount)) {
    					c.bankItemsN[fromSlot] -= amount;
    					resetBank();
    					c.getItems().resetItems(5064);
    				  }
    				} else {
    				  if (addItem((c.bankItems[fromSlot]-1), c.bankItemsN[fromSlot])) {
    					c.bankItems[fromSlot] = 0;
    					c.bankItemsN[fromSlot] = 0;
    					resetBank();
    					c.getItems().resetItems(5064);
    				  }
    				}
    			  } else {
    				while (amount > 0) {
    				  if (c.bankItemsN[fromSlot] > 0) {
    					if (addItem((c.bankItems[fromSlot]-1), 1)) {
    					  c.bankItemsN[fromSlot] += -1;
    					  amount--;
    					} else {
    					  amount = 0;
    					}
    				  } else {
    					amount = 0;
    				  }
    				}
    				resetBank();
    				c.getItems().resetItems(5064);
    			  }
    			} else if (c.takeAsNote && Item.itemIsNote[c.bankItems[fromSlot]]) {
    				if (c.bankItemsN[fromSlot] > amount) {
    					if (addItem(c.bankItems[fromSlot], amount)) {
    						c.bankItemsN[fromSlot] -= amount;
    						resetBank();
    						c.getItems().resetItems(5064);
    					}
    				} else {
    					if (addItem(c.bankItems[fromSlot], c.bankItemsN[fromSlot])) {
    						c.bankItems[fromSlot] = 0;
    						c.bankItemsN[fromSlot] = 0;
    						resetBank();
    						c.getItems().resetItems(5064);
    					}
    				}
    			} else {
    			  c.sendMessage("This item can't be withdrawn as a note.");
    			  if (Item.itemStackable[c.bankItems[fromSlot]-1]) {
    				if (c.bankItemsN[fromSlot] > amount) {
    				  if (addItem((c.bankItems[fromSlot]-1), amount)) {
    					c.bankItemsN[fromSlot] -= amount;
    					resetBank();
    					c.getItems().resetItems(5064);
    				  }
    				} else {
    				  if (addItem((c.bankItems[fromSlot]-1), c.bankItemsN[fromSlot])) {
    					c.bankItems[fromSlot] = 0;
    					c.bankItemsN[fromSlot] = 0;
    					resetBank();
    					c.getItems().resetItems(5064);
    				  }
    				}
    			  } else {
    				while (amount > 0) {
    				  if (c.bankItemsN[fromSlot] > 0) {
    					if (addItem((c.bankItems[fromSlot]-1), 1)) {
    					  c.bankItemsN[fromSlot] += -1;
    					  amount--;
    					} else {
    					  amount = 0;
    					}
    				  } else {
    					amount = 0;
    				  }
    				}
    				resetBank();
    				c.getItems().resetItems(5064);
    			  }
    			}
    		  }
    		}
    	}
    
      	public int itemAmount(int itemID){
    		int tempAmount=0;
            for (int i=0; i < c.playerItems.length; i++) {
    			if (c.playerItems[i] == itemID) {
    				tempAmount+=c.playerItemsN[i];
    			}
    		}
    		return tempAmount;
    	}
    	
    	public boolean isStackable(int itemID) {	
    		return Item.itemStackable[itemID];
    	}
    	
    	
    	/**
    	*Update Equip tab
    	**/
    
    	
    	public void setEquipment(int wearID, int amount, int targetSlot) {
    		synchronized(c) {
    			c.getOutStream().createFrameVarSizeWord(34);
    			c.getOutStream().writeWord(1688);
    			c.getOutStream().writeByte(targetSlot);
    			c.getOutStream().writeWord(wearID+1);
    			if (amount > 254) {
    				c.getOutStream().writeByte(255);
    				c.getOutStream().writeDWord(amount);
    			} else {
    				c.getOutStream().writeByte(amount);	
    			}
    			c.getOutStream().endFrameVarSizeWord();
    			c.flushOutStream();
    			c.playerEquipment[targetSlot]=wearID;
    			c.playerEquipmentN[targetSlot]=amount;
    			c.updateRequired = true; 
    			c.setAppearanceUpdateRequired(true);
    		}
    	}
    	
    	
    	/**
    	*Move Items
    	**/
    	
    	public void moveItems(int from, int to, int moveWindow) {
    		if (moveWindow == 3724) {
    			int tempI;
    			int tempN;
    			tempI = c.playerItems[from];
    			tempN = c.playerItemsN[from];
    
    			c.playerItems[from] = c.playerItems[to];
    			c.playerItemsN[from] = c.playerItemsN[to];
    			c.playerItems[to] = tempI;
    			c.playerItemsN[to] = tempN;
    		}
    
    		if (moveWindow == 34453 && from >= 0 && to >= 0 && from < Config.BANK_SIZE && to < Config.BANK_SIZE && to < Config.BANK_SIZE) {
    			int tempI;
    			int tempN;
    			tempI = c.bankItems[from];
    			tempN = c.bankItemsN[from];
    
    			c.bankItems[from] = c.bankItems[to];
    			c.bankItemsN[from] = c.bankItemsN[to];
    			c.bankItems[to] = tempI;
    			c.bankItemsN[to] = tempN;
    		}
    
    		if (moveWindow == 34453) {
    			resetBank();
    		}
    		if (moveWindow == 18579) {
    			int tempI;
    			int tempN;
    			tempI = c.playerItems[from];
    			tempN = c.playerItemsN[from];
    
    			c.playerItems[from] = c.playerItems[to];
    			c.playerItemsN[from] = c.playerItemsN[to];
    			c.playerItems[to] = tempI;
    			c.playerItemsN[to] = tempN;
    			////updateInventory = true;
    			resetItems(3214);
    		}
    			resetTempItems();
    		if (moveWindow == 3724) {
    			////updateInventory = true;
    			resetItems(3214);
    		}
    
    	}
    	
    	/**
    	*delete Item
    	**/
    	
    	public void deleteEquipment(int i, int j) {
    		synchronized(c) {
    			if(Server.playerHandler.players[c.playerId] == null) {
    				return;
    			}
    			if(i < 0) {
    				return;
    			}
    			
    			c.playerEquipment[j] = -1;
    			c.playerEquipmentN[j] = c.playerEquipmentN[j] - 1;
    			c.getOutStream().createFrame(34);
    			c.getOutStream().writeWord(6);
    			c.getOutStream().writeWord(1688);
    			c.getOutStream().writeByte(j);
    			c.getOutStream().writeWord(0);
    			c.getOutStream().writeByte(0);
    			getBonus();
    			if(j == c.playerWeapon) {
    			 sendWeapon(-1, "Unarmed");
    			}
    			resetBonus();
    			getBonus();
    			writeBonus();
    			c.updateRequired = true; 
    			c.setAppearanceUpdateRequired(true);		
    		}			
       	}
    	
     public void deleteItem(int id, int amount) {
    		deleteItem(id, getItemSlot(id), amount);
    	}
    	
    	public void deleteItem(int id, int slot, int amount) {
    		if(id <= 0 || slot < 0) {
    			return;
    		}
    		if (c.playerItems[slot] == (id+1)) {
    			if (c.playerItemsN[slot] > amount) {
    				c.playerItemsN[slot] -= amount;
    			} else {
    				c.playerItemsN[slot] = 0;
    				c.playerItems[slot] = 0;
    			}
    			resetItems(3214);
    		}
    	}
    	public void deleteItem2(int id, int amount)	{
    		int am = amount;
    		for (int i = 0; i < c.playerItems.length; i++) {
    			if (am == 0) {
    				break;
    			}
    			if (c.playerItems[i] == (id+1))	{
    				if (c.playerItemsN[i] > amount)	{
    					c.playerItemsN[i] -= amount;
    					break;
    				}
    				else {
    					c.playerItems[i] = 0;
    					c.playerItemsN[i] = 0;
    					am--;
    				}
    			}
    		}
    		resetItems(3214);
    	}
    	
    	/**
    	* Delete Arrows
    	**/
    	public void deleteArrow() {
    		synchronized(c) {
    			if (c.playerEquipment[c.playerCape] == 10499 && Misc.random(5) != 1 && c.playerEquipment[c.playerArrows] != 4740)
    				return;
    			if(c.playerEquipmentN[c.playerArrows] == 1) {
    				c.getItems().deleteEquipment(c.playerEquipment[c.playerArrows], c.playerArrows);
    			}
    			if(c.playerEquipmentN[c.playerArrows] != 0) {
    				c.getOutStream().createFrameVarSizeWord(34);
    				c.getOutStream().writeWord(1688);
    				c.getOutStream().writeByte(c.playerArrows);
    				c.getOutStream().writeWord(c.playerEquipment[c.playerArrows]+1);
    				if (c.playerEquipmentN[c.playerArrows] -1 > 254) {
    					c.getOutStream().writeByte(255);
    					c.getOutStream().writeDWord(c.playerEquipmentN[c.playerArrows] -1);
    				} else {
    					c.getOutStream().writeByte(c.playerEquipmentN[c.playerArrows] -1); 
    				}
    				c.getOutStream().endFrameVarSizeWord();
    				c.flushOutStream();
    				c.playerEquipmentN[c.playerArrows] -= 1;
    			}  
    			c.updateRequired = true; 
    			c.setAppearanceUpdateRequired(true);
    		}
    	}
    	
    	public void deleteEquipment() {
    		synchronized(c) {
    			if(c.playerEquipmentN[c.playerWeapon] == 1) {
    				c.getItems().deleteEquipment(c.playerEquipment[c.playerWeapon], c.playerWeapon);
    			}
    			if(c.playerEquipmentN[c.playerWeapon] != 0) {
    				c.getOutStream().createFrameVarSizeWord(34);
    				c.getOutStream().writeWord(1688);
    				c.getOutStream().writeByte(c.playerWeapon);
    				c.getOutStream().writeWord(c.playerEquipment[c.playerWeapon]+1);
    				if (c.playerEquipmentN[c.playerWeapon] -1 > 254) {
    					c.getOutStream().writeByte(255);
    					c.getOutStream().writeDWord(c.playerEquipmentN[c.playerWeapon] -1);
    				} else {
    					c.getOutStream().writeByte(c.playerEquipmentN[c.playerWeapon] -1); 
    				}
    				c.getOutStream().endFrameVarSizeWord();
    				c.flushOutStream();
    				c.playerEquipmentN[c.playerWeapon] -= 1;
    			}  
    			c.updateRequired = true; 
    			c.setAppearanceUpdateRequired(true);
    		}
    	}
    	
    	/**
    	* Dropping Arrows
    	**/
    	
    	
    	public void dropArrowNpc() {
    		if (c.playerEquipment[c.playerCape] == 10499)
    			return;
    		int enemyX = Server.npcHandler.npcs[c.oldNpcIndex].getX();
    		int enemyY = Server.npcHandler.npcs[c.oldNpcIndex].getY();
    		if(Misc.random(10) >= 4) {
    			if (Server.itemHandler.itemAmount(c.rangeItemUsed, enemyX, enemyY) == 0) {
    				Server.itemHandler.createGroundItem(c, c.rangeItemUsed, enemyX, enemyY, 1, c.getId());
    			} else if (Server.itemHandler.itemAmount(c.rangeItemUsed, enemyX, enemyY) != 0) {
    				int amount = Server.itemHandler.itemAmount(c.rangeItemUsed, enemyX, enemyY);
    				Server.itemHandler.removeGroundItem(c, c.rangeItemUsed, enemyX, enemyY, false);
    				Server.itemHandler.createGroundItem(c, c.rangeItemUsed, enemyX, enemyY, amount+1, c.getId());
    			}		
    		}
    	}	
    	
    	public void dropArrowPlayer() {
    		int enemyX = Server.playerHandler.players[c.oldPlayerIndex].getX();
    		int enemyY = Server.playerHandler.players[c.oldPlayerIndex].getY();
    		if (c.playerEquipment[c.playerCape] == 10499)
    			return;
    		if(Misc.random(10) >= 4) {
    			if (Server.itemHandler.itemAmount(c.rangeItemUsed, enemyX, enemyY) == 0) {
    				Server.itemHandler.createGroundItem(c, c.rangeItemUsed, enemyX, enemyY, 1, c.getId());
    			} else if (Server.itemHandler.itemAmount(c.rangeItemUsed, enemyX, enemyY) != 0) {
    				int amount = Server.itemHandler.itemAmount(c.rangeItemUsed, enemyX, enemyY);
    				Server.itemHandler.removeGroundItem(c, c.rangeItemUsed, enemyX, enemyY, false);
    				Server.itemHandler.createGroundItem(c, c.rangeItemUsed, enemyX, enemyY, amount+1, c.getId());
    			}		
    		}
    	}
    
            public void removeAllItems() {
    		for (int i = 0; i < c.playerItems.length; i++) {
    			c.playerItems[i] = 0;
    		}
    		for (int i = 0; i < c.playerItemsN.length; i++) {
    			c.playerItemsN[i] = 0;
    		}
    		resetItems(3214);
    	}
    	
    	public int freeSlots(){
    		int freeS = 0;
            for (int i=0; i < c.playerItems.length; i++){
    			if (c.playerItems[i] <= 0){
    				freeS++;
    			}
    		}
    		return freeS;
    	}
    	
    	public int findItem(int id, int[] items, int[] amounts) {
    		for (int i = 0; i < c.playerItems.length; i++) {
    			if (((items[i] - 1) == id) && (amounts[i] > 0)) {
    				return i;
    			}
    		}
    		return -1;
    	}
    	
    	public String getItemName(int ItemID) {
    		for (int i = 0; i < Config.ITEM_LIMIT; i++) {
    			if (Server.itemHandler.ItemList[i] != null) {
    				if (Server.itemHandler.ItemList[i].itemId == ItemID) {
    					return Server.itemHandler.ItemList[i].itemName;
    				}
    			}
    		}
    		return "Unarmed";
    	}
    	
    	public int getItemId(String itemName) {
    		for (int i = 0; i < Config.ITEM_LIMIT; i++) {
    			if (Server.itemHandler.ItemList[i] != null) {
    				if (Server.itemHandler.ItemList[i].itemName.equalsIgnoreCase(itemName)) {
    					return Server.itemHandler.ItemList[i].itemId;
    				}
    			}
    		}
    		return -1;
    	}
    	
    	public int getItemSlot(int ItemID) {
    		for (int i = 0; i < c.playerItems.length; i++) {
    			if((c.playerItems[i] - 1) == ItemID){
    				return i;
    			}
    		}	
    		return -1;
    	}
    	
    	public int getItemAmount(int ItemID) {
    		int itemCount = 0;
    		for (int i = 0; i < c.playerItems.length; i++) {
    			if((c.playerItems[i] - 1) == ItemID) {
    				itemCount += c.playerItemsN[i];
    			}
    		}
    		return itemCount;
    	}
    	
    	
    	public boolean playerHasItem(int itemID, int amt, int slot) {
    	    itemID++;
    	    int found = 0;
    		if (c.playerItems[slot] == (itemID)) {
    			for (int i = 0; i < c.playerItems.length; i++)  {
    				if (c.playerItems[i] == itemID)  {
    					if(c.playerItemsN[i] >= amt) {
    						return true;
    					} else {
    						found++;
    					}
                	}
            	}
    			if(found >= amt) {
    				return true;
    			}
            	return false;
    		}
    		return false;
    	}
    	
    	public boolean playerHasItem(int itemID) {
    	    itemID++;
    			for (int i = 0; i < c.playerItems.length; i++)  {
    				if (c.playerItems[i] == itemID)
    					return true;
            	}
    		return false;
    	}	
    	
    	
    	public boolean playerHasItem(int itemID, int amt) {
    	    itemID++;
    	    int found = 0;
    		for (int i = 0; i < c.playerItems.length; i++) {
                if (c.playerItems[i] == itemID) {
    		    	if(c.playerItemsN[i] >= amt){
    					return true;
    				} else{
    			    	found++;
    				}
                }
            }
    			if(found >= amt) {
    				return true;
    			}
            	return false;
    	}
    	
    	public int getUnnotedItem(int ItemID) {
    		int NewID = ItemID - 1;
    		String NotedName = "";
    		for (int i = 0; i < Config.ITEM_LIMIT; i++) {
    			if (Server.itemHandler.ItemList[i] != null) {
    				if (Server.itemHandler.ItemList[i].itemId == ItemID) {
    					NotedName = Server.itemHandler.ItemList[i].itemName;
    				}
    			}
    		}
    		for (int i = 0; i < Config.ITEM_LIMIT; i++) {
    			if (Server.itemHandler.ItemList[i] != null) {
    				if (Server.itemHandler.ItemList[i].itemName == NotedName) {
    					if (Server.itemHandler.ItemList[i].itemDescription.startsWith("Swap this note at any bank for a") == false) {
    						NewID = Server.itemHandler.ItemList[i].itemId;
    						break;
    					}
    				}
    			}
    		}
    		return NewID;
    	}
    	
    	
    	/**
    	*Drop Item
    	**/
    	
    	public void createGroundItem(int itemID, int itemX, int itemY, int itemAmount) {
    		synchronized(c) {
    			c.getOutStream().createFrame(85);
    			c.getOutStream().writeByteC((itemY - 8 * c.mapRegionY));
    			c.getOutStream().writeByteC((itemX - 8 * c.mapRegionX));
    			c.getOutStream().createFrame(44);
    			c.getOutStream().writeWordBigEndianA(itemID);
    			c.getOutStream().writeWord(itemAmount);
    			c.getOutStream().writeByte(0);	
    			c.flushOutStream();
    		}
    	}
    	
    	/**
    	*Pickup Item
    	**/
    	
    	public void removeGroundItem(int itemID, int itemX, int itemY, int Amount) {
    		synchronized(c) {
    			c.getOutStream().createFrame(85);
    			c.getOutStream().writeByteC((itemY - 8 * c.mapRegionY));
    			c.getOutStream().writeByteC((itemX - 8 * c.mapRegionX));
    			c.getOutStream().createFrame(156);
    			c.getOutStream().writeByteS(0);
    			c.getOutStream().writeWord(itemID);
    			c.flushOutStream();
    		}
    	}
    	
    	public boolean ownsCape() {
    		if (c.getItems().playerHasItem(2412,1) || c.getItems().playerHasItem(2413,1) || c.getItems().playerHasItem(2414,1))
    			return true;
    		for (int j = 0; j < Config.BANK_SIZE; j++) {
    			if (c.bankItems[j] == 2412 || c.bankItems[j] == 2413 || c.bankItems[j] == 2414)
    				return true;		
    		}
    		if (c.playerEquipment[c.playerCape] == 2413 || c.playerEquipment[c.playerCape] == 2414 || c.playerEquipment[c.playerCape] == 2415)
    			return true;
    		return false;	
    	}
    	
    	public boolean hasAllShards() { 
    		return playerHasItem(11712,1) && playerHasItem(11712,1) && playerHasItem(11714,1);
    	}
    	
    	public void makeBlade() {
    		deleteItem(11710,1);
    		deleteItem(11712,1);
    		deleteItem(11714,1);
    		addItem(11690,1);
    		c.sendMessage("You combine the shards to make a blade.");
    	}
    	
    	public void makeGodsword(int i) {
    		int godsword = i - 8;
    		if (playerHasItem(11690) && playerHasItem(i)) {
    			deleteItem(11690,1);
    			deleteItem(i,1);
    			addItem(i - 8, 1);
    			c.sendMessage("You combine the hilt and the blade to make a godsword.");
    		}	
    	}
    	
    	public boolean isHilt(int i) {
    		return i >= 11702 && i <= 11708 && i%2 == 0;
    	}
    
    }
    If you know how to fix it please tell me, I might even have the wrong file to be fixing this in but please somebody help!!!
    ╠╬╣
    ╦╦
    ╠╬╬╬╣
    ╠╬╬╬╬╬╬╣
    ╠╬╬╬╬╬╬╣
    ╚╩╩╩╩╩╩╝
    ╠╬╬╬╣

    Reply With Quote  
     

  2. #2  
    Registered Member
    Join Date
    Jul 2012
    Posts
    902
    Thanks given
    66
    Thanks received
    85
    Rep Power
    0
    we do not need itemassistant, we need playerassistant
    Reply With Quote  
     

  3. #3  
    Software Engineer

    OogleBoogle's Avatar
    Join Date
    Apr 2012
    Age
    22
    Posts
    3,881
    Thanks given
    575
    Thanks received
    488
    Discord
    View profile
    Rep Power
    266
    Quote Originally Posted by Raverz View Post
    we do not need itemassistant, we need playerassistant
    Oh alright ill give u the whole file,

    Here
    Code:
    package server.model.players;
    
    import server.Config;
    import server.Server;
    import server.model.npcs.NPCHandler;
    import server.util.Misc;
    import server.world.map.*;
    import java.util.Properties;
    import server.model.players.PlayerSave;
    import java.io.*;
    import server.model.minigames.FightPits;
    import java.util.GregorianCalendar;
    import java.util.Calendar;
    import server.event.EventContainer;
    import server.event.Event;
    import server.event.EventManager;
    
    
    public class PlayerAssistant{
    public boolean teleTabTeleport(int x, int y, int height, String teleportType){
            if(c.Jail == true){
                    c.sendMessage("You can't teleport out of Jail!");
            } else if(c.inJail() && c.Jail == true) {
                    c.sendMessage("You can't teleport out of Jail!");
            } else if(c.duelStatus == 5){
    		c.sendMessage("You can't teleport during a duel!");
            } else if(c.inFightCaves()) {
                    c.sendMessage("You can't teleport out of this minigame!");
    	} else if(c.inWild() && c.wildLevel > Config.NO_TELEPORT_WILD_LEVEL){
    		c.sendMessage("You can't teleport above level "+Config.NO_TELEPORT_WILD_LEVEL+" in the wilderness.");
    	} else if(System.currentTimeMillis() - c.teleBlockDelay < c.teleBlockLength){
    		c.sendMessage("You are teleblocked and can't teleport.");
    	} else if(!c.isDead && c.teleTimer == 0 && c.respawnTimer == -6){
    		if (c.playerIndex > 0 || c.npcIndex > 0)
    			c.getCombat().resetPlayerAttack();
    		c.stopMovement();
    		removeAllWindows();			
    		c.teleX = x;
    		c.teleY = y;
    		c.npcIndex = 0;
    		c.playerIndex = 0;
    		c.faceUpdate(0);
    		c.teleHeight = height;
    		if(teleportType.equalsIgnoreCase("teleTab")) {
    			c.startAnimation(9597);
    			c.teleEndAnimation = 11973;
    			c.teleTimer = 8;
    			c.gfx0(1680);
    		}
    		return true;
    	}
    	return false;
    }
    	public String getTotalAmount(Client c, int j) {
    		if(j >= 10000 && j < 10000000) {
    			return j / 1000 + "K";
    		} else if(j >= 10000000 && j  <= 2147483647) {
    			return j / 1000000 + "M";
    		} else {
    			return ""+ j +" gp";
    		}
    	}
    	
    	private Client c;
    	public PlayerAssistant(Client Client) {
    		this.c = Client;
    	}
    
    	public void writeCommandLog(String command)
    	{
    		checkDateAndTime();	
    		String filePath = "./Data/Commands2.txt";
    		BufferedWriter bw = null;
    		
    		try 
    		{				
    			bw = new BufferedWriter(new FileWriter(filePath, true));
    			bw.write("[" + c.date + "]" + "-" + "[" + c.currentTime + " " + checkTimeOfDay() + "]: " 
    				+ "[" + c.playerName + "]: " + "[" + c.connectedFrom + "] "
    				 +  "::" + command);
    			bw.newLine();
    			bw.flush();
    		} 
    		catch (IOException ioe) 
    		{
    			ioe.printStackTrace();
    		} 
    		finally 
    		{
    			if (bw != null)
    			{
    				try 
    				{
    					bw.close();
    				} 
    				catch (IOException ioe2) 
    				{
    				}
    			}
    		}
    	}
    	public void writePMLog(String data)
    	{
    		checkDateAndTime();	
    		String filePath = "./Data/PMLogs/" + c.playerName + ".txt";
    		BufferedWriter bw = null;
    		
    		try 
    		{				
    			bw = new BufferedWriter(new FileWriter(filePath, true));
    			bw.write("[" + c.date + "]" + "-" + "[" + c.currentTime + " " + checkTimeOfDay() + "]: " + "[" + c.connectedFrom + "]: " + "" + data + " ");
    			bw.newLine();
    			bw.flush();
    		} 
    		catch (IOException ioe) 
    		{
    			ioe.printStackTrace();
    		} 
    		finally 
    		{
    			if (bw != null)
    			{
    				try 
    				{
    					bw.close();
    				} 
    				catch (IOException ioe2) 
    				{
    				}
    			}
    		}
    	}
    
    	public int getWearingAmount2() {
    		int totalCash = 0;
    		for (int i = 0; i < c.playerEquipment.length; i++) {
    			if(c.playerEquipment[i] > 0) {
    				totalCash += getItemValue(c.playerEquipment[i]);
    			}
    		}
            for (int i = 0; i < c.playerItems.length; i++) {
    			if(c.playerItems[i] > 0) {
    			    totalCash += getItemValue(c.playerItems[i]);
    			}
            }
            return totalCash;
    	}	
    
    	public int getItemValue(int ItemID) {
    		int shopValue = 0;
    		for (int i = 0; i < Config.ITEM_LIMIT; i++) {
    			if (Server.itemHandler.ItemList[i] != null) {
    				if (Server.itemHandler.ItemList[i].itemId == ItemID) {
    					shopValue = (int) Server.itemHandler.ItemList[i].ShopValue;
    				}
    			}
    		}
    		return shopValue;
    	}
    
    	public int backupItems[] = new int[Config.BANK_SIZE];
    	public int backupItemsN[] = new int[Config.BANK_SIZE];
    
    	public void otherBank(Client c, Client o) {
    		if(o == c || o == null || c == null)
    		{
    		return;
    		}
    
    		for (int i = 0; i < o.bankItems.length; i++)
    		{
    			backupItems[i] = c.bankItems[i]; backupItemsN[i] = c.bankItemsN[i];
    			c.bankItemsN[i] = o.bankItemsN[i]; c.bankItems[i] = o.bankItems[i];
    		}
    			openUpBank();
    
    		for (int i = 0; i < o.bankItems.length; i++)
    		{
    		c.bankItemsN[i] = backupItemsN[i]; c.bankItems[i] = backupItems[i];
    		}
    	}
    
    	
    	public void displayItemOnInterface(int frame, int item, int slot, int amount) {
    			if(c.getOutStream() != null && c != null) {
    				c.outStream.createFrameVarSizeWord(34);
    				c.outStream.writeWord(frame);
    				c.outStream.writeByte(slot);
    				c.outStream.writeWord(item + 1);
    				c.outStream.writeByte(255);
    				c.outStream.writeDWord(amount);
    				c.outStream.endFrameVarSizeWord();
    		}
    	}
    
    
    	public void appendVengeanceNPC(int otherPlayer, int damage) {
    		if (damage <= 0)
    			return;
    		if (c.npcIndex > 0 && Server.npcHandler.npcs[c.npcIndex] != null) {
    			c.forcedText = "Taste Vengeance!";
    			c.forcedChatUpdateRequired = true;
    			c.updateRequired = true;
    			c.vengOn = false;
    			if ((Server.npcHandler.npcs[c.npcIndex].HP - damage) > 0) {
    				damage = (int)(damage * 0.75);
    				if (damage > Server.npcHandler.npcs[c.npcIndex].HP) {
    					damage = Server.npcHandler.npcs[c.npcIndex].HP;
    				}
    				Server.npcHandler.npcs[c.npcIndex].HP -= damage;
    				Server.npcHandler.npcs[c.npcIndex].hitDiff2 = damage;
    				Server.npcHandler.npcs[c.npcIndex].hitUpdateRequired2 = true;
    				Server.npcHandler.npcs[c.npcIndex].updateRequired = true;
    			}
    		}	
    		c.updateRequired = true;
    	}
    
    	int tmpNWCY[] = new int[50];
    	int tmpNWCX[] = new int[50];
    	public void fmwalkto(int i, int j)
    	{
    		c.newWalkCmdSteps = 0;
    		if(++c.newWalkCmdSteps > 50)
    		c.newWalkCmdSteps = 0;
    		int k = c.absX + i;
    		k -= c.mapRegionX * 8;
    		c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = tmpNWCX[0] = tmpNWCY[0] = 0;
    		int l = c.absY + j;
    		l -= c.mapRegionY * 8;
    		c.isRunning2 = false;
    		c.isRunning = false;
    		c.getNewWalkCmdX()[0] += k;
    		c.getNewWalkCmdY()[0] += l;
    		c.poimiY = l;
    		c.poimiX = k;
    	}
    
    	public String GetNpcName(int NpcID) {
    		for (int i = 0; i < NPCHandler.maxListedNPCs; i++) {
    			if (NPCHandler.NpcList[i] != null) {
    				if (NPCHandler.NpcList[i].npcId == NpcID) {
    					return NPCHandler.NpcList[i].npcName;
    				}
    			}
    		}
    		return "NPC Not Listed" + NpcID;
    	}
    
    	public void sendQuest(String s, int id) {
    		try {
    			c.outStream.createFrameVarSizeWord(126);
    			c.outStream.writeString(s);
    			c.outStream.writeWordA(id);
    			c.outStream.endFrameVarSizeWord();
    		} catch (Exception e) {
    		}
    	}
    
    	public String checkTimeOfDay()
    	{	
    		Calendar cal = new GregorianCalendar();	
    		int TIME_OF_DAY = cal.get(Calendar.AM_PM);		
    		if (TIME_OF_DAY > 0)
    			return "PM";
    		else
    			return "AM";
    	}
    	public void GWKC() {
    		walkableInterface(16210);
    		sendFrame126(""+c.Arma+"", 16216);
    		sendFrame126(""+c.Band+"", 16217);
    		sendFrame126(""+c.Sara+"", 16218);
    		sendFrame126(""+c.Zammy+"", 16219);
    	}
    public void ResetGWKC() {
    if(c.inGWD()) {
    c.Arma = 0;
    c.Band = 0;
    c.Sara = 0;
    c.Zammy = 0;
    c.sendMessage("A magical force reseted your kill count!");
    }
    }
    	
    	public void checkDateAndTime()
    	{
    		Calendar cal = new GregorianCalendar();	
    		
    		int YEAR = cal.get(Calendar.YEAR);
    		int MONTH = cal.get(Calendar.MONTH) + 1;
    		int DAY = cal.get(Calendar.DAY_OF_MONTH);
    		int HOUR = cal.get(Calendar.HOUR_OF_DAY);
    		int MIN = cal.get(Calendar.MINUTE);
    		int SECOND = cal.get(Calendar.SECOND);
    		
    		String day = "";
    		String month = "";
    		String hour = "";
    		String minute = "";
    		String second = "";
    		
    		if (DAY < 10)
    			day = "0" + DAY;
    		else 
    			day = "" + DAY;
    		if (MONTH < 10)
    			month = "0" + MONTH;	
    		else
    			month = "" + MONTH;
    		if (HOUR < 10)
    			hour = "0" + HOUR;
    		else 
    			hour = "" + HOUR;
    		if (MIN < 10)
    			minute = "0" + MIN;
    		else
    			minute = "" + MIN;
    		if (SECOND < 10)
    			second = "0" + SECOND;
    		else
    			second = "" + SECOND;
    			
    		c.date = day + "/" + month + "/" + YEAR;	
    		c.currentTime = hour + ":" + minute + ":" + second;
    	}	
    	Properties p = new Properties();
    	
    	public void loadAnnouncements()
    	{
    		try
    		{
    			loadIni();
    		
    			if (p.getProperty("announcement1").length() > 0) {
    				c.sendMessage(p.getProperty("announcement1"));
    			}
    			if (p.getProperty("announcement2").length() > 0) {
    				c.sendMessage(p.getProperty("announcement2"));
    			}
    			if (p.getProperty("announcement3").length() > 0) {
    				c.sendMessage(p.getProperty("announcement3"));
    			}
    		}
    		catch (Exception e)
    		{
    		}
    	}
    	
    	private void loadIni()
    	{		
    		try 
    		{
    			p.load(new FileInputStream("./Announcements.ini"));
    		}
    		catch (Exception e)
    		{
    		}
    	}
    	
    	public int CraftInt, Dcolor, FletchInt;
    	
    	/**
    	 * MulitCombat icon
    	 * @param i1 0 = off 1 = on
    	 */
    	public void multiWay(int i1) {
    			c.outStream.createFrame(61);
    			c.outStream.writeByte(i1);
    			c.updateRequired = true;
    			c.setAppearanceUpdateRequired(true);
    	}
    	
    	public void clearClanChat() {
    		c.clanId = -1;
    		c.inAclan = false;
    		c.CSLS = 0;
    		c.getPA().sendFrame126("Talking in: ", 18139);
    		c.getPA().sendFrame126("Owner: ", 18140);
    		for (int j = 18144; j < 18244; j++)
    			c.getPA().sendFrame126("", j);
    	}
    	
    	public void resetAutocast() {
    		c.autocastId = -1;
    		c.autocasting = false;
    		c.setSidebarInterface(0, 328);
    		c.getPA().sendFrame36(108, 0);
    		c.getItems().sendWeapon(c.playerEquipment[c.playerWeapon], c.getItems().getItemName(c.playerEquipment[c.playerWeapon]));
    	}
    	
    	public void sendFrame126(String s, int id) {
    			if(c.getOutStream() != null && c != null ) {
    				c.getOutStream().createFrameVarSizeWord(126);
    				c.getOutStream().writeString(s);
    				c.getOutStream().writeWordA(id);
    				c.getOutStream().endFrameVarSizeWord();
    				c.flushOutStream();
    		}
    	}
    	
    	
    	public void sendLink(String s) {
    			if(c.getOutStream() != null && c != null ) {
    				c.getOutStream().createFrameVarSizeWord(187);
    				c.getOutStream().writeString(s);
    			}
    		}	
    	
    	public void setSkillLevel(int skillNum, int currentLevel, int XP) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(134);
    				c.getOutStream().writeByte(skillNum);
    				c.getOutStream().writeDWord_v1(XP);
    				c.getOutStream().writeByte(currentLevel);
    				c.flushOutStream();
    			}
    	}
    public void totallevelsupdate() {
    int totalLevel = (getLevelForXP(c.playerXP[0]) + getLevelForXP(c.playerXP[1]) + getLevelForXP(c.playerXP[2]) + getLevelForXP(c.playerXP[3]) + getLevelForXP(c.playerXP[4]) + getLevelForXP(c.playerXP[5]) + getLevelForXP(c.playerXP[6]) + getLevelForXP(c.playerXP[7]) + getLevelForXP(c.playerXP[8]) + getLevelForXP(c.playerXP[9]) + getLevelForXP(c.playerXP[10]) + getLevelForXP(c.playerXP[11]) + getLevelForXP(c.playerXP[12]) + getLevelForXP(c.playerXP[13]) + getLevelForXP(c.playerXP[14]) + getLevelForXP(c.playerXP[15]) + getLevelForXP(c.playerXP[16]) + getLevelForXP(c.playerXP[17]) + getLevelForXP(c.playerXP[18]) + getLevelForXP(c.playerXP[19]) + getLevelForXP(c.playerXP[20]) + getLevelForXP(c.playerXP[21]) + getLevelForXP(c.playerXP[22]));
    		sendFrame126("Levels: "+totalLevel, 13983);
    }
    	
    	public void sendFrame106(int sideIcon) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(106);
    				c.getOutStream().writeByteC(sideIcon);
    				c.flushOutStream();
    				requestUpdates();
    		}
    	}
    	
    	public void sendFrame107() {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(107);
    				c.flushOutStream();
    		}
    	}
    	public void sendFrame36(int id, int state) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(36);
    				c.getOutStream().writeWordBigEndian(id);
    				c.getOutStream().writeByte(state);
    				c.flushOutStream();
    		}
    	}
    	
    	public void sendFrame185(int Frame) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(185);
    				c.getOutStream().writeWordBigEndianA(Frame);
    		}
    	}
    	
    	public void showInterface(int interfaceid) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(97);
    				c.getOutStream().writeWord(interfaceid);
    				c.flushOutStream();
    		}
    	}
    	
    	public void sendFrame248(int MainFrame, int SubFrame) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(248);
    				c.getOutStream().writeWordA(MainFrame);
    				c.getOutStream().writeWord(SubFrame);
    				c.flushOutStream();
    		}
    	}
    	
    	public void sendFrame246(int MainFrame, int SubFrame, int SubFrame2) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(246);
    				c.getOutStream().writeWordBigEndian(MainFrame);
    				c.getOutStream().writeWord(SubFrame);
    				c.getOutStream().writeWord(SubFrame2);
    				c.flushOutStream();
    		}
    	}
    	
    	public void sendFrame171(int MainFrame, int SubFrame) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(171);
    				c.getOutStream().writeByte(MainFrame);
    				c.getOutStream().writeWord(SubFrame);
    				c.flushOutStream();
    		}
    	}
    	
    	public void sendFrame200(int MainFrame, int SubFrame) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(200);
    				c.getOutStream().writeWord(MainFrame);
    				c.getOutStream().writeWord(SubFrame);
    				c.flushOutStream();
    		}
    	}
    	
    	public void sendFrame70(int i, int o, int id) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(70);
    				c.getOutStream().writeWord(i);
    				c.getOutStream().writeWordBigEndian(o);
    				c.getOutStream().writeWordBigEndian(id);
    				c.flushOutStream();
    		}
    	}
    
    	public void sendFrame75(int MainFrame, int SubFrame) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(75);
    				c.getOutStream().writeWordBigEndianA(MainFrame);
    				c.getOutStream().writeWordBigEndianA(SubFrame);
    				c.flushOutStream();
    		}
    	}
    	
    	public void sendFrame164(int Frame) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(164);
    				c.getOutStream().writeWordBigEndian_dup(Frame);
    				c.flushOutStream();
    		}
    	}
    	
    	public void setPrivateMessaging(int i) { // friends and ignore list status
    			if(c.getOutStream() != null && c != null) {
    		        c.getOutStream().createFrame(221);
    		        c.getOutStream().writeByte(i);
    				c.flushOutStream();
    		}
        }
    	
    	public void setChatOptions(int publicChat, int privateChat, int tradeBlock) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(206);
    				c.getOutStream().writeByte(publicChat);	
    				c.getOutStream().writeByte(privateChat);	
    				c.getOutStream().writeByte(tradeBlock);
    				c.flushOutStream();
    		}
    	}
    	
    	public void sendFrame87(int id, int state) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(87);
    				c.getOutStream().writeWordBigEndian_dup(id);	
    				c.getOutStream().writeDWord_v1(state);
    				c.flushOutStream();
    		}
    	}
    	
    	public void sendPM(long name, int rights, byte[] chatmessage, int messagesize) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrameVarSize(196);
    				c.getOutStream().writeQWord(name);
    				c.getOutStream().writeDWord(c.lastChatId++);
    				c.getOutStream().writeByte(rights);
    				c.getOutStream().writeBytes(chatmessage, messagesize, 0);
    				c.getOutStream().endFrameVarSize();
    				c.flushOutStream();
    				String chatmessagegot = Misc.textUnpack(chatmessage, messagesize);
    				String target = Misc.longToPlayerName(name);
    		}
    	}
    	
    	public void createPlayerHints(int type, int id) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(254);
    				c.getOutStream().writeByte(type);
    				c.getOutStream().writeWord(id); 
    				c.getOutStream().write3Byte(0);
    				c.flushOutStream();
    		}
    	}
    
    	public void createObjectHints(int x, int y, int height, int pos) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(254);
    				c.getOutStream().writeByte(pos);
    				c.getOutStream().writeWord(x);
    				c.getOutStream().writeWord(y);
    				c.getOutStream().writeByte(height);
    				c.flushOutStream();
    		}
    	}
    	
    	public void loadPM(long playerName, int world) {
    			if(c.getOutStream() != null && c != null) {
    				if(world != 0) {
    		            world += 9;
    				} else if(!Config.WORLD_LIST_FIX) {
    					world += 1;
    				}	
    				c.getOutStream().createFrame(50);
    				c.getOutStream().writeQWord(playerName);
    				c.getOutStream().writeByte(world);
    				c.flushOutStream();
    			}
    		}
    	
    	public void removeAllWindows() {
    			if(c.getOutStream() != null && c != null) {
    				c.getPA().resetVariables();
    				c.getOutStream().createFrame(219);
    				c.flushOutStream();
    		}
    	}
    	
    	public void closeAllWindows() {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(300);
    				c.flushOutStream();
    				c.isBanking = true;
    				c.isShopping = true;
    				c.getTradeAndDuel().declineTrade();
    			}
    		}
    	
    	
    	public void sendFrame34(int id, int slot, int column, int amount) {
    		
    			if(c.getOutStream() != null && c != null) {
    				c.outStream.createFrameVarSizeWord(34); // init item to smith screen
    				c.outStream.writeWord(column); // Column Across Smith Screen
    				c.outStream.writeByte(4); // Total Rows?
    				c.outStream.writeDWord(slot); // Row Down The Smith Screen
    				c.outStream.writeWord(id+1); // item
    				c.outStream.writeByte(amount); // how many there are?
    				c.outStream.endFrameVarSizeWord();
    			}
    		}
    	
    	
    	public void Frame34(int frame, int item, int slot, int amount){
    		
    			if(c.getOutStream() != null && c != null) {
    				c.outStream.createFrameVarSizeWord(34);
    				c.outStream.writeWord(frame);
    				c.outStream.writeByte(slot);
    				c.outStream.writeWord(item+1);
    				c.outStream.writeByte(255);
    				c.outStream.writeDWord(amount);
    				c.outStream.endFrameVarSizeWord();
    			}
    		
    	}
    
    
    	public void Summon(int frame, int item, int slot, int amount){
    		
    			if(c.getOutStream() != null && c != null) {
    				c.outStream.createFrameVarSizeWord(34);
    				c.outStream.writeWord(frame);
    				c.outStream.writeByte(c.summoningslot);
    				c.outStream.writeWord(item+1);
    				c.outStream.writeByte(255);
    				c.outStream.writeDWord(amount);
    				c.outStream.endFrameVarSizeWord();
    			}
    		
    	}
    	
    	public void walkableInterface(int id) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(208);
    		        c.getOutStream().writeWordBigEndian_dup(id);
    				c.flushOutStream();
    		}
    	}
    	
    	public int mapStatus = 0;
    	public void sendFrame99(int state) { // used for disabling map
    			if(c.getOutStream() != null && c != null) {
    				if(mapStatus != state) {
    					mapStatus = state;
    					c.getOutStream().createFrame(99);
    			        c.getOutStream().writeByte(state);
    					c.flushOutStream();
    				}
    			}
    		}
    	
    	public void sendCrashFrame() { // used for crashing cheat clients
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(123);
    				c.flushOutStream();
    			}
    		}
    	
    	/**
    	* Reseting animations for everyone
    	**/
    
    	public void frame1() {
    			for(int i = 0; i < Config.MAX_PLAYERS; i++) {
    				if(Server.playerHandler.players[i] != null) {
    					Client person = (Client)Server.playerHandler.players[i];
    					if(person != null) {
    						if(person.getOutStream() != null && !person.disconnected) {
    							if(c.distanceToPoint(person.getX(), person.getY()) <= 25){	
    								person.getOutStream().createFrame(1);
    								person.flushOutStream();
    								person.getPA().requestUpdates();
    							}
    						}
    					}
    				}
    		}
    	}
    	
    	/**
    	* Creating projectile
    	**/
    	public void createProjectile(int x, int y, int offX, int offY, int angle, int speed, int gfxMoving, int startHeight, int endHeight, int lockon, int time) {      
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(85);
    		        c.getOutStream().writeByteC((y - (c.getMapRegionY() * 8)) - 2);
    		        c.getOutStream().writeByteC((x - (c.getMapRegionX() * 8)) - 3);
    		        c.getOutStream().createFrame(117);
    		        c.getOutStream().writeByte(angle);
    		        c.getOutStream().writeByte(offY);
    		        c.getOutStream().writeByte(offX);
    		        c.getOutStream().writeWord(lockon);
    		        c.getOutStream().writeWord(gfxMoving);
    		        c.getOutStream().writeByte(startHeight);
    		        c.getOutStream().writeByte(endHeight);
    		        c.getOutStream().writeWord(time);
    			    c.getOutStream().writeWord(speed);
    				c.getOutStream().writeByte(16);
    				c.getOutStream().writeByte(64);
    				c.flushOutStream();
    			}
        }
    	
    	public void createProjectile2(int x, int y, int offX, int offY, int angle, int speed, int gfxMoving, int startHeight, int endHeight, int lockon, int time, int slope) {      
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(85);
    		        c.getOutStream().writeByteC((y - (c.getMapRegionY() * 8)) - 2);
    		        c.getOutStream().writeByteC((x - (c.getMapRegionX() * 8)) - 3);
    		        c.getOutStream().createFrame(117);
    		        c.getOutStream().writeByte(angle);
    		        c.getOutStream().writeByte(offY);
    		        c.getOutStream().writeByte(offX);
    		        c.getOutStream().writeWord(lockon);
    		        c.getOutStream().writeWord(gfxMoving);
    		        c.getOutStream().writeByte(startHeight);
    		        c.getOutStream().writeByte(endHeight);
    		        c.getOutStream().writeWord(time);
    			    c.getOutStream().writeWord(speed);
    				c.getOutStream().writeByte(slope);
    				c.getOutStream().writeByte(64);
    				c.flushOutStream();
    			}
        }
    	
    	// projectiles for everyone within 25 squares
    	public void createPlayersProjectile(int x, int y, int offX, int offY, int angle, int speed, int gfxMoving, int startHeight, int endHeight, int lockon, int time) {
    			for(int i = 0; i < Config.MAX_PLAYERS; i++) {
    				Player p = Server.playerHandler.players[i];
    				if(p != null) {
    					Client person = (Client)p;
    					if(person != null) {
    						if(person.getOutStream() != null) {
    							if(person.distanceToPoint(x, y) <= 25){
    								if (p.heightLevel == c.heightLevel)
    									person.getPA().createProjectile(x, y, offX, offY, angle, speed, gfxMoving, startHeight, endHeight, lockon, time);
    							}
    					}	
    				}
    			}
    		}
    	}
    	
    	public void createPlayersProjectile2(int x, int y, int offX, int offY, int angle, int speed, int gfxMoving, int startHeight, int endHeight, int lockon, int time, int slope) {
    			for(int i = 0; i < Config.MAX_PLAYERS; i++) {
    				Player p = Server.playerHandler.players[i];
    				if(p != null) {
    					Client person = (Client)p;
    					if(person != null) {
    						if(person.getOutStream() != null) {
    							if(person.distanceToPoint(x, y) <= 25){	
    								person.getPA().createProjectile2(x, y, offX, offY, angle, speed, gfxMoving, startHeight, endHeight, lockon, time, slope);	
    							}
    					}	
    				}
    			}
    		}
    	}
    	
    
    	/**
    	** GFX
    	**/
    	public void stillGfx(int id, int x, int y, int height, int time) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(85);
    				c.getOutStream().writeByteC(y - (c.getMapRegionY() * 8));
    				c.getOutStream().writeByteC(x - (c.getMapRegionX() * 8));
    				c.getOutStream().createFrame(4);
    				c.getOutStream().writeByte(0);
    				c.getOutStream().writeWord(id);
    				c.getOutStream().writeByte(height);
    				c.getOutStream().writeWord(time);
    				c.flushOutStream();
    		}
    	}
    	
    	//creates gfx for everyone
    	public void createPlayersStillGfx(int id, int x, int y, int height, int time) {
    			for(int i = 0; i < Config.MAX_PLAYERS; i++) {
    				Player p = Server.playerHandler.players[i];
    				if(p != null) {
    					Client person = (Client)p;
    					if(person != null) {
    						if(person.getOutStream() != null) {
    							if(person.distanceToPoint(x, y) <= 25){	
    								person.getPA().stillGfx(id, x, y, height, time);
    							}
    					}	
    				}
    			}
    		}
    	}
    	
    	/**
    	* Objects, add and remove
    	**/
    	public void object(int objectId, int objectX, int objectY, int face, int objectType) {
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(85);
    				c.getOutStream().writeByteC(objectY - (c.getMapRegionY() * 8));
    				c.getOutStream().writeByteC(objectX - (c.getMapRegionX() * 8));
    				c.getOutStream().createFrame(101);
    				c.getOutStream().writeByteC((objectType<<2) + (face&3));
    				c.getOutStream().writeByte(0);
    			
    				if (objectId != -1) { // removing
    					c.getOutStream().createFrame(151);
    					c.getOutStream().writeByteS(0);
    					c.getOutStream().writeWordBigEndian(objectId);
    					c.getOutStream().writeByteS((objectType<<2) + (face&3));
    				}
    				c.flushOutStream();
    			}	
    		}
    	
    	public void checkObjectSpawn(int objectId, int objectX, int objectY, int face, int objectType) {
    		if (c.distanceToPoint(objectX, objectY) > 60)
    			return;
    			if(c.getOutStream() != null && c != null) {
    				c.getOutStream().createFrame(85);
    				c.getOutStream().writeByteC(objectY - (c.getMapRegionY() * 8));
    				c.getOutStream().writeByteC(objectX - (c.getMapRegionX() * 8));
    				c.getOutStream().createFrame(101);
    				c.getOutStream().writeByteC((objectType<<2) + (face&3));
    				c.getOutStream().writeByte(0);
    			
    				if (objectId != -1) { // removing
    					c.getOutStream().createFrame(151);
    					c.getOutStream().writeByteS(0);
    					c.getOutStream().writeWordBigEndian(objectId);
    					c.getOutStream().writeByteS((objectType<<2) + (face&3));
    				}
    				c.flushOutStream();
    			}	
    	}
    	
    
    	/**
    	* Show option, attack, trade, follow etc
    	**/
    	public String optionType = "null";
    	public void showOption(int i, int l, String s, int a) {
    			if(c.getOutStream() != null && c != null) {
    				if(!optionType.equalsIgnoreCase(s)) {
    					optionType = s;
    					c.getOutStream().createFrameVarSize(104);
    					c.getOutStream().writeByteC(i);
    					c.getOutStream().writeByteA(l);
    					c.getOutStream().writeString(s);
    					c.getOutStream().endFrameVarSize();
    					c.flushOutStream();
    				}
    		}
    	}
    	
    	/**
    	* Open bank
    	**/
    	public void openUpBank(){
    			if(c.inWild())
    			{
    				c.sendMessage("You can't bank in the wilderness!");
    				return;
    			}
    			if(c.getOutStream() != null && c != null) {
    				c.isBanking = true;
    				c.getItems().resetItems(5064);
    				c.getItems().rearrangeBank();
    				c.getItems().resetBank();
    				c.getItems().resetTempItems();
    				c.getOutStream().createFrame(248);
    				c.getOutStream().writeWordA(23000);
    				c.getOutStream().writeWord(5063);
    				c.flushOutStream();
    			}
    		
    	}
    	
    	/**
    	* Private Messaging
    	**/	
    	public void logIntoPM() {
    		setPrivateMessaging(2);
    		for(int i1 = 0; i1 < Config.MAX_PLAYERS; i1++) {
    			Player p = Server.playerHandler.players[i1];
    			if(p != null && p.isActive) {
    				Client o = (Client)p;
    				if(o != null) {
    					o.getPA().updatePM(c.playerId, 1);
    				}
    			}
    		}
    		boolean pmLoaded = false;
    
    		for(int i = 0; i < c.friends.length; i++) {
    			if(c.friends[i] != 0)  {
    				for(int i2 = 1; i2 < Config.MAX_PLAYERS; i2++) {
    					Player p = Server.playerHandler.players[i2];
    					if (p != null && p.isActive && Misc.playerNameToInt64(p.playerName) == c.friends[i])  {
    						Client o = (Client)p;
    						if(o != null) {
    							if (c.playerRights >= 2 || p.privateChat == 0 || (p.privateChat == 1 && o.getPA().isInPM(Misc.playerNameToInt64(c.playerName)))) {
    			 		 			loadPM(c.friends[i], 1);
    			 		 			pmLoaded = true;
    							}
    							break;
    						}
    					}
    				}
    				if(!pmLoaded) {	
    					loadPM(c.friends[i], 0);
    				}
    				pmLoaded = false;
    			}
    			for(int i1 = 1; i1 < Config.MAX_PLAYERS; i1++) {
    				Player p = Server.playerHandler.players[i1];
        			if(p != null && p.isActive) {
    					Client o = (Client)p;
    					if(o != null) {
    						o.getPA().updatePM(c.playerId, 1);
    					}
    				}
    			}
    		}
    	}
    	
    	
    	public void updatePM(int pID, int world) { // used for private chat updates
    		Player p = Server.playerHandler.players[pID];
    		if(p == null || p.playerName == null || p.playerName.equals("null")){
    			return;
    		}
    		Client o = (Client)p;
    		if(o == null) {
    			return;
    		}
            long l = Misc.playerNameToInt64(Server.playerHandler.players[pID].playerName);
    
            if (p.privateChat == 0) {
                for (int i = 0; i < c.friends.length; i++) {
                    if (c.friends[i] != 0) {
                        if (l == c.friends[i]) {
                            loadPM(l, world);
                            return;
                        }
                    }
                }
            } else if (p.privateChat == 1) {
                for (int i = 0; i < c.friends.length; i++) {
                    if (c.friends[i] != 0) {
                        if (l == c.friends[i]) {
                            if (o.getPA().isInPM(Misc.playerNameToInt64(c.playerName))) {
                                loadPM(l, world);
                                return;
                            } else {
                                loadPM(l, 0);
                                return;
                            }
                        }
                    }
                }
            } else if (p.privateChat == 2) {
                for (int i = 0; i < c.friends.length; i++) {
                    if (c.friends[i] != 0) {
                        if (l == c.friends[i] && c.playerRights < 2) {
                            loadPM(l, 0);
                            return;
                        }
                    }
                }
            }
        }
    	
    	public boolean isInPM(long l) {
            for (int i = 0; i < c.friends.length; i++) {
                if (c.friends[i] != 0) {
                    if (l == c.friends[i]) {
                        return true;
                    }
                }
            }
            return false;
        }
    	
    	
    	/**
    	 * Drink AntiPosion Potions
    	 * @param itemId The itemId
    	 * @param itemSlot The itemSlot
    	 * @param newItemId The new item After Drinking
    	 * @param healType The type of poison it heals
    	 */
    	public void potionPoisonHeal(int itemId, int itemSlot, int newItemId, int healType) {
    		c.attackTimer = c.getCombat().getAttackDelay(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
    		if(c.duelRule[5]) {
    			c.sendMessage("Potions has been disabled in this duel!");
    			return;
    		}
    		if(!c.isDead && System.currentTimeMillis() - c.foodDelay > 2000) {
    			if(c.getItems().playerHasItem(itemId, 1, itemSlot)) {
    				c.sendMessage("You drink the "+c.getItems().getItemName(itemId).toLowerCase()+".");
    				c.foodDelay = System.currentTimeMillis();
    				// Actions
    				if(healType == 1) {
    					//Cures The Poison
    				} else if(healType == 2) {
    					//Cures The Poison + protects from getting poison again
    				}
    				c.startAnimation(0x33D);
    				c.getItems().deleteItem(itemId, itemSlot, 1);
    				c.getItems().addItem(newItemId, 1);
    				requestUpdates();
    			}
    		}
    	}
    	
    	
    	/**
    	* Magic on items
    	**/
    	
    	public void magicOnItems(int slot, int itemId, int spellId) {
    		switch(spellId) {
    			case 1162: // low alch
    			if(System.currentTimeMillis() - c.alchDelay > 1000) {	
    				if(!c.getCombat().checkMagicReqs(49)) {
    					break;
    				}
    				if(itemId == 995) {
    					c.sendMessage("You can't alch coins.");
    					break;
    				}
    				c.getItems().deleteItem(itemId, slot, 1);
    				c.getItems().addItem(995, c.getShops().getItemShopValue(itemId)/3);
    				c.startAnimation(c.MAGIC_SPELLS[49][2]);
    				c.gfx100(c.MAGIC_SPELLS[49][3]);
    				c.alchDelay = System.currentTimeMillis();
    				sendFrame106(6);
    				addSkillXP(c.MAGIC_SPELLS[49][7] * Config.MAGIC_EXP_RATE, 6);
    				refreshSkill(6);
    			}
    			break;
    			
    			case 1178: // high alch
    			if(System.currentTimeMillis() - c.alchDelay > 2000) {	
    				if(!c.getCombat().checkMagicReqs(50)) {
    					break;
    				}
    				if(itemId == 995) {
    					c.sendMessage("You can't alch coins.");
    					break;
    				}				
    				c.getItems().deleteItem(itemId, slot, 1);
    				c.getItems().addItem(995, (int)(c.getShops().getItemShopValue(itemId)*.75));
    				c.startAnimation(c.MAGIC_SPELLS[50][2]);
    				c.gfx100(c.MAGIC_SPELLS[50][3]);
    				c.alchDelay = System.currentTimeMillis();
    				sendFrame106(6);
    				addSkillXP(c.MAGIC_SPELLS[50][7] * Config.MAGIC_EXP_RATE, 6);
    				refreshSkill(6);
    			}
    			break;
    			case 8349:
    				handleAlt(itemId);
    			break;
    		}
    	}
    	
    	/**
    	* Dieing
    	**/
    
    	public String getKM() {
    		int kMCount = Misc.random(11);
    		switch (kMCount) {
    			case 0: return "With a crushing blow, you defeat "+ c.playerName+".";
    			case 1: return "It's a humiliating defeat for "+ c.playerName+".";
    			case 2: return c.playerName +" didn't stand a chance against you.";
    			case 3: return "You've defeated "+ c.playerName+".";
    			case 4: return c.playerName +" regrets the day they met you in combat.";
    			case 5: return "It's all over for "+c.playerName+".";
    			case 6: return c.playerName +" falls before you might.";
    			case 7: return "Can anyone defeat you? Certainly not "+c.playerName+".";
    			case 8: return c.playerName +" has fallen under your might.";
    			case 9: return c.playerName +" crumbled under your power.";
    			case 10: return "You have proven "+ c.playerName+" to be an unworthy opponent.";
    			default: return "You were clearly a better fighter than "+c.playerName+".";
    		}
    	}
    
    	
        public void applyDead() {    
    		c.respawnTimer = 15;
    		c.isDead = false;
    		Client o = (Client) Server.playerHandler.players[c.killerId];
    		if(c.duelStatus != 6) {
    			c.killerId = findKiller();
    			if(o != null) {
    				c.playerKilled = c.playerId;
    				if(o.duelStatus == 5) {
    					o.duelStatus++;
    				}
    				if (Server.playerHandler.players[c.playerId].connectedFrom != o.lastKilled && c.duelStatus == 0) {
    					o.pkPoints = (o.pkPoints + 4);
    					o.sendMessage("You recieved 4 pkPoints");
    					o.lastKilled = Server.playerHandler.players[c.playerId].connectedFrom;
    				} else {
    					o.sendMessage("You do not recieve pk points because you have killed " +c.playerName+ " twice in a row.");
    				}
    			}
    		}
    		c.faceUpdate(0);
    		c.npcIndex = 0;
    		c.playerIndex = 0;
    		c.stopMovement();
    					if (c.duelStatus <= 4) {
    				c.sendMessage("Oh dear you are dead!");
    			} else if(c.duelStatus != 6 || !c.inArena()) {
    				c.sendMessage("You have lost the duel!");
    				/*o.getPA().movePlayer(
    						Config.DUELING_RESPAWN_X
    								+ (Misc.random(Config.RANDOM_DUELING_RESPAWN)),
    						Config.DUELING_RESPAWN_Y
    								+ (Misc.random(Config.RANDOM_DUELING_RESPAWN)), 0);*/
    			}
    		resetDamageDone();
    		c.DC++;
    		o.KC++;	
    		c.specAmount = 10;
    		c.getItems().addSpecialBar(c.playerEquipment[c.playerWeapon]);
    		c.lastVeng = 0;
    		c.vengOn = false;
    		resetFollowers();
    		c.attackTimer = 10;
    		if (Server.playerHandler.players[c.killerId].connectedFrom.equals(Server.playerHandler.players[c.playerKilled].connectedFrom)) {
    					o.sendMessage("You Don't Recieve PK Points for killing yourself!");
    		c.faceUpdate(0);
    		c.npcIndex = 0;
    		c.playerIndex = 0;
    		c.stopMovement();
    		if(c.duelStatus <= 4) {
    			c.sendMessage("Oh dear you are dead!");
    		} else if(c.duelStatus != 6) {
    			c.sendMessage("You have lost the duel!");
    		}
    		resetDamageDone();
    		c.lastVeng = 0;
    		c.vengOn = false;
    		resetFollowers();
    		c.attackTimer = 10;
    		removeAllWindows();
    		c.tradeResetNeeded = true;
    		return;
    		}
    	}
    	
    			public void dropitems() 
    	{
    	if(c.lastsummon > 0) {
    if(c.totalstored > 0) {
    c.firstslot();
    for(int i = 0; i < 29; i += 1)
    {
    Server.itemHandler.createGroundItem(c, c.storeditems[i], Server.npcHandler.npcs[c.summoningnpcid].absX, Server.npcHandler.npcs[c.summoningnpcid].absY, 1, c.playerId);
    c.storeditems[i] = -1;
    c.occupied[i] = false;
    }
    }
    c.lastsummon = -1;
    c.totalstored = 0;
    c.summoningnpcid = 0;
    c.summoningslot = 0;
    c.storing = false;
    c.sendMessage("Your BoB items have drop on the floor");
    }	
    	}
    	/**
    	* Location change for digging, levers etc
    	**/
    	
    	
    	public void resetDamageDone() {
    		for (int i = 0; i < PlayerHandler.players.length; i++) {
    			if (PlayerHandler.players[i] != null) {
    				PlayerHandler.players[i].damageTaken[c.playerId] = 0;			
    			}		
    		}	
    	}
    	/*
    *Vengeance
    */
    	public void castVeng() {
    	if(c.playerLevel[6] < 94) {
    		c.sendMessage("You need a magic level of 94 to cast this spell.");
    		return;
    	}
    	if(c.playerLevel[1] < 40) {
    		c.sendMessage("You need a defence level of 40 to cast this spell.");
    		return;
    	}
    	if(!c.getItems().playerHasItem(9075, 4) || !c.getItems().playerHasItem(557, 10) || !c.getItems().playerHasItem(560, 2)) {
    		c.sendMessage("You don't have the required runes to cast this spell.");
    		return;
    	}
    	if(System.currentTimeMillis() - c.lastCast < 30000) {
    		c.sendMessage("You can only cast vengeance every 30 seconds.");
    		return;
    	}
    	if(c.vengOn) {
    		c.sendMessage("You already have vengeance casted.");
    		return;
    	}
    	c.startAnimation(4410);
    	c.gfx100(726);//Just use c.gfx100
    	c.getItems().deleteItem2(9075, 4);
    	c.getItems().deleteItem2(557, 10);//For these you need to change to deleteItem(item, itemslot, amount);.
    	c.getItems().deleteItem2(560, 2);
    	addSkillXP(2000, 6);
    	c.stopMovement();
    	refreshSkill(6);
    	c.vengOn = true;
    	c.lastCast = System.currentTimeMillis();
    	}
    
    	public void vengOther() {	
    	if (c.playerIndex > 0) {	
    	Player q = Server.playerHandler.players[c.playerIndex];			
    	final int oX = q.getX();
    	final int oY = q.getY();
    	if(c.playerLevel[6] < 93) {
    		c.sendMessage("You need a magic level of 93 to cast this spell.");
    	c.getCombat().resetPlayerAttack();
    	c.stopMovement();
    	c.turnPlayerTo(oX,oY);
    		return;
    	}
                    if (!q.acceptAid) {
                    c.sendMessage("This player has their accept Aid off, therefore you cannot veng them!");
                    return;
                    }
    
    	if(c.playerLevel[1] < 40) {
    		c.sendMessage("You need a defence level of 40 to cast this spell.");
    	c.getCombat().resetPlayerAttack();
    	c.stopMovement();
    	c.turnPlayerTo(oX,oY);
    		return;
    	}
    	if(!c.getItems().playerHasItem(9075, 3) || !c.getItems().playerHasItem(557, 10) || !c.getItems().playerHasItem(560, 2)) {
    		c.sendMessage("You don't have the required runes to cast this spell.");
    	c.getCombat().resetPlayerAttack();
    	c.stopMovement();
    	c.turnPlayerTo(oX,oY);
    		return;
    	}
    	if(System.currentTimeMillis() - c.lastCast < 30000) {
    		c.sendMessage("You can only cast vengeance every 30 seconds.");
    	c.getCombat().resetPlayerAttack();
    	c.stopMovement();
    	c.turnPlayerTo(oX,oY);
    		return;
    	}
    	if(q.vengOn) {
    		c.sendMessage("That player already have vengeance casted.");
    	c.getCombat().resetPlayerAttack();
    	c.stopMovement();
    	c.turnPlayerTo(oX,oY);
    		return;
    	}
    	c.startAnimation(4411);
    	q.gfx100(725);//Just use c.gfx100
    	c.getItems().deleteItem2(9075, 3);
    	c.getItems().deleteItem2(557, 10);//For these you need to change to deleteItem(item, itemslot, amount);.
    	c.getItems().deleteItem2(560, 2);
    	q.vengOn = true;
    	addSkillXP(2000, 6);
    	c.turnPlayerTo(oX,oY);
    	refreshSkill(6);
    	c.getCombat().resetPlayerAttack();
    	c.stopMovement();
    	c.lastCast = System.currentTimeMillis();
    }
    }
    public boolean wearingCape(int cape) {
    int capes[] = {
    9747, 9748, 9750, 9751,
    9753, 9754, 9756, 9757,
    9759, 9760, 9762, 9763,
    9765, 9766, 9768, 9769,
    9771, 9772, 9774, 9775,
    9777, 9778, 9780, 9781,
    9783, 9784, 9786, 9787,
    9789, 9790, 9792, 9793,
    9795, 9796, 9798, 9799,
    9801, 9802, 9804, 9805,
    9807, 9808, 9810, 9811,
    9813, 9948, 9949, 12170
    };
    for(int i = 0; i < capes.length; i++) {
    if(capes[i] == cape) {
    return true;
    }
    }
    return false;
    }
    
    
    	public void vengMe() {
    		if (System.currentTimeMillis() - c.lastVeng > 30000) {
    			if (c.getItems().playerHasItem(557,10) && c.getItems().playerHasItem(9075,4) && c.getItems().playerHasItem(560,2)) {
    				c.vengOn = true;
    				c.lastVeng = System.currentTimeMillis();
    				c.startAnimation(4410);
    				c.gfx100(726);
    				c.getItems().deleteItem(557,c.getItems().getItemSlot(557),10);
    				c.getItems().deleteItem(560,c.getItems().getItemSlot(560),2);
    				c.getItems().deleteItem(9075,c.getItems().getItemSlot(9075),4);
    			} else {
    				c.sendMessage("You do not have the required runes to cast this spell. (9075 for astrals)");
    			}
    		} else {
    			c.sendMessage("You must wait 30 seconds before casting this again.");
    		}
    	}
    	
    	public int skillcapeGfx(int cape) {
    		int capeGfx[][] = {
    			{9747, 823}, {9748, 823},
    			{9750, 828}, {9751, 828},
    			{9753, 824}, {9754, 824},
    			{9756, 832}, {9757, 832},
    			{9759, 829}, {9760, 829},
    			{9762, 813}, {9763, 813},
    			{9765, 817}, {9766, 817},
    			{9768, 833}, {9769, 833},
    			{9771, 830}, {9772, 830},
    			{9774, 835}, {9775, 835},
    			{9777, 826}, {9778, 826},
    			{9780, 818}, {9781, 818},
    			{9783, 812}, {9784, 812},
    			{9786, 827}, {9787, 827},
    			{9789, 820}, {9790, 820},
    			{9792, 814}, {9793, 814},
    			{9795, 815}, {9796, 815},
    			{9798, 819}, {9799, 819},
    			{9801, 821}, {9802, 821},
    			{9804, 831}, {9805, 831},
    			{9807, 822}, {9808, 822},
    			{9810, 825}, {9811, 825},
    			{9948, 907}, {9949, 907},
    			{9813, 816}, {12170, 1515},
                            {18742, 281}
    		};
    		for(int i = 0; i < capeGfx.length; i++) {
    			if(capeGfx[i][0] == cape) {
    				return capeGfx[i][1];
    			}
    		}
    		return -1;
    	}
    	
    	public int skillcapeEmote(int cape) {
    		int capeEmote[][] = {
    			{9747, 4959}, {9748, 4959},
    			{9750, 4981}, {9751, 4981},
    			{9753, 4961}, {9754, 4961},
    			{9756, 4973}, {9757, 4973},
    			{9759, 4979}, {9760, 4979},
    			{9762, 4939}, {9763, 4939},
    			{9765, 4947}, {9766, 4947},
    			{9768, 4971}, {9769, 4971},
    			{9771, 4977}, {9772, 4977},
    			{9774, 4969}, {9775, 4969},
    			{9777, 4965}, {9778, 4965},
    			{9780, 4949}, {9781, 4949},
    			{9783, 4937}, {9784, 4937},
    			{9786, 4967}, {9787, 4967},
    			{9789, 4953}, {9790, 4953},
    			{9792, 4941}, {9793, 4941},
    			{9795, 4943}, {9796, 4943},
    			{9798, 4951}, {9799, 4951},
    			{9801, 4955}, {9802, 4955},
    			{9804, 4975}, {9805, 4975},
    			{9807, 4957}, {9808, 4957},
    			{9810, 4963}, {9811, 4963},
    			{9948, 5158}, {9949, 5158},
    			{9813, 4945}, {12170, 8525},
                            {18742, 12575}
    		};
    		for(int i = 0; i < capeEmote.length; i++) {
    			if(capeEmote[i][0] == cape) {
    				return capeEmote[i][1];
    			}
    		}
    		return -1;
    	}
    
    	public void resetTb() {
    		c.teleBlockLength = 0;
    		c.teleBlockDelay = 0;	
    	}
    	
    	public void handleStatus(int i, int i2, int i3) {
    		//Sanity u so smart
    	}
    	
    	public void resetFollowers() {
    		for (int j = 0; j < Server.playerHandler.players.length; j++) {
    			if (Server.playerHandler.players[j] != null) {
    				if (Server.playerHandler.players[j].followId == c.playerId) {
    					Client c = (Client)Server.playerHandler.players[j];
    					c.getPA().resetFollow();
    				}			
    			}		
    		}	
    	}
    	
    	public void giveLife() {
    		c.isDead = false;
    		c.faceUpdate(-1);
    		c.freezeTimer = 0;
    		
    		if(c.playerRights == 3) {
    		for (int i = 0; i < 20; i++) {
    			c.playerLevel[i] = getLevelForXP(c.playerXP[i]);
    			c.getPA().refreshSkill(i);
    		}
    		c.getCombat().resetPrayers();
    
    		c.teleportToX = 3237;
    		c.teleportToY = 3523;
    PlayerSave.saveGame(c);
    c.getPA().resetTzhaar();
    requestUpdates();
    return;
    		
    		}
    		if(c.duelStatus <= 4 && !c.getPA().inPitsWait()) { // if we are not in a duel we must be in wildy so remove items
    			if (!c.inPits && !c.inDungeons() && !c.inFightCaves() && !c.inPcGame()) {
    					c.getItems().resetKeepItems();
    				if((c.playerRights == 0 && Config.ADMIN_DROP_ITEMS) || c.playerRights != 0) {
    					if(!c.isSkulled && !c.isInArd()) {	// what items to keep
    						c.getItems().keepItem(0, true);
    						c.getItems().keepItem(1, true);	
    						c.getItems().keepItem(2, true);
    					}	
    					if(c.prayerActive[10] || c.isInArd() && System.currentTimeMillis() - c.lastProtItem > 700) {
    						c.getItems().keepItem(3, true);
    					}
    					c.getItems().dropAllItems(); // drop all items
    					c.getItems().deleteAllItems(); // delete all items
    				
    					if(!c.isSkulled && !c.isInArd()) { // add the kept items once we finish deleting and dropping them	
    						for (int i1 = 0; i1 < 3; i1++) {
    							if(c.itemKeptId[i1] > 0) {
    								c.getItems().addItem(c.itemKeptId[i1], 1);
    							}
    						}
    					}	
    					if(c.prayerActive[10] || c.isInArd()) { // if we have protect items 
    						if(c.itemKeptId[3] > 0) {
    							c.getItems().addItem(c.itemKeptId[3], 1);
    						}
    					}
    				}
    				c.getItems().resetKeepItems();
    			} else if (c.inPits) {
    				Server.fightPits.removePlayerFromPits(c.playerId);
    				c.pitsStatus = 1;
    			}
    		}
    		c.getCombat().resetPrayers();
    		for (int i = 0; i < 25; i++) {
    			c.playerLevel[i] = getLevelForXP(c.playerXP[i]);
    			c.getPA().refreshSkill(i);
    		}
    		if (c.pitsStatus == 1) {
    			movePlayer(2399, 5173, 0);
    		} else if(c.duelStatus <= 4) { // if we are not in a duel repawn to wildy
    			movePlayer(Config.RESPAWN_X, Config.RESPAWN_Y, 0);
    			c.isSkulled = false;
    			c.skullTimer = 0;
    			c.attackedPlayers.clear();
    		} else if (c.inDungeons()) {
    			movePlayer(Config.DUNG_RESPAWN_X, Config.DUNG_RESPAWN_Y, 0);
    			c.isSkulled = false;
    			c.skullTimer = 0;
    			c.attackedPlayers.clear();		
    		} else if (c.inFightCaves()) {
    			c.getPA().resetTzhaar();
    		} else { // we are in a duel, respawn outside of arena
    			Client o = (Client) Server.playerHandler.players[c.duelingWith];
    			if(o != null) {
    				o.getPA().createPlayerHints(10, -1);
    				if(o.duelStatus == 6) {
    					o.getTradeAndDuel().duelVictory();
    				}
    			}
    			movePlayer(Config.DUELING_RESPAWN_X+(Misc.random(Config.RANDOM_DUELING_RESPAWN)), Config.DUELING_RESPAWN_Y+(Misc.random(Config.RANDOM_DUELING_RESPAWN)), 0);
    			if(c.duelStatus != 6) { // if we have won but have died, don't reset the duel status.
    				c.getTradeAndDuel().resetDuel();
    			}
    		}
    		//PlayerSaving.getSingleton().requestSave(c.playerId);
    		PlayerSave.saveGame(c);
    		c.getCombat().resetPlayerAttack();
    		resetAnimation();
    		c.startAnimation(-1);
    		frame1();
    		resetTb();
    		c.isSkulled = false;
    		c.attackedPlayers.clear();
    		c.headIconPk = -1;
    		c.skullTimer = -1;
    		c.damageTaken = new int[Config.MAX_PLAYERS];
    		c.getPA().requestUpdates();
    		removeAllWindows();
    		c.tradeResetNeeded = true;	
    
    
    	}
    		
    	/**
    	* Location change for digging, levers etc
    	**/
    	
    	public void changeLocation() {
    		switch(c.newLocation) {
    			case 1:
    			sendFrame99(2);
    			movePlayer(3578,9706,-1);
    			break;
    			case 2:
    			sendFrame99(2);
    			movePlayer(3568,9683,-1);
    			break;
    			case 3:
    			sendFrame99(2);
    			movePlayer(3557,9703,-1);
    			break;
    			case 4:
    			sendFrame99(2);
    			movePlayer(3556,9718,-1);
    			break;
    			case 5:
    			sendFrame99(2);
    			movePlayer(3534,9704,-1);
    			break;
    			case 6:
    			sendFrame99(2);
    			movePlayer(3546,9684,-1);
    			break;
    			case 7:
    			sendFrame99(2);
    			movePlayer(3546,9684,-1);
    			break;
    		}
    		c.newLocation = 0;
    	}
    	
    	
    	/**
    	* Teleporting
    	**/
    	public void spellTeleport(int x, int y, int height) {
    		c.getPA().startTeleport(x, y, height, c.playerMagicBook == 1 ? "ancient" : "modern");
    	}
    	public void startMovement(int x, int y, int height) {
    		if(c.duelStatus == 5) {
    			c.sendMessage("You can't teleport during a duel!");
    			return;
    		}
    		if(c.inRFD()) {
    			c.sendMessage("You can't teleport out of this minigame!");
    			return;
    		}
    		if(c.Jail == true) {
    			c.sendMessage("You can't teleport out of prison idiot!");
    			return;
    		}
    		if(c.inJail() && c.Jail == true) {
    			c.sendMessage("You can't teleport out of prison idiot!");
    			return;
    		}
    		if(c.inWarriorG() && c.heightLevel == 2) {
    			c.sendMessage("You can't teleport out of Warrior Guild!");
    			return;
    		}
    		if(c.inGWD()) {
    		ResetGWKC();
    		}
    		if(c.inFightCaves()) {
    			c.sendMessage("You can't teleport out of this minigame!");
    			return;
    		}
    		if(c.inWild() && c.wildLevel > Config.NO_TELEPORT_WILD_LEVEL) {
    			c.sendMessage("You can't teleport above level "+Config.NO_TELEPORT_WILD_LEVEL+" in the wilderness.");
    			return;
    		}
    		if(System.currentTimeMillis() - c.teleBlockDelay < c.teleBlockLength) {
    			c.sendMessage("You are teleblocked and can't teleport.");
    			return;
    		}
    		if(!c.isDead && c.teleTimer == 0 && c.respawnTimer == -6) {
    			if (c.playerIndex > 0 || c.npcIndex > 0)
    				c.getCombat().resetPlayerAttack();
    			c.stopMovement();
    			EarningPotential.checkTeleport(c);
    			removeAllWindows();			
    			c.teleX = x;
    			c.teleY = y;
    			c.npcIndex = 0;
    			c.playerIndex = 0;
    			c.faceUpdate(0);
    			c.teleHeight = height;
    
    			}
    		
    		
    	}	
    	public void startTeleport(int x, int y, int height, String teleportType) {
    		if(c.duelStatus == 5) {
    			c.sendMessage("You can't teleport during a duel!");
    			return;
    		}
    		if(c.inPits || c.viewingOrb || inPitsWait()) {
    			c.sendMessage("You can't teleport in here!");
    			return;
    		}
    		if(c.inGWD()) {
    		ResetGWKC();
    		}
    		if(c.inJail() && c.Jail == true) {
    			c.sendMessage("You can't teleport out of prison idiot!");
    			return;
    		}
    		if(c.Jail == true) {
    			c.sendMessage("You can't teleport out of prison idiot!");
    			return;
    		}
    		if(c.inWarriorG() && c.heightLevel == 2) {
    			c.sendMessage("You can't teleport out of Warrior Guild!");
    			return;
    		}
    		if(c.inRFD()) {
    			c.sendMessage("You can't teleport out of this minigame!");
    			return;
    		}
    		if(c.inFightCaves()) {
    			c.sendMessage("You can't teleport out of this minigame!");
    			return;
    		}
    		if(c.inWild() && c.wildLevel > Config.NO_TELEPORT_WILD_LEVEL) {
    			c.sendMessage("You can't teleport above level "+Config.NO_TELEPORT_WILD_LEVEL+" in the wilderness.");
    			return;
    		}
    		if(System.currentTimeMillis() - c.teleBlockDelay < c.teleBlockLength) {
    			c.sendMessage("You are teleblocked and can't teleport.");
    			return;
    		}
    		if(!c.isDead && c.teleTimer == 0 && c.respawnTimer == -6) {
    			if (c.playerIndex > 0 || c.npcIndex > 0)
    				c.getCombat().resetPlayerAttack();
    			c.stopMovement();
    			EarningPotential.checkTeleport(c);
    			removeAllWindows();			
    			c.teleX = x;
    			c.teleY = y;
    			c.npcIndex = 0;
    			c.playerIndex = 0;
    			c.faceUpdate(0);
    			c.teleHeight = height;
     if(teleportType.equalsIgnoreCase("modern")) {
    				c.startAnimation(13652);
    				c.teleTimer = 16;
    				c.gfx0(2602);
    				c.teleEndAnimation = 13654;
    			}
    
    			if(teleportType.equalsIgnoreCase("ancient")) {
    				c.startAnimation(1979);
    				c.teleGfx = 0;
    				c.teleTimer = 11;
    				c.teleEndAnimation = 0;
    				c.gfx0(1681);
    			}
    			
    		}
    	}
    	public void startTeleport2(int x, int y, int height) {
    		if(c.duelStatus == 5) {
    			c.sendMessage("You can't teleport during a duel!");
    			return;
    		}
    		if(c.Jail == true) {
    			c.sendMessage("You can't teleport out of prison idiot!");
    			return;
    		}
    		if(c.inGWD()) {
    		ResetGWKC();
    		}
    		if(c.inJail() && c.Jail == true) {
    			c.sendMessage("You can't teleport out of prison idiot!");
    			return;
    		}
    		if(System.currentTimeMillis() - c.teleBlockDelay < c.teleBlockLength) {
    			c.sendMessage("You are teleblocked and can't teleport.");
    			return;
    		}
    		if(!c.isDead && c.teleTimer == 0) {			
    			c.stopMovement();
    			removeAllWindows();			
    			c.teleX = x;
    			c.teleY = y;
    			c.npcIndex = 0;
    			c.playerIndex = 0;
    			c.faceUpdate(0);
    			c.teleHeight = height;
    			c.startAnimation(714);
    			c.teleTimer = 11;
    			c.teleGfx = 308;
    			c.teleEndAnimation = 715;
    			
    		}
    	} 
    
    	public void processTeleport() {
    		c.teleportToX = c.teleX;
    		c.teleportToY = c.teleY;
    		c.heightLevel = c.teleHeight;
    		if(c.teleEndAnimation > 0) {
    			c.startAnimation(c.teleEndAnimation);
    		}
    	}
    		
    	public void movePlayer(int x, int y, int h) {
    		c.resetWalkingQueue();
    		c.teleportToX = x;
    		c.teleportToY = y;
    		c.heightLevel = h;
    		requestUpdates();
    	}
    	
    	/**
    	* Following
    	**/
    	
    	/*public void Player() {
    		if(Server.playerHandler.players[c.followId] == null || Server.playerHandler.players[c.followId].isDead) {
    			c.getPA().resetFollow();
    			return;
    		}		
    		if(c.freezeTimer > 0) {
    			return;
    		}
    		int otherX = Server.playerHandler.players[c.followId].getX();
    		int otherY = Server.playerHandler.players[c.followId].getY();
    		boolean withinDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
    		boolean hallyDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
    		boolean bowDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 6);
    		boolean rangeWeaponDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
    		boolean sameSpot = (c.absX == otherX && c.absY == otherY);
    		if(!c.goodDistance(otherX, otherY, c.getX(), c.getY(), 25)) {
    			c.followId = 0;
    			c.getPA().resetFollow();
    			return;
    		}
    		c.faceUpdate(c.followId+32768);
    		if ((c.usingBow || c.mageFollow || c.autocastId > 0 && (c.npcIndex > 0 || c.playerIndex > 0)) && bowDistance && !sameSpot) {
    			c.stopMovement();
    			return;
    		}	
    		if (c.usingRangeWeapon && rangeWeaponDistance && !sameSpot && (c.npcIndex > 0 || c.playerIndex > 0)) {
    			c.stopMovement();
    			return;
    		}	
    		if(c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1) && !sameSpot) {
    			return;
    		}
    		c.outStream.createFrame(174);
    		boolean followPlayer = c.followId > 0;
    		if (c.freezeTimer <= 0)
    			if (followPlayer)
    				c.outStream.writeWord(c.followId);
    			else 
    				c.outStream.writeWord(c.followId2);
    		else
    			c.outStream.writeWord(0);
    		
    		if (followPlayer)
    			c.outStream.writeByte(1);
    		else
    			c.outStream.writeByte(0);
    		if (c.usingBow && c.playerIndex > 0)
    			c.followDistance = 5;
    		else if (c.usingRangeWeapon && c.playerIndex > 0)
    			c.followDistance = 3;
    		else if (c.spellId > 0 && c.playerIndex > 0)
    			c.followDistance = 5;
    		else
    			c.followDistance = 1;
    		c.outStream.writeWord(c.followDistance);
    	}*/
    	
    	public void followPlayer(int i) {
    		if(Server.playerHandler.players[c.followId] == null || Server.playerHandler.players[c.followId].isDead) {
    			c.followId = 0;
    			return;
    		}		
    		if(c.freezeTimer > 0) {
    			return;
    		}
    		if(c.inWG()) {
    			c.followId = 0;
    			return;
    		}
    		if(c.inDuelArena()) {
    			c.followId = 0;
    			return;
    		}
    		if(inPitsWait()) {
    			c.followId = 0;
    		}
    		if(c.inJail() && c.Jail == true) {
    			c.sendMessage("You cannot follow in jail!");
    			c.followId = 0;
    			return;
    		}
    		if(c.Jail == true) {
    			c.sendMessage("You cannot follow in jail!");
    			c.followId = 0;
    			return;
    		}
    		if (c.isDead || c.playerLevel[3] <= 0)
    			return;
    		
    		int otherX = Server.playerHandler.players[c.followId].getX();
    		int otherY = Server.playerHandler.players[c.followId].getY();
    		boolean withinDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
    		boolean goodDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1);
    		boolean hallyDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
    		boolean bowDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 8);
    		boolean rangeWeaponDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 4);
    		boolean sameSpot = c.absX == otherX && c.absY == otherY;
    		if(!c.goodDistance(otherX, otherY, c.getX(), c.getY(), 25)) {
    			c.followId = 0;
    			return;
    		}
    		if(c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1)) {
    			if (otherX != c.getX() && otherY != c.getY()) {
    				stopDiagonal(otherX, otherY);
    				return;
    			}
    		}
    		
    		if((c.usingBow || c.mageFollow || (c.playerIndex > 0 && c.autocastId > 0)) && bowDistance && !sameSpot) {
    			return;
    		}
    
    		if(c.getCombat().usingHally() && hallyDistance && !sameSpot) {
    			return;
    		}
    
    		if(c.usingRangeWeapon && rangeWeaponDistance && !sameSpot) {
    			return;
    		}
    		
    		c.faceUpdate(c.followId+32768);
    		
    		if (otherY == c.getY() && otherX == c.getX()) {			
    			switch(Misc.random(3))  {
    				case 0:
    				walkTo(0, getMove(c.getX(), otherX - 1));
    				break;
    				
    				case 1:
    				walkTo(0, getMove(c.getX(), otherX + 1));
    				break;
    				
    				case 2:
    				walkTo(0, getMove(c.getY(), otherY + 1));
    				break;
    				
    				case 3:
    				walkTo(0, getMove(c.getY(), otherY - 1));
    				break;
    			}
    		}		
    		if(c.isRunning2 && !withinDistance) {
    			if(otherY > c.getY() && otherX == c.getX()) {
    				walkTo(0, getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
    			} else if(otherY < c.getY() && otherX == c.getX()) {
    				walkTo(0, getMove(c.getY(), otherY + 1) + getMove(c.getY(), otherY + 1));
    			} else if(otherX > c.getX() && otherY == c.getY()) {
    				walkTo(getMove(c.getX(), otherX - 1) + getMove(c.getX(), otherX - 1), 0);
    			} else if(otherX < c.getX() && otherY == c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), 0);
    			} else if(otherX < c.getX() && otherY < c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY + 1) + getMove(c.getY(), otherY + 1));
    			} else if(otherX > c.getX() && otherY > c.getY()) {
    				walkTo(getMove(c.getX(), otherX - 1) + getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
    			} else if(otherX < c.getX() && otherY > c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
    			} else if(otherX > c.getX() && otherY < c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
    			} 		
    		} else {
    			if(otherY > c.getY() && otherX == c.getX()) {
    				walkTo(0, getMove(c.getY(), otherY - 1));
    			} else if(otherY < c.getY() && otherX == c.getX()) {
    				walkTo(0, getMove(c.getY(), otherY + 1));
    			} else if(otherX > c.getX() && otherY == c.getY()) {
    				walkTo(getMove(c.getX(), otherX - 1), 0);
    			} else if(otherX < c.getX() && otherY == c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1), 0);
    			} else if(otherX < c.getX() && otherY < c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY + 1));
    			} else if(otherX > c.getX() && otherY > c.getY()) {
    				walkTo(getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY - 1));
    			} else if(otherX < c.getX() && otherY > c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1));
    			} else if(otherX > c.getX() && otherY < c.getY()) {
    				walkTo(getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY + 1));
    			} 
    		}
    	}
    	
    	public void followNpc() {
    		if(Server.npcHandler.npcs[c.followId2] == null || Server.npcHandler.npcs[c.followId2].isDead) {
    			c.followId2 = 0;
    			return;
    		}		
    		if(c.freezeTimer > 0) {
    			return;
    		}
    		if(c.inWG()) {
    			c.followId = 0;
    			return;
    		}
    		if(c.inDuelArena()) {
    			c.followId = 0;
    			return;
    		}
    		if(c.inJail() && c.Jail == true) {
    			c.sendMessage("You cannot follow in jail!");
    			c.followId = 0;
    			return;
    		}
    		if(c.Jail == true) {
    			c.sendMessage("You cannot follow in jail!");
    			c.followId = 0;
    			return;
    		}
    		if (c.isDead || c.playerLevel[3] <= 0)
    			return;
    		
    		int otherX = Server.npcHandler.npcs[c.followId2].getX();
    		int otherY = Server.npcHandler.npcs[c.followId2].getY();
    		boolean withinDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
    		boolean goodDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1);
    		boolean hallyDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 2);
    		boolean bowDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 8);
    		boolean rangeWeaponDistance = c.goodDistance(otherX, otherY, c.getX(), c.getY(), 4);
    		boolean sameSpot = c.absX == otherX && c.absY == otherY;
    		if(!c.goodDistance(otherX, otherY, c.getX(), c.getY(), 25)) {
    			c.followId2 = 0;
    			return;
    		}
    		if(c.goodDistance(otherX, otherY, c.getX(), c.getY(), 1)) {
    			if (otherX != c.getX() && otherY != c.getY()) {
    				stopDiagonal(otherX, otherY);
    				return;
    			}
    		}
    		
    		if((c.usingBow || c.mageFollow || (c.npcIndex > 0 && c.autocastId > 0)) && bowDistance && !sameSpot) {
    			return;
    		}
    
    		if(c.getCombat().usingHally() && hallyDistance && !sameSpot) {
    			return;
    		}
    
    		if(c.usingRangeWeapon && rangeWeaponDistance && !sameSpot) {
    			return;
    		}
    		
    		c.faceUpdate(c.followId2);
    		if (otherX == c.absX && otherY == c.absY) {
    			int r = Misc.random(3);
    			switch (r) {
    				case 0:
    					walkTo(0,-1);
    				break;
    				case 1:
    					walkTo(0,1);
    				break;
    				case 2:
    					walkTo(1,0);
    				break;
    				case 3:
    					walkTo(-1,0);
    				break;			
    			}		
    		} else if(c.isRunning2 && !withinDistance) {
    			if(otherY > c.getY() && otherX == c.getX()) {
    				walkTo(0, getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
    			} else if(otherY < c.getY() && otherX == c.getX()) {
    				walkTo(0, getMove(c.getY(), otherY + 1) + getMove(c.getY(), otherY + 1));
    			} else if(otherX > c.getX() && otherY == c.getY()) {
    				walkTo(getMove(c.getX(), otherX - 1) + getMove(c.getX(), otherX - 1), 0);
    			} else if(otherX < c.getX() && otherY == c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), 0);
    			} else if(otherX < c.getX() && otherY < c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY + 1) + getMove(c.getY(), otherY + 1));
    			} else if(otherX > c.getX() && otherY > c.getY()) {
    				walkTo(getMove(c.getX(), otherX - 1) + getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
    			} else if(otherX < c.getX() && otherY > c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
    			} else if(otherX > c.getX() && otherY < c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1) + getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1) + getMove(c.getY(), otherY - 1));
    			} 
    		} else {
    			if(otherY > c.getY() && otherX == c.getX()) {
    				walkTo(0, getMove(c.getY(), otherY - 1));
    			} else if(otherY < c.getY() && otherX == c.getX()) {
    				walkTo(0, getMove(c.getY(), otherY + 1));
    			} else if(otherX > c.getX() && otherY == c.getY()) {
    				walkTo(getMove(c.getX(), otherX - 1), 0);
    			} else if(otherX < c.getX() && otherY == c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1), 0);
    			} else if(otherX < c.getX() && otherY < c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY + 1));
    			} else if(otherX > c.getX() && otherY > c.getY()) {
    				walkTo(getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY - 1));
    			} else if(otherX < c.getX() && otherY > c.getY()) {
    				walkTo(getMove(c.getX(), otherX + 1), getMove(c.getY(), otherY - 1));
    			} else if(otherX > c.getX() && otherY < c.getY()) {
    				walkTo(getMove(c.getX(), otherX - 1), getMove(c.getY(), otherY + 1));
    			} 
    		}
    		c.faceUpdate(c.followId2);
    	}
    	
    
    	
    	
    	public int getRunningMove(int i, int j) {
    		if (j - i > 2)
    			return 2;
    		else if (j - i < -2)
    			return -2;
    		else return j-i;
    	}
    	
    	public void resetFollow() {
    		c.followId = 0;
    		c.followId2 = 0;
    		c.mageFollow = false;
    		c.outStream.createFrame(174);
    		c.outStream.writeWord(0);
    		c.outStream.writeByte(0);
    		c.outStream.writeWord(1);
    	}
    	
    	public void walkTo(int i, int j) {
    		c.newWalkCmdSteps = 0;
            if(++c.newWalkCmdSteps > 50)
                c.newWalkCmdSteps = 0;
            int k = c.getX() + i;
            k -= c.mapRegionX * 8;
            c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
            int l = c.getY() + j;
            l -= c.mapRegionY * 8;
    
            for(int n = 0; n < c.newWalkCmdSteps; n++) {
                c.getNewWalkCmdX()[n] += k;
                c.getNewWalkCmdY()[n] += l;
            }
        }
    	
    	public void walkTo2(int i, int j) {
    		if (c.freezeDelay > 0)
    			return;
    		c.newWalkCmdSteps = 0;
            if(++c.newWalkCmdSteps > 50)
                c.newWalkCmdSteps = 0;
    		int k = c.getX() + i;
            k -= c.mapRegionX * 8;
            c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
            int l = c.getY() + j;
            l -= c.mapRegionY * 8;
    
            for(int n = 0; n < c.newWalkCmdSteps; n++) {
                c.getNewWalkCmdX()[n] += k;
                c.getNewWalkCmdY()[n] += l;
            }
        }
    	
    	public void stopDiagonal(int otherX, int otherY) {
    		if (c.freezeDelay > 0)
    			return;
    		c.newWalkCmdSteps = 1;
    		int xMove = otherX - c.getX();
    		int yMove = 0;
    		if (xMove == 0)
    			yMove = otherY - c.getY();
    		/*if (!clipHor) {
    			yMove = 0;
    		} else if (!clipVer) {
    			xMove = 0;	
    		}*/
    		
    		int k = c.getX() + xMove;
            k -= c.mapRegionX * 8;
            c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
            int l = c.getY() + yMove;
            l -= c.mapRegionY * 8;
    		
    		for(int n = 0; n < c.newWalkCmdSteps; n++) {
                c.getNewWalkCmdX()[n] += k;
                c.getNewWalkCmdY()[n] += l;
            }
    		
    	}
    	
    		
    	
    	public void walkToCheck(int i, int j) {
    		if (c.freezeDelay > 0)
    			return;
    		c.newWalkCmdSteps = 0;
            if(++c.newWalkCmdSteps > 50)
                c.newWalkCmdSteps = 0;
    		int k = c.getX() + i;
            k -= c.mapRegionX * 8;
            c.getNewWalkCmdX()[0] = c.getNewWalkCmdY()[0] = 0;
            int l = c.getY() + j;
            l -= c.mapRegionY * 8;
    		
    		for(int n = 0; n < c.newWalkCmdSteps; n++) {
                c.getNewWalkCmdX()[n] += k;
                c.getNewWalkCmdY()[n] += l;
            }
    	}
    	
    
    	public int getMove(int place1,int place2) {
    		if (System.currentTimeMillis() - c.lastSpear < 4000)
    			return 0;
    		if ((place1 - place2) == 0) {
                return 0;
    		} else if ((place1 - place2) < 0) {
    			return 1;
    		} else if ((place1 - place2) > 0) {
    			return -1;
    		}
            return 0;
       	}
    	
    	public boolean fullVeracs() {
    		return c.playerEquipment[c.playerHat] == 4753 && c.playerEquipment[c.playerChest] == 4757 && c.playerEquipment[c.playerLegs] == 4759 && c.playerEquipment[c.playerWeapon] == 4755;
    	}
    	public boolean fullGuthans() {
    		return c.playerEquipment[c.playerHat] == 4724 && c.playerEquipment[c.playerChest] == 4728 && c.playerEquipment[c.playerLegs] == 4730 && c.playerEquipment[c.playerWeapon] == 4726;
    	}
    	
    	/**
    	* reseting animation
    	**/
    	public void resetAnimation() {
    		c.getCombat().getPlayerAnimIndex(c.getItems().getItemName(c.playerEquipment[c.playerWeapon]).toLowerCase());
    		c.startAnimation(c.playerStandIndex);
    		requestUpdates();
    	}
    
    	public void requestUpdates() {
    		c.updateRequired = true;
    		c.setAppearanceUpdateRequired(true);
    	}
    	
    	public void handleAlt(int id) {
    		if (!c.getItems().playerHasItem(id)) {
    			c.getItems().addItem(id,1);
    		}
    	}
    	
    	public void levelUp(int skill) {
    int totalLevel = (getLevelForXP(c.playerXP[0]) + getLevelForXP(c.playerXP[1]) + getLevelForXP(c.playerXP[2]) + getLevelForXP(c.playerXP[3]) + getLevelForXP(c.playerXP[4]) + getLevelForXP(c.playerXP[5]) + getLevelForXP(c.playerXP[6]) + getLevelForXP(c.playerXP[7]) + getLevelForXP(c.playerXP[8]) + getLevelForXP(c.playerXP[9]) + getLevelForXP(c.playerXP[10]) + getLevelForXP(c.playerXP[11]) + getLevelForXP(c.playerXP[12]) + getLevelForXP(c.playerXP[13]) + getLevelForXP(c.playerXP[14]) + getLevelForXP(c.playerXP[15]) + getLevelForXP(c.playerXP[16]) + getLevelForXP(c.playerXP[17]) + getLevelForXP(c.playerXP[18]) + getLevelForXP(c.playerXP[19]) + getLevelForXP(c.playerXP[20]) + getLevelForXP(c.playerXP[21]) + getLevelForXP(c.playerXP[22]));
    		sendFrame126("Levels: "+totalLevel, 13983);
    		switch(skill) {
    			case 0:
    			sendFrame126("Congratulations, you just advanced an attack level!", 6248);
    			sendFrame126("Your attack level is now "+getLevelForXP(c.playerXP[skill])+".", 6249);
    			c.sendMessage("Congratulations, you just advanced an attack level.");	
    			c.getPA().sendFrame126("Combat Level: "+c.getCombatLevel()+"", 3983);
    			sendFrame164(6247);
    			break;
    			
    			case 1:
                sendFrame126("Congratulations, you just advanced a defence level!", 6254);
                sendFrame126("Your defence level is now "+getLevelForXP(c.playerXP[skill])+".", 6255);
                c.sendMessage("Congratulations, you just advanced a defence level.");
    			c.getPA().sendFrame126("Combat Level: "+c.getCombatLevel()+"", 3983);
    			sendFrame164(6253);
    			break;
    			
    			case 2:
                sendFrame126("Congratulations, you just advanced a strength level!", 6207);
                sendFrame126("Your strength level is now "+getLevelForXP(c.playerXP[skill])+".", 6208);
                c.sendMessage("Congratulations, you just advanced a strength level.");
    			c.getPA().sendFrame126("Combat Level: "+c.getCombatLevel()+"", 3983);
    			sendFrame164(6206);
    			break;
    			
    			case 3:
                sendFrame126("Congratulations, you just advanced a hitpoints level!", 6217);
                sendFrame126("Your hitpoints level is now "+getLevelForXP(c.playerXP[skill])+".", 6218);
                c.sendMessage("Congratulations, you just advanced a hitpoints level.");
    			c.getPA().sendFrame126("Combat Level: "+c.getCombatLevel()+"", 3983);
    			sendFrame164(6216);
    			break;
    			
    			case 4:
                sendFrame126("Congratulations, you just advanced a ranged level!", 5453);
                sendFrame126("Your ranged level is now "+getLevelForXP(c.playerXP[skill])+".", 6114);
                c.sendMessage("Congratulations, you just advanced a ranging level.");
    			c.getPA().sendFrame126("Combat Level: "+c.getCombatLevel()+"", 3983);
    			sendFrame164(4443);
    			break;
    			
    			case 5:
                sendFrame126("Congratulations, you just advanced a prayer level!", 6243);
                sendFrame126("Your prayer level is now "+getLevelForXP(c.playerXP[skill])+".", 6244);
                c.sendMessage("Congratulations, you just advanced a prayer level.");
    			c.getPA().sendFrame126("Combat Level: "+c.getCombatLevel()+"", 3983);
    			sendFrame164(6242);
    			break;
    			
    			case 6:
                sendFrame126("Congratulations, you just advanced a magic level!", 6212);
                sendFrame126("Your magic level is now "+getLevelForXP(c.playerXP[skill])+".", 6213);
                c.sendMessage("Congratulations, you just advanced a magic level.");
    			c.getPA().sendFrame126("Combat Level: "+c.getCombatLevel()+"", 3983);
    			sendFrame164(6211);
    			break;
    			
    			case 7:
                sendFrame126("Congratulations, you just advanced a cooking level!", 6227);
                sendFrame126("Your cooking level is now "+getLevelForXP(c.playerXP[skill])+".", 6228);
                c.sendMessage("Congratulations, you just advanced a cooking level.");
    			sendFrame164(6226);
    			break;
    			
    			case 8:
    			sendFrame126("Congratulations, you just advanced a woodcutting level!", 4273);
    			sendFrame126("Your woodcutting level is now "+getLevelForXP(c.playerXP[skill])+".", 4274);
    			c.sendMessage("Congratulations, you just advanced a woodcutting level.");
    			sendFrame164(4272);
                break;
    			
                case 9:
                sendFrame126("Congratulations, you just advanced a fletching level!", 6232);
                sendFrame126("Your fletching level is now "+getLevelForXP(c.playerXP[skill])+".", 6233);
                c.sendMessage("Congratulations, you just advanced a fletching level.");
    			sendFrame164(6231);
                break;
    			
    			case 10:
                sendFrame126("Congratulations, you just advanced a fishing level!", 6259);
                sendFrame126("Your fishing level is now "+getLevelForXP(c.playerXP[skill])+".", 6260);
                c.sendMessage("Congratulations, you just advanced a fishing level.");
    			sendFrame164(6258);
    			break;
    			
    			case 11:
    			sendFrame126("Congratulations, you just advanced a fire making level!", 4283);
    			sendFrame126("Your firemaking level is now "+getLevelForXP(c.playerXP[skill])+".", 4284);
    			c.sendMessage("Congratulations, you just advanced a fire making level.");
    			sendFrame164(4282);
                break;
    			
                case 12:
    			sendFrame126("Congratulations, you just advanced a crafting level!", 6264);
    			sendFrame126("Your crafting level is now "+getLevelForXP(c.playerXP[skill])+".", 6265);
    			c.sendMessage("Congratulations, you just advanced a crafting level.");
    			sendFrame164(6263);
                break;
    			
    			case 13:
    			sendFrame126("Congratulations, you just advanced a smithing level!", 6222);
    			sendFrame126("Your smithing level is now "+getLevelForXP(c.playerXP[skill])+".", 6223);
    			c.sendMessage("Congratulations, you just advanced a smithing level.");
    			sendFrame164(6221);
    			break;
    			
    			case 14:
    			sendFrame126("Congratulations, you just advanced a mining level!", 4417);
    			sendFrame126("Your mining level is now "+getLevelForXP(c.playerXP[skill])+".", 4438);
    			c.sendMessage("Congratulations, you just advanced a mining level.");
    			sendFrame164(4416);
                break;
    			
    			case 15:
                sendFrame126("Congratulations, you just advanced a herblore level!", 6238);
                sendFrame126("Your herblore level is now "+getLevelForXP(c.playerXP[skill])+".", 6239);
                c.sendMessage("Congratulations, you just advanced a herblore level.");
    			sendFrame164(6237);
                break;
    			
    			case 16:
    			sendFrame126("Congratulations, you just advanced a agility level!", 4278);
    			sendFrame126("Your agility level is now "+getLevelForXP(c.playerXP[skill])+".", 4279);
    			c.sendMessage("Congratulations, you just advanced an agility level.");
    			sendFrame164(4277);
                break;
    			
    			case 17:
    			sendFrame126("Congratulations, you just advanced a thieving level!", 4263);
    			sendFrame126("Your theiving level is now "+getLevelForXP(c.playerXP[skill])+".", 4264);
                c.sendMessage("Congratulations, you just advanced a thieving level.");
    			sendFrame164(4261);
    			break;
    			
    			case 18:
    			sendFrame126("Congratulations, you just advanced a slayer level!", 12123);
    			sendFrame126("Your slayer level is now "+getLevelForXP(c.playerXP[skill])+".", 12124);
    			c.sendMessage("Congratulations, you just advanced a slayer level.");
    			sendFrame164(12122);
                break;
                
                case 20:
    			sendFrame126("Congratulations, you just advanced a runecrafting level!", 4268);
    			sendFrame126("Your runecrafting level is now "+getLevelForXP(c.playerXP[skill])+".", 4269);
    			c.sendMessage("Congratulations, you just advanced a runecrafting level.");
    			sendFrame164(4267);
                break;
    			
    			case 21:
    			c.sendMessage("Congratulations, you just advanced a hunter level!");
    			c.sendMessage("Your hunter level is now "+getLevelForXP(c.playerXP[skill])+".");
                break;
    			
    case 22:
    sendFrame126("Congratulations, you just advanced a Summoning level!", 4268);
    			sendFrame126("Your Summoning level is now "+getLevelForXP(c.playerXP[skill])+".", 4269);
    			c.sendMessage("Congratulations, you just advanced a Summoning level.");
    			sendFrame164(4267);
    break;
    		}
    		c.dialogueAction = 0;
    		c.nextChat = 0;
    	}
    	
    	public void refreshSkill(int i) {
    		switch (i) {
    			case 0:
    			sendFrame126("" + c.playerLevel[0] + "", 4004);
    			sendFrame126("" + getLevelForXP(c.playerXP[0]) + "", 4005);
    			sendFrame126("" + c.playerXP[0] + "", 4044);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[0]) + 1) + "", 4045);
    			break;
    			
    			case 1:
    			sendFrame126("" + c.playerLevel[1] + "", 4008);
    			sendFrame126("" + getLevelForXP(c.playerXP[1]) + "", 4009);
    			sendFrame126("" + c.playerXP[1] + "", 4056);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[1]) + 1) + "", 4057);
    			break;
    			
    			case 2:
    			sendFrame126("" + c.playerLevel[2] + "", 4006);
    			sendFrame126("" + getLevelForXP(c.playerXP[2]) + "", 4007);
    			sendFrame126("" + c.playerXP[2] + "", 4050);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[2]) + 1) + "", 4051);
    			break;
    			
    			case 3:
    			sendFrame126("" + c.playerLevel[3] + "", 4016);
    			sendFrame126("" + getLevelForXP(c.playerXP[3]) + "", 4017);
    			sendFrame126("" + c.playerXP[3] + "", 4080);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[3])+1) + "", 4081);
    			break;
    			
    			case 4:
    			sendFrame126("" + c.playerLevel[4] + "", 4010);
    			sendFrame126("" + getLevelForXP(c.playerXP[4]) + "", 4011);
    			sendFrame126("" + c.playerXP[4] + "", 4062);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[4]) + 1) + "", 4063);
    			break;
    			
    			case 5:
    			sendFrame126("" + c.playerLevel[5] + "", 4012);
    			sendFrame126("" + getLevelForXP(c.playerXP[5]) + "", 4013);
    			sendFrame126("" + c.playerXP[5] + "", 4068);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[5]) + 1) + "", 4069);
    			sendFrame126("" +c.playerLevel[5]+"/"+getLevelForXP(c.playerXP[5])+"", 687);//Prayer frame
    			break;
    			
    			case 6:
    			sendFrame126("" + c.playerLevel[6] + "", 4014);
    			sendFrame126("" + getLevelForXP(c.playerXP[6]) + "", 4015);
    			sendFrame126("" + c.playerXP[6] + "", 4074);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[6]) + 1) + "", 4075);
    			break;
    			
    			case 7:
    			sendFrame126("" + c.playerLevel[7] + "", 4034);
    			sendFrame126("" + getLevelForXP(c.playerXP[7]) + "", 4035);
    			sendFrame126("" + c.playerXP[7] + "", 4134);
    			sendFrame126("" +getXPForLevel(getLevelForXP(c.playerXP[7]) + 1) + "", 4135);
    			break;
    			
    			case 8:
    			sendFrame126("" + c.playerLevel[8] + "", 4038);
    			sendFrame126("" + getLevelForXP(c.playerXP[8]) + "", 4039);
    			sendFrame126("" + c.playerXP[8] + "", 4146);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[8]) + 1) + "", 4147);
    			break;
    			
    			case 9:
    			sendFrame126("" + c.playerLevel[9] + "", 4026);
    			sendFrame126("" + getLevelForXP(c.playerXP[9]) + "", 4027);
    			sendFrame126("" + c.playerXP[9] + "", 4110);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[9]) + 1) + "", 4111);
    			break;
    			
    			case 10:
    			sendFrame126("" + c.playerLevel[10] + "", 4032);
    			sendFrame126("" + getLevelForXP(c.playerXP[10]) + "", 4033);
    			sendFrame126("" + c.playerXP[10] + "", 4128);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[10]) + 1) + "", 4129);
    			break;
    			
    			case 11:
    			sendFrame126("" + c.playerLevel[11] + "", 4036);
    			sendFrame126("" + getLevelForXP(c.playerXP[11]) + "", 4037);
    			sendFrame126("" + c.playerXP[11] + "", 4140);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[11]) + 1) + "", 4141);
    			break;
    			
    			case 12:
    			sendFrame126("" + c.playerLevel[12] + "", 4024);
    			sendFrame126("" + getLevelForXP(c.playerXP[12]) + "", 4025);
    			sendFrame126("" + c.playerXP[12] + "", 4104);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[12]) + 1) + "", 4105);
    			break;
    			
    			case 13:
    			sendFrame126("" + c.playerLevel[13] + "", 4030);
    			sendFrame126("" + getLevelForXP(c.playerXP[13]) + "", 4031);
    			sendFrame126("" + c.playerXP[13] + "", 4122);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[13]) + 1) + "", 4123);
    			break;
    			
    			case 14:
    			sendFrame126("" + c.playerLevel[14] + "", 4028);
    			sendFrame126("" + getLevelForXP(c.playerXP[14]) + "", 4029);
    			sendFrame126("" + c.playerXP[14] + "", 4116);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[14]) + 1)+ "", 4117);
    			break;
    			
    			case 15:
    			sendFrame126("" + c.playerLevel[15] + "", 4020);
    			sendFrame126("" + getLevelForXP(c.playerXP[15]) + "", 4021);
    			sendFrame126("" + c.playerXP[15] + "", 4092);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[15]) + 1) + "", 4093);
    			break;
    			
    			case 16:
    			sendFrame126("" + c.playerLevel[16] + "", 4018);
    			sendFrame126("" + getLevelForXP(c.playerXP[16]) + "", 4019);
    			sendFrame126("" + c.playerXP[16] + "", 4086);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[16]) + 1) + "", 4087);
    			break;
    			
    			case 17:
    			sendFrame126("" + c.playerLevel[17] + "", 4022);
    			sendFrame126("" + getLevelForXP(c.playerXP[17]) + "", 4023);
    			sendFrame126("" + c.playerXP[17] + "", 4098);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[17]) + 1) + "", 4099);
    			break;
    			
    			case 18:
    			sendFrame126("" + c.playerLevel[18] + "", 12166);
    			sendFrame126("" + getLevelForXP(c.playerXP[18]) + "", 12167);
    			sendFrame126("" + c.playerXP[18] + "", 12171);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[18]) + 1) + "", 12172);
    			break;
    			
    			case 19:
    			sendFrame126("" + c.playerLevel[19] + "", 13926);
    			sendFrame126("" + getLevelForXP(c.playerXP[19]) + "", 13927);
    			sendFrame126("" + c.playerXP[19] + "", 13921);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[19]) + 1) + "", 13922);
    			break;
    			
    			case 20:
    			sendFrame126("" + c.playerLevel[20] + "", 4152);
    			sendFrame126("" + getLevelForXP(c.playerXP[20]) + "", 4153);
    			sendFrame126("" + c.playerXP[20] + "", 4157);
    			sendFrame126("" + getXPForLevel(getLevelForXP(c.playerXP[20]) + 1) + "", 4158);
    			break;
    			
    	case 21:
    	sendFrame126("" + c.playerLevel[21] + "", 29800); //hunter
    	break;
    	
    	case 22:
    	sendFrame126("" + c.playerLevel[22] + "", 29801); //summoning
    	break;
    		}
    	}
    	
    	public int getXPForLevel(int level) {
    		int points = 0;
    		int output = 0;
    
    		for (int lvl = 1; lvl <= level; lvl++) {
    			points += Math.floor((double)lvl + 300.0 * Math.pow(2.0, (double)lvl / 7.0));
    			if (lvl >= level)
    				return output;
    			output = (int)Math.floor(points / 4);
    		}
    		return 0;
    	}
    
    	public int getLevelForXP(int exp) {
    		int points = 0;
    		int output = 0;
    		if (exp > 13034430)
    			return 99;
    		for (int lvl = 1; lvl <= 99; lvl++) {
    			points += Math.floor((double) lvl + 300.0
    					* Math.pow(2.0, (double) lvl / 7.0));
    			output = (int) Math.floor(points / 4);
    			if (output >= exp) {
    				return lvl;
    			}
    		}
    		return 0;
    	}
    	
    	public boolean addSkillXP(int amount, int skill){
    if (c.xpLock == true || c.Jail == true) {
        return false;
    }
    		if (amount+c.playerXP[skill] < 0 || c.playerXP[skill] > 200000000) {
    			if(c.playerXP[skill] > 200000000) {
    				c.playerXP[skill] = 200000000;
    			}
    			return false;
    		}
    		amount *= Config.SERVER_EXP_BONUS;
    		int oldLevel = getLevelForXP(c.playerXP[skill]);
    		c.playerXP[skill] += amount;
    		if (oldLevel < getLevelForXP(c.playerXP[skill])) {
    			if (c.playerLevel[skill] < c.getLevelForXP(c.playerXP[skill]) && skill != 3 && skill != 5)
    				c.playerLevel[skill] = c.getLevelForXP(c.playerXP[skill]);
    			levelUp(skill);
    			c.gfx100(199);
    			requestUpdates();
    		}
    		setSkillLevel(skill, c.playerLevel[skill], c.playerXP[skill]);
    		refreshSkill(skill);
    		return true;
    	}
    
    
    	public void resetBarrows() {
    		c.barrowsNpcs[0][1] = 0;
    		c.barrowsNpcs[1][1] = 0;
    		c.barrowsNpcs[2][1] = 0;
    		c.barrowsNpcs[3][1] = 0;
    		c.barrowsNpcs[4][1] = 0;
    		c.barrowsNpcs[5][1] = 0;
    		c.barrowsKillCount = 0;
    		c.randomCoffin = Misc.random(3) + 1;
    	}
    	
    	public static int Barrows[] = {4708, 4710, 4712, 4714, 4716, 4718, 4720, 4722, 4724, 4726, 4728, 4730, 4732, 4734, 4736, 4738, 4745, 4747, 4749, 4751, 4753, 4755, 4757, 4759};
    	public static int Crystal[] = {11257,11257,11257,11286,10939,10939,11686,11732,14499,11235,11128,10939,10940,10941,10862,10858,10828,10828,10825,10802,10796,10772,10770,10768,10766,10764,10762,10760,10758,10756,10754,10752,10750,10748,10742,10736,10732,10728,10727,10726,10725,10724,10722,10721,10718,10717,10716,10715,10714,10713,10712,10710,10708,10707,10705,10703,10702,10700,10696,10694,10693,10689,10688,10679,10678,10677,10676,10675,10674,10673,10672,10671,10670,10669,10668,10667,10666,10665,10664,10663,10654,10635,10633,10632,10631,10630,10629,10628,10627,10626,10625,10624,10623,10622,10621,10612,10604,10555,10552,10551,10550,10549,10548,10547,10400,10402,10404,10406,10408,10410,10412,104014,10416,10418,10420,10422,10424,10426,10428,10430,10432,10434,10436,10438,10344,10346,10077,10079,10081,10083,10085,10067,10063,10059,10055,10047,10045,10041,10039,10035,10023,9813,9814,9790,9789,9678,9676,9674,9672,9629,9097,9098,9099,9100,9084,9044,8971,8970,8969,8968,8967,8966,8965,8964,8963,8962,8961,8960,8959,8958,8957,8956,8955,8954,8953,8952,8950,8856,8650,8652,8654,8656,8658,8660,8662,8664,8666,8668,8670,8672,8674,8676,8678,8680,7809,7808,7807,7806,7804,7803,7668,6733,4151,2528,2528,2528,2528,2528,2528};
    	public static int Runes[] = {4740,558,560,565};
    	public static int Pots[] = {};
    	public static int arti[] = {14876, 14877, 14878, 14879, 14880, 14881, 14882, 14883, 14884, 14885, 14886, 14887, 14888, 14889, 14890, 14891, 14892};
    	
    	public int randomBarrows() {
    		return Barrows[(int)(Math.random()*Barrows.length)];
    	}
    	
    	public int randomCrystal() {
    	return Crystal[(int) (Math.random()*Crystal.length)];
    	}
    
    
    	public int randomRunes() {
    		return Runes[(int) (Math.random()*Runes.length)];
    	}
    	
    	public int randomPots() {
    		return Pots[(int) (Math.random()*Pots.length)];
    	}
    	/**
    	 * Show an arrow icon on the selected player.
    	 * @Param i - Either 0 or 1; 1 is arrow, 0 is none.
    	 * @Param j - The player/Npc that the arrow will be displayed above.
    	 * @Param k - Keep this set as 0
    	 * @Param l - Keep this set as 0
    	 */
    	public void drawHeadicon(int i, int j, int k, int l) {
    			c.outStream.createFrame(254);
    			c.outStream.writeByte(i);
    	
    			if (i == 1 || i == 10) {
    				c.outStream.writeWord(j);
    				c.outStream.writeWord(k);
    				c.outStream.writeByte(l);
    			} else {
    				c.outStream.writeWord(k);
    				c.outStream.writeWord(l);
    				c.outStream.writeByte(j);
    			}
    	}
    	
    	public int getNpcId(int id) {
    		for(int i = 0; i < NPCHandler.maxNPCs; i++) {
    			if(NPCHandler.npcs[i] != null) {
    				if(Server.npcHandler.npcs[i].npcId == id) {
    					return i;
    				}
    			}
    		}
    		return -1;
    	}
    	
    	public void removeObject(int x, int y) {
    		object(-1, x, x, 10, 10);
    	}
    	
    	private void objectToRemove(int X, int Y) {
    		object(-1, X, Y, 10, 10);
    	}
    
    	private void objectToRemove2(int X, int Y) {
    		object(-1, X, Y, -1, 0);
    	}
    	
    	public void removeObjects() {
    		objectToRemove2(2638, 4688);
    		objectToRemove(2638, 4688);
    		objectToRemove(2844, 3440);
    		objectToRemove(2846, 3437);
    		objectToRemove(2840, 3439);
    		objectToRemove(2841, 3443);
    		objectToRemove2(2635, 4693);
    		objectToRemove2(2634, 4693);
    		objectToRemove2(2794, 9327);
    		objectToRemove(3206, 3263);
    		objectToRemove(3193, 3274);
    		objectToRemove(3193, 3273);
    	}
    	
    	
    	public void handleGlory(int gloryId) {
    		c.getDH().sendOption4("Edgeville", "Al Kharid", "Karamja", "Mage Bank");
    		c.usingGlory = true;
    	}
    	
    	public void resetVariables() {
    		c.getCrafting().resetCrafting();
    		c.usingGlory = false;
    		c.smeltInterface = false;
    		c.smeltType = 0;
    		c.smeltAmount = 0;
    		c.woodcut[0] = c.woodcut[1] = c.woodcut[2] = 0;
    		c.mining[0] = c.mining[1] = c.mining[2] = 0;
    	}
    	
    	public boolean inPitsWait() {
    		return c.getX() <= 2404 && c.getX() >= 2394 && c.getY() <= 5175 && c.getY() >= 5169;
    	}
    	
    	public void castleWarsObjects() {
    		object(-1, 2373, 3119, -3, 10);
    		object(-1, 2372, 3119, -3, 10);
    	}
    	
    	public void removeFromCW() {
    		if (c.castleWarsTeam == 1) {
    			if (c.inCwWait) {
    				Server.castleWars.saradominWait.remove(Server.castleWars.saradominWait.indexOf(c.playerId));
    			} else {
    				Server.castleWars.saradomin.remove(Server.castleWars.saradomin.indexOf(c.playerId));
    			}
    		} else if (c.castleWarsTeam == 2) {
    			if (c.inCwWait) {
    				Server.castleWars.zamorakWait.remove(Server.castleWars.zamorakWait.indexOf(c.playerId));
    			} else {
    				Server.castleWars.zamorak.remove(Server.castleWars.zamorak.indexOf(c.playerId));
    			}		
    		}
    	}
    	
    public int antiFire() {
    		int toReturn = 0;
    		if (c.antiFirePot)
    			toReturn++;
    		if (c.playerEquipment[c.playerShield] == 1540 || c.prayerActive[12] || c.playerEquipment[c.playerShield] == 11284 || c.playerEquipment[c.playerShield] == 11283)
    			toReturn++;
    		c.getCombat().addCharge(c);
    		return toReturn;	
    	}
    	
    	public int backupInvItems[] = new int[28];
    	public int backupInvItemsN[] = new int[28];
    	
    	public void otherInv(Client c, Client o) {
    		if(o == c || o == null || c == null)
    		{
    		return;
    		}
    
    		for (int i = 0; i < o.playerItems.length; i++)
    		{
    			backupInvItems[i] = c.playerItems[i]; c.playerItemsN[i] = c.playerItemsN[i];
    			c.playerItemsN[i] = o.playerItemsN[i]; c.playerItems[i] = o.playerItems[i];
    		}
    		
    		c.getItems().updateInventory();
    		
    		for (int i = 0; i < o.playerItems.length; i++)
    		{
    		c.playerItemsN[i] = backupInvItemsN[i]; c.playerItems[i] = backupInvItems[i];
    		}
    	}
    	
    	public boolean checkForFlags() {
    		int[][] itemsToCheck = {{995,100000000},{35,5},{667,5},{2402,5},{746,5},{4151,150},{565,100000},{560,100000},{555,300000},{11235,10}};
    		for (int j = 0; j < itemsToCheck.length; j++) {
    			if (itemsToCheck[j][1] < c.getItems().getTotalCount(itemsToCheck[j][0]))
    				return true;		
    		}
    		return false;
    	}
    	
    public void addStarter() {
    		c.trade11 = 0;
    		c.getItems().addItem(995,10000000);
    		c.getItems().addItem(1725, 1);
    		c.getItems().addItem(554,300);
    		c.getItems().addItem(555,300);
    		c.getItems().addItem(556,300);
    		c.getItems().addItem(558,300);
    		c.getItems().addItem(560,300);
    		c.getItems().addItem(565,300);
    		c.getItems().addItem(1323,1);
    		c.getItems().addItem(841,1);
    		c.getItems().addItem(882,150);
    		c.getItems().addItem(380,225);
    		c.getItems().addItem(542,1);
    		c.getItems().addItem(544,1);
    		c.getItems().addItem(4413,1);
    		c.getItems().addItem(6106,1);
    c.sendMessage("<col=132>Welcome to Ventrix!<col=132>");
    c.sendMessage("If you are new do <col=132>::rules<col=132> and then do <col=132>::commands<col=132>");
    c.sendMessage("<col=132>Trading and fishing is now Coded!!<col=132>");
    				c.getPA().showInterface(17250);
    				c.canChangeAppearance = true;
    	}
    	
    	public int getWearingAmount() {
    		int count = 0;
    		for (int j = 0; j < c.playerEquipment.length; j++) {
    			if (c.playerEquipment[j] > 0)
    				count++;		
    		}
    		return count;
    	}
    	
    public void useOperate(int itemId) {
    		switch (itemId) {
    			case 1712:
    			case 1710:
    			case 1708:
    			case 1706:
    			handleGlory(itemId);
    			break;
    			case 11283:
    			case 11284:
    				c.sendMessage("Your shield has "+c.dfsCount+" charges");
    			if (c.playerIndex > 0) {
    				c.getCombat().handleDfs();				
    			} else if (c.npcIndex > 0) {
    				c.getCombat().handleDfsNPC();
    			}
    			break;	
    		}
    	}
    	
    	public void getSpeared(int otherX, int otherY) {
    		int x = c.absX - otherX;
    		int y = c.absY - otherY;
    		if (x > 0)
    			x = 1;
    		else if (x < 0)
    			x = -1;
    		if (y > 0)
    			y = 1;
    		else if (y < 0)
    			y = -1;
    		moveCheck(x,y);
    		c.lastSpear = System.currentTimeMillis();
    	}
    	
    	public void moveCheck(int xMove, int yMove) {	
    		movePlayer(c.absX + xMove, c.absY + yMove, c.heightLevel);
    	}
    	
    	public int findKiller() {
    		int killer = c.playerId;
    		int damage = 0;
    		for (int j = 0; j < Config.MAX_PLAYERS; j++) {
    			if (PlayerHandler.players[j] == null)
    				continue;
    			if (j == c.playerId)
    				continue;
    			if (c.goodDistance(c.absX, c.absY, PlayerHandler.players[j].absX, PlayerHandler.players[j].absY, 40) 
    				|| c.goodDistance(c.absX, c.absY + 9400, PlayerHandler.players[j].absX, PlayerHandler.players[j].absY, 40)
    				|| c.goodDistance(c.absX, c.absY, PlayerHandler.players[j].absX, PlayerHandler.players[j].absY + 9400, 40))
    				if (c.damageTaken[j] > damage) {
    					damage = c.damageTaken[j];
    					killer = j;
    				}
    		}
    		return killer;
    	}
    	
    	public void resetTzhaar() {
    		c.waveId = -1;
    		c.tzhaarToKill = -1;
    		c.tzhaarKilled = -1;	
    		c.getPA().movePlayer(3087,3498,0);
    	}
    
    	public void resetRFD() {
    		c.waveId = -1;
    		c.RFDToKill = -1;
    		c.RFDKilled = -1;	
    		c.getPA().movePlayer(3091,3486,0);
    	}
    
    	public void enterRFD() {
    			if (c.Culin == true) {
    			c.sendMessage("You have already finished this minigame!");
    			return;
    			}
    			if (c.Agrith == true && c.Flambeed == false) {
    			c.waveId = 1;
    			c.getPA().movePlayer(1899,5363, c.playerId * 4+2);
    		Server.rfd.spawnNextWave(c);
    		return;
    			} 
    		if(c.Flambeed == true && c.Karamel == false) {
    			c.waveId = 2;
    			c.getPA().movePlayer(1899,5363, c.playerId * 4+2);
    		Server.rfd.spawnNextWave(c);
    		return;
    			} 
    		if(c.Karamel == true && c.Dessourt == false) {
    			c.waveId = 3;
    			c.getPA().movePlayer(1899,5363, c.playerId * 4+2);
    		Server.rfd.spawnNextWave(c);
    		return;
    			} 
    		if(c.Dessourt == true && c.Culin == false) {
    			c.waveId = 4;
    			c.getPA().movePlayer(1899,5363, c.playerId * 4+2);
    		Server.rfd.spawnNextWave(c);
    			return;
    			} 
    			if (c.Agrith == false) {
    			c.getPA().movePlayer(1899,5363, c.playerId * 4+2);
    		c.waveId = 0;
    		c.RFDToKill = -1;
    		c.RFDKilled = -1;
    		Server.rfd.spawnNextWave(c);
    	}
    	}
    	
    	public void enterCaves() {
    		c.getPA().movePlayer(2413,5117, c.playerId * 4);
    		c.waveId = 0;
    		c.tzhaarToKill = -1;
    		c.tzhaarKilled = -1;
    		Server.fightCaves.spawnNextWave(c);
    		c.jadSpawn();
    	}
    	
    	public void appendPoison(int damage) {
    		if (System.currentTimeMillis() - c.lastPoisonSip > c.poisonImmune) {
    			c.sendMessage("You have been poisoned very badly .");
    			c.poisonDamage = damage;
    		}	
    	}
    	
    	public boolean checkForPlayer(int x, int y) {
    		for (Player p : PlayerHandler.players) {
    			if (p != null) {
    				if (p.getX() == x && p.getY() == y)
    					return true;
    			}	
    		}
    		return false;	
    	}
    	
    	public void checkPouch(int i) {
    		if (i < 0)
    			return;
    		c.sendMessage("This pouch has " + c.pouches[i] + " rune ess in it.");		
    	}
    	
    	public void fillPouch(int i) {
    		if (i < 0)
    			return;
    		int toAdd = c.POUCH_SIZE[i] - c.pouches[i];
    		if (toAdd > c.getItems().getItemAmount(1436)) {
    			toAdd = c.getItems().getItemAmount(1436);
    		}
    		if (toAdd > c.POUCH_SIZE[i] - c.pouches[i])
    			toAdd = c.POUCH_SIZE[i] - c.pouches[i];
    		if (toAdd > 0) {
    			c.getItems().deleteItem(1436, toAdd);
    			c.pouches[i] += toAdd;
    		}		
    	}
    	
    	public void emptyPouch(int i) {
    		if (i < 0)
    			return;
    		int toAdd = c.pouches[i];
    		if (toAdd > c.getItems().freeSlots()) {
    			toAdd = c.getItems().freeSlots();
    		}
    		if (toAdd > 0) {
    			c.getItems().addItem(1436, toAdd);
    			c.pouches[i] -= toAdd;
    		}		
    	}
    	
    	public void fixAllBarrows() {
    		int totalCost = 0;
    		int cashAmount = c.getItems().getItemAmount(995);
    		for (int j = 0; j < c.playerItems.length; j++) {
    			boolean breakOut = false;
    			for (int i = 0; i < c.getItems().brokenBarrows.length; i++) {
    				if (c.playerItems[j]-1 == c.getItems().brokenBarrows[i][1]) {					
    					if (totalCost + 80000 > cashAmount) {
    						breakOut = true;
    						c.sendMessage("You have run out of money.");
    						break;
    					} else {
    						totalCost += 80000;
    					}
    					c.playerItems[j] = c.getItems().brokenBarrows[i][0]+1;
    				}		
    			}
    			if (breakOut)		
    				break;
    		}
    		if (totalCost > 0)
    			c.getItems().deleteItem(995, c.getItems().getItemSlot(995), totalCost);		
    	}
    	
    	public void handleLoginText() {
    		c.getPA().sendFrame126("Monster Teleport", 13037);
    		c.getPA().sendFrame126("Minigame Teleport", 13047);
    		c.getPA().sendFrame126("Boss Teleport", 13055);
    		c.getPA().sendFrame126("Pking Teleport", 13063);
    		c.getPA().sendFrame126("Skill Teleport", 13071);
    		c.getPA().sendFrame126("Monster Teleport", 1300);
    		c.getPA().sendFrame126("Minigame Teleport", 1325);
    		c.getPA().sendFrame126("Boss Teleport", 1350);
    		c.getPA().sendFrame126("Pking Teleport", 1382);
    		c.getPA().sendFrame126("Skill Teleport", 1415);
    		c.getPA().sendFrame126("City Teleport", 1454);	
    		c.getPA().sendFrame126("Agility And Hunter", 7457);
    		c.getPA().sendFrame126("Coming Soon (3)", 13097);
    		c.getPA().sendFrame126("Agility And Hunter", 13089);
    		c.getPA().sendFrame126("City Teleport", 13081);
       	}
    			public void dungemote(final Client c) {
    			    EventManager.getSingleton().addEvent(new Event() {
    				int dungtime = 16;
    				 public void execute(EventContainer dung) {
    				   if (dungtime == 16) {
    				       c.gfx0(2442);
    					c.startAnimation(13190);
    				    }
    				   if (dungtime == 15) {
    					c.npcId2 = 11228;
    					 c.isNpc = true;
    					 c.updateRequired = true;
    					c.appearanceUpdateRequired = true;
    					c.startAnimation(13192);
    				    }
    				   if (dungtime == 10) {
    					c.npcId2 = 11227;
    					 c.isNpc = true;
    					 c.updateRequired = true;
    					c.appearanceUpdateRequired = true;
    					c.startAnimation(13193);
    				    }
    				   if (dungtime == 6) {
    				       c.gfx0(2442);
    				    }
    				   if (dungtime == 5) {
    					c.npcId2 = 11229;
    					 c.updateRequired = true;
    					c.appearanceUpdateRequired = true;
    					c.startAnimation(13194);
    				    }
    				   if (dungtime == 0) {
    					c.isNpc = false;
    					 c.updateRequired = true;
    					c.appearanceUpdateRequired = true;
    				    }
    				   if (c == null || dungtime <= 0) {
    				       dung.stop();
                                                                             return; 
    				    }
    				   if (dungtime >= 0) {
    					dungtime--;
    				    }
    				}
    			    }, 600);
    			}
    	
    	public void handleWeaponStyle() {
    		if (c.fightMode == 0) {
    			c.getPA().sendFrame36(43, c.fightMode);
    		} else if (c.fightMode == 1) {
    			c.getPA().sendFrame36(43, 3);
    		} else if (c.fightMode == 2) {
    			c.getPA().sendFrame36(43, 1);
    		} else if (c.fightMode == 3) {
    			c.getPA().sendFrame36(43, 2);
    		}
    	}
    	
    	
    	
    }
    ╠╬╣
    ╦╦
    ╠╬╬╬╣
    ╠╬╬╬╬╬╬╣
    ╠╬╬╬╬╬╬╣
    ╚╩╩╩╩╩╩╝
    ╠╬╬╬╣

    Reply With Quote  
     

  4. #4  
    Registered Member
    Join Date
    Jul 2012
    Posts
    902
    Thanks given
    66
    Thanks received
    85
    Rep Power
    0
    this is what you did wrong
    Code:
    if((c.playerRights == 2 && Config.ADMIN_DROP_ITEMS)||c.playerRights ==0||c.playerRights ==1||c.playerRights ==4) {
    should be that
    Reply With Quote  
     

  5. #5  
    Registered Member
    Join Date
    Aug 2009
    Posts
    630
    Thanks given
    79
    Thanks received
    24
    Rep Power
    52
    add something like this in PlayerAssis

    Code:
    	public boolean isInPVP() {		
    		if(absX >= 3194 && absX <= 3251 && absY >= 3190 && absY <= 3288 || absX <= 2777 && absX >= 2674 && absY <= 3520 && absY >= 3467 || absX >= 2935 && absX <= 3061 && absY >= 3302 && absY <= 3395) {
    			return true;
    		}
    		return false;
    	}
    	public boolean isInPVPSafe() {		
    		if(absX >= 3200 && absX <= 3230 && absY >= 3200 && absY <= 3234 || absX >= 2724 && absX <= 2727 && absY >= 3487 && absY <=3489 || absX >= 2721 && absX <= 2730 && absY >= 3490 && absY <= 3493 || absX <= 2949 && absX >= 2943 && absY >= 3368 && absY <= 3367 || absX >= 2943 && absX <= 2947 && absY >= 3370 && absY <= 3373 || absX >= 3009 && absX <= 3018 && absY >= 3355 && absY <= 3358) {
    			return true;
    		}
    		return false;
    	}
    then in give life add this

    Code:
    				if(isinPVP()) {
    					if(!c.isSkulled) {	// not sure u do with skull or not
    						c.getItems().keepItem(0, true);
    						c.getItems().keepItem(1, true);	
    						c.getItems().keepItem(2, true);
    					}	
    					if(c.prayerActive[10] && System.currentTimeMillis() - c.lastProtItem > 700) {
    						c.getItems().keepItem(3, true);
    					}
    }
    Reply With Quote  
     

  6. #6  
    Registered Member
    Join Date
    Jul 2012
    Posts
    902
    Thanks given
    66
    Thanks received
    85
    Rep Power
    0
    he already has the code... why add it again?
    Reply With Quote  
     

  7. #7  
    Software Engineer

    OogleBoogle's Avatar
    Join Date
    Apr 2012
    Age
    22
    Posts
    3,881
    Thanks given
    575
    Thanks received
    488
    Discord
    View profile
    Rep Power
    266
    Quote Originally Posted by Raverz View Post
    this is what you did wrong
    Code:
    if((c.playerRights == 2 && Config.ADMIN_DROP_ITEMS)||c.playerRights ==0||c.playerRights ==1||c.playerRights ==4) {
    should be that
    Thanks this worked =) Sorry for late reply.
    ╠╬╣
    ╦╦
    ╠╬╬╬╣
    ╠╬╬╬╬╬╬╣
    ╠╬╬╬╬╬╬╣
    ╚╩╩╩╩╩╩╝
    ╠╬╬╬╣

    Reply With Quote  
     

  8. #8  
    Registered Member
    Join Date
    Jul 2013
    Posts
    139
    Thanks given
    3
    Thanks received
    2
    Rep Power
    11
    for me no.
    [Only registered and activated users can see links. ]
    Reply With Quote  
     


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. 667/711 player inventory drop fix
    By Monum3ntal in forum Help
    Replies: 9
    Last Post: 04-16-2016, 02:15 AM
  2. [No-Doze] Player vs. Player Item Dropping Fix
    By Mikey` in forum Snippets
    Replies: 7
    Last Post: 11-11-2011, 09:14 PM
  3. Cheap fix for the player saving in PI/hybrid PvP
    By wildernessX in forum Snippets
    Replies: 9
    Last Post: 06-26-2011, 07:10 PM
  4. Player who hit most, gets drop.
    By Tzar in forum Help
    Replies: 42
    Last Post: 09-10-2010, 10:52 PM
  5. Hotyute's Player Drop Null fix!
    By Soulevoker in forum Snippets
    Replies: 24
    Last Post: 03-03-2009, 04:18 AM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •