public void enterChannel(Player p, string owner) {
		    if (p.getClan() != null) {
			    return;
		    }
		    p.getPackets().sendMessage("Attempting to join channel...:clan:");
		    if (owner.Equals(p.getLoginDetails().getUsername())) {
			    Clan newClan = new Clan(p, owner, owner);
			    addChannel(newClan);
		    }
            Event enterChannelEvent = new Event(700);
            enterChannelEvent.setAction(() => {
				enterChannelEvent.stop();
				foreach(Clan c in clans) {
					if (c != null) {
						if (c.getClanOwner().Equals(owner)) {
							if(c.getUserList().Count >= 100) {
								p.getPackets().sendMessage("The channel is full.");
								return;
							}
							if (!owner.Equals(p.getLoginDetails().getUsername())) {
								if (c.getEnterRights() != Clan.ClanRank.NO_RANK) {
									if (c.getEnterRights() == Clan.ClanRank.FRIEND) {
										if (!c.isFriendOfOwner(p) && !c.userHasRank(p.getLoginDetails().getUsername())) {
											p.getPackets().sendMessage("You do not have a high enough rank to enter this clan chat.");
											return;
										}
									} else {
										bool canEnter = true;
										foreach (KeyValuePair<string, Clan.ClanRank> u in c.getUsersWithRank()) {
											if(u.Key.Equals(p.getLoginDetails().getUsername())) {
												if (u.Value < c.getEnterRights()) {
													canEnter = false;
													break;
												}
											}
										}
										if (!canEnter) {
											p.getPackets().sendMessage("You do not have a high enough rank to enter this clan chat.");
											return;
										}
									}
								}
							}
							c.addUser(p);
							updateClan(c);
							p.getPackets().sendMessage("Now talking in channel : " + misc.formatPlayerNameForDisplay(c.getClanName() + ":clan:"));
							p.getPackets().sendMessage("To talk, start each line of chat with the / symbol. :clan:");
							return;
						}
					}
				}
				p.getPackets().sendMessage("The channel you tried to join does not exist. :clan:");
		    });
            Server.registerEvent(enterChannelEvent);
	    }
        public void addFriend(long name)
        {
            Player friend = null;

            if (friends.Count >= 200)
            {
                player.getPackets().sendMessage("Your friends list is full.");
                return;
            }
            if (friends.Contains((long)name))
            {
                player.getPackets().sendMessage(misc.formatPlayerNameForDisplay(misc.longToPlayerName(name)) + " is already on your friends list.");
                return;
            }
            friends.Add((long)name);
            foreach (Player p in Server.getPlayerList())
            {
                if (p != null)
                {
                    if (p.getLoginDetails().getLongName() == name)
                    {
                        friend = p;
                    }
                }
            }
            if (friend != null)
            {
                if (privateStatus != STATUS.OFF)
                {
                    friend.getFriends().registered(player);
                }
                Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
                if (clan != null)
                {
                    clan.getOwnerFriends().Add(name);
                    if (clan.getUser(friend) != null)
                    {
                        if (clan.getUser(friend).getClanRights() == Clan.ClanRank.NO_RANK)
                        {
                            clan.getUser(friend).setClanRights(Clan.ClanRank.FRIEND);
                            Server.getClanManager().updateClan(clan);
                        }
                    }
                }
                if (friend.getFriends().getPrivateStatus() == STATUS.OFF || (friend.getFriends().getPrivateStatus() == STATUS.FRIENDS && !friend.getFriends().isFriend(player)))
                {
                    return;
                }
                player.getPackets().sendFriend(name, getWorld(name));
            }
        }
Example #3
0
 public void newBuyOffer(byte slot)
 {
     this.currentOffer = new BuyOffer(slot, p.getLoginDetails().getLongName());
     myGEItems[slot]   = this.currentOffer;
     p.getPackets().sendConfig(1109, -1);
     p.getPackets().sendConfig(1110, 0);
     p.getPackets().sendConfig(1111, 0);
     p.getPackets().sendConfig(1112, slot);
     p.getPackets().sendConfig(1113, 0);
     p.getPackets().sendConfig(1114, 0);
     p.getPackets().sendConfig(1115, 0);
     p.getPackets().sendConfig(1116, 0);
     openItemSearch();
 }
Example #4
0
 public void openEnterPin()
 {
     if (bankPinRemoved)
     {
         openPinSettings(9);
         return;
     }
     if (bankPin == null || changingPin)
     {
         player.getPackets().showChildInterface(13, 29, false);
     }
     else if (bankPin != null && !changingPin)
     {
         player.getPackets().setRightClickOptions(2, 851997, -1, -1);
     }
     if (lastDeletionRequest != 0)
     {
         int daysLeft = recoveryDaysRequired - TimeSpan.FromTicks(lastDeletionRequest).Days;
         player.getPackets().modifyText("Your Bank PIN will be deleted in another " + daysLeft + " days.", 13, 31);
     }
     else
     {
         player.getPackets().modifyText("Bank of " + player.getLoginDetails().getUsername(), 13, 31);
     }
     scrambleNumbers();
     player.getPackets().displayInterface(13);
 }
        private void unregistered(Player p)
        {
            long n = p.getLoginDetails().getLongName();

            if (friends.Contains(n))
            {
                player.getPackets().sendFriend(n, 0);
            }
        }
        private bool isFriend(Player player)
        {
            long n = player.getLoginDetails().getLongName();

            if (friends.Contains(n))
            {
                return(true);
            }
            return(false);
        }
 public Patch patchExists(Player p, int index)
 {
     foreach(Patch patch in patches) {
         if (patch.getOwnerName().Equals(p.getLoginDetails().getUsername())) {
             if (patch.getPatchIndex() == index) {
                 return patch;
             }
         }
     }
     return null;
 }
Example #8
0
        private void openTrade()
        {
            player.getPackets().displayInterface(335);
            player.getPackets().displayInventoryInterface(336);
            player.getPackets().setRightClickOptions(1278, (335 * 65536) + 30, 0, 27);
            player.getPackets().setRightClickOptions(1026, (335 * 65536) + 32, 0, 27);
            player.getPackets().setRightClickOptions(1278, (336 * 65536), 0, 27);
            player.getPackets().setRightClickOptions(2360446, (336 * 65536), 0, 27);
            object[] opts1 = new object[] { "", "", "", "Value", "Remove X", "Remove All", "Remove 10", "Remove 5", "Remove 1", -1, 0, 7, 4, 90, 21954590 };
            object[] opts2 = new object[] { "", "", "Lend", "Value", "Offer X", "Offer All", "Offer 10", "Offer 5", "Offer 1", -1, 0, 7, 4, 93, 22020096 };
            object[] opts3 = new object[] { "", "", "", "", "", "", "", "", "Value", -1, 0, 7, 4, 90, 21954592 };
            player.getPackets().sendClientScript(150, opts1, "IviiiIsssssssss");
            player.getPackets().sendClientScript(150, opts2, "IviiiIsssssssss");
            player.getPackets().sendClientScript(695, opts3, "IviiiIsssssssss");

            player.getPackets().modifyText("Trading with: " + player2.getLoginDetails().getUsername(), 335, 15);
            player.getPackets().modifyText(player2.getLoginDetails().getUsername() + " has " + player2.getInventory().getTotalFreeSlots() + " free inventory slots.", 335, 21);
            player.getPackets().modifyText("", 335, 36);

            refreshTrade();
        }
Example #9
0
        public void execute(Player player, string[] arguments)
        {
            if(arguments.Length == 0) {
                player.getPackets().sendMessage("[Yell command]: what you expecting to yell blank message?");
                return;
            }

            string yellMsg = string.Join(" ", arguments);

		    foreach(Player p in Server.getPlayerList()) {
			    if (p != null) {
                    p.getPackets().sendMessage(player.getLoginDetails().getUsername() + ": " + yellMsg);
			    }
		    }
        }
Example #10
0
	    public void addUser(Player p) {
		    ClanUser user = new ClanUser(p, this);
		    if (p.getLoginDetails().getUsername().Equals(owner)) {
			    user.setClanRights(ClanRank.OWNER);
			    own = p;
		    }
		    if (ownerFriends.Contains(p.getLoginDetails().getLongName())) {
                if (user.getClanRights() == ClanRank.NO_RANK)
                {
				    user.setClanRights(ClanRank.FRIEND);
			    }
		    }

            foreach (KeyValuePair<string, ClanRank> u in usersWithRank) {
			    if (u.Key.Equals(p.getLoginDetails().getUsername())) {
				    user.setClanRights(u.Value);
				    break;
			    }
		    }
		    p.setClan(this);
		    lock(users) {
			    users.Add(user);
		    }
	    }
	    private void handleClickNine(Player player, Packet packet) {
		    int interfaceId = packet.readUShort();
		    int child = packet.readUShort();
		    int slot = packet.readUShort();
		    Console.WriteLine("InterfaceOption 9: interfaceId: " + interfaceId);
		    switch(interfaceId) {
			    case 590: // Clan chat setup
				    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
				    if (clan == null) {
					    player.getPackets().sendMessage("Please create your clan chat before changing settings.");
					    break;
				    }
				    switch(child) {
	 				    case 23: // "Who can enter chat" - only me/owner.
                            clan.setEnterRights(Clan.ClanRank.OWNER);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
	 					    break;
	 					
	 				    case 24: // "Who can talk in chat" - only me/owner.
                            clan.setTalkRights(Clan.ClanRank.OWNER);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
	 					    break;
	 					
	 				    case 25: // // "Who can kick in chat" - only me/owner.
                            clan.setKickRights(Clan.ClanRank.OWNER);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getKickRights()), 590, 25);
	 					    break;
	 					
	 				    case 26: // "Who can share loot" - only me/owner.
                            clan.setLootRights(Clan.ClanRank.OWNER);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
	 					    break;
				    }
				    break;
		    }
	    }
	    private void handleActionButton(Player player, Packet packet) {
		    int interfaceId = packet.readUShort();
            ushort buttonId = packet.readUShort();
            ushort buttonId2 = 0;
		    if(packet.getLength() >= 6) {
                buttonId2 = packet.readUShort();
		    }
		    if(buttonId2 == 65535) {
			    buttonId2 = 0;
		    }
		    Console.WriteLine("button = " + interfaceId + " " +buttonId + " " +buttonId2);
		    switch(interfaceId) {
			    case 751: 
                    switch(buttonId) {
                        case 27: // Report Abuse button click
                            //This is just a test. (you need to code a Static Handler for ReportAbuse.
                            player.getPackets().displayInterface(553); //Opens Report Abuse box
				            break;
                    }
                    break;
			    case 374: // Tzhaar fight pits viewing orb
				    Server.getMinigames().getFightPits().useOrb(player, buttonId);
				    break;

                case 389: // GE Item Search "X" for closing it.
                    player.getPackets().sendInterface(0, 752, 6, 137); // Removes the item search
                    break;

			    case 107: // GE Sell inventory.
				    if (player.getGESession() == null) {
					    break;
				    }
				    switch(buttonId) {
					    case 18: // Offer
						    player.getGESession().offerSellItem(buttonId2);
						    break;
				    }
				    break;
			
			    case 105: // GE interface
				    if (player.getGESession() == null) {
					    break;
				    }
				    switch(buttonId) {
					    case 209: // Collect-notes
						    player.getGESession().collectSlot1(true);
						    break;
				
					    case 203: // Abort offer
						    player.getGESession().abortOffer();
						    break;
						
					    case 31: // Sell, box 1
						    player.getGESession().newSellOffer(0);
						    break;
				
					    case 30: // Buy, box 1
						    player.getGESession().newBuyOffer(0);
						    break;
						
					    case 18: // Check status, box 1
						    player.getGESession().checkOffer(0);
						    break;
						
					    case 46: // Buy, box 2
						    player.getGESession().newBuyOffer(1);
						    break;
						
					    case 47: // Sell, box 2
						    player.getGESession().newSellOffer(1);
						    break;
						
					    case 34: // Check status, box 2
						    player.getGESession().checkOffer(1);
						    break;
						
					    case 62: // Buy, box 3
						    player.getGESession().newBuyOffer(2);
						    break;
						
					    case 63: // Sell, box 3
						    player.getGESession().newSellOffer(2);
						    break;
						
					    case 50: // Check status, box 3
						    player.getGESession().checkOffer(2);
						    break;
						
					    case 81: // Buy, box 4
						    player.getGESession().newBuyOffer(3);
						    break;
						
					    case 82: // Sell, box 4
						    player.getGESession().newSellOffer(3);
						    break;
						
					    case 69: // Check status, box 4
						    player.getGESession().checkOffer(3);
						    break;
						
					    case 100: // Buy, box 5
						    player.getGESession().newBuyOffer(4);
						    break;
						
					    case 101: // Sell, box 5
						    player.getGESession().newSellOffer(4);
						    break;
						
					    case 88: // Check status, box 5
						    player.getGESession().checkOffer(4);
						    break;
						
					    case 119: // Buy, box 6
						    player.getGESession().newBuyOffer(5);
						    break;
						
					    case 120: // Sell, box 6
						    player.getGESession().newSellOffer(5);
						    break;
						
					    case 107: // Check status, box 6
						    player.getGESession().checkOffer(5);
						    break;
						
					    case 127: // The "back" button
                            player.getGESession().goBackToGrandExchange();
						    break;
						
					    case 194: // Search for item
						    player.getGESession().openItemSearch();
						    break;
						
					    case 159: // Increment amount by 1
						    player.getGESession().incrementAmount(1, false);
						    break;
						
					    case 157: // Decrease amount by 1
						    player.getGESession().decreaseAmount(1);
						    break;
						
					    case 162: // Increase amount by +1
                            player.getGESession().incrementAmount(1, true);
						    break;
						
					    case 164: // Increase amount by +10
                            player.getGESession().incrementAmount(10, true);
						    break;
						
					    case 166: // Increase amount by +100
                            player.getGESession().incrementAmount(100, true);
						    break;
						
					    case 168: // Increase amount by +1k (or All if selling)
						    player.getGESession().incrementAmount(1000, true);
						    break;
						case 170: //custom enter quantity
                            player.getPackets().displayEnterAmount();
                            player.setTemporaryAttribute("interfaceVariable", new EnterVariable(105, 0));
                            break;
                        case 185: //custom enter per price
                            player.getPackets().displayEnterAmount();
                            player.setTemporaryAttribute("interfaceVariable", new EnterVariable(105, 1));
                            break;

					    case 177: // Set price to minimum
						    player.getGESession().setPrice(0);
						    break;
						
					    case 180: // Set price to medium
						    player.getGESession().setPrice(1);
						    break;
						
					    case 183: // Set price to maximum
						    player.getGESession().setPrice(2);
						    break;
						
					    case 171: // Set price -1
						    player.getGESession().setPrice(3);
						    break;
						
					    case 173: // Set price +1
						    player.getGESession().setPrice(4);
						    break;
						
					    case 190: // Confirm offer
						    player.getGESession().confirmOffer();
						    break;
				    }
				    break;
			
			    case 161: // Slayer points interfaces
			    case 163:
			    case 164:
				    Slayer.handlePointsInterface(player, interfaceId, buttonId);
				    break;
			
		
			    case 675: // Craft jewellery:
				    player.getPackets().displayEnterAmount();
				    player.setTemporaryAttribute("interfaceVariable", new EnterVariable(675, buttonId));
				    break;
		
			    case 154: // Craft normal leather.
				    Leather.craftNormalLeather(player, buttonId, 1, true);
				    break;
				
			    case 542: // Craft glass.
				    switch (buttonId) {
					    case 40: // Make 1 beer glass.
						    Glass.craftGlass(player, 1, 0, true);
						    break;
						
					    case 41: // Make 1 candle lantern.
						    Glass.craftGlass(player, 1, 1, true);
						    break;
						
					    case 42: // Make 1 oil lamp.
						    Glass.craftGlass(player, 1, 2, true);
						    break;
						
					    case 38: // Make 1 vial.
						    Glass.craftGlass(player, 1, 3, true);
						    break;
						
					    case 44: // Make 1 Fishbowl
						    Glass.craftGlass(player, 1, 4, true);
						    break;
						
					    case 39: // Make 1 orb.
						    Glass.craftGlass(player, 1, 5, true);
						    break;
						
					    case 43: // Make 1 lantern lens
						    Glass.craftGlass(player, 1, 6, true);
						    break;
						
					    case 45: // Make 1 dorgeshuun light orb.
						    Glass.craftGlass(player, 1, 7, true);
						    break;
				    }
				    break;
			
			    case 271 : // Prayer tab.
				    if (!Prayer.canUsePrayer(player, buttonId)) {
					    Prayer.deactivateAllPrayers(player);
					    break;
				    }
				    switch(buttonId) {
					    case 5: // Thick skin.
						    Prayer.togglePrayer(player, PrayerData.Prayer.THICK_SKIN);
						    break;
						
					    case 15: // Rock skin.
                            Prayer.togglePrayer(player, PrayerData.Prayer.ROCK_SKIN);
						    break;
						
					    case 31: // Steel skin.
                            Prayer.togglePrayer(player, PrayerData.Prayer.STEEL_SKIN);
						    break;
						
					    case 7: // Burst of strength.
                            Prayer.togglePrayer(player, PrayerData.Prayer.BURST_OF_STRENGTH);
						    break;
						
					    case 17: // Superhuman strength.
                            Prayer.togglePrayer(player, PrayerData.Prayer.SUPERHUMAN_STRENGTH);
						    break;
						
					    case 33: // Ultimate strength.
                            Prayer.togglePrayer(player, PrayerData.Prayer.ULTIMATE_STRENGTH);
						    break;
						
					    case 9: // Clarity of thought.
                            Prayer.togglePrayer(player, PrayerData.Prayer.CLARITY_OF_THOUGHT);
						    break;
						
					    case 19: // Improved reflexes.
                            Prayer.togglePrayer(player, PrayerData.Prayer.IMPROVED_REFLEXES);
						    break;
						
					    case 35: // Incredible reflexes.
						    Prayer.togglePrayer(player, PrayerData.Prayer.INCREDIBLE_REFLEXES);
						    break;
						
					    case 37: // Magic protect.
                            Prayer.togglePrayer(player, PrayerData.Prayer.PROTECT_FROM_MAGIC);
						    break;
						
					    case 39: // Ranged protect.
                            Prayer.togglePrayer(player, PrayerData.Prayer.PROTECT_FROM_RANGED);
						    break;
						
					    case 41: // Melee protect.
                            Prayer.togglePrayer(player, PrayerData.Prayer.PROTECT_FROM_MELEE);
						    break;
						
					    case 47: // Retribution.
                            Prayer.togglePrayer(player, PrayerData.Prayer.RETRIBUTION);
						    break;
						
					    case 49: // Redemption.
                            Prayer.togglePrayer(player, PrayerData.Prayer.REDEMPTION);
						    break;
						
					    case 51: // Smite.
                            Prayer.togglePrayer(player, PrayerData.Prayer.SMITE);
						    break;
						
					    case 55: // Chivalry.
                            Prayer.togglePrayer(player, PrayerData.Prayer.CHIVALRY);
						    break;
						
					    case 57: // Piety.
                            Prayer.togglePrayer(player, PrayerData.Prayer.PIETY);
						    break;
						
					    case 25: // Protect item.
                            Prayer.togglePrayer(player, PrayerData.Prayer.PROTECT_ITEM);
						    break;
						
					    case 21: // Rapid restore
                            Prayer.togglePrayer(player, PrayerData.Prayer.RAPID_RESTORE);
						    break;
						
					    case 23: // Rapid heal.
                            Prayer.togglePrayer(player, PrayerData.Prayer.RAPID_HEAL);
						    break;
						
					    case 11: // Sharp eye.
                            Prayer.togglePrayer(player, PrayerData.Prayer.SHARP_EYE);
						    break;
						
					    case 27: // Hawk Eye.
                            Prayer.togglePrayer(player, PrayerData.Prayer.HAWK_EYE);
						    break;
						
					    case 43: // Eagle Eye.
                            Prayer.togglePrayer(player, PrayerData.Prayer.EAGLE_EYE);
						    break;
						
					    case 13: // Mystic will.
                            Prayer.togglePrayer(player, PrayerData.Prayer.MYSTIC_WILL);
						    break;
						
					    case 29: // Mystic Lore.
                            Prayer.togglePrayer(player, PrayerData.Prayer.MYSTIC_LORE);
						    break;
						
					    case 45: // Mystic Might.
                            Prayer.togglePrayer(player, PrayerData.Prayer.MYSTIC_MIGHT);
						    break;
				    }
				    break;
				
			    case 90: // Staff attack interface.
				    switch(buttonId) {
					    case 5: // Select spell (Magic XP)
						    MagicData.configureSelectSpellInterface(player);
						    break;
						
					    case 9: // Auto retaliate.
						    player.toggleAutoRetaliate();
						    break;
						
 					    default:
 						    MagicData.cancelAutoCast(player, true);
 						    AttackInterface.configureButton(player, interfaceId, buttonId);
 						    break;
				    }
				    break;
				
			    case 388: // Ancient magic autocast select spell.
				    switch(buttonId) {
					    case 0: // Smoke rush.
						    MagicData.setAutoCastSpell(player, 16, 8, true);
						    break;
						
					    case 1: // Shadow rush.
						    MagicData.setAutoCastSpell(player, 17, 12, true);
						    break;
						
					    case 2: // Blood rush.
						    MagicData.setAutoCastSpell(player, 18, 4, true);
						    break;
						
					    case 3: // Ice rush.
						    MagicData.setAutoCastSpell(player, 19, 0, true);
						    break;
											
					    case 4: // Smoke burst.
						    MagicData.setAutoCastSpell(player, 20, 10, true);
						    break;
						
					    case 5: // Shadow burst.
						    MagicData.setAutoCastSpell(player, 21, 14, true);
						    break;
						
					    case 6: // Blood burst.
						    MagicData.setAutoCastSpell(player, 22, 6, true);
						    break;
						
					    case 7: // Ice burst.
						    MagicData.setAutoCastSpell(player, 23, 2, true);
						    break;
						
					    case 8: // Smoke blitz.
						    MagicData.setAutoCastSpell(player, 24, 9, true);
						    break;
						
					    case 9: // Shadow blitz.
						    MagicData.setAutoCastSpell(player, 25, 13, true);
						    break;
						
					    case 10: // Blood blitz.
						    MagicData.setAutoCastSpell(player, 26, 5, true);
						    break;
						
					    case 11: // Ice blitz.
						    MagicData.setAutoCastSpell(player, 27, 1, true);
						    break;

					    case 12: // Smoke barrage.
						    MagicData.setAutoCastSpell(player, 28, 11, true);
						    break;
						
					    case 13: // Shadow barrage.
						    MagicData.setAutoCastSpell(player, 29, 15, true);
						    break;
						
					    case 14: // Blood barrage.
						    MagicData.setAutoCastSpell(player, 30, 7, true);
						    break;
						
					    case 15: // Ice barrage.
						    MagicData.setAutoCastSpell(player, 31, 3, true);
						    break;

					    case 16: // Cancel.
                            MagicData.cancelAutoCast(player, false);
						    break;
				    }
				    break;
				
			    case 406: // Void knight mace autocast select spell.
				    switch(buttonId) {
					    case 0: // Crumble undead.
						    MagicData.setAutoCastSpell(player, 32, 22, false);
						    break;
						
					    case 1: // Guthix claws.
						    MagicData.setAutoCastSpell(player, 34, 42, false);
						    break;
						
					    case 2: // Wind wave.
						    MagicData.setAutoCastSpell(player, 12, 45, false);
						    break;
						
					    case 3: // Water wave.
						    MagicData.setAutoCastSpell(player, 13, 48, false);
						    break;
						
					    case 4: // Earth wave.
						    MagicData.setAutoCastSpell(player, 14, 52, false);
						    break;
						
					    case 5: // Fire wave.
						    MagicData.setAutoCastSpell(player, 15, 55, false);
						    break;
					
					    case 6: // Cancel.
						    MagicData.cancelAutoCast(player, false);
						    break;
			    }
			    break;
				
			    case 310: // Slayer staff autocast select spell.
				    switch(buttonId) {
					    case 0: // Crumble undead.
						    MagicData.setAutoCastSpell(player, 32, 22, false);
						    break;
						
					    case 1: // Slayer dart.
						    MagicData.setAutoCastSpell(player, 33, 31, false);
						    break;
						
					    case 2: // Wind wave.
                            MagicData.setAutoCastSpell(player, 12, 45, false);
						    break;
						
					    case 3: // Water wave.
                            MagicData.setAutoCastSpell(player, 13, 48, false);
						    break;
						
					    case 4: // Earth wave.
                            MagicData.setAutoCastSpell(player, 14, 52, false);
						    break;
						
					    case 5: // Fire wave.
                            MagicData.setAutoCastSpell(player, 15, 55, false);
						    break;
					
					    case 6: // Cancel.
                            MagicData.cancelAutoCast(player, false);
						    break;
				    }
				    break;
				
			    case 319: // Normal magic autocast select spell.
				    switch(buttonId) {
					    case 0: // Wind strike.
                            MagicData.setAutoCastSpell(player, 0, 1, false);
						    break;
						
					    case 1: // Water strike.
                            MagicData.setAutoCastSpell(player, 1, 4, false);
						    break;
						
					    case 2: // Earth strike.
                            MagicData.setAutoCastSpell(player, 2, 6, false);
						    break;
						
					    case 3: // Fire strike.
                            MagicData.setAutoCastSpell(player, 3, 8, false);
						    break;
						
					    case 4: // Wind bolt.
                            MagicData.setAutoCastSpell(player, 4, 10, false);
						    break;
						
					    case 5: // Water bolt.
                            MagicData.setAutoCastSpell(player, 5, 14, false);
						    break;
						
					    case 6: // Earth bolt.
                            MagicData.setAutoCastSpell(player, 6, 17, false);
						    break;
						
					    case 7: // Fire bolt.
                            MagicData.setAutoCastSpell(player, 7, 20, false);
						    break;
						
					    case 8: // Wind blast.
                            MagicData.setAutoCastSpell(player, 8, 24, false);
						    break;
						
					    case 9: // Water blast.
                            MagicData.setAutoCastSpell(player, 9, 27, false);
						    break;
						
					    case 10: // Earth blast.
                            MagicData.setAutoCastSpell(player, 10, 33, false);
						    break;
						
					    case 11: // Fire blast.
                            MagicData.setAutoCastSpell(player, 11, 38, false);
						    break;

					    case 12: // Wind wave.
                            MagicData.setAutoCastSpell(player, 12, 45, false);
						    break;
						
					    case 13: // Water wave.
                            MagicData.setAutoCastSpell(player, 13, 48, false);
						    break;
						
					    case 14: // Earth wave.
                            MagicData.setAutoCastSpell(player, 14, 52, false);
						    break;
						
					    case 15: // Fire wave.
                            MagicData.setAutoCastSpell(player, 15, 55, false);
						    break;
						
					    case 16: // Cancel.
                            MagicData.cancelAutoCast(player, false);
						    break;
				    }
				    break;
		
			    case 182: // Logout tab.
				    player.getPackets().logout();
				    break;
			
			    case 261: // Settings tab.
				    switch(buttonId) {
					    case 16: // Display settings.
						    player.getPackets().displayInterface(742);
						    break;
						
					    case 18: // Audio settings.
						    player.getPackets().displayInterface(743);
						    break;
		
					    case 3: // Run toggle.
						    if(!player.getWalkingQueue().isRunToggled()) {
							    player.getWalkingQueue().setRunToggled(true);
							    player.getPackets().sendConfig(173, 1);
						    } else {
							    player.getWalkingQueue().setRunToggled(false);
							    player.getPackets().sendConfig(173, 0);
						    }
						    break;
						
					    case 4: // Chat effect toggle.
						    if(!player.isChatEffectsEnabled()) {
							    player.setChatEffectsEnabled(true);
							    player.getPackets().sendConfig(171, 0);
						    } else {
							    player.setChatEffectsEnabled(false);
							    player.getPackets().sendConfig(171, 1);
						    }
						    break;
						
					    case 5: // Split private chat toggle.
						    if(!player.isPrivateChatSplit()) {
							    player.setPrivateChatSplit(true);
							    player.getPackets().sendConfig(287, 1);
						    } else {
							    player.setPrivateChatSplit(false);
							    player.getPackets().sendConfig(287, 0);
						    }
						    break;
						
					    case 7: // Accept aid toggle.
						    if(!player.isAcceptAidEnabled()) {
							    player.setAcceptAidEnabled(true);
							    player.getPackets().sendConfig(427, 1);
						    } else {
							    player.setAcceptAidEnabled(false);
							    player.getPackets().sendConfig(427, 0);
						    }
						    break;
						
					    case 6: // Mouse buttons toggle.
						    if(!player.isMouseTwoButtons()) {
							    player.setMouseTwoButtons(true);
							    player.getPackets().sendConfig(170, 0);
						    } else {
							    player.setMouseTwoButtons(false);
							    player.getPackets().sendConfig(170, 1);
						    }
						    break;
				    }
				    break;
				
			    case 589: // Clan chat 
				    if (buttonId == 9) {
					    foreach(long friend in player.getFriends().getFriendsList()) {
						    player.getPackets().sendFriend(friend, player.getFriends().getWorld(friend));
					    }
					    Server.getClanManager().openClanSetup(player);
					    break;
				    }
				    break;
				
			    case 590: // Clan chat setup
 				    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
				    if (clan == null) {
					    break;
				    }
				    switch(buttonId) {
					    case 22: // Clan name
						    player.getPackets().displayEnterText("Enter clan name :");
						    player.setTemporaryAttribute("interfaceVariable", new EnterVariable(590, 0));
						    break;
						
	 				    case 23: // "Who can enter chat" - anyone.
                            clan.setEnterRights(Clan.ClanRank.NO_RANK);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
	 					    break;
	 					
	 				    case 24: // "Who can talk in chat" - anyone.
                            clan.setTalkRights(Clan.ClanRank.NO_RANK);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
	 					    break;
	 					
	 				    case 26: // "Who can share loot" - anyone.
                            clan.setLootRights(Clan.ClanRank.NO_RANK);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
	 					    break;
				    }
				    break;
				
			    case 763: // Bank inventory
				    switch(buttonId) {
					    case 0: // Deposit 1.
						    player.getBank().deposit(buttonId2, 1);
						    player.getBank().refreshBank();
						    break;
				    }
				    break;
				
			    case 762: // Bank
				    switch(buttonId) {		
					    case 73: // withdraw 1.
						    player.getBank().withdraw(buttonId2, 1);
						    player.getBank().refreshBank();
						    break;
						
					    case 16: // Note item.
						    player.getBank().asNote();
						    break;
						
					    case 41: // first (main) bank tab
						    player.getBank().setCurrentTab(10);
						    break;
						
					    case 39: // first bank tab
						    player.getBank().setCurrentTab(2);
						    break;
						
					    case 37: // second bank tab
						    player.getBank().setCurrentTab(3);
						    break;
						
					    case 35: // third bank tab
						    player.getBank().setCurrentTab(4);
						    break;
						
					    case 33: // fourth bank tab
						    player.getBank().setCurrentTab(5);
						    break;
						
					    case 31: // fifth bank tab
						    player.getBank().setCurrentTab(6);
						    break;
						
					    case 29: // sixth bank tab
						    player.getBank().setCurrentTab(7);
						    break;
						
					    case 27: // seventh bank tab
						    player.getBank().setCurrentTab(8);
						    break;
						
					    case 25: // eighth bank tab
						    player.getBank().setCurrentTab(9);
						    break;
				    }
				    break;
				
			    case 626: // Stake duel confirmation interface.
				    if (buttonId == 53) {
					    if (player.getDuel() != null) {
						    player.getDuel().acceptDuel();
						    break;
					    }
				    }
				    break;
				
			    case 631: // Stake duel first interface.
				    if (player.getDuel() != null) {
					    if (buttonId == 103) {
						    player.getDuel().removeItem(buttonId2, 1);
						    break;
					    } else {
						    player.getDuel().toggleDuelRules(buttonId);
						    break;
					    }
				    }
				    break;
				
			    case 387: // Equipment tab. 
				    switch(buttonId) {
					    case 55: // Character display.
						    player.getEquipment().displayEquipmentScreen();
						    break;
						
					    case 52: // Items kept on death.
						    ProtectedItems.displayItemsInterface(player);
						    break;
				    }
				    break;
				
			    case 274: // Quest tab.
				    switch(buttonId) {
					    case 3: // Achievment diary toggle.
						    player.getPackets().sendTab(85, 259);
						    player.setAchievementDiaryTab(true);
						    break;
				    }
				    break;
				
			    case 259: // Achievment diary tab.
				    switch(buttonId) {
					    case 8: // Quest tab toggle.
						    player.getPackets().sendTab(85, 274);
						    player.setAchievementDiaryTab(false);
						    break;
				    }
				    break;
				
			    case 620: // Shop interface.
				    if (player.getShopSession() == null) {
					    return;
				    }
				    switch(buttonId) {
					    case 26: // Player stock tab.
						    player.getShopSession().openPlayerShop();
						    break;
						
					    case 25: // Main stock tab.
						    player.getShopSession().openMainShop();
						    break;
						
					    case 23: // Value (main stock)	
					    case 24: // Value (player stock)
						    player.getShopSession().valueItem(buttonId2, false);
						    break;
				    }
				    break;
				
			    case 621: // Shop inventory.
				    if (player.getShopSession() == null) {
					    return;
				    }
				    switch(buttonId) {
					    case 0: // Value (player stock)
						    player.getShopSession().valueItem(buttonId2, true);
						    break;
				    }
				    break;
				
			    case 192: // Normal Magic tab.
				    switch(buttonId) {
					    case 0: // Home Teleport.
						    Teleport.homeTeleport(player);
						    break;
						
					    case 15: // Varrock teleport.
						    Teleport.teleport(player, 0);
						    break;
						
					    case 18: // Lumbridge teleport.
						    Teleport.teleport(player, 1);
						    break;
						
					    case 21: // Falador teleport.
						    Teleport.teleport(player, 2);
						    break;
						
					    case 23: // POH teleport.
						    player.getPackets().sendMessage("This teleport is unavailable.");
						    break;
						
					    case 26: // Camelot teleport.
						    Teleport.teleport(player, 3);
						    break;
						
					    case 32: // Ardougne teleport.
						    Teleport.teleport(player, 4);
						    break;
						
					    case 37: // Watchtower teleport.
						    player.getPackets().sendMessage("This teleport is unavailable.");
						    //Teleport.teleport(player, 5);
						    break;
						
					    case 44: // Trollheim teleport.
						    Teleport.teleport(player, 6);
						    break;
						
					    case 47: // Ape Atoll teleport.
						    player.getPackets().sendMessage("This teleport is unavailable.");
						    break;
						
					    case 58: // Charge.
						    MagicCombat.castCharge(player);
						    break;
				    }
				    break;
				
			    case 193: // Ancient magic tab.
				    switch(buttonId) {
					    case 20: // Paddewwa teleport.
						    Teleport.teleport(player, 7);
						    break;
						
					    case 21: // Senntisten teleport.
						    Teleport.teleport(player, 8);
						    break;
						
					    case 22: // Kharyrll teleport.
						    Teleport.teleport(player, 9);
						    break;
						
					    case 23: // Lassar teleport.
						    Teleport.teleport(player, 10);
						    break;
						
					    case 24: // Dareeyak teleport.
						    Teleport.teleport(player, 11);
						    break;
						
					    case 25: // Carrallanger teleport.
						    Teleport.teleport(player, 12);
						    break;
						
					    case 27: // Ghorrock teleport.
						    Teleport.teleport(player, 14);
						    break;
						
					    case 26: // Annakarl teleport.
						    Teleport.teleport(player, 13);
						    break;
						
					    case 28: // Ancients Home teleport.
						    Teleport.homeTeleport(player);
						    break;
				    }
				    break;
				
			    case 13: // Bank pin buttons.
				    if (buttonId == 29) {
					    player.getBank().forgotPin();
					    break;
				    }
				    player.getBank().handleEnterPin(buttonId);
				    break;
				
			    case 14: // Bank pin settings.
				    switch(buttonId) {
					    case 60: // Set new bank pin.
						    player.getBank().displayFirstConfirmation();
						    break;
					
					    case 61: // Change recovery delay.
						    player.getBank().changePinDelay();
						    break;
						
					    case 91: // "No, I might forget it!".
						    if (player.getBank().isPinPending()) {
							    player.getBank().cancelPendingPin();
							    break;
						    }
						    player.getBank().openPinSettings(2);
						    break;
						
					    case 89: // Yes i want to set a pin.
						    if (player.getBank().isPinPending()) {
							    player.getBank().verifyPin(true);
							    break;
						    }
						    player.getBank().openEnterPin();
						    break;
						
					    case 65: // Cancel pin that's pending.
						    player.getBank().openPinSettings(4);
						    break;
						
					    case 62: // Change pin.
						    player.getBank().changePin();
						    break;
						
					    case 63: // Delete pin.
						    player.getBank().deletePin();
						    break;
				    }
				    break;
				
			    case 464: // Emote tab.
				    Emotes.emote(player, buttonId);
				    break;
				
 			    case 320: // Skills Tab.
				    SkillMenu.display(player, buttonId);
				    break;
				
 			    case 499: // Skill menu side menu.
 				    SkillMenu.subMenu(player, buttonId);
 				    break;

 			    case 336: // Trade/duel inventory - trade 1.
 				    if (player.getTrade() != null) {
 					    player.getTrade().tradeItem(buttonId2, 1);
 					    break;
 				    }
 				    if (player.getDuel() != null) {
 					    player.getDuel().stakeItem(buttonId2, 1);
 					    break;
 				    }
 				    break;
 				
 			    case 335: // Trade interface.
 				    if (player.getTrade() == null) {
 					    break;
 				    }
				    switch(buttonId) {
					    case 16: // Accept trade.
						    player.getTrade().accept();
						    break;
						
					    case 18: // Decline trade.
						    player.getTrade().decline();
						    break;
						
					    case 30: // Offer 1
						    player.getTrade().removeItem(buttonId2, 1);
						    break;
				    }
 				    break;
 				
 			    case 334: // Trade confirmation.
 				    if (player.getTrade() == null) {
 					    break;
 				    }
 				    switch(buttonId) {
	 				    case 21: // Decline trade.
	 					    player.getTrade().decline();
						    break;
						
	 				    case 20: // Accept trade.
	 					    player.getTrade().accept();
	 					    break;
	 			    }
 				    break;
 				
 			    case 750: // Run button
				    if(!player.getWalkingQueue().isRunToggled()) {
					    player.getWalkingQueue().setRunToggled(true);
					    player.getPackets().sendConfig(173, 1);
				    } else {
					    player.getWalkingQueue().setRunToggled(false);
					    player.getPackets().sendConfig(173, 0);
				    }
				    break;
				
 			    case 667: // Equipment/bonuses interface.
 				    if (buttonId == 14) {
                        player.getEquipment().unequipItem((ItemData.EQUIP)buttonId2);
 					    break;
 				    }
 				    break;
				
 			    case 771: // Character design interface.
 				    ConfigureAppearance.sortButton(player, buttonId);
 				    break;
 				
 			    case 311: // Smelt interface.
 				    Smelting.smeltOre(player, buttonId, true, -1);
 				    break;
 				
 			    case 300: // Bar smithing interface.
 				    Smithing.smithItem(player, buttonId, 1, true);
 				    break;
 				
 			    case 92: // Unarmed attack interface.
 				    switch(buttonId) {			
 					    case 24: // Auto retaliate.
 						    player.toggleAutoRetaliate();
 						    break;
 						
 					    default: 
 						    AttackInterface.configureButton(player, interfaceId, buttonId);
 						    break;
 				    }
 				    break;
 				
 			    case 85: // Spear attack interface.
 				    switch(buttonId) {
					    case 8: // Special attack.
						    player.getSpecialAttack().toggleSpecBar();
						    break;
						
					    case 24: // Auto retaliate.
						    player.toggleAutoRetaliate();
						    break;
						
 					    default: 
 						    AttackInterface.configureButton(player, interfaceId, buttonId);
 						    break;
 				    }
 				    break;
 				
 			    case 93: // Whip attack interface.
 				    switch(buttonId) {
 					    case 8: // Special attack.
 						    player.getSpecialAttack().toggleSpecBar();
 						    break;
 						
 					    case 24: // Auto retaliate.
 						    player.toggleAutoRetaliate();
 						    break;
 						
 					    default: 
 						    AttackInterface.configureButton(player, interfaceId, buttonId);
 						    break;
 				    }
 				    break;
 				
 			    case 89: // Dagger attack interface.
 				    switch(buttonId) {					
 					    case 10: // Special attack.
 						    player.getSpecialAttack().toggleSpecBar();
 						    break;
 						
 					    case 26: // Auto retaliate.
 						    player.toggleAutoRetaliate();
 						    break;
 						
 					    default: 
 						    AttackInterface.configureButton(player, interfaceId, buttonId);
 						    break;
 				    }
 				    break;
 				
 			    case 82: // Longsword/scimitar attack interface.
 				    switch(buttonId) {					
 					    case 10: // Special attack.
 						    player.getSpecialAttack().toggleSpecBar();
 						    break;
 						
 					    case 26: // Auto retaliate.
 						    player.toggleAutoRetaliate();
 						    break;
 						
 					    default: 
 						    AttackInterface.configureButton(player, interfaceId, buttonId);
 						    break;
 				    }
 				    break;
 				
 			    case 78: // Claw attack interface.
 				    switch(buttonId) {
 					    case 10: // Special attack.
 						    player.getSpecialAttack().toggleSpecBar();
 						    break;
 						
 					    case 26: // Auto retaliate.
 						    player.toggleAutoRetaliate();
 						    break;
 						
 					    default: 
 						    AttackInterface.configureButton(player, interfaceId, buttonId);
 						    break;
 				    }
 				    break;
 				
 			    case 81: // Godsword attack interface.
 				    switch(buttonId) {
 					    case 10: // Special attack.
 						    player.getSpecialAttack().toggleSpecBar();
 						    break;
 						
 					    case 26: // Auto retaliate.
 						    player.toggleAutoRetaliate();
 						    break;
 						
 					    default: 
 						    AttackInterface.configureButton(player, interfaceId, buttonId);
 						    break;
 				    }
 				    break;
 				
 			    case 88: // Mace attack interface.
 				    switch(buttonId) {
 					    case 10: // Special attack.
 						    player.getSpecialAttack().toggleSpecBar();
 						    break;
 						
 					    case 26: // Auto retaliate.
 						    player.toggleAutoRetaliate();
 						    break;
 						
 					    default: 
 						    AttackInterface.configureButton(player, interfaceId, buttonId);
 						    break;
 				    }
 				    break;
 				
 			    case 76: // Granite maul attack interface.
 				    switch(buttonId) {
 					    case 8: // Special attack.
 						    player.getSpecialAttack().toggleSpecBar();
 						    break;
 						
 					    case 24: // Auto retaliate.
 						    player.toggleAutoRetaliate();
 						    break;
 						
 					    default: 
 						    AttackInterface.configureButton(player, interfaceId, buttonId);
 						    break;
 				    }
 				    break;
 				
 			    case 77: // Bow attack interface.
 				    switch(buttonId) {					
 					    case 11: // Special attack.
 						    player.getSpecialAttack().toggleSpecBar();
 						    break;
 						
 					    case 27: // Auto retaliate.
 						    player.toggleAutoRetaliate();
 						    break;
 						
 					    default: 
 						    AttackInterface.configureButton(player, interfaceId, buttonId);
 						    break;
 				    }
 				    break;
 				
 			    case 75: // Battleaxe attack interface.
 				    switch(buttonId) {
 					    case 10: // Special attack.
 						    player.getSpecialAttack().toggleSpecBar();
 						    player.getSpecialAttack().dragonBattleaxe();
 						    break;
 						
 					    case 26: // Auto retaliate.
 						    player.toggleAutoRetaliate();
 						    break;
 						
 					    default: 
 						    AttackInterface.configureButton(player, interfaceId, buttonId);
 						    break;
 				    }
 				    break;
 				
 			    case 91: // Thrown weapon
 				    switch(buttonId) {
					    case 24: // Auto retaliate.
						    player.toggleAutoRetaliate();
						    break;
						
 					    default: 
 						    AttackInterface.configureButton(player, interfaceId, buttonId);
 						    break;
				    }
 				    break;
 				
 			    case 430: // Lunar interface
 				    switch(buttonId) {	
	 				    case 14: // Vengeance
	 					    Lunar.castLunarSpell(player, buttonId);
	 					    break;
 				    }
 				    break;
 				
 			    case 102: // Items on death interface
 				    if (buttonId == 18)
 					    player.getPackets().sendMessage("You will keep this item if you should you die.");
 				    else
 					    player.getPackets().sendMessage("You will lose this item if you should you die.");
 				    break;
 				
			    default:
				    if (interfaceId != 548 && interfaceId != 751) {
					    Console.WriteLine("Unhandled ActionButton : " + interfaceId + " " + buttonId + " " + buttonId2);
				    }
				    break;
		    }
	    }
	    public static void showBobDialogue(Player p, int status) {
		    p.getPackets().softCloseInterfaces();
		    int index = -1;
		    int newStatus = -1;
		    if (p.getTemporaryAttribute("bobsAxesBarrowItem") != null) {
			    int item = (int)p.getTemporaryAttribute("bobsAxesBarrowItem");
			    index = getIndex(item);
			    if (index == -1) {
				    return;
			    } else if (item == (int)DATA[index][0]) {
                    p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                    p.getPackets().modifyText("Bob", 241, 3);
                    p.getPackets().modifyText("That item isn't broken..", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
				    return;
			    } else if (item != (int)DATA[index][1]) {
				    return;
			    }
		    }
		    switch(status) {
			    case 101:
                    p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                    p.getPackets().modifyText("Bob", 241, 3);
                    p.getPackets().modifyText("That'll cost you " + ((int)DATA[index][2]).ToString("#,##0") + " gold coins to fix, are you sure?", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 102;
				    break;
				
			    case 102:
                    p.getPackets().modifyText("Yes, I'm sure!", 557, 2);
                    p.getPackets().modifyText("On second thoughts, no thanks.", 557, 3);
                    p.getPackets().sendChatboxInterface2(557);
				    newStatus = 103;
				    break;
				
			    case 103:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Yes, I'm sure!", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 104;
				    break;
				
			    case 104:
				    if (!p.getInventory().hasItemAmount(995, (int)DATA[index][2])) {
                        p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                        p.getPackets().modifyText("Bob", 241, 3);
                        p.getPackets().modifyText("You don't have enough money to pay for the repair!", 241, 4);
                        p.getPackets().animateInterface(9827, 241, 2);
                        p.getPackets().sendChatboxInterface2(241);
					    break;
				    } else {
					    if (!p.getInventory().hasItem((int)DATA[index][1])) {
                            p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                            p.getPackets().modifyText("Bob", 241, 3);
                            p.getPackets().modifyText("The item seems to have gone from your inventory.", 241, 4);
                            p.getPackets().animateInterface(9827, 241, 2);
                            p.getPackets().sendChatboxInterface2(241);
						    break;
					    } else if (p.getInventory().deleteItem(995, (int)DATA[index][2])) {
                            p.getInventory().replaceSingleItem((int)DATA[index][1], (int)DATA[index][0]);
                            p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                            p.getPackets().modifyText("Bob", 241, 3);
                            p.getPackets().modifyText("There you go, happy doing business with you!", 241, 4);
                            p.getPackets().animateInterface(9827, 241, 2);
                            p.getPackets().sendChatboxInterface2(241);
                            p.getPackets().sendMessage("You pay Bob his fee and he repairs your " + (string)DATA[index][3] + ".");
						    break;
					    }
				    }
				    break;
				
			    case 105:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("On second thoughts, no thanks.", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 106;
				    break;
				
			    case 106:
                    p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                    p.getPackets().modifyText("Bob", 241, 3);
                    p.getPackets().modifyText("Ok, but don't expect my prices to change anytime soon!", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
				    break;
				
			    case 107:
                    p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                    p.getPackets().modifyText("Bob", 241, 3);
                    p.getPackets().modifyText("Hello there " + p.getLoginDetails().getUsername() + ", what can i do for you?", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 108;
				    break;
				
			    case 108:
                    p.getPackets().modifyText("Could you please repair my Barrow item?", 230, 2);
                    p.getPackets().modifyText("I'm interested in buying an axe.", 230, 3);
                    p.getPackets().modifyText("Nevermind.", 230, 4);
                    p.getPackets().sendChatboxInterface2(230);
				    newStatus = 109;
				    break;
				
			    case 109:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Could you please repair my Barrow item?", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 110;
				    break;
				
			    case 110:
                    p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                    p.getPackets().modifyText("Bob", 241, 3);
                    p.getPackets().modifyText("Certainly! Show me the item and i'll see what i can do.", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
				    break;
				
			    case 111:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("I'm interested in buying an axe.", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 112;
				    break;
				
			    case 112:
                    p.getPackets().sendNPCHead(BOB_ID, 241, 2);
                    p.getPackets().modifyText("Bob", 241, 3);
                    p.getPackets().modifyText("What a coincidence! Axes are my speciality!", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 113;
				    break;
				
			    case 113:
				    //TODO open bob's shop
				    break;
				
			    case 114:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Nevermind.", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
				    break;
		    }
		    if (newStatus != -1) {
			    p.setTemporaryAttribute("dialogue", newStatus);
		    }
	    }
	    public static void showBentleyDialogue(Player p, int status) {
		    int newStatus = -1;
		    p.getPackets().softCloseInterfaces();
		    if (p.getTemporaryAttribute("unmovable") != null) {
			    return;
		    }
		    switch(status) {
			    case 240:
				    p.getPackets().sendNPCHead(4540, 241, 2);
				    p.getPackets().modifyText("Captain Bentley", 241, 3);
				    p.getPackets().modifyText("Well, hello there " + p.getLoginDetails().getUsername() + ", ready to set sail?", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 241;
				    break;
				
			    case 241:
				    p.getPackets().modifyText("I'd like to travel to..", 235, 1);
				    p.getPackets().modifyText("Canifis", 235, 2);
				    p.getPackets().modifyText("Waterbirth Isle", 235, 3);
				    p.getPackets().modifyText("Pest Control", 235, 4);
				    p.getPackets().modifyText("Warrior Guild", 235, 5);
				    p.getPackets().modifyText("Fremmenik Shore", 235, 6);
				    p.getPackets().sendChatboxInterface2(235);
				    newStatus = 242;
				    break;
				
			    case 242: // Canifis
				    travel(p, 0, false);
				    break;
				
			    case 243: // Waterbirth isle
				    travel(p, 1, false);
				    break;
				
			    case 244: // Pest control
				    travel(p, 2, false);
				    break;
				
			    case 245: // Warrior guild
				    int attackLevel = p.getSkills().getMaxLevel(Skills.SKILL.ATTACK);
				    int strengthLevel = p.getSkills().getMaxLevel(Skills.SKILL.STRENGTH);
				    bool hasA99 = attackLevel == 99 || strengthLevel == 99;
				    if (((attackLevel + strengthLevel) >= 130) || hasA99) {
					    travel(p, 3, false);
				    } else {
					    p.getPackets().sendNPCHead(4540, 243, 2);
					    p.getPackets().modifyText("Captain Bentley", 243, 3);
					    p.getPackets().modifyText("I'm sorry " + p.getLoginDetails().getUsername() + ", I cannot take you there.", 243, 4);
					    p.getPackets().modifyText("A combined Attack & Strength level of 130 is ", 243, 5);
					    p.getPackets().modifyText("required to use The Warrior Guild.", 243, 6);
					    p.getPackets().animateInterface(9827, 243, 2);
					    p.getPackets().sendChatboxInterface2(243);
				    }
				    break;
				
			    case 246: // Fremmenik shore
				    travel(p, 4, false);
				    break;
				
		    }
		    if (newStatus != -1) {
			    p.setTemporaryAttribute("dialogue", newStatus);
		    }
	    }
	    public static void showArnorDialogue(Player p, int status) {
		    int newStatus = -1;
		    p.getPackets().softCloseInterfaces();
		    if (p.getTemporaryAttribute("unmovable") != null) {
			    return;
		    }
		    switch(status) {
			    case 370:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 371;
				    break;
				
			    case 371:
				    p.getPackets().sendNPCHead(1361, 241, 2);
				    p.getPackets().modifyText("Arnor", 241, 3);
				    p.getPackets().modifyText("Of course, follow me.", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 372;
				    break;
				
			    case 372:
				    travel(p, 3, true);
				    break;
		    }
		    if (newStatus != -1) {
			    p.setTemporaryAttribute("dialogue", newStatus);
		    }
	    }
	    public static void showJarvaldDialogue(Player p, int status) {
		    int newStatus = -1;
		    p.getPackets().softCloseInterfaces();
		    if (p.getTemporaryAttribute("unmovable") != null) {
			    return;
		    }
		    switch(status) {
			    case 300:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 301;
				    break;
				
			    case 301:
				    p.getPackets().sendNPCHead(2436, 241, 2);
				    p.getPackets().modifyText("Jarvald", 241, 3);
				    p.getPackets().modifyText("No problem. Off we go!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 302;
				    break;
				
			    case 302:
				    travel(p, 1, true);
				    break;
		    }
		    if (newStatus != -1) {
			    p.setTemporaryAttribute("dialogue", newStatus);
		    }
	    }
	    public static void showAliDialogue(Player p, int status) {
		    int newStatus = -1;
		    p.getPackets().softCloseInterfaces();
		    if (p.getTemporaryAttribute("unmovable") != null) {
			    return;
		    }
		    switch(status) {
			    case 205:
				    p.getPackets().sendNPCHead(1862, 241, 2);
				    p.getPackets().modifyText("Ali Morissane", 241, 3);
				    p.getPackets().modifyText("Would you like to go back to Lletya?", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 206;
				    break;
				
			    case 206:
				    p.getPackets().sendChatboxInterface2(228);
				    p.getPackets().modifyText("Yes please, let's go", 228, 2);
				    p.getPackets().modifyText("Not yet", 228, 3);
				    newStatus = 207;
				    break;
				
			    case 207:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Yes please, let's go.", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 208;
				    break;
				
			    case 208:
				    p.getPackets().sendNPCHead(1862, 241, 2);
				    p.getPackets().modifyText("Ali Morissane", 241, 3);
				    p.getPackets().modifyText("Very well.", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 209;
				    break;
				
			    case 209:
				    p.setTemporaryAttribute("unmovable", true);
				    p.getPackets().displayInterface(120);
				    p.getPackets().sendMessage("Your camel trots off slowly out of the desert..");
                    Event moveBackToLletyaEvent = new Event(2000);
                    int moveBackToLletyaCounter = 0;
                    moveBackToLletyaEvent.setAction(() => {
                        if (moveBackToLletyaCounter == 0)
                        {
                            moveBackToLletyaCounter++;
                            moveBackToLletyaEvent.setTick(600);
							p.teleport(new Location(2340, 3799, 0));
						} else {
                            moveBackToLletyaEvent.stop();
							p.removeTemporaryAttribute("unmovable");
							p.getPackets().sendMessage("..You and Ali are back in Lletya.");
							p.getPackets().closeInterfaces();
						}	
				    });
                    Server.registerEvent(moveBackToLletyaEvent);
				    break;
				
			    case 210:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Not yet.", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 211;
				    break;
				
			    case 211:
				    p.getPackets().sendNPCHead(1862, 241, 2);
				    p.getPackets().modifyText("Ali Morissane", 241, 3);
				    p.getPackets().modifyText("No problem, I will be here when you decide to leave.", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    break;
				
		    }
		    if (newStatus != -1) {
			    p.setTemporaryAttribute("dialogue", newStatus);
		    }
	    }
	    private void handleEnterText(Player player, Packet packet) {
		    if (player.getTemporaryAttribute("interfaceVariable") == null) {
			    player.getPackets().sendMessage("An error occured, please try again.");
			    return;
		    }
		    long textAsLong = packet.readLong();
		    EnterVariable var = (EnterVariable) player.getTemporaryAttribute("interfaceVariable");
		    switch(var.getInterfaceId()) {
			    case 590: // Clan chat setup
				    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
				    if (clan != null) {
					    clan.setClanName(misc.longToPlayerName(textAsLong));
					    Server.getClanManager().updateClan(clan);
					    player.getPackets().modifyText(misc.formatPlayerNameForDisplay(clan.getClanName()), 590, 22);
					    break;
				    }
				    player.getPackets().sendMessage("Please set up a clan channel before trying to change the name.");
				    break;
		    }
		    player.removeTemporaryAttribute("interfaceVariable");
	    }
        /**
         * Unregister a player.
         * @param p as Player
         */
        public static void unregister(Player p)
        {
            if (p.getTrade() != null)
            {
                p.getTrade().decline();
                p.setTrade(null);
            }
            minigames.getFightPits().removeWaitingPlayer(p);
            minigames.getFightPits().removePlayingPlayer(p);
            if (p.getTemporaryAttribute("cantDoAnything") != null && Location.inFightPits(p.getLocation()))
            {
                minigames.getFightPits().useOrb(p, 5);
                return;
            }
            if (Location.inFightPits(p.getLocation()))
            {
                Server.getMinigames().getFightPits().teleportToWaitingRoom(p, false);
                return;
            }
            if (p.getFightCave() != null)
            {
                if (!p.getFightCave().isGamePaused())
                {
                    p.getFightCave().teleFromCave(true);
                    return;
                }
                else
                {
                    p.setLocation(new Location(2439, 5169, 0));
                }
            }
            if (!Combat.isXSecondsSinceCombat(p, p.getLastAttacked(), 10000) || p.isDead() || p.getTemporaryAttribute("unmovable") != null)
            {
                return;
            }
            if (p.getDuel() != null)
            {
                if (p.getDuel().getStatus() == 8)
                {
                    if (p.getDuel().getWinner().Equals(p))
                    {
                        p.getDuel().recieveWinnings(p);
                    }
                }
                else
                {
                    if (p.getDuel().getStatus() == 5 || p.getDuel().getStatus() == 6)
                    {
                        p.getDuel().finishDuel(true, true);
                    }
                }
            }
            removeAllPlayersNPCs(p);

           
            foreach(Player p2 in players) {
                if(p == p2) continue;
                //Remove me from anyone who has Seen me.. or attempting to see me (new players).
                if (p2.getLocalEnvironment().getSeenPlayers().Contains(p) || p2.getLocalEnvironment().getNewPlayers().Contains(p))
                    p2.getLocalEnvironment().getRemovedPlayers().Add(p);
            }

            clanManager.leaveChannel(p);
            loginHandler.addSavePlayer(p);
            players.Remove(p);
            p.getFriends().unregistered();
            Console.WriteLine("Unregistered " + p.getLoginDetails().getUsername() + " [online = " + players.Count + "]");
        }
	    public static void showAliDialogue(Player p, int status) {
		    int newStatus = -1;
		    p.getPackets().softCloseInterfaces();
		    if (p.getTemporaryAttribute("unmovable") != null) {
			    return;
		    }
		    switch(status) {
			    case 156:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Hello?", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 157;
				    break;
				
			    case 157:
				    p.getPackets().sendNPCHead(1862, 241, 2);
				    p.getPackets().modifyText("Ali Morissane", 241, 3);
				    p.getPackets().modifyText("Well, hello there " + p.getLoginDetails().getUsername() + ", can i help you?", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 158;
				    break;
				
			    case 158:
				    p.getPackets().sendChatboxInterface2(230);
				    p.getPackets().modifyText("Can you take me to Al-Kharid please?", 230, 2);
				    p.getPackets().modifyText("You don't look like you're from around here..", 230, 3);
				    p.getPackets().modifyText("Nothing, sorry to bother you", 230, 4);
				    newStatus = 159;
				    break;
				
			    case 159:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Can you take me to Al-Kharid please?", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 160;
				    break;
				
			    case 160:
                    p.getPackets().sendNPCHead(1862, 241, 2);
                    p.getPackets().modifyText("Ali Morissane", 241, 3);
                    p.getPackets().modifyText("Certainly, let's go..", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 161;
				    break;
				
			    case 161:
				    p.setTemporaryAttribute("unmovable", true);
				    p.getPackets().displayInterface(120);
				    p.getPackets().sendMessage("You follow Ali across vast lands..");
                    Event moveToAlKharidEvent = new Event(2000);
                    int moveToAlKharidCounter = 0;
                    moveToAlKharidEvent.setAction(() => {
                        if (moveToAlKharidCounter == 0)
                        {
                            moveToAlKharidCounter++;
                            moveToAlKharidEvent.setTick(600);
							p.teleport(new Location(3311 + misc.random(2),3199 + misc.random(3), 0));
						} else {
                            moveToAlKharidEvent.stop();
                            p.getPackets().sendOverlay(170);
							p.removeTemporaryAttribute("unmovable");
                            p.getPackets().sendMessage("..Eventually, you find yourself in Al-Kharid.");
                            p.getPackets().closeInterfaces();
                            Event removeOverlayEvent = new Event(2000);
                            removeOverlayEvent.setAction(() => {
                                removeOverlayEvent.stop();
                                p.getPackets().sendRemoveOverlay();
							});
                            Server.registerEvent(removeOverlayEvent);
						}	
				    });
                    Server.registerEvent(moveToAlKharidEvent);
				    break;
				
			    case 162:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("You don't look like you're from around here..", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 163;
				    break;
				
			    case 163:
                    p.getPackets().sendNPCHead(1862, 241, 2);
                    p.getPackets().modifyText("Ali Morissane", 241, 3);
                    p.getPackets().modifyText("That's because i'm not!", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 164;
				    break;
				
			    case 164:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("I thought as much, Where are you from?", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 165;
				    break;
				
			    case 165:
                    p.getPackets().sendNPCHead(1862, 241, 2);
                    p.getPackets().modifyText("Ali Morissane", 241, 3);
                    p.getPackets().modifyText("I usually reside in a small desert town, called Al-Kharid.", 241, 4);
                    p.getPackets().animateInterface(9827, 241, 2);
                    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 166;
				    break;
				
			    case 166:
                    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("What does Al-Kharid have to offer?", 64, 4);
                    p.getPackets().animateInterface(9827, 64, 2);
                    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 167;
				    break;
				
			    case 167:
				    p.getPackets().sendNPCHead(1862, 244, 2);
				    p.getPackets().modifyText("Ali Morissane", 244, 3);
				    p.getPackets().modifyText("Sand! lots, and lots of sand! On a more serious note..", 244, 4);
				    p.getPackets().modifyText("A mine full of ore rich rocks, a duel arena where", 244, 5);
				    p.getPackets().modifyText("I hear fortunes are gained and lost. Also, a small market,", 244, 6);
				    p.getPackets().modifyText("which has been attracting crafty thieves as of late!", 244, 7);
				    p.getPackets().animateInterface(9827, 244, 2);
				    p.getPackets().sendChatboxInterface2(244);
				    newStatus = 168;
				    break;
				
			    case 168:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("I may have to pay Al-Kharid a visit...", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 169;
				    break;
				
			    case 169:
				    p.getPackets().sendNPCHead(1862, 242, 2);
				    p.getPackets().modifyText("Ali Morissane", 242, 3);
				    p.getPackets().modifyText("There is one problem. We have also been having", 242, 4);
				    p.getPackets().modifyText("trouble with some of the locals recently.", 242, 5);
				    p.getPackets().animateInterface(9827, 242, 2);
				    p.getPackets().sendChatboxInterface2(242);
				    newStatus = 170;
				    break;
				
			    case 170:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Trouble with the locals?", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 171;
				    break;
				
			    case 171:
				    p.getPackets().sendNPCHead(1862, 243, 2);
				    p.getPackets().modifyText("Ali Morissane", 243, 3);
				    p.getPackets().modifyText("Yes. Although I really shouldn't say anything but", 243, 4);
				    p.getPackets().modifyText("perhaps you can help. Bandits have overtaken some of", 243, 5);
				    p.getPackets().modifyText("the empty tents in Al-Kharid, and are quite aggressive...", 243, 6);
				    p.getPackets().animateInterface(9827, 243, 2);
				    p.getPackets().sendChatboxInterface2(243);
				    newStatus = 172;
				    break;
				
			    case 172:
				    p.getPackets().sendNPCHead(1862, 244, 2);
				    p.getPackets().modifyText("Ali Morissane", 244, 3);
				    p.getPackets().modifyText("..And that's not all! Deep under the town lies a beast,", 244, 4);
				    p.getPackets().modifyText("I hear it's a mixture of a bug and a fly...I expect it", 244, 5);
				    p.getPackets().modifyText("would take a fine warrior to defeat it and no doubt", 244, 6);
				    p.getPackets().modifyText("he would be generously rewarded.", 244, 7);
				    p.getPackets().animateInterface(9827, 244, 2);
				    p.getPackets().sendChatboxInterface2(244);
				    newStatus = 173;
				    break;
				
			    case 173:
				    p.getPackets().sendPlayerHead(65, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 65, 3);
				    p.getPackets().modifyText("Do you have a map, or directions", 65, 4);
				    p.getPackets().modifyText("to Al-Kharid?", 65, 5);
				    p.getPackets().animateInterface(9827, 65, 2);
				    p.getPackets().sendChatboxInterface2(65);
				    newStatus = 174;
				    break;
				
			    case 174:
				    p.getPackets().sendNPCHead(1862, 243, 2);
				    p.getPackets().modifyText("Ali Morissane", 243, 3);
				    p.getPackets().modifyText("I don't i'm afraid, although I travel back reguarly and", 243, 4);
				    p.getPackets().modifyText("happen to have room for a passenger. So if you'd", 243, 5);
				    p.getPackets().modifyText("ever like to go to Al-Kharid, don't hesitate to ask me.", 243, 6);
				    p.getPackets().animateInterface(9827, 243, 2);
				    p.getPackets().sendChatboxInterface2(243);
				    newStatus = 175;
				    break;
				
			    case 175:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Thankyou for the offer, I may take you up on it soon.", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 176;
				    break;
				
			    case 176:
				    p.getPackets().sendNPCHead(1862, 241, 2);
				    p.getPackets().modifyText("Ali Morissane", 241, 3);
				    p.getPackets().modifyText("I'll see you then!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    break;
				
			    case 177:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Nothing, sorry to bother you!", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    break;
				
		    }
		    if (newStatus != -1) {
			    p.setTemporaryAttribute("dialogue", newStatus);
		    }
	    }
 private void unregistered(Player p)
 {
     long n = p.getLoginDetails().getLongName();
     if(friends.Contains(n)) {
         player.getPackets().sendFriend(n, 0);
     }
 }
 private bool isFriend(Player player)
 {
     long n = player.getLoginDetails().getLongName();
     if(friends.Contains(n)) {
         return true;
     }
     return false;
 }
	    private void handleClanKick(Player player, Packet packet) {
		    long name = packet.readLong();
		    if (name < 0) {
			    return;
		    }
		    Clan clan = Server.getClanManager().getClanByPlayer(player);
		    if (clan != null) {
			    ClanUser user = clan.getUserByName(player.getLoginDetails().getUsername());
			    if (user != null) {
				    if (user.getClanRights() < clan.getKickRights()) {
					    player.getPackets().sendMessage("You do not have a high enough rank to kick users from this clan chat.");
					    return;
				    }
				    clan.kickUser(name);
			    }
		    }
	    }
	    private void handleClanRanks(Player player, Packet packet) {
		    int rank = packet.readByteA();
		    long name = packet.readLong();
		    if (name < 0 || (rank < 0 || rank > 6)) {
			    return;
		    }
		    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
		    if (clan != null) {
			    ClanUser user = clan.getUserByName(misc.longToPlayerName(name));
			    if (user != null) {
				    user.setClanRights((Clan.ClanRank)rank);
				    Server.getClanManager().updateClan(clan);
			    } 
                Clan.ClanRank userExists;
                if (clan.getUsersWithRank().TryGetValue(misc.longToPlayerName(name), out userExists))
                    clan.getUsersWithRank()[misc.longToPlayerName(name)] = (Clan.ClanRank)rank;  //Exists already, so altar.
                else
                    clan.getUsersWithRank().Add(misc.longToPlayerName(name), (Clan.ClanRank)rank); //Not existed yet. so add
		    }
	    }
	    public void recieveWinnings(Player p) {
		    if (!winner.Equals(p)) {
			    misc.WriteError(p.getLoginDetails().getUsername() + " tried to claim stake winnings that weren't his.");
			    return;
		    }
		    if (status != 8) {
			    return;
		    }
		    for (int i = 0; i < winnings.Length; i++) {
			    if (winnings[i] != null) {
				    if (!player.getInventory().addItem(winnings[i].getItemId(), winnings[i].getItemAmount())) {
					    misc.WriteError("Possible stake winnings dupe " + player.getLoginDetails().getUsername());
				    } else {
					    winnings[i] = null;
				    }
			    }
		    }
	    }
Example #26
0
        public void removeItem(int slot, int amount)
        {
            if (status > 2 || items[slot] == null)
            {
                return;
            }
            int  itemId    = getItemInSlot(slot);
            int  tradeSlot = findItem(itemId);
            bool stackable = ItemData.forId(itemId).isStackable();

            if (tradeSlot == -1)
            {
                misc.WriteError("user tried to remove non-existing item from trade! " + player.getLoginDetails().getUsername());
                return;
            }
            if (amount > getItemAmount(itemId))
            {
                amount = getItemAmount(itemId);
            }
            if (!stackable)
            {
                for (int i = 0; i < amount; i++)
                {
                    tradeSlot = findItem(itemId);
                    if (player.getInventory().addItem(itemId, amount))
                    {
                        items[tradeSlot].setItemAmount(getAmountInSlot(tradeSlot) - amount);
                        if (getAmountInSlot(tradeSlot) <= 0)
                        {
                            items[tradeSlot] = null;
                        }
                        player2.getPackets().tradeWarning(tradeSlot);
                    }
                }
                if (status == 2 || player2.getTrade().getStatus() == 2)
                {
                    this.status = 1;
                    player2.getTrade().setStatus(1);
                    player.getPackets().modifyText("", 335, 36);
                    player2.getPackets().modifyText("", 335, 36);
                }
                refreshTrade();
            }
            else
            {
                tradeSlot = findItem(itemId);
                if (player.getInventory().addItem(itemId, amount))
                {
                    items[tradeSlot].setItemAmount(getAmountInSlot(tradeSlot) - amount);
                    if (getAmountInSlot(tradeSlot) <= 0)
                    {
                        items[tradeSlot] = null;
                    }
                    player2.getPackets().tradeWarning(tradeSlot);
                }
            }
            if (status == 2 || player2.getTrade().getStatus() == 2)
            {
                this.status = 1;
                player2.getTrade().setStatus(1);
                player.getPackets().modifyText("", 335, 36);
                player2.getPackets().modifyText("", 335, 36);
            }
            refreshTrade();
            tradeModified = true;
        }
	    private void handleClickThree(Player player, Packet packet) {
		    int interfaceId = packet.readUShort();
		    int child = packet.readUShort();
		    int slot = packet.readUShort();
		    Console.WriteLine("InterfaceOption 3: interfaceId: " + interfaceId);
		    switch(interfaceId) {
			    case 154: // Craft normal leather.
				    Leather.craftNormalLeather(player, child, player.getInventory().getItemAmount(1741), true);
				    break;
			
			    case 542: // Glassblowing.
				    int totalGlass = player.getInventory().getItemAmount(1775);
				    switch(child) {
					    case 40: // Make all beer glass.
						    Glass.craftGlass(player, totalGlass, 0, true);
						    break;
						
					    case 41: // Make all candle lantern.
						    Glass.craftGlass(player, totalGlass, 1, true);
						    break;
						
					    case 42: // Make all oil lamp.
						    Glass.craftGlass(player, totalGlass, 2, true);
						    break;
						
					    case 38: // Make all vial.
						    Glass.craftGlass(player, totalGlass, 3, true);
						    break;
						
					    case 44: // Make all Fishbowl
						    Glass.craftGlass(player, totalGlass, 4, true);
						    break;
						
					    case 39: // Make all orb.
						    Glass.craftGlass(player, totalGlass, 5, true);
						    break;
						
					    case 43: // Make all lantern lens
						    Glass.craftGlass(player, totalGlass, 6, true);
						    break;
						
					    case 45: // Make all dorgeshuun light orb.
						    Glass.craftGlass(player, totalGlass, 7, true);
						    break;
				    }
				    break;
				
			    case 763: // Bank inventory - 10.
				    player.getBank().deposit(slot, 10);
				    player.getBank().refreshBank();
				    break;
				
			    case 762: // Bank - 10.
				    player.getBank().withdraw(slot, 10);
				    player.getBank().refreshBank();
				    break;
				
 			    case 336: // Trade/stake inventory - trade 10.
 				    if (player.getTrade() != null) {
 					    player.getTrade().tradeItem(slot, 10);
 					    break;
 				    }
 				    if (player.getDuel() != null) {
 					    player.getDuel().stakeItem(slot, 10);
 					    break;
 				    }
 				    break;
 				
 			    case 335: // Trade interface - remove 10.
 				    player.getTrade().removeItem(slot, 10);
 				    break;
 				
 			    case 631: // Duel interface - remove 10.
 				    if (player.getDuel() != null) {
					    player.getDuel().removeItem(slot, 5);
					    break;
 				    }
 				    break;
 				
 			    case 620: // Shop - buy 5.
 				    player.getShopSession().buyItem(slot, 5);
 				    break;
 				
 			    case 621: // Shop - sell 5.
 				    player.getShopSession().sellItem(slot, 5);
 				    break;
 				
 			    case 590: // Clan chat setup
 				    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
				    if (clan == null) {
					    player.getPackets().sendMessage("Please create your clan chat before changing settings.");
					    break;
				    }
 				    switch(child) {
	 				    case 23: // "Who can enter chat" - recruit.
                            clan.setEnterRights(Clan.ClanRank.RECRUIT);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
	 					    break;
	 					
	 				    case 24: // "Who can talk in chat" - recruit.
                            clan.setTalkRights(Clan.ClanRank.RECRUIT);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
	 					    break;
	 					
	 				    case 26: // "Who can share loot" - recruit.
                            clan.setLootRights(Clan.ClanRank.RECRUIT);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
	 					    break;
 				    }
 				    break;
		    }
	    }
	    public static void doDialogue(Player p, int status) {
		    int newStatus = -1;
		    p.getPackets().softCloseInterfaces();
		    switch(status) {
			    case 1:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Ahoy Cap'n!", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 2;
				    break;
				
			    case 2:
				    p.getPackets().sendNPCHead(437, 241, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 241, 3);
				    p.getPackets().modifyText("Ahoy there!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 3;
				    break;
				
			    case 3:
				    p.getPackets().sendNPCHead(4535, 241, 1);
				    p.getPackets().modifyText("Parrot", 241, 3);
				    p.getPackets().modifyText("Avast ye scurvy swabs!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 1);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 4;
				    break;
				
			    case 4:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Huh?", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 5;
				    break;
				
			    case 5:
				    p.getPackets().sendNPCHead(437, 241, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 241, 3);
				    p.getPackets().modifyText("Don't mind me parrot, he's Cracked Jenny's Tea Cup!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 6;
				    break;
				
			    case 6:
				    p.getPackets().sendChatboxInterface2(235);
				    p.getPackets().modifyText("What is this place?", 235, 2);
				    p.getPackets().modifyText("What do i do in the arena?", 235, 3);
				    p.getPackets().modifyText("I'd like to use the Agility Arena, please.", 235, 4);
				    p.getPackets().modifyText("Could you sell me a Skillcape of Agility?.", 235, 5);
				    p.getPackets().modifyText("See you later.", 235, 6);
				    newStatus = 7;
				    break;
				
			    case 7:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("What is this place?", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 8;
				    break;
				
			    case 8:
				    p.getPackets().sendNPCHead(437, 242, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 242, 3);
				    p.getPackets().modifyText("This, me hearty, is the entrance to the Brimhaven", 242, 4);
				    p.getPackets().modifyText("Agility Arena!", 242, 5);
				    p.getPackets().animateInterface(9827, 242, 2);
				    p.getPackets().sendChatboxInterface2(242);
				    newStatus = 9;
				    break;
				
			    case 9:
				    p.getPackets().sendNPCHead(437, 242, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 242, 3);
				    p.getPackets().modifyText("I were diggin for buried treasure when I found it!", 242, 4);
				    p.getPackets().modifyText("Amazed I was! It was a sight to behold!", 242, 5);
				    p.getPackets().animateInterface(9827, 242, 2);
				    p.getPackets().sendChatboxInterface2(242);
				    newStatus = 10;
				    break;
				
			    case 10:
				    p.getPackets().sendNPCHead(4535, 241, 1);
				    p.getPackets().modifyText("Parrot", 241, 3);
				    p.getPackets().modifyText("Buried treasure!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 1);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 11;
				    break;
				
			    case 11:
				    p.getPackets().sendNPCHead(437, 242, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 242, 3);
				    p.getPackets().modifyText("It were the biggest thing i'd ever seen! It must've been", 242, 4);
				    p.getPackets().modifyText("atleast a league from side to side!", 242, 5);
				    p.getPackets().animateInterface(9827, 242, 2);
				    p.getPackets().sendChatboxInterface2(242);
				    newStatus = 12;
				    break;
				
			    case 12:
				    p.getPackets().sendNPCHead(437, 241, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 241, 3);
				    p.getPackets().modifyText("It made me list, I were that excited!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 13;
				    break;
				
			    case 13:
				    p.getPackets().sendNPCHead(4535, 241, 1);
				    p.getPackets().modifyText("Parrot", 241, 3);
				    p.getPackets().modifyText("Get on with it!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 1);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 14;
				    break;
				
			    case 14:
				    p.getPackets().sendNPCHead(437, 244, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 244, 3);
				    p.getPackets().modifyText("I'd found a huge cave with all these platforms. I reckon", 244, 4);
				    p.getPackets().modifyText("it be an ancient civilisation that made it. I had to be", 244, 5);
				    p.getPackets().modifyText("mighty careful as there was these traps everywhere!", 244, 6);
				    p.getPackets().modifyText("Dangerous it was!", 244, 7);
				    p.getPackets().animateInterface(9827, 244, 2);
				    p.getPackets().sendChatboxInterface2(244);
				    newStatus = 15;
				    break;
				
			    case 15:
				    p.getPackets().sendNPCHead(4535, 241, 1);
				    p.getPackets().modifyText("Parrot", 241, 3);
				    p.getPackets().modifyText("Danger! Danger!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 1);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 16;
				    break;
				
			    case 16:
				    p.getPackets().sendNPCHead(437, 241, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 241, 3);
				    p.getPackets().modifyText("Entrance is only " + AGILITY_ARENA_PRICE.ToString("#,##0") + " coins!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 6;
				    break;
				
			    case 17:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("What do I do in the arena?", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 18;
				    break;
				
			    case 18:
				    p.getPackets().sendNPCHead(437, 244, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 244, 3);
				    p.getPackets().modifyText("Well, me hearty, it's simple. Ye can cross between two", 244, 4);
				    p.getPackets().modifyText("platforms by using the traps or obstacles strung across", 244, 5);
				    p.getPackets().modifyText("'em. Try and make your way to the pillar that is", 244, 6);
				    p.getPackets().modifyText("indicated by the flashing arrow.", 244, 7);
				    p.getPackets().animateInterface(9827, 244, 2);
				    p.getPackets().sendChatboxInterface2(244);
				    newStatus = 19;
				    break;
				
			    case 19:
				    p.getPackets().sendNPCHead(437, 243, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 243, 3);
				    p.getPackets().modifyText("Ye receive tickets for tagging more than one pillar in a", 243, 4);
				    p.getPackets().modifyText("row. So ye won't get a ticket from the first pillar but", 243, 5);
				    p.getPackets().modifyText("ye will for every platform ye tag in a row after that.", 243, 6);
				    p.getPackets().animateInterface(9827, 243, 2);
				    p.getPackets().sendChatboxInterface2(243);
				    newStatus = 20;
				    break;
				
			    case 20:
				    p.getPackets().sendNPCHead(437, 244, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 244, 3);
				    p.getPackets().modifyText("If ye miss a platform ye will miss out on the next ticket", 244, 4);
				    p.getPackets().modifyText("so try and get every platform you can! When ye be", 244, 5);
				    p.getPackets().modifyText("done, take the tickets to Jackie over there and she'll", 244, 6);
				    p.getPackets().modifyText("exchange them for experience or items.", 244, 7);
				    p.getPackets().animateInterface(9827, 244, 2);
				    p.getPackets().sendChatboxInterface2(244);
				    newStatus = 21;
				    break;
				
			    case 21:
				    p.getPackets().sendNPCHead(4535, 242, 1);
				    p.getPackets().modifyText("Parrot", 242, 3);
				    p.getPackets().modifyText("Tag when green light means tickets!", 242, 4);
				    p.getPackets().modifyText("Tag when red light means green light!", 242, 5);
				    p.getPackets().animateInterface(9827, 242, 1);
				    p.getPackets().sendChatboxInterface2(242);
				    newStatus = 22;
				    break;
				
			    case 22:
				    p.getPackets().sendNPCHead(437, 241, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 241, 3);
				    p.getPackets().modifyText("Thanks me hearty!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 23;
				    break;
				
			    case 23:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Thanks!", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 6;
				    break;
				
			    case 24:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("I'd like to use the Agility Arena, please.", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 25;
				    break;
				
			    case 25:
				    string message = "";
				    if (p.hasPaidAgilityArena()) {
					    message = "Ye've already paid, so down ye goes...";
				    } else {
                        message = "Aye, Entrance be " + AGILITY_ARENA_PRICE.ToString("#,##0") + " coins.";
					    newStatus = 26;
				    }
				    p.getPackets().sendNPCHead(437, 241, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 241, 3);
				    p.getPackets().modifyText(message, 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    break;
				
			    case 26:
				    p.getPackets().sendNPCHead(4535, 241, 1);
				    p.getPackets().modifyText("Parrot", 241, 3);
				    p.getPackets().modifyText("Pieces of eight!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 1);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 27;
				    break;
				
			    case 27:
				    p.getPackets().sendNPCHead(437, 242, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 242, 3);
				    p.getPackets().modifyText("A word of warning me hearty! There are dangerous", 242, 4);
				    p.getPackets().modifyText("traps down there!", 242, 5);
				    p.getPackets().animateInterface(9827, 242, 2);
				    p.getPackets().sendChatboxInterface2(242);
				    newStatus = 28;
				    break;
				
			    case 28:
				    if (!p.getInventory().hasItemAmount(995, AGILITY_ARENA_PRICE)) {
					    p.getPackets().sendPlayerHead(64, 2);
                        p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
					    p.getPackets().modifyText("I don't have enough money on me at the moment..", 64, 4);
					    p.getPackets().animateInterface(9827, 64, 2);
					    p.getPackets().sendChatboxInterface2(64);
					    newStatus = 31;
					    break;
				    }
                    p.getPackets().modifyText("Ok, here's " + AGILITY_ARENA_PRICE.ToString("#,##0") + " coins.", 228, 2);
				    p.getPackets().modifyText("Never mind.", 228, 3);
				    p.getPackets().sendChatboxInterface(228);
				    newStatus = 29;
				    break;
				
			    case 29:
				    if (p.getInventory().deleteItem(995, AGILITY_ARENA_PRICE)) {
					    p.setPaidAgilityArena(true);
				    }
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("Ok, here's " + AGILITY_ARENA_PRICE.ToString("#,##0") + " coins.", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 30;
				    break;
				
			    case 30:
                    p.getPackets().sendMessage("You pay Cap'n Izzy " + AGILITY_ARENA_PRICE.ToString("#,##0") + " coins.");
				    p.getPackets().sendNPCHead(437, 241, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 241, 3);
				    p.getPackets().modifyText("May the wind be in ye sails!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    break;
				
			    case 31:
				    p.getPackets().sendNPCHead(4535, 241, 1);
				    p.getPackets().modifyText("Parrot", 241, 3);
				    p.getPackets().modifyText("*Squawk*", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 1);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 32;
				    break;
				
			    case 32:
				    p.getPackets().sendNPCHead(437, 241, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 241, 3);
				    p.getPackets().modifyText("No coins, no entrance!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    break;
				
			    case 33:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Never mind.", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    break;
				
			    case 34:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Could you sell me a Skillcape of Agility?", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 35;
				    break;
				
			    case 35:
				    p.getPackets().sendNPCHead(437, 244, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 244, 3);
				    if (p.getSkills().getMaxLevel(Skills.SKILL.AGILITY) < 99) {
					    p.getPackets().modifyText("Unfortunatly not. I may only sell the Skillcape of Agility", 244, 4);
					    p.getPackets().modifyText("to those that have conquered the obstacles of Runescape,", 244, 5);
					    p.getPackets().modifyText("can climb like a cat and run like the wind! which err..", 244, 6);
					    p.getPackets().modifyText("isnt you. Is there anything else?", 244, 7);
					    newStatus = 6;
				    } else {
					    p.getPackets().modifyText("Indeed! You have reached level 99 Agility and have", 244, 4);
					    p.getPackets().modifyText("become a master of dexterity. It would be a pleasure", 244, 5);
					    p.getPackets().modifyText("to sell you an Agility skillcape and hood for a sum of", 244, 6);
					    p.getPackets().modifyText(SkillHandler.SKILLCAPE_PRICE.ToString("#,##0") + " coins.", 244, 7);
					    newStatus = 36;
				    }
				    p.getPackets().animateInterface(9827, 244, 2);
				    p.getPackets().sendChatboxInterface2(244);
				    break;
				
			    case 36:
				    p.getPackets().modifyText("I'll pay " + SkillHandler.SKILLCAPE_PRICE.ToString("#,##0") + " coins.", 228, 2);
                    p.getPackets().modifyText(SkillHandler.SKILLCAPE_PRICE.ToString("#,##0") + " is a crazy price!", 228, 3);
				    p.getPackets().sendChatboxInterface(228);
				    newStatus = 37;
				    break;
				
			    case 37:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText("I'll pay " + SkillHandler.SKILLCAPE_PRICE.ToString("#,##0") + " coins.", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 38;
				    break;
				
			    case 38:
				    if (p.getInventory().getTotalFreeSlots() < 2) {
					    p.getPackets().sendNPCHead(437, 241, 2);
					    p.getPackets().modifyText("Cap'n Izzy No-Beard", 241, 3);
					    p.getPackets().modifyText("Ye require 2 free inventory spaces!", 241, 4);
					    p.getPackets().animateInterface(9827, 241, 2);
					    p.getPackets().sendChatboxInterface2(241);
					    break;
				    }
				    if (p.getInventory().deleteItem(995, SkillHandler.SKILLCAPE_PRICE)) {
					    int cape = p.getSkills().hasMultiple99s() ? 9772 : 9771;
					    int hood = 9773;
					    p.getInventory().addItem(cape);
					    p.getInventory().addItem(hood);
					    p.getPackets().sendNPCHead(437, 242, 2);
					    p.getPackets().modifyText("Cap'n Izzy No-Beard", 242, 3);
					    p.getPackets().modifyText("One Agility Skillcape & hood.", 242, 4);
					    p.getPackets().modifyText("Wear it with pride.", 242, 5);
					    p.getPackets().animateInterface(9827, 242, 2);
					    p.getPackets().sendChatboxInterface2(242);
				    } else {
					    p.getPackets().sendNPCHead(437, 241, 2);
					    p.getPackets().modifyText("Cap'n Izzy No-Beard", 241, 3);
					    p.getPackets().modifyText("Ye don't have enough coins!", 241, 4);
					    p.getPackets().animateInterface(9827, 241, 2);
					    p.getPackets().sendChatboxInterface2(241);
				    }
				    break;
				
			    case 39:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
                    p.getPackets().modifyText(SkillHandler.SKILLCAPE_PRICE.ToString("#,##0") + " is a crazy price!", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 40;
				    break;
				
			    case 40:
				    p.getPackets().sendNPCHead(437, 241, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 241, 3);
				    p.getPackets().modifyText("I'm sure ye will change your mind eventually..", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    break;
				
			    case 41:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("See you later.", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 42;
				    break;
				
			    case 42:
				    p.getPackets().sendNPCHead(437, 241, 2);
				    p.getPackets().modifyText("Cap'n Izzy No-Beard", 241, 3);
                    p.getPackets().modifyText("Aye, goodbye " + p.getLoginDetails().getUsername() + ".", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    break;
				
			    /*
			     * NOW TALKING TO JACKIE THE FRUIT
			     */
				
			    case 43:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Ahoy there!", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 44;
				    break;
				
			    case 44:
				    p.getPackets().sendNPCHead(1055, 241, 2);
				    p.getPackets().modifyText("Pirate Jackie the Fruit", 241, 3);
				    p.getPackets().modifyText("Ahoy!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 45;
				    break;
				
			    case 45:
				    p.getPackets().sendChatboxInterface2(232);
				    p.getPackets().modifyText("What is this place?", 232, 2);
				    p.getPackets().modifyText("What do you do?", 232, 3);
				    p.getPackets().modifyText("I'd like to trade in my tickets, please.", 232, 4);
				    p.getPackets().modifyText("See you later.", 232, 5);
				    newStatus = 46;
				    break;
				
			    case 46:
				    p.getPackets().sendNPCHead(1055, 241, 2);
				    p.getPackets().modifyText("Pirate Jackie the Fruit", 241, 3);
				    p.getPackets().modifyText("Welcome to the Brimhaven Agility Arena!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 47;
				    break;
				
			    case 47:
				    p.getPackets().sendNPCHead(1055, 242, 2);
				    p.getPackets().modifyText("Pirate Jackie the Fruit", 242, 3);
				    p.getPackets().modifyText("If ye want to know more, talk to Cap'n Izzy, after", 242, 4);
				    p.getPackets().modifyText("all... he did find it!", 242, 5);
				    p.getPackets().animateInterface(9827, 242, 2);
				    p.getPackets().sendChatboxInterface2(242);
				    newStatus = 45;
				    break;
				
			    case 48:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("What do you do?", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 49;
				    break;
				
			    case 49:
				    p.getPackets().sendNPCHead(1055, 244, 2);
				    p.getPackets().modifyText("Pirate Jackie the Fruit", 244, 3);
				    p.getPackets().modifyText("I be the jack o' tickets. I exchange the tickets ye", 244, 4);
				    p.getPackets().modifyText("Collect in the Agility arena for more stuff. Ye can", 244, 5);
				    p.getPackets().modifyText("obtain more Agility experience or items ye won't", 244, 6);
				    p.getPackets().modifyText("find anywhere else!", 244, 7);
				    p.getPackets().animateInterface(9827, 244, 2);
				    p.getPackets().sendChatboxInterface2(244);
				    newStatus = 50;
				    break;
				
			    case 50:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Sounds good!", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 45;
				    break;
				
			    case 51:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("I'd like to trade in my tickets, please.", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 52;
				    break;
				
			    case 52:
				    p.getPackets().sendNPCHead(1055, 241, 2);
				    p.getPackets().modifyText("Pirate Jackie the Fruit", 241, 3);
				    p.getPackets().modifyText("Aye, ye be on the right track.", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 53;
				    break;
				
			    case 53:
				    p.getPackets().displayInterface(6);
				    break;
				
			    case 54:
				    p.getPackets().sendPlayerHead(64, 2);
                    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("See you later.", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 55;
				    break;
				
			    case 55:
				    p.getPackets().sendNPCHead(1055, 241, 2);
				    p.getPackets().modifyText("Pirate Jackie the Fruit", 241, 3);
				    p.getPackets().modifyText("Goodbye.", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    break;
		    }
		    if (newStatus != -1) {
			    p.setTemporaryAttribute("dialogue", newStatus);
		    }
	    }
	    private void handleClickFour(Player player, Packet packet) {
		    int interfaceId = packet.readUShort();
		    int child = packet.readUShort();
		    int slot = packet.readUShort();
		    Console.WriteLine("InterfaceOption 4: interfaceId: " + interfaceId);
		    switch(interfaceId) {
			    case 763: // Bank inventory - Custom amount.
				    player.getBank().deposit(slot, player.getBank().getLastXAmount());
				    player.getBank().refreshBank();
				    break;
				
			    case 762: // Bank - Custom amount.
				    player.getBank().withdraw(slot, player.getBank().getLastXAmount());
				    player.getBank().refreshBank();
				    break;
			
			    case 154: // Craft normal leather.
				    player.getPackets().displayEnterAmount();
				    player.setTemporaryAttribute("interfaceVariable", new EnterVariable(154, child));
				    break;
				
			    case 542: // Glassblowing.
				    switch(child) {
					    case 40: // Make X beer glass.
					    case 41: // Make X candle lantern.
					    case 42: // Make X oil lamp.
					    case 38: // Make X vial.
					    case 44: // Make X Fishbowl
					    case 39: // Make X orb.
					    case 43: // Make X lantern lens
					    case 45: // Make X dorgeshuun light orb.
						    player.getPackets().displayEnterAmount();
						    player.setTemporaryAttribute("interfaceVariable", new EnterVariable(542, child));
						    break;
				    }
				    break;
			    case 336: // Trade/stake inventory - trade all.
				    if (player.getTrade() != null) {
					    player.getTrade().tradeItem(slot, player.getInventory().getItemAmount(player.getInventory().getItemInSlot(slot)));
					    break;
				    }
				    if (player.getDuel() != null) {
					    player.getDuel().stakeItem(slot, player.getInventory().getItemAmount(player.getInventory().getItemInSlot(slot)));
					    break;
				    }
				    break;
				
			    case 335: // Trade interface - remove all.
				    player.getTrade().removeItem(slot, player.getTrade().getItemAmount(player.getTrade().getItemInSlot(slot)));
				    break;
				
 			    case 631: // Duel interface - remove All
 				    if (player.getDuel() != null) {
					    player.getDuel().removeItem(slot, player.getDuel().getItemAmount(player.getDuel().getItemInSlot(slot)));
					    break;
 				    }
 				    break;
				
 			    case 620: // Shop - buy 10.
 				    player.getShopSession().buyItem(slot, 10);
 				    break;
 				
 			    case 621: // Shop - sell 10.
 				    player.getShopSession().sellItem(slot, 10);
 				    break;
 				
 			    case 590: // Clan chat setup
 				    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
				    if (clan == null) {
					    player.getPackets().sendMessage("Please create your clan chat before changing settings.");
					    break;
				    }
 				    switch(child) {
	 				    case 23: // "Who can enter chat" - corporal.
                            clan.setEnterRights(Clan.ClanRank.CORPORAL);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
	 					    break;
	 					
	 				    case 24: // "Who can talk in chat" - corporal.
                            clan.setTalkRights(Clan.ClanRank.CORPORAL);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
	 					    break;
	 					
	 				    case 25: // // "Who can kick in chat" - corporal.
                            clan.setKickRights(Clan.ClanRank.CORPORAL);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getKickRights()), 590, 25);
	 					    break;
	 					
	 				    case 26: // "Who can share loot" - corporal.
                            clan.setLootRights(Clan.ClanRank.CORPORAL);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
	 					    break;
 				    }
 				    break;
		    }
	    }
	    public static void showSquireDialogue(Player p, int status) {
		    int newStatus = -1;
		    p.getPackets().softCloseInterfaces();
		    if (p.getTemporaryAttribute("unmovable") != null) {
			    return;
		    }
		    switch(status) {
			    case 340:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 341;
				    break;
				
			    case 341:
				    p.getPackets().sendNPCHead(3781, 241, 2);
				    p.getPackets().modifyText("Squire", 241, 3);
				    p.getPackets().modifyText("Certainly! Please visit Pest Control again soon.", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 342;
				    break;
				
			    case 342:
				    travel(p, 2, true);
				    break;
		    }
		    if (newStatus != -1) {
			    p.setTemporaryAttribute("dialogue", newStatus);
		    }
	    }
	    private void handleClickFive(Player player, Packet packet) {
		    int interfaceId = packet.readUShort();
		    int child = packet.readUShort();
		    int slot = packet.readUShort();
		    Console.WriteLine("InterfaceOption 5: interfaceId: " + interfaceId);
		    switch(interfaceId) {
			    case 763: // Bank inventory - X.
				    player.getPackets().displayEnterAmount();
				    player.setTemporaryAttribute("interfaceVariable", new EnterVariable(interfaceId, slot));
				    break;
				
			    case 762: // Bank - X.
				    player.getPackets().displayEnterAmount();
				    player.setTemporaryAttribute("interfaceVariable", new EnterVariable(interfaceId, slot));
				    break;
				
			    case 336: // Trade inventory - trade X.
				    player.getPackets().displayEnterAmount();
				    player.setTemporaryAttribute("interfaceVariable", new EnterVariable(interfaceId, slot));
				    break;
				
			    case 335: // Trade interface - remove X.
				    player.getPackets().displayEnterAmount();
				    player.setTemporaryAttribute("interfaceVariable", new EnterVariable(interfaceId, slot));
				    break;
				
 			    case 631: // Duel interface - remove All
 				    if (player.getDuel() != null) {
 					    player.getPackets().displayEnterAmount();
 					    player.setTemporaryAttribute("interfaceVariable", new EnterVariable(interfaceId, slot));
					    break;
 				    }
 				    break;
			
			    case 620: // Shop - buy X/buy 50.
				    if (player.getShopSession().isInMainStock()) {
					    player.getPackets().displayEnterAmount();
					    player.setTemporaryAttribute("interfaceVariable", new EnterVariable(interfaceId, slot));
				    } else {
					    player.getShopSession().buyItem(slot, 50);
				    }
				    break;
				
 			    case 621: // Shop - Sell 50.
 				    player.getShopSession().sellItem(slot, 50);
 				    break;
 				
 			    case 590: // Clan chat setup
 				    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
				    if (clan == null) {
					    player.getPackets().sendMessage("Please create your clan chat before changing settings.");
					    break;
				    }
 				    switch(child) {
	 				    case 23: // "Who can enter chat" - sergeant.
                            clan.setEnterRights(Clan.ClanRank.SERGEANT);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
	 					    break;
	 					
	 				    case 24: // "Who can talk in chat" - sergeant.
                            clan.setTalkRights(Clan.ClanRank.SERGEANT);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
	 					    break;
	 					
	 				    case 25: // // "Who can kick in chat" - sergeant.
                            clan.setKickRights(Clan.ClanRank.SERGEANT);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getKickRights()), 590, 25);
	 					    break;
	 					
	 				    case 26: // "Who can share loot" - sergeant.
                            clan.setLootRights(Clan.ClanRank.SERGEANT);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
	 					    break;
 				    }
 				    break;
		    }	
	    }
	    public static void showCaptainBarnabyDialogue(Player p, int status) {
		    int newStatus = -1;
		    p.getPackets().softCloseInterfaces();
		    if (p.getTemporaryAttribute("unmovable") != null) {
			    return;
		    }
		    switch(status) {
			    case 410:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 411;
				    break;
				
			    case 411:
				    p.getPackets().sendNPCHead(4962, 241, 2);
				    p.getPackets().modifyText("Captain Barnaby", 241, 3);
				    p.getPackets().modifyText("Yes! it's freezing here, let's go!", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 412;
				    break;
				
			    case 412:
				    travel(p, 4, true);
				    break;
		    }
		    if (newStatus != -1) {
			    p.setTemporaryAttribute("dialogue", newStatus);
		    }
	    }
	    private void handleClickSix(Player player, Packet packet) {
		    int interfaceId = packet.readUShort();
		    int child = packet.readUShort();
		    int slot = packet.readUShort();
		    Console.WriteLine("InterfaceOption 6: interfaceId: " + interfaceId);
		    switch(interfaceId) {
			    case 763: // Bank inventory - All.
				    player.getBank().deposit(slot, player.getInventory().getItemAmount(player.getInventory().getItemInSlot(slot)));
				    player.getBank().refreshBank();
				    break;
				
			    case 762: // Bank - All.
				    player.getBank().withdraw(slot, player.getBank().getAmountInSlot(slot));
				    player.getBank().refreshBank();
				    break;
				
 			    case 590: // Clan chat setup
 				    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
				    if (clan == null) {
					    player.getPackets().sendMessage("Please create your clan chat before changing settings.");
					    break;
				    }
 				    switch(child) {
	 				    case 23: // "Who can enter chat" - lieutenant.
                            clan.setEnterRights(Clan.ClanRank.LIEUTENANT);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
	 					    break;
	 					
	 				    case 24: // "Who can talk in chat" - lieutenant.
                            clan.setTalkRights(Clan.ClanRank.LIEUTENANT);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
	 					    break;
	 					
	 				    case 25: // // "Who can kick in chat" - lieutenant.
                            clan.setKickRights(Clan.ClanRank.LIEUTENANT);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getKickRights()), 590, 25);
	 					    break;
	 					
	 				    case 26: // "Who can share loot" - lieutenant.
                            clan.setLootRights(Clan.ClanRank.LIEUTENANT);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
	 					    break;
 				    }
 				    break;
		    }
	    }
	    public static void showCanifisSailorDialogue(Player p, int status) {
		    int newStatus = -1;
		    p.getPackets().softCloseInterfaces();
		    if (p.getTemporaryAttribute("unmovable") != null) {
			    return;
		    }
		    switch(status) {
			    case 280:
				    p.getPackets().sendPlayerHead(64, 2);
				    p.getPackets().modifyText(p.getLoginDetails().getUsername(), 64, 3);
				    p.getPackets().modifyText("Could you take me back to Oo'glog please?", 64, 4);
				    p.getPackets().animateInterface(9827, 64, 2);
				    p.getPackets().sendChatboxInterface2(64);
				    newStatus = 281;
				    break;
				
			    case 281:
				    p.getPackets().sendNPCHead(1304, 241, 2);
				    p.getPackets().modifyText("Sailor", 241, 3);
				    p.getPackets().modifyText("As you wish, i'll fetch the boat.", 241, 4);
				    p.getPackets().animateInterface(9827, 241, 2);
				    p.getPackets().sendChatboxInterface2(241);
				    newStatus = 282;
				    break;
				
			    case 282:
				    travel(p, 0, true);
				    break;
		    }
		    if (newStatus != -1) {
			    p.setTemporaryAttribute("dialogue", newStatus);
		    }
	    }
	    private void handleClickSeven(Player player, Packet packet) {
		    int interfaceId = packet.readUShort();
		    int child = packet.readUShort();
		    int slot = packet.readUShort();
		    Console.WriteLine("InterfaceOption 7: interfaceId: " + interfaceId);
		    switch(interfaceId) {		
			    case 762: // Bank - All but one.
				    player.getBank().withdraw(slot, player.getBank().getAmountInSlot(slot) - 1);
				    player.getBank().refreshBank();
				    break;
				
			    case 336: // Trade inventory - trade all.
				    //player.getTrade().lendItem(slot);
				    break;
				
 			    case 590: // Clan chat setup
 				    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
				    if (clan == null) {
					    player.getPackets().sendMessage("Please create your clan chat before changing settings.");
					    break;
				    }
 				    switch(child) {
	 				    case 23: // "Who can enter chat" - captain.
                            clan.setEnterRights(Clan.ClanRank.CAPTAIN);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
	 					    break;
	 					
	 				    case 24: // "Who can talk in chat" - captain.
                            clan.setTalkRights(Clan.ClanRank.CAPTAIN);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
	 					    break;
	 					
	 				    case 25: // // "Who can kick in chat" - captain.
                            clan.setKickRights(Clan.ClanRank.CAPTAIN);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getKickRights()), 590, 25);
	 					    break;
	 					
	 				    case 26: // "Who can share loot" - captain.
                            clan.setLootRights(Clan.ClanRank.CAPTAIN);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
	 					    break;
 				    }
 				    break;
		    }
	    }
	    private void handleClickTwo(Player player, Packet packet) {
		    int interfaceId = packet.readUShort();
		    int child = packet.readUShort();
		    int slot = packet.readUShort();
            Console.WriteLine("InterfaceOption 2: interfaceId: " + interfaceId);
		    switch(interfaceId) {
			    case 105: // GE Interface
				    switch(child) {
					    case 209: // "Collect" and "Collect-items" option
						    player.getGESession().collectSlot1(false);
						    break;
						
					    case 211: // Left box "Collect" option (coins)
						    player.getGESession().collectSlot2();
						    break;
				    }
				    break;
		
			    case 154: // Craft normal leather.
				    Leather.craftNormalLeather(player, child, 5, true);
				    break;
			
			    case 542: // Glassblowing.
				    switch(child) {
					    case 40: // Make 5 beer glass.
						    Glass.craftGlass(player, 5, 0, true);
						    break;
						
					    case 41: // Make 5 candle lantern.
						    Glass.craftGlass(player, 5, 1, true);
						    break;
						
					    case 42: // Make 5 oil lamp.
						    Glass.craftGlass(player, 5, 2, true);
						    break;
						
					    case 38: // Make 5 vial.
						    Glass.craftGlass(player, 5, 3, true);
						    break;
						
					    case 44: // Make 5 Fishbowl
						    Glass.craftGlass(player, 5, 4, true);
						    break;
						
					    case 39: // Make 5 orb.
						    Glass.craftGlass(player, 5, 5, true);
						    break;
						
					    case 43: // Make 5 lantern lens
						    Glass.craftGlass(player, 5, 6, true);
						    break;
						
					    case 45: // Make 5 dorgeshuun light orb.
						    Glass.craftGlass(player, 5, 7, true);
						    break;
				    }
				    break;
			
			    case 763: // Bank inventory - 5.
				    player.getBank().deposit(slot, 5);
				    player.getBank().refreshBank();
				    break;
				
			    case 762: // Bank - 5.
				    player.getBank().withdraw(slot, 5);
				    player.getBank().refreshBank();
				    break;
				
 			    case 336: // Trade/stake inventory - trade 5.
 				    if (player.getTrade() != null) {
 					    player.getTrade().tradeItem(slot, 5);
 					    break;
 				    }
 				    if (player.getDuel() != null) {
 					    player.getDuel().stakeItem(slot, 5);
 					    break;
 				    }
 				    break;
 				
 			    case 631: // Duel interface - remove 5
 				    if (player.getDuel() != null) {
					    player.getDuel().removeItem(slot, 5);
					    break;
 				    }
 				    break;
 				
 			    case 335: // Trade interface - remove 5.
 				    player.getTrade().removeItem(slot, 5);
 				    break;
 				
 			    case 620: // Shop - buy 1.
 				    player.getShopSession().buyItem(slot, 1);
 				    break;
 				
 			    case 621: // Shop - sell 1.
 				    player.getShopSession().sellItem(slot, 1);
 				    break;
 				
 			    case 590: // Clan chat setup
 				    Clan clan = Server.getClanManager().getClanByOwner(player.getLoginDetails().getUsername());
				    if (clan == null) {
					    player.getPackets().sendMessage("Please create your clan chat before changing settings.");
					    break;
				    }
 				    switch(child) {
	 				    case 23: // "Who can enter chat" - any friends.
	 					    clan.setEnterRights(Clan.ClanRank.FRIEND);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
	 					    break;
	 					
	 				    case 24: // "Who can talk in chat" - any friends.
                            clan.setTalkRights(Clan.ClanRank.FRIEND);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
	 					    break;
	 					
	 				    case 26: // "Who can share loot" - any friends.
	 					    clan.setLootRights(Clan.ClanRank.FRIEND);
	 					    player.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
	 					    break;
 				    }
 				    break;
		    }
	    }
	    public void openClanSetup(Player p) {
		    p.getPackets().displayInterface(590);
		    Clan clan = getClanByOwner(p.getLoginDetails().getUsername());
		    if (clan == null) {
                Clan newClan = new Clan(p, "Clan name", p.getLoginDetails().getUsername());
			    addChannel(newClan);
                p.getPackets().sendMessage("Your clan chat has been succesfully set up.");
			    return;
		    }
            p.getPackets().modifyText(misc.formatPlayerNameForDisplay(clan.getClanName()), 590, 22);
            p.getPackets().modifyText(clan.getRankString(clan.getEnterRights()), 590, 23);
            p.getPackets().modifyText(clan.getRankString(clan.getTalkRights()), 590, 24);
            p.getPackets().modifyText(clan.getRankString(clan.getKickRights()), 590, 25);
            p.getPackets().modifyText(clan.getRankString(clan.getLootRights()), 590, 26);
	    }