diff --git a/.idea/2006rebotted.iml b/.idea/2006rebotted.iml index c750aecb..09faeb4e 100644 --- a/.idea/2006rebotted.iml +++ b/.idea/2006rebotted.iml @@ -81,15 +81,6 @@ - - - - - - - - - diff --git a/2006Redone Server/data/logs/dropitem/michael.txt b/2006Redone Server/data/logs/dropitem/michael.txt new file mode 100644 index 00000000..71de7e02 --- /dev/null +++ b/2006Redone Server/data/logs/dropitem/michael.txt @@ -0,0 +1,2 @@ +[2019/10/26] 13:49 michael dropped 1 chef's hat absX: 3250 absY: 3225 +[2019/10/26] 13:49 michael dropped 1 fire talisman absX: 3250 absY: 3225 diff --git a/2006Redone Server/data/logs/pickupitem/michael.txt b/2006Redone Server/data/logs/pickupitem/michael.txt new file mode 100644 index 00000000..4952ddb9 --- /dev/null +++ b/2006Redone Server/data/logs/pickupitem/michael.txt @@ -0,0 +1,2 @@ +[2019/10/26] 13:50 michael picked up fire talisman itemX: 3250, itemY: 3226 +[2019/10/26] 13:50 michael picked up chef's hat itemX: 3250, itemY: 3226 diff --git a/2006Redone Server/src/redone/event/CycleEventHandler.java b/2006Redone Server/src/redone/event/CycleEventHandler.java index 6b6939ed..22a0eb1b 100644 --- a/2006Redone Server/src/redone/event/CycleEventHandler.java +++ b/2006Redone Server/src/redone/event/CycleEventHandler.java @@ -48,8 +48,10 @@ public class CycleEventHandler { * @param event * @param cycles */ - public void addEvent(int id, Object owner, CycleEvent event, int cycles) { - events.add(new CycleEventContainer(id, owner, event, cycles)); + public CycleEventContainer addEvent(int id, Object owner, CycleEvent event, int cycles) { + CycleEventContainer container = new CycleEventContainer(id, owner, event, cycles); + events.add(container); + return container; } /** @@ -59,8 +61,10 @@ public class CycleEventHandler { * @param event * @param cycles */ - public void addEvent(Object owner, CycleEvent event, int cycles) { - events.add(new CycleEventContainer(-1, owner, event, cycles)); + public CycleEventContainer addEvent(Object owner, CycleEvent event, int cycles) { + CycleEventContainer container = new CycleEventContainer(-1, owner, event, cycles); + events.add(container); + return container; } /** diff --git a/2006Redone Server/src/redone/game/objects/Objects.java b/2006Redone Server/src/redone/game/objects/Objects.java index 65822c68..588cd8ac 100644 --- a/2006Redone Server/src/redone/game/objects/Objects.java +++ b/2006Redone Server/src/redone/game/objects/Objects.java @@ -1,5 +1,7 @@ package redone.game.objects; +import redone.world.clip.ObjectDef; + public class Objects { public long delay, oDelay; @@ -36,6 +38,33 @@ public class Objects { objectTicks = ticks; } + public int[] getObjectSize() { + ObjectDef def = ObjectDef.getObjectDef(objectId); + if (def == null) + return new int[] {1, 1}; + int xLength; + int yLength; + if (objectFace != 1 && objectFace != 3) { + xLength = def.xLength(); + yLength = def.yLength(); + } else { + xLength = def.yLength(); + yLength = def.xLength(); + } + + return new int[] {xLength, yLength}; + } + + @Override + public String toString() { + return "Objects{" + + "objectId=" + objectId + + ", objectX=" + objectX + + ", objectY=" + objectY + + ", objectHeight=" + objectHeight + + '}'; + } + public int getObjectHeight() { return objectHeight; } diff --git a/2006Redone Server/src/redone/game/players/Client.java b/2006Redone Server/src/redone/game/players/Client.java index 7f96feff..b7b4131f 100644 --- a/2006Redone Server/src/redone/game/players/Client.java +++ b/2006Redone Server/src/redone/game/players/Client.java @@ -1,1376 +1,1379 @@ -package redone.game.players; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.Map; -import java.util.Queue; -import java.util.concurrent.Future; - -import org.apache.mina.common.IoSession; - -import redone.Connection; -import redone.Constants; -import redone.Server; -import redone.event.CycleEvent; -import redone.event.CycleEventContainer; -import redone.event.CycleEventHandler; -import redone.game.content.BankPin; -import redone.game.content.EmoteHandler; -import redone.game.content.combat.CombatAssistant; -import redone.game.content.combat.Specials; -import redone.game.content.combat.magic.Enchanting; -import redone.game.content.combat.magic.MagicTeleports; -import redone.game.content.combat.prayer.PrayerData; -import redone.game.content.combat.prayer.PrayerDrain; -import redone.game.content.combat.range.DwarfCannon; -import redone.game.content.consumables.Food; -import redone.game.content.consumables.Potions; -import redone.game.content.guilds.impl.RangersGuild; -import redone.game.content.minigames.Barrows; -import redone.game.content.minigames.Dueling; -import redone.game.content.minigames.FightPits; -import redone.game.content.minigames.PestControl; -import redone.game.content.minigames.castlewars.CastleWars; -import redone.game.content.music.PlayList; -import redone.game.content.music.sound.SoundList; -import redone.game.content.quests.QuestAssistant; -import redone.game.content.quests.impl.*; -import redone.game.content.skills.SkillInterfaces; -import redone.game.content.skills.agility.Agility; -import redone.game.content.skills.agility.ApeAtollAgility; -import redone.game.content.skills.agility.BarbarianAgility; -import redone.game.content.skills.agility.GnomeAgility; -import redone.game.content.skills.agility.PyramidAgility; -import redone.game.content.skills.agility.WerewolfAgility; -import redone.game.content.skills.agility.WildernessAgility; -import redone.game.content.skills.cooking.Potatoes; -import redone.game.content.skills.core.Mining; -import redone.game.content.skills.crafting.GlassBlowing; -import redone.game.content.skills.runecrafting.Runecrafting; -import redone.game.content.skills.slayer.Slayer; -import redone.game.content.skills.smithing.Smithing; -import redone.game.content.skills.smithing.SmithingInterface; -import redone.game.content.traveling.Desert; -import redone.game.dialogues.DialogueHandler; -import redone.game.items.GameItem; -import redone.game.items.ItemAssistant; -import redone.game.items.impl.LightSources; -import redone.game.items.impl.PotionMixing; -import redone.game.items.impl.Teles; -import redone.game.items.impl.Weight; -import redone.game.npcs.NpcActions; -import redone.game.objects.ObjectsActions; -import redone.game.players.antimacro.AntiBotting; -import redone.game.shops.ShopAssistant; -import redone.net.ActionSender; -import redone.net.HostList; -import redone.net.Packet; -import redone.net.StaticPacketBuilder; -import redone.net.packets.PacketHandler; -import redone.net.packets.impl.ChallengePlayer; -import redone.util.Misc; -import redone.util.Stream; -import redone.world.ObjectManager; - -public class Client extends Player { - - public byte buffer[] = null; - public Stream inStream = null, outStream = null; - private IoSession session; - private final ItemAssistant itemAssistant = new ItemAssistant(this); - private final ShopAssistant shopAssistant = new ShopAssistant(this); - private final Trading trading = new Trading(this); - private final Dueling duel = new Dueling(this); - private final PlayerAssistant playerAssistant = new PlayerAssistant(this); - private final CombatAssistant combatAssistant = new CombatAssistant(this); - private final ObjectsActions actionHandler = new ObjectsActions(this); - private final NpcActions npcs = new NpcActions(this); - private final Queue queuedPackets = new LinkedList(); - private final Potions potions = new Potions(this); - private final PotionMixing potionMixing = new PotionMixing(this); - private final Food food = new Food(this); - private final EmoteHandler emoteHandler = new EmoteHandler(this); - private final SkillInterfaces skillInterfaces = new SkillInterfaces(this); - private final Enchanting enchanting = new Enchanting(this); - private final Potatoes potatoes = new Potatoes(this); - private final PlayerAction playeraction = new PlayerAction(this); - private final Desert desert = new Desert(); - private final Specials specials = new Specials(this); - private final SoundList sound = new SoundList(this); - public String creationAddress = ""; - private final HashMap temporary = new HashMap(); - private final PlayList playList = new PlayList(this); - private final Agility agility = new Agility(this); - private final Runecrafting runecrafting = new Runecrafting(this); - private final Teles teles = new Teles(); - private final BankPin bankPin = new BankPin(this); - private final Slayer slayer = new Slayer(this); - private final ImpCatcher impCatcher = new ImpCatcher(this); - private final BlackKnightsFortress blackKnightF = new BlackKnightsFortress(this); - private final CooksAssistant cooksAssistant = new CooksAssistant(this); - private final RomeoJuliet romeoJuliet = new RomeoJuliet(this); - private final DoricsQuest doricsQuest = new DoricsQuest(this); - private final VampyreSlayer vampyreSlayer = new VampyreSlayer(this); - private final RestlessGhost restlessGhost = new RestlessGhost(this); - private final GertrudesCat gertrudesCat = new GertrudesCat(this); - private final SheepShearer sheepShearer = new SheepShearer(this); - private final RuneMysteries runeMysteries = new RuneMysteries(this); - private final WitchsPotion witchsPotion = new WitchsPotion(this); - private final PiratesTreasure piratesTreasure = new PiratesTreasure(this); - private final ActionSender actionSender = new ActionSender(this); - private final DialogueHandler dialogues = new DialogueHandler(this); - private final GnomeAgility gnomeStrongHold = new GnomeAgility(this); - private final WildernessAgility wildernessAgility = new WildernessAgility(this); - private final BarbarianAgility barbarianAgility = new BarbarianAgility(this); - private final PyramidAgility pyramidAgility = new PyramidAgility(this); - private final WerewolfAgility werewolfAgility = new WerewolfAgility(this); - private final ApeAtollAgility apeAtollAgility = new ApeAtollAgility(this); - private final Smithing smithing = new Smithing(); - private final SmithingInterface smithingInterface = new SmithingInterface(this); - private final PrayerData prayer = new PrayerData(); - private final ObjectManager objectManager = new ObjectManager(); - public ArrayList fishingTrawlerReward = new ArrayList(); - private final RangersGuild rangersGuild = new RangersGuild(this); - private GlassBlowing glassBlowing = new GlassBlowing(this); - private Barrows barrows = new Barrows(this); - private Mining mining = new Mining(); - private ChallengePlayer challengePlayer = new ChallengePlayer(); - private DwarfCannon dwarfCannon = new DwarfCannon(this); - - - - public DwarfCannon getCannon() { - return dwarfCannon; - } - - public ChallengePlayer getChallengePlayer() { - return challengePlayer; - } - - public Mining getMining() { - return mining; - } - - public Barrows getBarrows() { - return barrows; - } - - public GlassBlowing getGlassBlowing() { - return glassBlowing; - } - - public RangersGuild getRangersGuild() { - return rangersGuild; - } - - public ObjectManager getObjectManager() { - return objectManager; - } - - public SmithingInterface getSmithingInt() { - return smithingInterface; - } - - public Smithing getSmithing() { - return smithing; - } - - public ApeAtollAgility getApeAtollAgility() { - return apeAtollAgility; - } - - public WerewolfAgility getWerewolfAgility() { - return werewolfAgility; - } - - public PyramidAgility getPyramidAgility() { - return pyramidAgility; - } - - public BarbarianAgility getBarbarianAgility() { - return barbarianAgility; - } - - public WildernessAgility getWildernessAgility() { - return wildernessAgility; - } - - public GnomeAgility getGnomeStrongHold() { - return gnomeStrongHold; - } - - public DialogueHandler getDialogueHandler() { - return dialogues; - } - - public ActionSender getActionSender() { - return actionSender; - } - - public SoundList getSound() { - return sound; - } - - public Object getTemporary(String name) { - return temporary.get(name); - } - - public void addTemporary(String name, Object value) { - temporary.put(name, value); - } - - public PlayList getPlayList() { - return playList; - } - - public Specials getSpecials() { - return specials; - } - - public Potatoes getPTS() { - return potatoes; - } - - public EmoteHandler getEmoteHandler() { - return emoteHandler; - } - - public SkillInterfaces getSkillInterfaces() { - return skillInterfaces; - } - - public Enchanting getEnchanting() { - return enchanting; - } - - public PlayerAction getPlayerAction() { - return playeraction; - } - - public Desert getDesert() { - return desert; - } - - public Agility getAgility() { - return agility; - } - - public Runecrafting getRC() { - return runecrafting; - } - - public Slayer getSlayer() { - return slayer; - } - - public Teles getTeles() { - return teles; - } - - public BankPin getBankPin() { - return bankPin; - } - - public ImpCatcher getImpCatcher() { - return impCatcher; - } - - public BlackKnightsFortress getBlackKnightsFortress() { - return blackKnightF; - } - - public PiratesTreasure getPiratesTreasure() { - return piratesTreasure; - } - - public CooksAssistant getCooksAssistant() { - return cooksAssistant; - } - - public RomeoJuliet getRomeoJuliet() { - return romeoJuliet; - } - - public DoricsQuest getDoricsQuest() { - return doricsQuest; - } - - public VampyreSlayer getVampyreSlayer() { - return vampyreSlayer; - } - - public RestlessGhost getRestlessGhost() { - return restlessGhost; - } - - public GertrudesCat getGertrudesCat() { - return gertrudesCat; - } - - public SheepShearer getSheepShearer() { - return sheepShearer; - } - - public RuneMysteries getRuneMysteries() { - return runeMysteries; - } - - public WitchsPotion getWitchesPotion() { - return witchsPotion; - } - - public void setCurrentTask(Future task) { - currentTask = task; - } - - public Future getCurrentTask() { - return currentTask; - } - - public synchronized Stream getInStream() { - return inStream; - } - - public synchronized int getPacketType() { - return packetType; - } - - public synchronized int getPacketSize() { - return packetSize; - } - - public synchronized Stream getOutStream() { - return outStream; - } - - public ItemAssistant getItemAssistant() { - return itemAssistant; - } - - public PlayerAssistant getPlayerAssistant() { - return playerAssistant; - } - - public ShopAssistant getShopAssistant() { - return shopAssistant; - } - - public Trading getTrading() { - return trading; - } - - public Dueling getDueling() { - return duel; - } - - public CombatAssistant getCombatAssistant() { - return combatAssistant; - } - - public PrayerData getPrayer() { - return prayer; - } - - public ObjectsActions getObjects() { - return actionHandler; - } - - public NpcActions getNpcs() { - return npcs; - } - - public IoSession getSession() { - return session; - } - - public Potions getPotions() { - return potions; - } - - public PotionMixing getPotMixing() { - return potionMixing; - } - - public Food getFood() { - return food; - } - - private Map interfaceText = new HashMap(); - - public class TinterfaceText { - public int id; - public String currentState; - - public TinterfaceText(String s, int id) { - this.currentState = s; - this.id = id; - } - - } - - public boolean checkPacket126Update(String text, int id) { - if(!interfaceText.containsKey(id)) { - interfaceText.put(id, new TinterfaceText(text, id)); - } else { - TinterfaceText t = interfaceText.get(id); - if(text.equals(t.currentState)) { - return false; - } - t.currentState = text; - } - return true; - } - - public int lowMemoryVersion = 0; - public int timeOutCounter = 0; - public int returnCode = 2; - private Future currentTask; - - public Client(IoSession s, int _playerId) { - super(_playerId); - session = s; - synchronized (this) { - outStream = new Stream(new byte[Constants.BUFFER_SIZE]); - outStream.currentOffset = 0; - } - inStream = new Stream(new byte[Constants.BUFFER_SIZE]); - inStream.currentOffset = 0; - buffer = new byte[Constants.BUFFER_SIZE]; - } - - /** - * Resets the shaking of the player's screen. - */ - public void resetShaking() { - getActionSender().shakeScreen(1, 0, 0, 0); - } - - public final String disabled() { - return "Skill is disabled for testing period."; - } - - public void puzzleBarrow() { - getPlayerAssistant().sendFrame246(4545, 250, 6833); - getPlayerAssistant().sendFrame126("1.", 4553); - getPlayerAssistant().sendFrame246(4546, 250, 6832); - getPlayerAssistant().sendFrame126("2.", 4554); - getPlayerAssistant().sendFrame246(4547, 250, 6830); - getPlayerAssistant().sendFrame126("3.", 4555); - getPlayerAssistant().sendFrame246(4548, 250, 6829); - getPlayerAssistant().sendFrame126("4.", 4556); - getPlayerAssistant().sendFrame246(4550, 250, 3454); - getPlayerAssistant().sendFrame246(4551, 250, 8746); - getPlayerAssistant().sendFrame246(4552, 250, 6830); - getPlayerAssistant().showInterface(4543); - } - - public void flushOutStream() { - if (disconnected || outStream.currentOffset == 0) { - return; - } - synchronized (this) { - StaticPacketBuilder out = new StaticPacketBuilder().setBare(true); - byte[] temp = new byte[outStream.currentOffset]; - System.arraycopy(outStream.buffer, 0, temp, 0, temp.length); - out.addBytes(temp); - session.write(out.toPacket()); - outStream.currentOffset = 0; - } - } - - public void sendClan(String name, String message, String clan, int rights) { - outStream.createFrameVarSizeWord(217); - outStream.writeString(name); - outStream.writeString(message); - outStream.writeString(clan); - outStream.writeWord(rights); - outStream.endFrameVarSize(); - } - - public static final int PACKET_SIZES[] = { 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, // 0 - 0, 0, 0, 0, 8, 0, 6, 2, 2, 0, // 10 - 0, 2, 0, 6, 0, 12, 0, 0, 0, 0, // 20 - 0, 0, 0, 0, 0, 8, 4, 0, 0, 2, // 30 - 2, 6, 0, 6, 0, -1, 0, 0, 0, 0, // 40 - 0, 0, 0, 12, 0, 0, 0, 8, 8, 12, // 50 - 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, // 60 - 6, 0, 2, 2, 8, 6, 0, -1, 0, 6, // 70 - 0, 0, 0, 0, 0, 1, 4, 6, 0, 0, // 80 - 0, 0, 0, 0, 0, 3, 0, 0, -1, 0, // 90 - 0, 13, 0, -1, 0, 0, 0, 0, 0, 0,// 100 - 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, // 110 - 1, 0, 6, 0, 0, 0, -1, 0, 2, 6, // 120 - 0, 4, 6, 8, 0, 6, 0, 0, 0, 2, // 130 - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, // 140 - 0, 0, 1, 2, 0, 2, 6, 0, 0, 0, // 150 - 0, 0, 0, 0, -1, -1, 0, 0, 0, 0,// 160 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 170 - 0, 8, 0, 3, 0, 2, 0, 0, 8, 1, // 180 - 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, // 190 - 2, 0, 0, 0, 0, 0, 0, 0, 4, 0, // 200 - 4, 0, 0, 0, 7, 8, 0, 0, 10, 0, // 210 - 0, 0, 0, 0, 0, 0, -1, 0, 6, 0, // 220 - 1, 0, 0, 0, 6, 0, 6, 8, 1, 0, // 230 - 0, 4, 0, 0, 0, 0, -1, 0, -1, 4,// 240 - 0, 0, 6, 6, 0, 0, 0 // 250 - }; - - @Override - public void destruct() { - if (session == null) { - return; - } - if (getCannon().hasCannon()) { - getCannon().removeObject(cannonX, cannonY); - for(int i = 0; i < Server.cannonsX.length; i++) { - if (Server.cannonsX[i] == cannonX && Server.cannonsY[i] == cannonY) { - Server.cannonsX[i] = 0; - Server.cannonsY[i] = 0; - Server.cannonsO[i] = null; - } - lostCannon = true; - cannonX = -1; - cannonY = -1; - } - } - if(Server.trawler.players.contains(this)) { - Server.trawler.players.remove(this); - } - if (CastleWars.isInCwWait(this)) { - CastleWars.leaveWaitingRoom(this); - } - if (CastleWars.isInCw(this)) { - CastleWars.removePlayerFromCw(this); - } - if (FightPits.getState(this) != null) { - FightPits.removePlayer(this, true); - } - if (PestControl.isInGame(this)) { - PestControl.removePlayerGame(this); - getPlayerAssistant().movePlayer(2657, 2639, 0); - } - if (PestControl.isInPcBoat(this)) { - PestControl.leaveWaitingBoat(this); - getPlayerAssistant().movePlayer(2657, 2639, 0); - } - if (hasNpc == true) { - getSummon().pickUpClean(this, summonId); - } - if (clanId >= 0) { - Server.clanChat.leaveClan(playerId, clanId); - } - - if(!Server.ersSecret.equals("")) { - boolean debugMessage = false; - System.out.println("Updating highscores for " + this.playerName + "!"); - com.everythingrs.hiscores.Hiscores.update(Server.ersSecret, "Normal Mode", this.playerName, this.playerRights, this.playerXP, debugMessage); - } else { - System.out.println("EverythingRS API Disabled, highscores not saved!"); - } - - Misc.println("[DEREGISTERED]: " + playerName + ""); - HostList.getHostList().remove(session); - CycleEventHandler.getSingleton().stopEvents(this); - disconnected = true; - session.close(); - session = null; - inStream = null; - outStream = null; - isActive = false; - buffer = null; - super.destruct(); - // PlayerSave.saveGame(this); - } - - public static final String[][] data = { - {"Andrew", "Andrew1"}, - }; - - @Override - public void initialize() { - getPlayerAssistant().loginScreen(); - if (Connection.isNamedBanned(playerName)) { - logout(); - return; - } - /*(for (int i = 0; i < data.length; i++) { - if (playerRights > 0) { - if (playerName != data[0][i]) { - Connection.addNameToBanList(playerName); - Connection.addNameToFile(playerName); - disconnected = true; - } - } - }*/ - synchronized (this) { - outStream.createFrame(249); - outStream.writeByteA(membership ? 1 : 0); - outStream.writeWordBigEndianA(playerId); - for (int j = 0; j < PlayerHandler.players.length; j++) { - if (j == playerId) { - continue; - } - if (PlayerHandler.players[j] != null) { - if (PlayerHandler.players[j].playerName - .equalsIgnoreCase(playerName)) { - disconnected = true; - } - } - } - lastLoginDate = getLastLogin(); - QuestAssistant.sendStages(this); - if (hasNpc == true) { - if (summonId > 0) { - Server.npcHandler.spawnNpc3(this, summonId, absX, absY - 1, - heightLevel, 0, 120, 25, 200, 200, true, false, - true); - } - } - if (isBotting == true) { - AntiBotting.botCheckInterface(this); - } - if (questPoints > QuestAssistant.MAXIMUM_QUESTPOINTS || playerRights > 2) { - questPoints = QuestAssistant.MAXIMUM_QUESTPOINTS;// check for abusers - } - if (playerHitpoints < 0) { - isDead = true; - } - if (playerLevel[playerHitpoints] > 99) { - playerLevel[playerHitpoints] = 99;// check for abusers - getPlayerAssistant().refreshSkill(3); - } - if (playerLevel[playerFarming] > 1 && playerRights < 3) { - playerLevel[playerFarming] = 1; - getPlayerAssistant().refreshSkill(playerFarming); - } - getPlayerAssistant().firstTimeTutorial(); - if (tutorialProgress > 0 && tutorialProgress < 36 && Constants.TUTORIAL_ISLAND) { - getActionSender().sendMessage("@blu@Continue the tutorial from the last step you were on.@bla@"); - } - if (tutorialProgress > 35) { - getPlayerAssistant().sendSidebars(); - getItemAssistant().sendWeapon(playerEquipment[playerWeapon], ItemAssistant.getItemName(playerEquipment[playerWeapon])); - getActionSender().sendMessage("Welcome to @blu@" + Constants.SERVER_NAME + "@bla@ - we are currently in Server Stage v@blu@" + Constants.TEST_VERSION + "@bla@."); - getActionSender().sendMessage("@red@Did you know?@bla@ We're open source! Pull requests are welcome"); - getActionSender().sendMessage("Source code at github.com/dginovker/2006rebotted"); - getActionSender().sendMessage("Welcome to the Beta! A reset will occur before main release -"); - getActionSender().sendMessage("Welcome to the 2006rebotted beta! Join our Discord: discord.gg/4zrA2Wy"); - } - for (int i = 0; i < 25; i++) { - getActionSender().setSkillLevel(i, playerLevel[i], playerXP[i]); - getPlayerAssistant().refreshSkill(i); - } - for (int p = 0; p < getPrayer().PRAYER.length; p++) { // reset - // prayer - // glows - getPrayer().prayerActive[p] = false; - getPlayerAssistant().sendConfig(getPrayer().PRAYER_GLOW[p], 0); - } - lastX = absX; - lastY = absY; - lastH = heightLevel; - if (inWild()) { - WildernessWarning = true; - } - if (splitChat == true) { - getPlayerAssistant().sendConfig(502, 1); - getPlayerAssistant().sendConfig(287, 1); - } else { - getPlayerAssistant().sendConfig(502, 0); - getPlayerAssistant().sendConfig(287, 0); - } - if (isRunning2) { - getPlayerAssistant().sendConfig(504, 1); - getPlayerAssistant().sendConfig(173, 1); - } else { - getPlayerAssistant().sendConfig(504, 0); - getPlayerAssistant().sendConfig(173, 0); - } - Weight.updateWeight(this); - - getPlayList().fixAllColors(); - getPlayerAction().setAction(false); - getPlayerAction().canWalk(true); - getPlayerAssistant().handleWeaponStyle(); - MagicTeleports.handleLoginText(this); - accountFlagged = getPlayerAssistant().checkForFlags(); - getPlayerAssistant().sendConfig(108, 0);// resets autocast button - getPlayerAssistant().sendFrame107(); // reset screen - getPlayerAssistant().setChatOptions(0, 0, 0); // reset private - // messaging options - correctCoordinates(); - getActionSender().showOption(4, 0, "Trade With", 3); - getActionSender().showOption(5, 0, "Follow", 4); - getItemAssistant().resetItems(3214); - getItemAssistant().resetBonus(); - getItemAssistant().getBonus(); - getItemAssistant().writeBonus(); - getItemAssistant().setEquipment(playerEquipment[playerHat], 1, - playerHat); - getItemAssistant().setEquipment(playerEquipment[playerCape], 1, - playerCape); - getItemAssistant().setEquipment(playerEquipment[playerAmulet], 1, - playerAmulet); - getItemAssistant().setEquipment(playerEquipment[playerArrows], - playerEquipmentN[playerArrows], playerArrows); - getItemAssistant().setEquipment(playerEquipment[playerChest], 1, - playerChest); - getItemAssistant().setEquipment(playerEquipment[playerShield], 1, - playerShield); - getItemAssistant().setEquipment(playerEquipment[playerLegs], 1, - playerLegs); - getItemAssistant().setEquipment(playerEquipment[playerHands], 1, - playerHands); - getItemAssistant().setEquipment(playerEquipment[playerFeet], 1, - playerFeet); - getItemAssistant().setEquipment(playerEquipment[playerRing], 1, - playerRing); - getItemAssistant().setEquipment(playerEquipment[playerWeapon], - playerEquipmentN[playerWeapon], playerWeapon); - getCombatAssistant().getPlayerAnimIndex(); - getPlayerAssistant().logIntoPM(); - getItemAssistant().addSpecialBar(playerEquipment[playerWeapon]); - saveTimer = Constants.SAVE_TIMER; - saveCharacter = true; - Misc.println("[REGISTERED]: " + playerName + ""); - handler.updatePlayer(this, outStream); - handler.updateNPC(this, outStream); - flushOutStream(); - getPlayerAssistant().clearClanChat(); - getPlayerAssistant().resetFollow(); - LightSources.saveBrightness(this); - getPlayerAssistant().sendAutoRetalitate(); - getCannon().loginCheck(); - } - } - - @Override - public void update() { - synchronized (this) { - handler.updatePlayer(this, outStream); - handler.updateNPC(this, outStream); - flushOutStream(); - } - } - - public void logout() { - synchronized (this) { - if(Server.trawler.players.contains(this)) { - Server.trawler.players.remove(this); - } - if (getCannon().hasCannon()) { - getCannon().removeObject(cannonX, cannonY); - for(int i = 0; i < Server.cannonsX.length; i++) { - if (Server.cannonsX[i] == cannonX && Server.cannonsY[i] == cannonY) { - Server.cannonsX[i] = 0; - Server.cannonsY[i] = 0; - Server.cannonsO[i] = null; - } - lostCannon = true; - cannonX = -1; - cannonY = -1; - } - } - if (CastleWars.isInCw(this)) { - CastleWars.removePlayerFromCw(this); - } - if (CastleWars.isInCwWait(this)) { - CastleWars.leaveWaitingRoom(this); - } - if (FightPits.getState(this) != null) { - FightPits.removePlayer(this, true); - } - if (PestControl.isInGame(this)) { - PestControl.removePlayerGame(this); - getPlayerAssistant().movePlayer(2657, 2639, 0); - } - if (PestControl.isInPcBoat(this)) { - PestControl.leaveWaitingBoat(this); - getPlayerAssistant().movePlayer(2657, 2639, 0); - } - if(underAttackBy > 0 || underAttackBy2 > 0) { - getActionSender().sendMessage("You can't logout during combat!"); - return; - } - lastLoginDate = getLastLogin(); - lastX = absX; - lastY = absY; - lastH = heightLevel; - CycleEventHandler.getSingleton().stopEvents(this); - if (hasNpc == true) { - getSummon().pickUpClean(this, summonId); - } - if (System.currentTimeMillis() - logoutDelay > 2500) { - outStream.createFrame(109); - properLogout = true; - } else { - getActionSender().sendMessage("You must wait a few seconds from being out of combat to logout."); - } - } - } - - - public int packetSize = 0, packetType = -1; - public boolean WildernessWarning = false; - - public void antiFirePotion() { - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - antiFirePot = false; - getActionSender().sendMessage("Your resistance to dragon fire has worn off."); - container.stop(); - } - @Override - public void stop() { - - } - }, 200); - } - - public boolean isBusy = false; - - public boolean checkBusy() { - return isBusy; - } - - public void setBusy(boolean isBusy) { - this.isBusy = isBusy; - } - - public boolean isBusy() { - return isBusy; - } - - public int getLastLogin() { - Calendar cal = new GregorianCalendar(); - int day = cal.get(Calendar.DAY_OF_MONTH); - int month = cal.get(Calendar.MONTH); - int year = cal.get(Calendar.YEAR); - return (year * 10000) + (month * 100) + day; - } - - @Override - public void updateWalkEntities() { - if (inWild() && !inCw()) { - int modY = absY > 6400 ? absY - 6400 : absY; - wildLevel = (modY - 3520) / 8 + 1; - getPlayerAssistant().walkableInterface(197); - if (Constants.SINGLE_AND_MULTI_ZONES) { - if (inMulti()) { - getPlayerAssistant().sendFrame126("@yel@Level: " + wildLevel, - 199); - } else { - getPlayerAssistant().sendFrame126("@yel@Level: " + wildLevel, - 199); - } - } else { - getActionSender().multiWay(-1); - getPlayerAssistant().sendFrame126("@yel@Level: " + wildLevel, 199); - } - getActionSender().showOption(3, 0, "Attack", 1); - } else if (inDuelArena()) { - getPlayerAssistant().walkableInterface(201); - if (duelStatus == 5) { - getActionSender().showOption(3, 0, "Attack", 1); - } else { - getActionSender().showOption(3, 0, "Challenge", 1); - } - } else if (getPlayerAssistant().inPitsWait()) { - getActionSender().showOption(3, 0, "Null", 1); - } else if(Server.trawler.players.contains(this)) { - getPlayerAssistant().walkableInterface(11908); - } else if (isInBarrows() || isInBarrows2()) { - getPlayerAssistant().sendFrame126("Kill Count: " + barrowsKillCount, 4536); - getPlayerAssistant().walkableInterface(4535); - } else if (inCw() || inPits) { - getActionSender().showOption(3, 0, "Attack", 1); - } else { - getPlayerAssistant().sendMapState(0); - getPlayerAssistant().walkableInterface(-1); - getActionSender().showOption(3, 0, "Null", 1); - } - } - - public Client getClient(String name) { - name = name.toLowerCase(); - for (int i = 0; i < Constants.MAX_PLAYERS; i++) { - if (validClient(i)) { - Client client = getClient(i); - if (client.playerName.toLowerCase().equalsIgnoreCase(name)) { - return client; - } - } - } - return null; - } - - public Client getClient(int id) { - return (Client) PlayerHandler.players[id]; - } - - public boolean validClient(int id) { - if (id < 0 || id > Constants.MAX_PLAYERS) { - return false; - } - return validClient(getClient(id)); - } - - public boolean validClient(String name) { - return validClient(getClient(name)); - } - - public boolean validClient(Client client) { - return client != null && !client.disconnected; - } - - @Override - public void process() { - if (playerEnergy < 100 && System.currentTimeMillis() - lastIncrease >= getPlayerAssistant().raiseTimer()) { - playerEnergy = Math.min(playerEnergy + 1, 100); - lastIncrease = System.currentTimeMillis(); - } - if (playerEnergy <= 0 && isRunning2) { - isRunning2 = false; - getPlayerAssistant().sendConfig(504, 0); - getPlayerAssistant().sendConfig(173, 0); - } - getPlayerAssistant().writeEnergy(); - - if (System.currentTimeMillis() - specDelay > Constants.INCREASE_SPECIAL_AMOUNT) { - specDelay = System.currentTimeMillis(); - if (specAmount < 10) { - specAmount += .5; - if (specAmount > 10) { - specAmount = 10; - } - getItemAssistant().addSpecialBar(playerEquipment[playerWeapon]); - } - } - - if (followId > 0) { - getPlayerAssistant().followPlayer(); - } else if (followId2 > 0) { - getPlayerAssistant().followNpc(); - } - - if (System.currentTimeMillis() - duelDelay > 800 && duelCount > 0) { - if (duelCount != 1) { - forcedChat("" + --duelCount); - duelDelay = System.currentTimeMillis(); - } else { - damageTaken = new int[Constants.MAX_PLAYERS]; - forcedChat("FIGHT!"); - duelCount = 0; - } - } - - PrayerDrain.handlePrayerDrain(this); - - if (System.currentTimeMillis() - singleCombatDelay > 3300) { - underAttackBy = 0; - } - if (System.currentTimeMillis() - singleCombatDelay2 > 3300) { - underAttackBy2 = 0; - } - - if (System.currentTimeMillis() - restoreStatsDelay > 60000) { - restoreStatsDelay = System.currentTimeMillis(); - for (int level = 0; level < playerLevel.length; level++) { - if (playerLevel[level] < getLevelForXP(playerXP[level])) { - if (level != 5) { // prayer doesn't restore - playerLevel[level] += 1; - getActionSender().setSkillLevel(level, - playerLevel[level], playerXP[level]); - getPlayerAssistant().refreshSkill(level); - } - } else if (playerLevel[level] > getLevelForXP(playerXP[level])) { - playerLevel[level] -= 1; - getActionSender().setSkillLevel(level, - playerLevel[level], playerXP[level]); - getPlayerAssistant().refreshSkill(level); - } - } - } - - if (!hasMultiSign && inMulti()) { - hasMultiSign = true; - getActionSender().multiWay(1); - } - - if (hasMultiSign && !inMulti()) { - hasMultiSign = false; - getActionSender().multiWay(-1); - } - - if (skullTimer > 0) { - skullTimer--; - if (skullTimer == 1) { - isSkulled = false; - attackedPlayers.clear(); - headIconPk = -1; - skullTimer = -1; - getPlayerAssistant().requestUpdates(); - } - } - - if (isDead && respawnTimer == -6) { - getPlayerAssistant().applyDead(); - } - - if (respawnTimer == 7) { - respawnTimer = -6; - getPlayerAssistant().giveLife(); - } else if (respawnTimer == 12) { - respawnTimer--; - startAnimation(0x900); - poisonDamage = -1; - } - - if (respawnTimer > -6) { - respawnTimer--; - } - - if (freezeTimer > -6) { - freezeTimer--; - if (frozenBy > 0) { - if (PlayerHandler.players[frozenBy] == null) { - freezeTimer = -1; - frozenBy = -1; - } else if (!goodDistance(absX, absY, - PlayerHandler.players[frozenBy].absX, - PlayerHandler.players[frozenBy].absY, 20)) { - freezeTimer = -1; - frozenBy = -1; - } - } - } - - if (hitDelay > 0) { - hitDelay--; - } - - if (teleTimer > 0) { - teleTimer--; - if (!isDead) { - if (teleTimer == 1 && newLocation > 0) { - teleTimer = 0; - getPlayerAssistant().changeLocation(); - } - if (teleTimer == 5) { - teleTimer--; - getPlayerAssistant().processTeleport(); - } - if (teleTimer == 9 && teleGfx > 0) { - teleTimer--; - gfx100(teleGfx); - } - } else { - teleTimer = 0; - } - } - - if (hitDelay == 1) { - if (oldNpcIndex > 0) { - getCombatAssistant().delayedHit(oldNpcIndex); - } - if (oldPlayerIndex > 0) { - getCombatAssistant().playerDelayedHit(oldPlayerIndex); - } - } - - if (attackTimer > 0) { - attackTimer--; - } - - if (attackTimer == 1) { - if (npcIndex > 0 && clickNpcType == 0) { - getCombatAssistant().attackNpc(npcIndex); - } - if (playerIndex > 0) { - getCombatAssistant().attackPlayer(playerIndex); - } - } else if (attackTimer <= 0 && (npcIndex > 0 || playerIndex > 0)) { - if (npcIndex > 0) { - attackTimer = 0; - getCombatAssistant().attackNpc(npcIndex); - } else if (playerIndex > 0) { - attackTimer = 0; - getCombatAssistant().attackPlayer(playerIndex); - } - } - - if (timeOutCounter > Constants.TIMEOUT) { - disconnected = true; - } - - timeOutCounter++; - } - - public void queueMessage(Packet arg1) { - // synchronized(queuedPackets) { - // if (arg1.getId() != 41) - queuedPackets.add(arg1); - // else - // processPacket(arg1); - // } - } - - @Override - public synchronized boolean processQueuedPackets() { - Packet p = null; - synchronized (queuedPackets) { - p = queuedPackets.poll(); - } - if (p == null) { - return false; - } - inStream.currentOffset = 0; - packetType = p.getId(); - packetSize = p.getLength(); - inStream.buffer = p.getData(); - if (packetType > 0) { - // getPacketDispatcher().sendMessage("PacketType: " + packetType); - PacketHandler.processPacket(this, packetType, packetSize); - } - timeOutCounter = 0; - return true; - } - - public synchronized boolean processPacket(Packet p) { - synchronized (this) { - if (p == null) { - return false; - } - inStream.currentOffset = 0; - packetType = p.getId(); - packetSize = p.getLength(); - inStream.buffer = p.getData(); - if (packetType > 0) { - // getPacketDispatcher().sendMessage("PacketType: " + - // packetType); - PacketHandler.processPacket(this, packetType, packetSize); - } - timeOutCounter = 0; - return true; - } - } - - public int soundVolume = 10; - - /** - * Outputs a send packet which is built from the data params provided - * towards a connected user client channel. - * - * @param id - * The identification number of the sound. - * @param volume - * The volume amount of the sound (1-100) - * @param delay - * The delay (0 = immediately 30 = 1/2cycle 60=full cycle) before - * the sound plays. - */ - public void sendSound(int id, int volume, int delay) { - try { - outStream.createFrameVarSize(174); - outStream.writeWord(id); - outStream.writeByte(volume); - outStream.writeWord(delay); - updateRequired = true; - appearanceUpdateRequired = true; - outStream.endFrameVarSize(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Outputs a send packet which is built from the data params provided - * towards a connected user client channel. - * - * @param id - * The identification number of the sound. - * @param volume - * The volume amount of the sound (1-100) - */ - public void sendSound(int id, int volume) { - sendSound(id, volume, 0); - } - - /** - * Outputs a send packet which is built from the data params provided - * towards a connected user client channel. - * - * @param id - * The identification number of the sound. - */ - public void sendSound(int id) { - sendSound(id, 100);// pretty sure it's 100 just double check - } - - /** - * Play sounds - * - * @param SOUNDID - * : ID - * @param delay - * : SOUND DELAY - */ - public void playSound(Client c, int SOUNDID, int delay) { - if (Constants.SOUND) { - if (soundVolume <= -1) { - return; - } - /** - * Deal with regions We dont need to play this again because you are - * in the current region - */ - if (c != null) { - if (c.soundVolume >= 0) { - if (c.goodDistance(c.absX, c.absY, absX, absY, 2)) { - System.out.println("Playing sound " + c.playerName - + ", Id: " + SOUNDID + ", Vol: " - + c.soundVolume); - c.getOutStream().createFrame(174); - c.getOutStream().writeWord(SOUNDID); - c.getOutStream().writeByte(c.soundVolume); - c.getOutStream().writeWord( /* delay */0); - } - } - } - - } - } - - public void correctCoordinates() { - if (inPcGame()) { - getPlayerAssistant().movePlayer(2657, 2639, 0); - if (FightPitsArea()) { - getPlayerAssistant().movePlayer(2399, 5178, 0); - if (inFightCaves()) { - getDialogueHandler().sendDialogues(101, 2617); - getPlayerAssistant().movePlayer(absX, absY, playerId * 4); - getActionSender().sendMessage("Your wave will start in 10 seconds."); - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - Server.fightCaves.spawnNextWave((Client) PlayerHandler.players[playerId]); - container.stop(); - } - @Override - public void stop() { - - } - }, 16); - } - } - } - } - - public void trawlerFade(final int x, final int y, final int height) { - if (System.currentTimeMillis() - lastAction > 5000) { - lastAction = System.currentTimeMillis(); - resetWalkingQueue(); - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - int tStage = 5; - public void execute(CycleEventContainer container) { - if (tStage == 5) { - getPlayerAssistant().showInterface(18460); - } - if (tStage == 4) { - getPlayerAssistant().movePlayer(x, y, height); - getPlayerAssistant().resetAnimationsToPrevious(); - appearanceUpdateRequired = true; - } - if (tStage == 3) { - getPlayerAssistant().showInterface(18452); - } - if (tStage == 1) { - container.stop(); - return; - } - if (tStage > 0) { - tStage--; - } - } - public void stop() { - getPlayerAssistant().closeAllWindows(); - tStage = 0; - } - }, 1); - } - } - - public void fade(final int x, final int y, final int height) { - if (System.currentTimeMillis() - lastAction > 5000) { - lastAction = System.currentTimeMillis(); - resetWalkingQueue(); - CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { - int tStage = 6; - public void execute(CycleEventContainer container) { - if (tStage == 6) { - getPlayerAssistant().showInterface(18460); - } - if (tStage == 5) { - getPlayerAssistant().movePlayer(x, y, height); - updateRequired = true; - appearanceUpdateRequired = true; - } - if (tStage == 4) { - getPlayerAssistant().showInterface(18452); - } - if (tStage == 1) { - container.stop(); - return; - } - if (tStage > 0) { - tStage--; - } - } - public void stop() { - getPlayerAssistant().closeAllWindows(); - tStage = 0; - } - }, 1); - } - } - - /** - * The option the player clicked - */ - - private int optionClicked = -1; - - /** - * @return the option clicked - */ - - public int getOptionClicked() { - return optionClicked; - } - - /** - * Sets the option clicked - * - * @param i - * the option clicked - */ - - public void setOptionClicked(int i) { - optionClicked = i; - } - - public String statedInterface = ""; - - public String getStatedInterface() { - return statedInterface; - } - - public void setStatedInterface(String statedInterface) { - this.statedInterface = statedInterface; - } - -} +package redone.game.players; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.Map; +import java.util.Queue; +import java.util.concurrent.Future; + +import org.apache.mina.common.IoSession; + +import redone.Connection; +import redone.Constants; +import redone.Server; +import redone.event.CycleEvent; +import redone.event.CycleEventContainer; +import redone.event.CycleEventHandler; +import redone.game.content.BankPin; +import redone.game.content.EmoteHandler; +import redone.game.content.combat.CombatAssistant; +import redone.game.content.combat.Specials; +import redone.game.content.combat.magic.Enchanting; +import redone.game.content.combat.magic.MagicTeleports; +import redone.game.content.combat.prayer.PrayerData; +import redone.game.content.combat.prayer.PrayerDrain; +import redone.game.content.combat.range.DwarfCannon; +import redone.game.content.consumables.Food; +import redone.game.content.consumables.Potions; +import redone.game.content.guilds.impl.RangersGuild; +import redone.game.content.minigames.Barrows; +import redone.game.content.minigames.Dueling; +import redone.game.content.minigames.FightPits; +import redone.game.content.minigames.PestControl; +import redone.game.content.minigames.castlewars.CastleWars; +import redone.game.content.music.PlayList; +import redone.game.content.music.sound.SoundList; +import redone.game.content.quests.QuestAssistant; +import redone.game.content.quests.impl.*; +import redone.game.content.skills.SkillInterfaces; +import redone.game.content.skills.agility.Agility; +import redone.game.content.skills.agility.ApeAtollAgility; +import redone.game.content.skills.agility.BarbarianAgility; +import redone.game.content.skills.agility.GnomeAgility; +import redone.game.content.skills.agility.PyramidAgility; +import redone.game.content.skills.agility.WerewolfAgility; +import redone.game.content.skills.agility.WildernessAgility; +import redone.game.content.skills.cooking.Potatoes; +import redone.game.content.skills.core.Mining; +import redone.game.content.skills.crafting.GlassBlowing; +import redone.game.content.skills.runecrafting.Runecrafting; +import redone.game.content.skills.slayer.Slayer; +import redone.game.content.skills.smithing.Smithing; +import redone.game.content.skills.smithing.SmithingInterface; +import redone.game.content.traveling.Desert; +import redone.game.dialogues.DialogueHandler; +import redone.game.items.GameItem; +import redone.game.items.ItemAssistant; +import redone.game.items.impl.LightSources; +import redone.game.items.impl.PotionMixing; +import redone.game.items.impl.Teles; +import redone.game.items.impl.Weight; +import redone.game.npcs.NpcActions; +import redone.game.objects.ObjectsActions; +import redone.game.players.antimacro.AntiBotting; +import redone.game.shops.ShopAssistant; +import redone.net.ActionSender; +import redone.net.HostList; +import redone.net.Packet; +import redone.net.StaticPacketBuilder; +import redone.net.packets.PacketHandler; +import redone.net.packets.impl.ChallengePlayer; +import redone.util.Misc; +import redone.util.Stream; +import redone.world.ObjectManager; + +public class Client extends Player { + + public byte buffer[] = null; + public Stream inStream = null, outStream = null; + private IoSession session; + private final ItemAssistant itemAssistant = new ItemAssistant(this); + private final ShopAssistant shopAssistant = new ShopAssistant(this); + private final Trading trading = new Trading(this); + private final Dueling duel = new Dueling(this); + private final PlayerAssistant playerAssistant = new PlayerAssistant(this); + private final CombatAssistant combatAssistant = new CombatAssistant(this); + private final ObjectsActions actionHandler = new ObjectsActions(this); + private final NpcActions npcs = new NpcActions(this); + private final Queue queuedPackets = new LinkedList(); + private final Potions potions = new Potions(this); + private final PotionMixing potionMixing = new PotionMixing(this); + private final Food food = new Food(this); + private final EmoteHandler emoteHandler = new EmoteHandler(this); + private final SkillInterfaces skillInterfaces = new SkillInterfaces(this); + private final Enchanting enchanting = new Enchanting(this); + private final Potatoes potatoes = new Potatoes(this); + private final PlayerAction playeraction = new PlayerAction(this); + private final Desert desert = new Desert(); + private final Specials specials = new Specials(this); + private final SoundList sound = new SoundList(this); + public String creationAddress = ""; + private final HashMap temporary = new HashMap(); + private final PlayList playList = new PlayList(this); + private final Agility agility = new Agility(this); + private final Runecrafting runecrafting = new Runecrafting(this); + private final Teles teles = new Teles(); + private final BankPin bankPin = new BankPin(this); + private final Slayer slayer = new Slayer(this); + private final ImpCatcher impCatcher = new ImpCatcher(this); + private final BlackKnightsFortress blackKnightF = new BlackKnightsFortress(this); + private final CooksAssistant cooksAssistant = new CooksAssistant(this); + private final RomeoJuliet romeoJuliet = new RomeoJuliet(this); + private final DoricsQuest doricsQuest = new DoricsQuest(this); + private final VampyreSlayer vampyreSlayer = new VampyreSlayer(this); + private final RestlessGhost restlessGhost = new RestlessGhost(this); + private final GertrudesCat gertrudesCat = new GertrudesCat(this); + private final SheepShearer sheepShearer = new SheepShearer(this); + private final RuneMysteries runeMysteries = new RuneMysteries(this); + private final WitchsPotion witchsPotion = new WitchsPotion(this); + private final PiratesTreasure piratesTreasure = new PiratesTreasure(this); + private final ActionSender actionSender = new ActionSender(this); + private final DialogueHandler dialogues = new DialogueHandler(this); + private final GnomeAgility gnomeStrongHold = new GnomeAgility(this); + private final WildernessAgility wildernessAgility = new WildernessAgility(this); + private final BarbarianAgility barbarianAgility = new BarbarianAgility(this); + private final PyramidAgility pyramidAgility = new PyramidAgility(this); + private final WerewolfAgility werewolfAgility = new WerewolfAgility(this); + private final ApeAtollAgility apeAtollAgility = new ApeAtollAgility(this); + private final Smithing smithing = new Smithing(); + private final SmithingInterface smithingInterface = new SmithingInterface(this); + private final PrayerData prayer = new PrayerData(); + private final ObjectManager objectManager = new ObjectManager(); + public ArrayList fishingTrawlerReward = new ArrayList(); + private final RangersGuild rangersGuild = new RangersGuild(this); + private GlassBlowing glassBlowing = new GlassBlowing(this); + private Barrows barrows = new Barrows(this); + private Mining mining = new Mining(); + private ChallengePlayer challengePlayer = new ChallengePlayer(); + private DwarfCannon dwarfCannon = new DwarfCannon(this); + private CycleEventContainer currentTask; + + public DwarfCannon getCannon() { + return dwarfCannon; + } + + public ChallengePlayer getChallengePlayer() { + return challengePlayer; + } + + public Mining getMining() { + return mining; + } + + public Barrows getBarrows() { + return barrows; + } + + public GlassBlowing getGlassBlowing() { + return glassBlowing; + } + + public RangersGuild getRangersGuild() { + return rangersGuild; + } + + public ObjectManager getObjectManager() { + return objectManager; + } + + public SmithingInterface getSmithingInt() { + return smithingInterface; + } + + public Smithing getSmithing() { + return smithing; + } + + public ApeAtollAgility getApeAtollAgility() { + return apeAtollAgility; + } + + public WerewolfAgility getWerewolfAgility() { + return werewolfAgility; + } + + public PyramidAgility getPyramidAgility() { + return pyramidAgility; + } + + public BarbarianAgility getBarbarianAgility() { + return barbarianAgility; + } + + public WildernessAgility getWildernessAgility() { + return wildernessAgility; + } + + public GnomeAgility getGnomeStrongHold() { + return gnomeStrongHold; + } + + public DialogueHandler getDialogueHandler() { + return dialogues; + } + + public ActionSender getActionSender() { + return actionSender; + } + + public SoundList getSound() { + return sound; + } + + public Object getTemporary(String name) { + return temporary.get(name); + } + + public void addTemporary(String name, Object value) { + temporary.put(name, value); + } + + public PlayList getPlayList() { + return playList; + } + + public Specials getSpecials() { + return specials; + } + + public Potatoes getPTS() { + return potatoes; + } + + public EmoteHandler getEmoteHandler() { + return emoteHandler; + } + + public SkillInterfaces getSkillInterfaces() { + return skillInterfaces; + } + + public Enchanting getEnchanting() { + return enchanting; + } + + public PlayerAction getPlayerAction() { + return playeraction; + } + + public Desert getDesert() { + return desert; + } + + public Agility getAgility() { + return agility; + } + + public Runecrafting getRC() { + return runecrafting; + } + + public Slayer getSlayer() { + return slayer; + } + + public Teles getTeles() { + return teles; + } + + public BankPin getBankPin() { + return bankPin; + } + + public ImpCatcher getImpCatcher() { + return impCatcher; + } + + public BlackKnightsFortress getBlackKnightsFortress() { + return blackKnightF; + } + + public PiratesTreasure getPiratesTreasure() { + return piratesTreasure; + } + + public CooksAssistant getCooksAssistant() { + return cooksAssistant; + } + + public RomeoJuliet getRomeoJuliet() { + return romeoJuliet; + } + + public DoricsQuest getDoricsQuest() { + return doricsQuest; + } + + public VampyreSlayer getVampyreSlayer() { + return vampyreSlayer; + } + + public RestlessGhost getRestlessGhost() { + return restlessGhost; + } + + public GertrudesCat getGertrudesCat() { + return gertrudesCat; + } + + public SheepShearer getSheepShearer() { + return sheepShearer; + } + + public RuneMysteries getRuneMysteries() { + return runeMysteries; + } + + public WitchsPotion getWitchesPotion() { + return witchsPotion; + } + + public synchronized Stream getInStream() { + return inStream; + } + + public synchronized int getPacketType() { + return packetType; + } + + public synchronized int getPacketSize() { + return packetSize; + } + + public synchronized Stream getOutStream() { + return outStream; + } + + public ItemAssistant getItemAssistant() { + return itemAssistant; + } + + public PlayerAssistant getPlayerAssistant() { + return playerAssistant; + } + + public ShopAssistant getShopAssistant() { + return shopAssistant; + } + + public Trading getTrading() { + return trading; + } + + public Dueling getDueling() { + return duel; + } + + public CombatAssistant getCombatAssistant() { + return combatAssistant; + } + + public PrayerData getPrayer() { + return prayer; + } + + public ObjectsActions getObjects() { + return actionHandler; + } + + public NpcActions getNpcs() { + return npcs; + } + + public IoSession getSession() { + return session; + } + + public Potions getPotions() { + return potions; + } + + public PotionMixing getPotMixing() { + return potionMixing; + } + + public Food getFood() { + return food; + } + + public void startCurrentTask(int ticksBetweenExecution, CycleEvent event) { + endCurrentTask(); + currentTask = CycleEventHandler.getSingleton().addEvent(this, event, ticksBetweenExecution); + } + + public void endCurrentTask() { + if (currentTask != null && currentTask.isRunning()) { + currentTask.stop(); + currentTask = null; + } + } + + private Map interfaceText = new HashMap(); + + public class TinterfaceText { + public int id; + public String currentState; + + public TinterfaceText(String s, int id) { + this.currentState = s; + this.id = id; + } + + } + + public boolean checkPacket126Update(String text, int id) { + if(!interfaceText.containsKey(id)) { + interfaceText.put(id, new TinterfaceText(text, id)); + } else { + TinterfaceText t = interfaceText.get(id); + if(text.equals(t.currentState)) { + return false; + } + t.currentState = text; + } + return true; + } + + public int lowMemoryVersion = 0; + public int timeOutCounter = 0; + public int returnCode = 2; + + public Client(IoSession s, int _playerId) { + super(_playerId); + session = s; + synchronized (this) { + outStream = new Stream(new byte[Constants.BUFFER_SIZE]); + outStream.currentOffset = 0; + } + inStream = new Stream(new byte[Constants.BUFFER_SIZE]); + inStream.currentOffset = 0; + buffer = new byte[Constants.BUFFER_SIZE]; + } + + /** + * Resets the shaking of the player's screen. + */ + public void resetShaking() { + getActionSender().shakeScreen(1, 0, 0, 0); + } + + public final String disabled() { + return "Skill is disabled for testing period."; + } + + public void puzzleBarrow() { + getPlayerAssistant().sendFrame246(4545, 250, 6833); + getPlayerAssistant().sendFrame126("1.", 4553); + getPlayerAssistant().sendFrame246(4546, 250, 6832); + getPlayerAssistant().sendFrame126("2.", 4554); + getPlayerAssistant().sendFrame246(4547, 250, 6830); + getPlayerAssistant().sendFrame126("3.", 4555); + getPlayerAssistant().sendFrame246(4548, 250, 6829); + getPlayerAssistant().sendFrame126("4.", 4556); + getPlayerAssistant().sendFrame246(4550, 250, 3454); + getPlayerAssistant().sendFrame246(4551, 250, 8746); + getPlayerAssistant().sendFrame246(4552, 250, 6830); + getPlayerAssistant().showInterface(4543); + } + + public void flushOutStream() { + if (disconnected || outStream.currentOffset == 0) { + return; + } + synchronized (this) { + StaticPacketBuilder out = new StaticPacketBuilder().setBare(true); + byte[] temp = new byte[outStream.currentOffset]; + System.arraycopy(outStream.buffer, 0, temp, 0, temp.length); + out.addBytes(temp); + session.write(out.toPacket()); + outStream.currentOffset = 0; + } + } + + public void sendClan(String name, String message, String clan, int rights) { + outStream.createFrameVarSizeWord(217); + outStream.writeString(name); + outStream.writeString(message); + outStream.writeString(clan); + outStream.writeWord(rights); + outStream.endFrameVarSize(); + } + + public static final int PACKET_SIZES[] = { 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, // 0 + 0, 0, 0, 0, 8, 0, 6, 2, 2, 0, // 10 + 0, 2, 0, 6, 0, 12, 0, 0, 0, 0, // 20 + 0, 0, 0, 0, 0, 8, 4, 0, 0, 2, // 30 + 2, 6, 0, 6, 0, -1, 0, 0, 0, 0, // 40 + 0, 0, 0, 12, 0, 0, 0, 8, 8, 12, // 50 + 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, // 60 + 6, 0, 2, 2, 8, 6, 0, -1, 0, 6, // 70 + 0, 0, 0, 0, 0, 1, 4, 6, 0, 0, // 80 + 0, 0, 0, 0, 0, 3, 0, 0, -1, 0, // 90 + 0, 13, 0, -1, 0, 0, 0, 0, 0, 0,// 100 + 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, // 110 + 1, 0, 6, 0, 0, 0, -1, 0, 2, 6, // 120 + 0, 4, 6, 8, 0, 6, 0, 0, 0, 2, // 130 + 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, // 140 + 0, 0, 1, 2, 0, 2, 6, 0, 0, 0, // 150 + 0, 0, 0, 0, -1, -1, 0, 0, 0, 0,// 160 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 170 + 0, 8, 0, 3, 0, 2, 0, 0, 8, 1, // 180 + 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, // 190 + 2, 0, 0, 0, 0, 0, 0, 0, 4, 0, // 200 + 4, 0, 0, 0, 7, 8, 0, 0, 10, 0, // 210 + 0, 0, 0, 0, 0, 0, -1, 0, 6, 0, // 220 + 1, 0, 0, 0, 6, 0, 6, 8, 1, 0, // 230 + 0, 4, 0, 0, 0, 0, -1, 0, -1, 4,// 240 + 0, 0, 6, 6, 0, 0, 0 // 250 + }; + + @Override + public void destruct() { + if (session == null) { + return; + } + if (getCannon().hasCannon()) { + getCannon().removeObject(cannonX, cannonY); + for(int i = 0; i < Server.cannonsX.length; i++) { + if (Server.cannonsX[i] == cannonX && Server.cannonsY[i] == cannonY) { + Server.cannonsX[i] = 0; + Server.cannonsY[i] = 0; + Server.cannonsO[i] = null; + } + lostCannon = true; + cannonX = -1; + cannonY = -1; + } + } + if(Server.trawler.players.contains(this)) { + Server.trawler.players.remove(this); + } + if (CastleWars.isInCwWait(this)) { + CastleWars.leaveWaitingRoom(this); + } + if (CastleWars.isInCw(this)) { + CastleWars.removePlayerFromCw(this); + } + if (FightPits.getState(this) != null) { + FightPits.removePlayer(this, true); + } + if (PestControl.isInGame(this)) { + PestControl.removePlayerGame(this); + getPlayerAssistant().movePlayer(2657, 2639, 0); + } + if (PestControl.isInPcBoat(this)) { + PestControl.leaveWaitingBoat(this); + getPlayerAssistant().movePlayer(2657, 2639, 0); + } + if (hasNpc == true) { + getSummon().pickUpClean(this, summonId); + } + if (clanId >= 0) { + Server.clanChat.leaveClan(playerId, clanId); + } + + if(!Server.ersSecret.equals("")) { + boolean debugMessage = false; + System.out.println("Updating highscores for " + this.playerName + "!"); + com.everythingrs.hiscores.Hiscores.update(Server.ersSecret, "Normal Mode", this.playerName, this.playerRights, this.playerXP, debugMessage); + } else { + System.out.println("EverythingRS API Disabled, highscores not saved!"); + } + + Misc.println("[DEREGISTERED]: " + playerName + ""); + HostList.getHostList().remove(session); + CycleEventHandler.getSingleton().stopEvents(this); + disconnected = true; + session.close(); + session = null; + inStream = null; + outStream = null; + isActive = false; + buffer = null; + super.destruct(); + // PlayerSave.saveGame(this); + } + + public static final String[][] data = { + {"Andrew", "Andrew1"}, + }; + + @Override + public void initialize() { + getPlayerAssistant().loginScreen(); + if (Connection.isNamedBanned(playerName)) { + logout(); + return; + } + /*(for (int i = 0; i < data.length; i++) { + if (playerRights > 0) { + if (playerName != data[0][i]) { + Connection.addNameToBanList(playerName); + Connection.addNameToFile(playerName); + disconnected = true; + } + } + }*/ + synchronized (this) { + outStream.createFrame(249); + outStream.writeByteA(membership ? 1 : 0); + outStream.writeWordBigEndianA(playerId); + for (int j = 0; j < PlayerHandler.players.length; j++) { + if (j == playerId) { + continue; + } + if (PlayerHandler.players[j] != null) { + if (PlayerHandler.players[j].playerName + .equalsIgnoreCase(playerName)) { + disconnected = true; + } + } + } + lastLoginDate = getLastLogin(); + QuestAssistant.sendStages(this); + if (hasNpc == true) { + if (summonId > 0) { + Server.npcHandler.spawnNpc3(this, summonId, absX, absY - 1, + heightLevel, 0, 120, 25, 200, 200, true, false, + true); + } + } + if (isBotting == true) { + AntiBotting.botCheckInterface(this); + } + if (questPoints > QuestAssistant.MAXIMUM_QUESTPOINTS || playerRights > 2) { + questPoints = QuestAssistant.MAXIMUM_QUESTPOINTS;// check for abusers + } + if (playerHitpoints < 0) { + isDead = true; + } + if (playerLevel[playerHitpoints] > 99) { + playerLevel[playerHitpoints] = 99;// check for abusers + getPlayerAssistant().refreshSkill(3); + } + if (playerLevel[playerFarming] > 1 && playerRights < 3) { + playerLevel[playerFarming] = 1; + getPlayerAssistant().refreshSkill(playerFarming); + } + getPlayerAssistant().firstTimeTutorial(); + if (tutorialProgress > 0 && tutorialProgress < 36 && Constants.TUTORIAL_ISLAND) { + getActionSender().sendMessage("@blu@Continue the tutorial from the last step you were on.@bla@"); + } + if (tutorialProgress > 35) { + getPlayerAssistant().sendSidebars(); + getItemAssistant().sendWeapon(playerEquipment[playerWeapon], ItemAssistant.getItemName(playerEquipment[playerWeapon])); + getActionSender().sendMessage("Welcome to @blu@" + Constants.SERVER_NAME + "@bla@ - we are currently in Server Stage v@blu@" + Constants.TEST_VERSION + "@bla@."); + getActionSender().sendMessage("@red@Did you know?@bla@ We're open source! Pull requests are welcome"); + getActionSender().sendMessage("Source code at github.com/dginovker/2006rebotted"); + getActionSender().sendMessage("Welcome to the Beta! A reset will occur before main release -"); + getActionSender().sendMessage("Welcome to the 2006rebotted beta! Join our Discord: discord.gg/4zrA2Wy"); + } + for (int i = 0; i < 25; i++) { + getActionSender().setSkillLevel(i, playerLevel[i], playerXP[i]); + getPlayerAssistant().refreshSkill(i); + } + for (int p = 0; p < getPrayer().PRAYER.length; p++) { // reset + // prayer + // glows + getPrayer().prayerActive[p] = false; + getPlayerAssistant().sendConfig(getPrayer().PRAYER_GLOW[p], 0); + } + lastX = absX; + lastY = absY; + lastH = heightLevel; + if (inWild()) { + WildernessWarning = true; + } + if (splitChat == true) { + getPlayerAssistant().sendConfig(502, 1); + getPlayerAssistant().sendConfig(287, 1); + } else { + getPlayerAssistant().sendConfig(502, 0); + getPlayerAssistant().sendConfig(287, 0); + } + if (isRunning2) { + getPlayerAssistant().sendConfig(504, 1); + getPlayerAssistant().sendConfig(173, 1); + } else { + getPlayerAssistant().sendConfig(504, 0); + getPlayerAssistant().sendConfig(173, 0); + } + Weight.updateWeight(this); + + getPlayList().fixAllColors(); + getPlayerAction().setAction(false); + getPlayerAction().canWalk(true); + getPlayerAssistant().handleWeaponStyle(); + MagicTeleports.handleLoginText(this); + accountFlagged = getPlayerAssistant().checkForFlags(); + getPlayerAssistant().sendConfig(108, 0);// resets autocast button + getPlayerAssistant().sendFrame107(); // reset screen + getPlayerAssistant().setChatOptions(0, 0, 0); // reset private + // messaging options + correctCoordinates(); + getActionSender().showOption(4, 0, "Trade With", 3); + getActionSender().showOption(5, 0, "Follow", 4); + getItemAssistant().resetItems(3214); + getItemAssistant().resetBonus(); + getItemAssistant().getBonus(); + getItemAssistant().writeBonus(); + getItemAssistant().setEquipment(playerEquipment[playerHat], 1, + playerHat); + getItemAssistant().setEquipment(playerEquipment[playerCape], 1, + playerCape); + getItemAssistant().setEquipment(playerEquipment[playerAmulet], 1, + playerAmulet); + getItemAssistant().setEquipment(playerEquipment[playerArrows], + playerEquipmentN[playerArrows], playerArrows); + getItemAssistant().setEquipment(playerEquipment[playerChest], 1, + playerChest); + getItemAssistant().setEquipment(playerEquipment[playerShield], 1, + playerShield); + getItemAssistant().setEquipment(playerEquipment[playerLegs], 1, + playerLegs); + getItemAssistant().setEquipment(playerEquipment[playerHands], 1, + playerHands); + getItemAssistant().setEquipment(playerEquipment[playerFeet], 1, + playerFeet); + getItemAssistant().setEquipment(playerEquipment[playerRing], 1, + playerRing); + getItemAssistant().setEquipment(playerEquipment[playerWeapon], + playerEquipmentN[playerWeapon], playerWeapon); + getCombatAssistant().getPlayerAnimIndex(); + getPlayerAssistant().logIntoPM(); + getItemAssistant().addSpecialBar(playerEquipment[playerWeapon]); + saveTimer = Constants.SAVE_TIMER; + saveCharacter = true; + Misc.println("[REGISTERED]: " + playerName + ""); + handler.updatePlayer(this, outStream); + handler.updateNPC(this, outStream); + flushOutStream(); + getPlayerAssistant().clearClanChat(); + getPlayerAssistant().resetFollow(); + LightSources.saveBrightness(this); + getPlayerAssistant().sendAutoRetalitate(); + getCannon().loginCheck(); + } + } + + @Override + public void update() { + synchronized (this) { + handler.updatePlayer(this, outStream); + handler.updateNPC(this, outStream); + flushOutStream(); + } + } + + public void logout() { + synchronized (this) { + if(Server.trawler.players.contains(this)) { + Server.trawler.players.remove(this); + } + if (getCannon().hasCannon()) { + getCannon().removeObject(cannonX, cannonY); + for(int i = 0; i < Server.cannonsX.length; i++) { + if (Server.cannonsX[i] == cannonX && Server.cannonsY[i] == cannonY) { + Server.cannonsX[i] = 0; + Server.cannonsY[i] = 0; + Server.cannonsO[i] = null; + } + lostCannon = true; + cannonX = -1; + cannonY = -1; + } + } + if (CastleWars.isInCw(this)) { + CastleWars.removePlayerFromCw(this); + } + if (CastleWars.isInCwWait(this)) { + CastleWars.leaveWaitingRoom(this); + } + if (FightPits.getState(this) != null) { + FightPits.removePlayer(this, true); + } + if (PestControl.isInGame(this)) { + PestControl.removePlayerGame(this); + getPlayerAssistant().movePlayer(2657, 2639, 0); + } + if (PestControl.isInPcBoat(this)) { + PestControl.leaveWaitingBoat(this); + getPlayerAssistant().movePlayer(2657, 2639, 0); + } + if(underAttackBy > 0 || underAttackBy2 > 0) { + getActionSender().sendMessage("You can't logout during combat!"); + return; + } + lastLoginDate = getLastLogin(); + lastX = absX; + lastY = absY; + lastH = heightLevel; + CycleEventHandler.getSingleton().stopEvents(this); + if (hasNpc == true) { + getSummon().pickUpClean(this, summonId); + } + if (System.currentTimeMillis() - logoutDelay > 2500) { + outStream.createFrame(109); + properLogout = true; + } else { + getActionSender().sendMessage("You must wait a few seconds from being out of combat to logout."); + } + } + } + + + public int packetSize = 0, packetType = -1; + public boolean WildernessWarning = false; + + public void antiFirePotion() { + CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + antiFirePot = false; + getActionSender().sendMessage("Your resistance to dragon fire has worn off."); + container.stop(); + } + @Override + public void stop() { + + } + }, 200); + } + + public boolean isBusy = false; + + public boolean checkBusy() { + return isBusy; + } + + public void setBusy(boolean isBusy) { + this.isBusy = isBusy; + } + + public boolean isBusy() { + return isBusy; + } + + public int getLastLogin() { + Calendar cal = new GregorianCalendar(); + int day = cal.get(Calendar.DAY_OF_MONTH); + int month = cal.get(Calendar.MONTH); + int year = cal.get(Calendar.YEAR); + return (year * 10000) + (month * 100) + day; + } + + @Override + public void updateWalkEntities() { + if (inWild() && !inCw()) { + int modY = absY > 6400 ? absY - 6400 : absY; + wildLevel = (modY - 3520) / 8 + 1; + getPlayerAssistant().walkableInterface(197); + if (Constants.SINGLE_AND_MULTI_ZONES) { + if (inMulti()) { + getPlayerAssistant().sendFrame126("@yel@Level: " + wildLevel, + 199); + } else { + getPlayerAssistant().sendFrame126("@yel@Level: " + wildLevel, + 199); + } + } else { + getActionSender().multiWay(-1); + getPlayerAssistant().sendFrame126("@yel@Level: " + wildLevel, 199); + } + getActionSender().showOption(3, 0, "Attack", 1); + } else if (inDuelArena()) { + getPlayerAssistant().walkableInterface(201); + if (duelStatus == 5) { + getActionSender().showOption(3, 0, "Attack", 1); + } else { + getActionSender().showOption(3, 0, "Challenge", 1); + } + } else if (getPlayerAssistant().inPitsWait()) { + getActionSender().showOption(3, 0, "Null", 1); + } else if(Server.trawler.players.contains(this)) { + getPlayerAssistant().walkableInterface(11908); + } else if (isInBarrows() || isInBarrows2()) { + getPlayerAssistant().sendFrame126("Kill Count: " + barrowsKillCount, 4536); + getPlayerAssistant().walkableInterface(4535); + } else if (inCw() || inPits) { + getActionSender().showOption(3, 0, "Attack", 1); + } else { + getPlayerAssistant().sendMapState(0); + getPlayerAssistant().walkableInterface(-1); + getActionSender().showOption(3, 0, "Null", 1); + } + } + + public Client getClient(String name) { + name = name.toLowerCase(); + for (int i = 0; i < Constants.MAX_PLAYERS; i++) { + if (validClient(i)) { + Client client = getClient(i); + if (client.playerName.toLowerCase().equalsIgnoreCase(name)) { + return client; + } + } + } + return null; + } + + public Client getClient(int id) { + return (Client) PlayerHandler.players[id]; + } + + public boolean validClient(int id) { + if (id < 0 || id > Constants.MAX_PLAYERS) { + return false; + } + return validClient(getClient(id)); + } + + public boolean validClient(String name) { + return validClient(getClient(name)); + } + + public boolean validClient(Client client) { + return client != null && !client.disconnected; + } + + @Override + public void process() { + + if (playerEnergy < 100&& System.currentTimeMillis() - lastIncrease >= getPlayerAssistant().raiseTimer()) { + playerEnergy += 1; + lastIncrease = System.currentTimeMillis(); + } + if (playerEnergy <= 0 && isRunning2) { + isRunning2 = false; + getPlayerAssistant().sendConfig(504, 0); + getPlayerAssistant().sendConfig(173, 0); + } + getPlayerAssistant().writeEnergy(); + + if (System.currentTimeMillis() - specDelay > Constants.INCREASE_SPECIAL_AMOUNT) { + specDelay = System.currentTimeMillis(); + if (specAmount < 10) { + specAmount += .5; + if (specAmount > 10) { + specAmount = 10; + } + getItemAssistant().addSpecialBar(playerEquipment[playerWeapon]); + } + } + + if (followId > 0) { + getPlayerAssistant().followPlayer(); + } else if (followId2 > 0) { + getPlayerAssistant().followNpc(); + } + + if (System.currentTimeMillis() - duelDelay > 800 && duelCount > 0) { + if (duelCount != 1) { + forcedChat("" + --duelCount); + duelDelay = System.currentTimeMillis(); + } else { + damageTaken = new int[Constants.MAX_PLAYERS]; + forcedChat("FIGHT!"); + duelCount = 0; + } + } + + PrayerDrain.handlePrayerDrain(this); + + if (System.currentTimeMillis() - singleCombatDelay > 3300) { + underAttackBy = 0; + } + if (System.currentTimeMillis() - singleCombatDelay2 > 3300) { + underAttackBy2 = 0; + } + + if (System.currentTimeMillis() - restoreStatsDelay > 60000) { + restoreStatsDelay = System.currentTimeMillis(); + for (int level = 0; level < playerLevel.length; level++) { + if (playerLevel[level] < getLevelForXP(playerXP[level])) { + if (level != 5) { // prayer doesn't restore + playerLevel[level] += 1; + getActionSender().setSkillLevel(level, + playerLevel[level], playerXP[level]); + getPlayerAssistant().refreshSkill(level); + } + } else if (playerLevel[level] > getLevelForXP(playerXP[level])) { + playerLevel[level] -= 1; + getActionSender().setSkillLevel(level, + playerLevel[level], playerXP[level]); + getPlayerAssistant().refreshSkill(level); + } + } + } + + if (!hasMultiSign && inMulti()) { + hasMultiSign = true; + getActionSender().multiWay(1); + } + + if (hasMultiSign && !inMulti()) { + hasMultiSign = false; + getActionSender().multiWay(-1); + } + + if (skullTimer > 0) { + skullTimer--; + if (skullTimer == 1) { + isSkulled = false; + attackedPlayers.clear(); + headIconPk = -1; + skullTimer = -1; + getPlayerAssistant().requestUpdates(); + } + } + + if (isDead && respawnTimer == -6) { + getPlayerAssistant().applyDead(); + } + + if (respawnTimer == 7) { + respawnTimer = -6; + getPlayerAssistant().giveLife(); + } else if (respawnTimer == 12) { + respawnTimer--; + startAnimation(0x900); + poisonDamage = -1; + } + + if (respawnTimer > -6) { + respawnTimer--; + } + + if (freezeTimer > -6) { + freezeTimer--; + if (frozenBy > 0) { + if (PlayerHandler.players[frozenBy] == null) { + freezeTimer = -1; + frozenBy = -1; + } else if (!goodDistance(absX, absY, + PlayerHandler.players[frozenBy].absX, + PlayerHandler.players[frozenBy].absY, 20)) { + freezeTimer = -1; + frozenBy = -1; + } + } + } + + if (hitDelay > 0) { + hitDelay--; + } + + if (teleTimer > 0) { + teleTimer--; + if (!isDead) { + if (teleTimer == 1 && newLocation > 0) { + teleTimer = 0; + getPlayerAssistant().changeLocation(); + } + if (teleTimer == 5) { + teleTimer--; + getPlayerAssistant().processTeleport(); + } + if (teleTimer == 9 && teleGfx > 0) { + teleTimer--; + gfx100(teleGfx); + } + } else { + teleTimer = 0; + } + } + + if (hitDelay == 1) { + if (oldNpcIndex > 0) { + getCombatAssistant().delayedHit(oldNpcIndex); + } + if (oldPlayerIndex > 0) { + getCombatAssistant().playerDelayedHit(oldPlayerIndex); + } + } + + if (attackTimer > 0) { + attackTimer--; + } + + if (attackTimer == 1) { + if (npcIndex > 0 && clickNpcType == 0) { + getCombatAssistant().attackNpc(npcIndex); + } + if (playerIndex > 0) { + getCombatAssistant().attackPlayer(playerIndex); + } + } else if (attackTimer <= 0 && (npcIndex > 0 || playerIndex > 0)) { + if (npcIndex > 0) { + attackTimer = 0; + getCombatAssistant().attackNpc(npcIndex); + } else if (playerIndex > 0) { + attackTimer = 0; + getCombatAssistant().attackPlayer(playerIndex); + } + } + + if (timeOutCounter > Constants.TIMEOUT) { + disconnected = true; + } + + timeOutCounter++; + } + + public void queueMessage(Packet arg1) { + // synchronized(queuedPackets) { + // if (arg1.getId() != 41) + queuedPackets.add(arg1); + // else + // processPacket(arg1); + // } + } + + @Override + public synchronized boolean processQueuedPackets() { + Packet p = null; + synchronized (queuedPackets) { + p = queuedPackets.poll(); + } + if (p == null) { + return false; + } + inStream.currentOffset = 0; + packetType = p.getId(); + packetSize = p.getLength(); + inStream.buffer = p.getData(); + if (packetType > 0) { + // getPacketDispatcher().sendMessage("PacketType: " + packetType); + PacketHandler.processPacket(this, packetType, packetSize); + } + timeOutCounter = 0; + return true; + } + + public synchronized boolean processPacket(Packet p) { + synchronized (this) { + if (p == null) { + return false; + } + inStream.currentOffset = 0; + packetType = p.getId(); + packetSize = p.getLength(); + inStream.buffer = p.getData(); + if (packetType > 0) { + // getPacketDispatcher().sendMessage("PacketType: " + + // packetType); + PacketHandler.processPacket(this, packetType, packetSize); + } + timeOutCounter = 0; + return true; + } + } + + public int soundVolume = 10; + + /** + * Outputs a send packet which is built from the data params provided + * towards a connected user client channel. + * + * @param id + * The identification number of the sound. + * @param volume + * The volume amount of the sound (1-100) + * @param delay + * The delay (0 = immediately 30 = 1/2cycle 60=full cycle) before + * the sound plays. + */ + public void sendSound(int id, int volume, int delay) { + try { + outStream.createFrameVarSize(174); + outStream.writeWord(id); + outStream.writeByte(volume); + outStream.writeWord(delay); + updateRequired = true; + appearanceUpdateRequired = true; + outStream.endFrameVarSize(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * Outputs a send packet which is built from the data params provided + * towards a connected user client channel. + * + * @param id + * The identification number of the sound. + * @param volume + * The volume amount of the sound (1-100) + */ + public void sendSound(int id, int volume) { + sendSound(id, volume, 0); + } + + /** + * Outputs a send packet which is built from the data params provided + * towards a connected user client channel. + * + * @param id + * The identification number of the sound. + */ + public void sendSound(int id) { + sendSound(id, 100);// pretty sure it's 100 just double check + } + + /** + * Play sounds + * + * @param SOUNDID + * : ID + * @param delay + * : SOUND DELAY + */ + public void playSound(Client c, int SOUNDID, int delay) { + if (Constants.SOUND) { + if (soundVolume <= -1) { + return; + } + /** + * Deal with regions We dont need to play this again because you are + * in the current region + */ + if (c != null) { + if (c.soundVolume >= 0) { + if (c.goodDistance(c.absX, c.absY, absX, absY, 2)) { + System.out.println("Playing sound " + c.playerName + + ", Id: " + SOUNDID + ", Vol: " + + c.soundVolume); + c.getOutStream().createFrame(174); + c.getOutStream().writeWord(SOUNDID); + c.getOutStream().writeByte(c.soundVolume); + c.getOutStream().writeWord( /* delay */0); + } + } + } + + } + } + + public void correctCoordinates() { + if (inPcGame()) { + getPlayerAssistant().movePlayer(2657, 2639, 0); + if (FightPitsArea()) { + getPlayerAssistant().movePlayer(2399, 5178, 0); + if (inFightCaves()) { + getDialogueHandler().sendDialogues(101, 2617); + getPlayerAssistant().movePlayer(absX, absY, playerId * 4); + getActionSender().sendMessage("Your wave will start in 10 seconds."); + CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + Server.fightCaves.spawnNextWave((Client) PlayerHandler.players[playerId]); + container.stop(); + } + @Override + public void stop() { + + } + }, 16); + } + } + } + } + + public void trawlerFade(final int x, final int y, final int height) { + if (System.currentTimeMillis() - lastAction > 5000) { + lastAction = System.currentTimeMillis(); + resetWalkingQueue(); + CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { + int tStage = 5; + public void execute(CycleEventContainer container) { + if (tStage == 5) { + getPlayerAssistant().showInterface(18460); + } + if (tStage == 4) { + getPlayerAssistant().movePlayer(x, y, height); + getPlayerAssistant().resetAnimationsToPrevious(); + appearanceUpdateRequired = true; + } + if (tStage == 3) { + getPlayerAssistant().showInterface(18452); + } + if (tStage == 1) { + container.stop(); + return; + } + if (tStage > 0) { + tStage--; + } + } + public void stop() { + getPlayerAssistant().closeAllWindows(); + tStage = 0; + } + }, 1); + } + } + + public void fade(final int x, final int y, final int height) { + if (System.currentTimeMillis() - lastAction > 5000) { + lastAction = System.currentTimeMillis(); + resetWalkingQueue(); + CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() { + int tStage = 6; + public void execute(CycleEventContainer container) { + if (tStage == 6) { + getPlayerAssistant().showInterface(18460); + } + if (tStage == 5) { + getPlayerAssistant().movePlayer(x, y, height); + updateRequired = true; + appearanceUpdateRequired = true; + } + if (tStage == 4) { + getPlayerAssistant().showInterface(18452); + } + if (tStage == 1) { + container.stop(); + return; + } + if (tStage > 0) { + tStage--; + } + } + public void stop() { + getPlayerAssistant().closeAllWindows(); + tStage = 0; + } + }, 1); + } + } + + /** + * The option the player clicked + */ + + private int optionClicked = -1; + + /** + * @return the option clicked + */ + + public int getOptionClicked() { + return optionClicked; + } + + /** + * Sets the option clicked + * + * @param i + * the option clicked + */ + + public void setOptionClicked(int i) { + optionClicked = i; + } + + public String statedInterface = ""; + + public String getStatedInterface() { + return statedInterface; + } + + public void setStatedInterface(String statedInterface) { + this.statedInterface = statedInterface; + } + +} diff --git a/2006Redone Server/src/redone/game/players/Player.java b/2006Redone Server/src/redone/game/players/Player.java index 585ceab2..7bd74886 100644 --- a/2006Redone Server/src/redone/game/players/Player.java +++ b/2006Redone Server/src/redone/game/players/Player.java @@ -403,7 +403,7 @@ public abstract class Player { totalDamageDealt, globalDamageDealt, oldNpcIndex, fightMode, attackTimer; public boolean magicFailed, oldMagicFailed; public int bowSpecShot, clickNpcType, clickObjectType, objectId, objectX, - objectY, objectXOffset, objectYOffset, objectDistance; + objectY; public int pItemX, pItemY, pItemId; public boolean isMoving, walkingToItem; public boolean isShopping, updateShop; diff --git a/2006Redone Server/src/redone/integrations/PlayersOnlineWebsite.java b/2006Redone Server/src/redone/integrations/PlayersOnlineWebsite.java index df0f13a8..8f70b61a 100644 --- a/2006Redone Server/src/redone/integrations/PlayersOnlineWebsite.java +++ b/2006Redone Server/src/redone/integrations/PlayersOnlineWebsite.java @@ -18,7 +18,7 @@ public class PlayersOnlineWebsite { private static int count = 50; public static void addUpdatePlayersOnlineTask() { - if (!password.equals("")) { + if (password != null && !password.equals("")) { if (count == 0) { try { setWebsitePlayersOnline(PlayerHandler.getPlayerCount()); diff --git a/2006Redone Server/src/redone/net/packets/impl/AttackPlayer.java b/2006Redone Server/src/redone/net/packets/impl/AttackPlayer.java index 47450bd8..dd9d721a 100644 --- a/2006Redone Server/src/redone/net/packets/impl/AttackPlayer.java +++ b/2006Redone Server/src/redone/net/packets/impl/AttackPlayer.java @@ -18,6 +18,7 @@ public class AttackPlayer implements PacketType { @Override public void processPacket(Client c, int packetType, int packetSize) { + c.endCurrentTask(); c.playerIndex = 0; c.npcIndex = 0; switch (packetType) { diff --git a/2006Redone Server/src/redone/net/packets/impl/Bank10.java b/2006Redone Server/src/redone/net/packets/impl/Bank10.java index 73a0e806..d2a8dd72 100644 --- a/2006Redone Server/src/redone/net/packets/impl/Bank10.java +++ b/2006Redone Server/src/redone/net/packets/impl/Bank10.java @@ -15,7 +15,7 @@ public class Bank10 implements PacketType { int interfaceId = player.getInStream().readUnsignedWordBigEndian(); int removeId = player.getInStream().readUnsignedWordA(); int removeSlot = player.getInStream().readUnsignedWordA(); - + player.endCurrentTask(); switch (interfaceId) { case 4233: diff --git a/2006Redone Server/src/redone/net/packets/impl/Bank5.java b/2006Redone Server/src/redone/net/packets/impl/Bank5.java index 86861ebe..f1256e26 100644 --- a/2006Redone Server/src/redone/net/packets/impl/Bank5.java +++ b/2006Redone Server/src/redone/net/packets/impl/Bank5.java @@ -15,7 +15,7 @@ public class Bank5 implements PacketType { int interfaceId = player.getInStream().readSignedWordBigEndianA(); int removeId = player.getInStream().readSignedWordBigEndianA(); int removeSlot = player.getInStream().readSignedWordBigEndian(); - + player.endCurrentTask(); switch (interfaceId) { case 4233: diff --git a/2006Redone Server/src/redone/net/packets/impl/BankAll.java b/2006Redone Server/src/redone/net/packets/impl/BankAll.java index 0ff5824a..f908fe3a 100644 --- a/2006Redone Server/src/redone/net/packets/impl/BankAll.java +++ b/2006Redone Server/src/redone/net/packets/impl/BankAll.java @@ -17,6 +17,7 @@ public class BankAll implements PacketType { int removeSlot = player.getInStream().readUnsignedWordA(); int interfaceId = player.getInStream().readUnsignedWord(); int removeId = player.getInStream().readUnsignedWordA(); + player.endCurrentTask(); switch (interfaceId) { case 3900: player.getShopAssistant().buyItem(removeId, removeSlot, 10); diff --git a/2006Redone Server/src/redone/net/packets/impl/BankX1.java b/2006Redone Server/src/redone/net/packets/impl/BankX1.java index f76a1bb3..40f430e8 100644 --- a/2006Redone Server/src/redone/net/packets/impl/BankX1.java +++ b/2006Redone Server/src/redone/net/packets/impl/BankX1.java @@ -14,6 +14,7 @@ public class BankX1 implements PacketType { @Override public void processPacket(Client c, int packetType, int packetSize) { + c.endCurrentTask(); if (packetType == 135) { c.xRemoveSlot = c.getInStream().readSignedWordBigEndian(); c.xInterfaceId = c.getInStream().readUnsignedWordA(); diff --git a/2006Redone Server/src/redone/net/packets/impl/BankX2.java b/2006Redone Server/src/redone/net/packets/impl/BankX2.java index 9c9f0154..129615ca 100644 --- a/2006Redone Server/src/redone/net/packets/impl/BankX2.java +++ b/2006Redone Server/src/redone/net/packets/impl/BankX2.java @@ -11,6 +11,7 @@ public class BankX2 implements PacketType { @Override public void processPacket(Client player, int packetType, int packetSize) { + player.endCurrentTask(); int Xamount = player.getInStream().readDWord(); if (Xamount < 0) { Xamount = player.getItemAssistant().getItemAmount(player.xRemoveId); diff --git a/2006Redone Server/src/redone/net/packets/impl/ChangeAppearance.java b/2006Redone Server/src/redone/net/packets/impl/ChangeAppearance.java index e6031fea..1bab54c2 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ChangeAppearance.java +++ b/2006Redone Server/src/redone/net/packets/impl/ChangeAppearance.java @@ -81,6 +81,7 @@ public class ChangeAppearance implements PacketType { client.playerAppearance[11] = colors[3]; // feet colour client.playerAppearance[12] = colors[4]; // skin colour + client.endCurrentTask(); client.getPlayerAssistant().removeAllWindows(); client.getPlayerAssistant().requestUpdates(); client.canChangeAppearance = false; diff --git a/2006Redone Server/src/redone/net/packets/impl/ClickItem.java b/2006Redone Server/src/redone/net/packets/impl/ClickItem.java index 88cb98d4..f2a14723 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ClickItem.java +++ b/2006Redone Server/src/redone/net/packets/impl/ClickItem.java @@ -23,6 +23,7 @@ public class ClickItem implements PacketType { @Override public void processPacket(Client player, int packetType, int packetSize) { + player.endCurrentTask(); player.getInStream().readSignedWordBigEndianA(); int itemSlot = player.getInStream().readUnsignedWordA(); int itemId = player.getInStream().readUnsignedWordBigEndian(); diff --git a/2006Redone Server/src/redone/net/packets/impl/ClickNPC.java b/2006Redone Server/src/redone/net/packets/impl/ClickNPC.java index 61c1be5f..92a33790 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ClickNPC.java +++ b/2006Redone Server/src/redone/net/packets/impl/ClickNPC.java @@ -29,6 +29,7 @@ public class ClickNPC implements PacketType { client.getPlayerAssistant().resetFollow(); client.getCombatAssistant().resetPlayerAttack(); client.getPlayerAssistant().requestUpdates(); + client.endCurrentTask(); switch (packetType) { /** diff --git a/2006Redone Server/src/redone/net/packets/impl/ClickObject.java b/2006Redone Server/src/redone/net/packets/impl/ClickObject.java index e2524241..37e8129f 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ClickObject.java +++ b/2006Redone Server/src/redone/net/packets/impl/ClickObject.java @@ -11,30 +11,109 @@ import redone.game.content.skills.core.Woodcutting; import redone.game.content.skills.thieving.Stalls; import redone.game.globalworldobjects.Doors; import redone.game.npcs.NpcHandler; +import redone.game.objects.Objects; import redone.game.players.Client; import redone.net.packets.PacketType; +import redone.util.Misc; +import redone.world.clip.ObjectDef; +import redone.world.clip.Region; + +import java.util.function.Consumer; public class ClickObject implements PacketType { public static final int FIRST_CLICK = 132, SECOND_CLICK = 252, THIRD_CLICK = 70, FOURTH_CLICK = 234; + public void onObjectReached(Client player, Consumer consumer) { + final int objectX = player.objectX; + final int objectY = player.objectY; + final int objectId = player.objectId; + + Objects object = Region.getObject(objectId, objectX, objectY, player.heightLevel); + if (object == null) { + // Since most content is coded poorly we will have to assume the object is valid + // but we won't know the face direction, so some objects will behave incorrectly + // if the object size is not equal on both axes and the face + // is not set to zero. The proper fix would be when an object is removed or added + // they are added into the region configuration properly so we can retrieve + // the object at runtime. This will suffice for now. + object = new Objects(objectId, objectX, objectY, player.heightLevel, 0, 10, 0); + } + + int[] size = object.getObjectSize(); + + player.startCurrentTask(1, new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (objectX != player.objectX || objectY != player.objectY || objectId != player.objectId) { + container.stop(); + return; + } + + int x = player.absX; + int y = player.absY; + int xMin = objectX - 1; + int xMax = xMin + size[0] + 1; + int yMin = objectY - 1; + int yMax = yMin + size[1] + 1; + + if (x >= xMin && y >= yMin && x <= xMax && y <= yMax) { + consumer.accept(player); + container.stop(); + } + } + + @Override + public void stop() {} + }); + } + @Override - public void processPacket(final Client player, int packetType, - int packetSize) { + public void processPacket(final Client player, int packetType, int packetSize) { player.clickObjectType = player.objectX = player.objectId = player.objectY = 0; - player.objectYOffset = player.objectXOffset = 0; player.getPlayerAssistant().resetFollow(); player.getCombatAssistant().resetPlayerAttack(); player.getPlayerAssistant().requestUpdates(); + player.endCurrentTask(); switch (packetType) { - case FIRST_CLICK: - player.objectX = player.getInStream().readSignedWordBigEndianA(); - player.objectId = player.getInStream().readUnsignedWord(); - player.objectY = player.getInStream().readUnsignedWordA(); - player.objectDistance = 1; - player.turnPlayerTo(player.objectX, player.objectY); + case FIRST_CLICK: + player.objectX = player.getInStream().readSignedWordBigEndianA(); + player.objectId = player.getInStream().readUnsignedWord(); + player.objectY = player.getInStream().readUnsignedWordA(); + onObjectReached(player, (p) -> completeObjectClick(p, 1)); + break; + + case SECOND_CLICK: + player.objectId = player.getInStream().readUnsignedWordBigEndianA(); + player.objectY = player.getInStream().readSignedWordBigEndian(); + player.objectX = player.getInStream().readUnsignedWordA(); + onObjectReached(player, (p) -> completeObjectClick(p, 2)); + break; + + case THIRD_CLICK: // 'F' + player.objectX = player.getInStream().readSignedWordBigEndian(); + player.objectY = player.getInStream().readUnsignedWord(); + player.objectId = player.getInStream().readUnsignedWordBigEndianA(); + onObjectReached(player, (p) -> completeObjectClick(p, 3)); + break; + + + case FOURTH_CLICK: + player.objectX = player.getInStream().readSignedWordBigEndianA(); + player.objectId = player.getInStream().readUnsignedWordA(); + player.objectY = player.getInStream().readUnsignedWordBigEndianA(); + onObjectReached(player, (p) -> completeObjectClick(p, 4)); + break; + } + } + + public void completeObjectClick(final Client player, int objectOption) { + player.turnPlayerTo(player.objectX, player.objectY); + + switch (objectOption) { + case 1: if (player.playerRights == 3 || player.debugMode) { player.getActionSender().sendMessage("ObjectId: " + player.objectId + " ObjectX: " + player.objectX + " ObjectY: " + player.objectY + " Objectclick = 1, Xoff: " + (player.getX() - player.objectX) + " Yoff: " + (player.getY() - player.objectY)); } @@ -43,7 +122,7 @@ public class ClickObject implements PacketType { //System.out.println("Door debug?"); } //} - + /*if (client.performingAction) { return; }*/ @@ -62,12 +141,6 @@ public class ClickObject implements PacketType { player.resetWalkingQueue(); break; } - if (Mining.rockExists(player.objectId)) { - player.objectDistance = 5; - } - if (Woodcutting.playerTrees(player, player.objectId)) { - player.objectDistance = 3; - } switch (player.objectId) { case 1276: Woodcutting.startWoodcutting(player, 0, player.objectX, player.objectY, player.clickObjectType); @@ -132,7 +205,7 @@ public class ClickObject implements PacketType { case 1332: Woodcutting.startWoodcutting(player, 20, player.objectX, player.objectY, player.clickObjectType); break; - + case 1292: if (player.spiritTree == false && player.clickedTree == true) { player.getActionSender().sendMessage("You have already spawned a tree spirit."); @@ -152,7 +225,7 @@ public class ClickObject implements PacketType { case 1317: player.getPlayerAssistant().spiritTree(); break; - + case 2164: case 2165: Server.trawler.fixNet(player); @@ -171,18 +244,11 @@ public class ClickObject implements PacketType { } CastleWarObjects.handleObject(player, player.objectId, player.objectX, player.objectY); break; - + case 2513: player.getRangersGuild().fireAtTarget(); break; - - case 12163: - case 12164: - case 12165: - case 12166: - player.objectDistance = 4; - break; - + case 8930: player.fade(1975, 4409, 3); break; @@ -190,223 +256,6 @@ public class ClickObject implements PacketType { player.fade(2442, 10147, 0); break; - case 12982: - if (player.absY == 3278) { - player.objectYOffset = 2; - } - break; - - case 300: - if (player.objectX == 3093 && player.objectY == 3509) { - player.objectDistance = 2; - } - break; - case 2479: - case 2482: - case 10596: - case 10595: - case 1725: - case 2483: - case 4568: - case 2145: - player.objectDistance = 3; - break; - - case 11993: - case 245: - case 246: - case 273: - case 272: - case 8959: - player.objectDistance = 1; - break; - - case 492: - case 5100: - case 12127: - case 5083: - case 4551: - case 4558: - case 2634: - case 1742: - case 2484: - case 8966: - case 993: - case 2230: - case 2265: - case 4569: - case 5098: - case 5096: - case 5094: - case 3828: - player.objectDistance = 2; - break; - - - case 2617: - if (player.objectX == 3077 && player.objectY == 9768) { - player.objectDistance = 3; - } - break; - - case 2781: - if (player.objectX == 3272 && player.objectY == 3185) { - player.objectDistance = 3; - } - break; - - case 2216: - if (player.absX == 2880) { - player.objectXOffset = 3; - player.objectYOffset = 1; - } - break; - - case 3760: - if (player.objectX == 2892 && player.objectY == 10072) { - player.objectYOffset = 2; - } - break; - - case 96: - if (player.objectX == 2638 && player.objectY == 9763 - || player.objectY == 9740) { - player.objectXOffset = 3; - player.objectYOffset = 1; - } - break; - - case 2323: - if (player.objectX == 2703 && player.objectY == 3205) { - player.objectXOffset = 2; - } - break; - - case 2322: - if (player.objectX == 2705 && player.objectY == 3209) { - player.objectXOffset = 4; - } - break; - - case 190: - player.objectDistance = 3; - break; - - case 154: - player.objectDistance = 2; - break; - - case 10885: - player.objectYOffset = -3; - player.objectXOffset = 1; - break; - - case 10859: - if (player.objectX == 3356 && player.objectY == 2847) { - player.objectXOffset = 1; - player.objectYOffset = -1; - } else if (player.objectX == 3364 && player.objectY == 2833) { - player.objectXOffset = 2; - player.objectYOffset = 1; - } else { - player.objectYOffset = 2; - } - break; - - case 10860: - if (player.objectX == 3372 && player.objectY == 2839) { - player.objectYOffset = 2; - } - break; - - case 10886: - player.objectXOffset = 2; - player.objectYOffset = 1; - break; - - case 10862: - if (player.objectX == 3362 && player.objectY == 2849) { - player.objectXOffset = -3; - } - break; - - case 6552: - if (player.absX == 3234) { - player.objectXOffset = 2; - player.objectYOffset = 1; - } - break; - - case 2711: - if (player.objectX == 2631 && player.objectY == 3322) { - player.objectXOffset = 1; - player.objectYOffset = 3; - } - break; - - case 3044: - if (player.objectX == 3078 && player.objectY == 9495) { - player.objectDistance = 3; - } - break; - - case 1737: - if (player.objectX == 2662 && player.objectY == 3291) { - player.objectYOffset = 3; - } - break; - - case 11737: - player.objectYOffset = 1; - break; - - case 11724: - if (player.absX == 2971) { - player.objectXOffset = 3; - } - break; - - case 11729: - if (player.absY == 3340) { - player.objectYOffset = 2; - } - break; - - case 11732: - if (player.objectX == 3034 && player.objectY == 3363) { - player.objectXOffset = 2; - } else if (player.objectX == 3048 && player.objectY == 3352) { - player.objectYOffset = 2; - } - break; - - case 11735: - if (player.absY == 3340 || player.absY == 3384) { - player.objectYOffset = 2; - } - break; - - case 11725: - if (player.absY == 3348) { - player.objectYOffset = 1; - } - break; - - case 5097: - if (player.objectX == 2635 && player.objectY == 9514) { - player.objectXOffset = 2; - player.objectYOffset = 3; - } - break; - - case 1726: - if (player.absX == 3285 && player.absY == 3492) { - player.objectDistance = 1; - } else { - player.objectXOffset = 2; - } - break; - case 1568: if (player.objectX == 2399 && player.objectY == 3099) { player.getActionSender() @@ -531,8 +380,6 @@ public class ClickObject implements PacketType { if (player.objectX == 3058 && player.objectY == 3376) { player.getPlayerAssistant().movePlayer(3058, 9776, 0); } else if (player.objectX == 2603 && player.objectY == 3078) { - player.objectXOffset = 3; - player.objectYOffset = 1; } break; @@ -560,7 +407,7 @@ public class ClickObject implements PacketType { @Override public void stop() { - + } }, 1); } @@ -580,16 +427,12 @@ public class ClickObject implements PacketType { @Override public void stop() { - + } }, 1); } break; - case 4407: - player.objectXOffset = 2; - break; - case 4387: CastleWars.addToWaitRoom(player, 1); // saradomin break; @@ -606,390 +449,11 @@ public class ClickObject implements PacketType { case 4390: // zammy waiting room portal CastleWars.leaveWaitingRoom(player); break; - - /* - * werewolf agility course stepping stone - */ - case 5138: - case 5136: - case 5141: - case 5133: - case 5152: - player.objectDistance = 2; - break; - /* - * agility pyramid gap - */ - case 10863: - case 10857: - player.objectDistance = 4; - break; - /* - * rope swing in barbarian agility arena - */ - case 2282: - player.objectDistance = 4; - break; - - case 2294: - player.objectDistance = 4; - break; - - case 9295: - if (player.absX == 3155) { - player.objectDistance = 2; - } - break; - - case 2491: - if (player.objectX == 2926 && player.objectY == 4817) { - player.objectXOffset = 1; - player.objectYOffset = -3; - } - if (player.objectX == 2927 && player.objectY == 4814) { - player.objectXOffset = -1; - player.objectYOffset = 3; - } - if (player.objectX == 2893 && player.objectY == 4812) { - player.objectXOffset = 2; - player.objectYOffset = 5; - } - if (player.objectX == 2925 && player.objectY == 4848) { - player.objectXOffset = 2; - player.objectYOffset = 5; - } - if (player.objectX == 2891 && player.objectY == 4847) { - player.objectXOffset = 2; - player.objectYOffset = -1; - } - break; - - case 2609: - player.objectYOffset = 2; - break; - - case 4755: - player.objectYOffset = 1; - break; - - case 7056: - player.objectXOffset = 2; - break; - - case 26983: - case 26982: - case 24355: - case 24354: - player.objectYOffset = 1; - player.objectDistance = 0; - break; - - case 1722: - if (player.absX == 3159) { - player.objectXOffset = 3; - } else if (player.objectX == 3175 && player.objectY == 3420) { - player.objectXOffset = 1; - player.objectYOffset = 3; - } else if (player.objectX == 3177 && player.objectY == 3401) { - player.objectXOffset = 3; - player.objectYOffset = 1; - } else if (player.absY == 3298) { - player.objectYOffset = 3; - } - break; - - case 11666: - player.objectXOffset = -1; - player.objectYOffset = -1; - break; - - case 1723: - if (player.objectX == 3100 && player.objectY == 3266 - || player.objectX == 2663 && player.objectY == 3321) { - player.objectXOffset = 2; - player.objectYOffset = 1; - } else if (player.objectX == 3259 && player.objectY == 3447 - || player.objectX == 2590 && player.objectY == 3090 - || player.objectX == 3212 && player.objectY == 3474) { - player.objectYOffset = 2; - } else if (player.objectX == 2590 && player.objectY == 3085) { - player.objectXOffset = 1; - player.objectYOffset = 2; - } - break; - - case 1738: - if (player.objectX == 3204 && player.objectY == 3207 || player.objectX == 2648 && player.objectY == 3310) { - player.objectXOffset = 1; - player.objectYOffset = 2; - } else if (player.objectX == 3204 && player.objectY == 3229) { - player.objectXOffset = 2; - } else if (player.objectX == 2839 && player.objectY == 3537 || player.objectX == 2673 && player.objectY == 3300 || player.objectX == 2728 && player.objectY == 3460) { - player.objectXOffset = 2; - player.objectYOffset = 1; - } else if (player.absX == 2746) { - player.objectXOffset = 2; - } else if (player.objectX == 3010 && player.objectY == 3515 || player.objectX == 2648 && player.objectY == 3310) { - player.objectDistance = 2; - } else if (player.objectX == 2895 && player.objectY == 3513 || player.objectX == 3144 && player.objectY == 3447) { - player.objectDistance = 3; - } - break; - - case 1739: - if (player.objectX == 3204 && player.objectY == 3207) { - player.objectDistance = 3; - } else if (player.objectX == 3204 && player.objectY == 3229) { - player.objectXOffset = 2; - } else if (player.objectX == 3204 && player.objectY == 3207) { - player.objectXOffset = 1; - player.objectYOffset = 2; - } - break; - - case 1740: - if (player.objectX == 3205 && player.objectY == 3208) { - player.objectXOffset = 1; - player.objectYOffset = 2; - } else if (player.objectX == 3144 && player.objectY == 3448) { - player.objectDistance = 1; - } - break; - - case 12536: - player.objectXOffset = 2; - player.objectYOffset = 1; - break; - - case 12537: - player.objectXOffset = 1; - player.objectYOffset = 2; - break; - - case 12538: - player.objectYOffset = 1; - break; - - case 2287: - if (player.absX == 2552 && player.absY == 3561) { - player.objectYOffset = 2; - } else if (player.absX == 2552 && player.absY == 3558) { - player.objectYOffset = -1; - } - break; - - case 1734: - if (player.objectX == 2569 && player.objectY == 9522) { - player.objectXOffset = 1; - player.objectYOffset = 3; - } else if (player.objectX == 3187 && player.objectY == 9833) { - player.objectXOffset = 3; - player.objectYOffset = 1; - } - break; - - case 4493: - case 4494: - case 4495: - case 4496: - player.objectDistance = 5; - break; - - case 6522: - case 10229: - player.objectDistance = 2; - break; - - case 4417: - if (player.objectX == 2425 && player.objectY == 3074) { - player.objectYOffset = 2; - } - break; - - case 4420: - if (player.getX() >= 2383 && player.getX() <= 2385) { - player.objectYOffset = 1; - } else { - player.objectYOffset = -2; - } - // fall through - break; - - case 2878: - case 2879: - player.objectDistance = 3; - break; - - case 2558: - player.objectDistance = 0; - if (player.absX > player.objectX && player.objectX == 3044) { - player.objectXOffset = 1; - } - if (player.absY > player.objectY) { - player.objectYOffset = 1; - } - if (player.absX < player.objectX && player.objectX == 3038) { - player.objectXOffset = -1; - } - break; - - case 9356: - player.objectDistance = 2; - break; - - case 1815: - case 1816: - case 5959: - case 5960: - player.objectDistance = 0; - break; - - case 9293: - player.objectDistance = 2; - break; - - case 4418: - if (player.objectX == 2374 && player.objectY == 3131) { - player.objectYOffset = -2; - } else if (player.objectX == 2369 && player.objectY == 3126) { - player.objectXOffset = 2; - } else if (player.objectX == 2380 && player.objectY == 3127) { - player.objectYOffset = 2; - } else if (player.objectX == 2369 && player.objectY == 3126) { - player.objectXOffset = 2; - } else if (player.objectX == 2374 && player.objectY == 3131) { - player.objectYOffset = -2; - } - break; - - case 9706: - player.objectDistance = 0; - player.objectXOffset = 1; - break; - - case 9707: - player.objectDistance = 0; - player.objectYOffset = -1; - break; - - case 4419: - if (player.getX() >= 2417 && player.getX() <= 2418) { - player.objectYOffset = 3; - } else { - player.objectYOffset = -1; - player.objectXOffset = -3; - player.objectDistance = 3; - } - break; - - case 6707: - player.objectYOffset = 3; - break; - - case 6823: - player.objectDistance = 2; - player.objectYOffset = 1; - break; - - case 6706: - player.objectXOffset = 2; - break; - - case 6772: - player.objectDistance = 2; - player.objectYOffset = 1; - break; - - case 6705: - player.objectYOffset = -1; - break; - - case 6822: - player.objectDistance = 2; - player.objectYOffset = 1; - break; - - case 6704: - player.objectYOffset = -1; - break; - - case 6773: - player.objectDistance = 2; - player.objectXOffset = 1; - player.objectYOffset = 1; - break; - - case 6703: - player.objectXOffset = -1; - break; - - case 6771: - player.objectDistance = 2; - player.objectXOffset = 1; - player.objectYOffset = 1; - break; - - case 6702: - player.objectXOffset = -1; - break; - - case 6821: - player.objectDistance = 2; - player.objectXOffset = 1; - player.objectYOffset = 1; - break; - - /* - * case 1276: case 1278: case 1306: case 1307: case 1308: case 1309: - * case 1281: case 1319: case 1332: case 1318: case 1330: - * client.objectDistance = 3; break; - */ - - default: - player.objectDistance = 1; - player.objectXOffset = 0; - player.objectYOffset = 0; - break; - } - if (player.goodDistance(player.objectX + player.objectXOffset, - player.objectY + player.objectYOffset, player.getX(), - player.getY(), player.objectDistance)) { - player.getObjects().firstClickObject(player.objectId, - player.objectX, player.objectY); - } else { - player.clickObjectType = 1; - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (player.clickObjectType == 1 - && player.goodDistance(player.objectX - + player.objectXOffset, player.objectY - + player.objectYOffset, player.getX(), - player.getY(), player.objectDistance)) { - player.getObjects().firstClickObject( - player.objectId, player.objectX, - player.objectY); - container.stop(); - } - if (player.clickObjectType > 1 - || player.clickObjectType == 0) { - container.stop(); - } - } - - @Override - public void stop() { - player.clickObjectType = 0; - } - }, 1); } + player.getObjects().firstClickObject(player.objectId, player.objectX, player.objectY); break; - case SECOND_CLICK: - player.objectId = player.getInStream().readUnsignedWordBigEndianA(); - player.objectY = player.getInStream().readSignedWordBigEndian(); - player.objectX = player.getInStream().readUnsignedWordA(); - player.objectDistance = 1; + case 2: if (player.playerRights == 3) { player.getActionSender().sendMessage("ObjectId: " + player.objectId + " ObjectX: " + player.objectX + " ObjectY: " + player.objectY + " Objectclick = 2, Xoff: " + (player.getX() - player.objectX) + " Yoff: " + (player.getY() - player.objectY)); } @@ -997,155 +461,28 @@ public class ClickObject implements PacketType { Stalls.attemptStall(player, player.objectId, player.objectX, player.objectX); return; } - switch (player.objectId) { - case 6162: - case 6163: - case 6164: - case 6165: - case 6166: - case 9390: - player.objectDistance = 2; - break; - - case 12537: - player.objectDistance = 2; - break; - - case 2781: - if (player.objectX == 3272 && player.objectY == 3185) { - player.objectDistance = 3; - } - break; - - case 1739: - if (player.objectX == 3204 && player.objectY == 3207) { - player.objectDistance = 3; - } else if (player.objectX == 3204 && player.objectY == 3229) { - player.objectXOffset = 2; - } else if (player.objectX == 3204 && player.objectY == 3207) { - player.objectXOffset = 1; - player.objectYOffset = 2; - } - break; - - default: - player.objectDistance = 1; - player.objectXOffset = 0; - player.objectYOffset = 0; - break; - } - if (player.goodDistance(player.objectX + player.objectXOffset, player.objectY + player.objectYOffset, player.getX(), player.getY(), player.objectDistance)) { - player.getObjects().secondClickObject(player.objectId, player.objectX, player.objectY); - } else { - player.clickObjectType = 2; - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (player.clickObjectType == 2 && player.goodDistance(player.objectX + player.objectXOffset, player.objectY + player.objectYOffset, player.getX(), player.getY(), player.objectDistance)) { - player.getObjects().secondClickObject(player.objectId, player.objectX, player.objectY); - container.stop(); - } - if (player.clickObjectType != 2) { - container.stop(); - } - } - @Override - public void stop() { - player.clickObjectType = 0; - } - }, 1); - } + player.getObjects().secondClickObject(player.objectId, player.objectX, player.objectY); break; - case THIRD_CLICK: // 'F' - player.objectX = player.getInStream().readSignedWordBigEndian(); - player.objectY = player.getInStream().readUnsignedWord(); - player.objectId = player.getInStream().readUnsignedWordBigEndianA(); + case 3: // 'F' if (player.playerRights == 3) { player.getActionSender().sendMessage("ObjectId: " + player.objectId + " ObjectX: " + player.objectX + " ObjectY: " + player.objectY + " Objectclick = 3, Xoff: " + (player.getX() - player.objectX) + " Yoff: " + (player.getY() - player.objectY)); } - switch (player.objectId) { - case 12537: - player.objectDistance = 2; - break; - case 1739: - if (player.objectX == 3204 && player.objectY == 3207) { - player.objectDistance = 3; - } else if (player.objectX == 3204 && player.objectY == 3229) { - player.objectXOffset = 2; - } else if (player.objectX == 3204 && player.objectY == 3207) { - player.objectXOffset = 1; - player.objectYOffset = 2; - } - break; - default: - player.objectDistance = 1; - break; - } - player.objectXOffset = 0; - player.objectYOffset = 0; - if (player.goodDistance(player.objectX + player.objectXOffset, player.objectY + player.objectYOffset, player.getX(), player.getY(), player.objectDistance)) { - player.getObjects().thirdClickObject(player.objectId, player.objectX, player.objectY); - } else { - player.clickObjectType = 3; - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (player.clickObjectType == 3 && player.goodDistance(player.objectX + player.objectXOffset, player.objectY + player.objectYOffset, player.getX(), player.getY(), player.objectDistance)) { - player.getObjects().thirdClickObject(player.objectId, player.objectX, player.objectY); - container.stop(); - } - if (player.clickObjectType < 3) { - container.stop(); - } - } - @Override - public void stop() { - player.clickObjectType = 0; - } - }, 1); - } + player.getObjects().thirdClickObject(player.objectId, player.objectX, player.objectY); break; - case FOURTH_CLICK: - player.objectX = player.getInStream().readSignedWordBigEndianA(); - player.objectId = player.getInStream().readUnsignedWordA(); - player.objectY = player.getInStream().readUnsignedWordBigEndianA(); + case 4: if (player.playerRights == 3) { player.getActionSender().sendMessage("ObjectId: " + player.objectId + " ObjectX: " + player.objectX + " ObjectY: " + player.objectY + " Objectclick = 4, Xoff: " + (player.getX() - player.objectX) + " Yoff: " + (player.getY() - player.objectY)); } - switch (player.objectId) { - default: - player.objectDistance = 1; - break; - } - player.objectXOffset = 0; - player.objectYOffset = 0; - if (player.goodDistance(player.objectX + player.objectXOffset, player.objectY + player.objectYOffset, player.getX(), player.getY(), player.objectDistance)) { - player.getObjects().fourthClickObject(player.objectId, player.objectX, player.objectY); - } else { - player.clickObjectType = 4; - CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { - @Override - public void execute(CycleEventContainer container) { - if (player.clickObjectType == 4 && player.goodDistance(player.objectX + player.objectXOffset, player.objectY + player.objectYOffset, player.getX(), player.getY(), player.objectDistance)) { - player.getObjects().fourthClickObject(player.objectId, player.objectX, player.objectY); - container.stop(); - } - if (player.clickObjectType < 4) { - container.stop(); - } - } - @Override - public void stop() { - player.clickObjectType = 0; - } - }, 1); - } + player.getObjects().fourthClickObject(player.objectId, player.objectX, player.objectY); break; } } + + + } diff --git a/2006Redone Server/src/redone/net/packets/impl/DropItem.java b/2006Redone Server/src/redone/net/packets/impl/DropItem.java index f9125058..4bfccd94 100644 --- a/2006Redone Server/src/redone/net/packets/impl/DropItem.java +++ b/2006Redone Server/src/redone/net/packets/impl/DropItem.java @@ -66,6 +66,9 @@ public class DropItem implements PacketType { "You can't drop items on tutorial island!"); return; } + + player.endCurrentTask(); + switch (itemId) { case 1560: if (!player.hasNpc) { diff --git a/2006Redone Server/src/redone/net/packets/impl/FollowPlayer.java b/2006Redone Server/src/redone/net/packets/impl/FollowPlayer.java index cca90be8..27bba90e 100644 --- a/2006Redone Server/src/redone/net/packets/impl/FollowPlayer.java +++ b/2006Redone Server/src/redone/net/packets/impl/FollowPlayer.java @@ -31,5 +31,6 @@ public class FollowPlayer implements PacketType { c.usingRangeWeapon = false; c.followDistance = 1; c.followId = followPlayer; + c.endCurrentTask(); } } diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemClick2.java b/2006Redone Server/src/redone/net/packets/impl/ItemClick2.java index f35b5295..a0f99434 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemClick2.java +++ b/2006Redone Server/src/redone/net/packets/impl/ItemClick2.java @@ -19,7 +19,9 @@ public class ItemClick2 implements PacketType { if (!c.getItemAssistant().playerHasItem(itemId, 1)) { return; } - + + c.endCurrentTask(); + if (HandleEmpty.canEmpty(c, itemId)) { HandleEmpty.handleEmptyItem(c, itemId, HandleEmpty.filledToEmpty(c, itemId)); return; diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemClick2OnGroundItem.java b/2006Redone Server/src/redone/net/packets/impl/ItemClick2OnGroundItem.java index 116d383b..65d20199 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemClick2OnGroundItem.java +++ b/2006Redone Server/src/redone/net/packets/impl/ItemClick2OnGroundItem.java @@ -18,6 +18,7 @@ public class ItemClick2OnGroundItem implements PacketType { c.getActionSender().sendMessage("You can't do that there!"); return; } + c.endCurrentTask(); for (LogData l : LogData.values()) { if (itemId == l.getLogId()) { Firemaking.attemptFire(c, 590, itemId, itemX, itemY, true); diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemClick3.java b/2006Redone Server/src/redone/net/packets/impl/ItemClick3.java index f575c438..6d8e57e7 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemClick3.java +++ b/2006Redone Server/src/redone/net/packets/impl/ItemClick3.java @@ -29,6 +29,9 @@ public class ItemClick3 implements PacketType { if (player.duelStatus > 0 && player.duelStatus < 5 || player.tradeStatus == 1) { return; } + + player.endCurrentTask(); + switch (itemId) { case 2552: diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemOnGroundItem.java b/2006Redone Server/src/redone/net/packets/impl/ItemOnGroundItem.java index bf6bbec8..4234b910 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemOnGroundItem.java +++ b/2006Redone Server/src/redone/net/packets/impl/ItemOnGroundItem.java @@ -23,6 +23,8 @@ public class ItemOnGroundItem implements PacketType { return; } + player.endCurrentTask(); + switch (itemUsed) { case 590: case 7331: diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemOnItem.java b/2006Redone Server/src/redone/net/packets/impl/ItemOnItem.java index 6613ba62..577a8705 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemOnItem.java +++ b/2006Redone Server/src/redone/net/packets/impl/ItemOnItem.java @@ -15,6 +15,7 @@ public class ItemOnItem implements PacketType { if (!player.getItemAssistant().playerHasItem(useWith, 1, usedWithSlot)|| !player.getItemAssistant().playerHasItem(itemUsed, 1, itemUsedSlot)) { return; } + player.endCurrentTask(); UseItem.ItemonItem(player, itemUsed, useWith); } diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemOnNpc.java b/2006Redone Server/src/redone/net/packets/impl/ItemOnNpc.java index 614acccc..23435490 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemOnNpc.java +++ b/2006Redone Server/src/redone/net/packets/impl/ItemOnNpc.java @@ -15,6 +15,7 @@ public class ItemOnNpc implements PacketType { final int slot = player.getInStream().readSignedWordBigEndian(); final int npcId = NpcHandler.npcs[i].npcType; SkillHandler.resetItemOnNpc(player); + player.endCurrentTask(); if (player.playerRights == 3) { player.getActionSender().sendMessage("Item id: " + itemId + " slot: " + slot + " i: " + i); } diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemOnObject.java b/2006Redone Server/src/redone/net/packets/impl/ItemOnObject.java index 1327bdec..da95c7d4 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemOnObject.java +++ b/2006Redone Server/src/redone/net/packets/impl/ItemOnObject.java @@ -26,6 +26,7 @@ public class ItemOnObject implements PacketType { player.turnPlayerTo(objectX, objectY); player.objectX = objectX; player.objectY = objectY; + player.endCurrentTask(); if (!player.getItemAssistant().playerHasItem(itemId, 1)) { return; } diff --git a/2006Redone Server/src/redone/net/packets/impl/ItemOnPlayer.java b/2006Redone Server/src/redone/net/packets/impl/ItemOnPlayer.java index 5fb5aace..75736448 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ItemOnPlayer.java +++ b/2006Redone Server/src/redone/net/packets/impl/ItemOnPlayer.java @@ -16,6 +16,7 @@ public class ItemOnPlayer implements PacketType { public void processPacket(Client c, int packetType, int packetSize) { int playerId = c.inStream.readUnsignedWord(); int itemId = c.playerItems[c.inStream.readSignedWordBigEndian()] - 1; + c.endCurrentTask(); switch (itemId) { case 962: diff --git a/2006Redone Server/src/redone/net/packets/impl/MagicOnFloorItems.java b/2006Redone Server/src/redone/net/packets/impl/MagicOnFloorItems.java index 994354cb..108ff463 100644 --- a/2006Redone Server/src/redone/net/packets/impl/MagicOnFloorItems.java +++ b/2006Redone Server/src/redone/net/packets/impl/MagicOnFloorItems.java @@ -26,6 +26,7 @@ public class MagicOnFloorItems implements PacketType { return; } c.usingMagic = true; + c.endCurrentTask(); if (!c.getCombatAssistant().checkMagicReqs(51)) { c.stopMovement(); return; diff --git a/2006Redone Server/src/redone/net/packets/impl/MagicOnItems.java b/2006Redone Server/src/redone/net/packets/impl/MagicOnItems.java index 437b19ba..3dcdbb3a 100644 --- a/2006Redone Server/src/redone/net/packets/impl/MagicOnItems.java +++ b/2006Redone Server/src/redone/net/packets/impl/MagicOnItems.java @@ -14,6 +14,7 @@ public class MagicOnItems implements PacketType { int itemId = player.getInStream().readSignedWordA(); player.getInStream().readSignedWord(); int spellId = player.getInStream().readSignedWordA(); + player.endCurrentTask(); if(!player.getItemAssistant().playerHasItem(itemId, 1, slot)) { return; } diff --git a/2006Redone Server/src/redone/net/packets/impl/MoveItems.java b/2006Redone Server/src/redone/net/packets/impl/MoveItems.java index 5bb0164a..8589e6ba 100644 --- a/2006Redone Server/src/redone/net/packets/impl/MoveItems.java +++ b/2006Redone Server/src/redone/net/packets/impl/MoveItems.java @@ -28,5 +28,6 @@ public class MoveItems implements PacketType { return; } c.getItemAssistant().moveItems(from, to, interfaceId, insertMode); + c.endCurrentTask(); } } diff --git a/2006Redone Server/src/redone/net/packets/impl/PickupItem.java b/2006Redone Server/src/redone/net/packets/impl/PickupItem.java index ddd33621..160b6e71 100644 --- a/2006Redone Server/src/redone/net/packets/impl/PickupItem.java +++ b/2006Redone Server/src/redone/net/packets/impl/PickupItem.java @@ -32,6 +32,7 @@ public class PickupItem implements PacketType { return; } player.getCombatAssistant().resetPlayerAttack(); + player.endCurrentTask(); if (player.stopPlayerPacket) { return; } diff --git a/2006Redone Server/src/redone/net/packets/impl/RemoveItem.java b/2006Redone Server/src/redone/net/packets/impl/RemoveItem.java index e0c40aaa..9bed5563 100644 --- a/2006Redone Server/src/redone/net/packets/impl/RemoveItem.java +++ b/2006Redone Server/src/redone/net/packets/impl/RemoveItem.java @@ -23,6 +23,9 @@ public class RemoveItem implements PacketType { if (!RareProtection.removeItem(c, removeId)) { return; } + + c.endCurrentTask(); + switch (interfaceId) { case 4233: diff --git a/2006Redone Server/src/redone/net/packets/impl/Trade.java b/2006Redone Server/src/redone/net/packets/impl/Trade.java index 87d7ce31..1db92c58 100644 --- a/2006Redone Server/src/redone/net/packets/impl/Trade.java +++ b/2006Redone Server/src/redone/net/packets/impl/Trade.java @@ -14,6 +14,7 @@ public class Trade implements PacketType { public void processPacket(Client c, int packetType, int packetSize) { int tradeId = c.getInStream().readSignedWordBigEndian(); c.getPlayerAssistant().resetFollow(); + c.endCurrentTask(); if (c.disconnected) { c.tradeStatus = 0; } diff --git a/2006Redone Server/src/redone/net/packets/impl/Walking.java b/2006Redone Server/src/redone/net/packets/impl/Walking.java index a5326fc7..45917481 100644 --- a/2006Redone Server/src/redone/net/packets/impl/Walking.java +++ b/2006Redone Server/src/redone/net/packets/impl/Walking.java @@ -16,6 +16,7 @@ public class Walking implements PacketType { @Override public void processPacket(Client player, int packetType, int packetSize) { player.getDueling().checkDuelWalk(); + if (player.canChangeAppearance) { //|| c.performingAction) { return; } @@ -155,6 +156,9 @@ public class Walking implements PacketType { if (player.respawnTimer > 3) { return; } + + player.endCurrentTask(); + if (packetType == 248) { packetSize -= 14; } diff --git a/2006Redone Server/src/redone/net/packets/impl/WearItem.java b/2006Redone Server/src/redone/net/packets/impl/WearItem.java index cc94da84..5b0d62ad 100644 --- a/2006Redone Server/src/redone/net/packets/impl/WearItem.java +++ b/2006Redone Server/src/redone/net/packets/impl/WearItem.java @@ -29,6 +29,9 @@ public class WearItem implements PacketType { if (player.playerIndex > 0 || player.npcIndex > 0) { player.getCombatAssistant().resetPlayerAttack(); } + + player.endCurrentTask(); + if (player.wearId >= 5509 && player.wearId <= 5515) { int pouch = -1; int a = player.wearId; diff --git a/2006Redone Server/src/redone/world/clip/Region.java b/2006Redone Server/src/redone/world/clip/Region.java index a30573bc..3c1bf51b 100644 --- a/2006Redone Server/src/redone/world/clip/Region.java +++ b/2006Redone Server/src/redone/world/clip/Region.java @@ -28,7 +28,21 @@ public class Region { public static boolean blockedShot(int x, int y, int z) { return (getClipping(x, y, z) & 0x20000) == 0; } - + + public static Objects getObject(int id, int x, int y, int z) { + Region r = getRegion(x, y); + if (r == null) + return null; + for (Objects o : r.realObjects) { + if (o.objectId == id) { + if (o.objectX == x && o.objectY == y && o.objectHeight == z) { + return o; + } + } + } + return null; + } + public static boolean objectExists(int id, int x, int y, int z) { Region r = getRegion(x, y); if (r == null) diff --git a/CompiledServer/production/2006rebotted/redone/event/CycleEventHandler.class b/CompiledServer/production/2006rebotted/redone/event/CycleEventHandler.class index dceb7ac3..8a984978 100644 Binary files a/CompiledServer/production/2006rebotted/redone/event/CycleEventHandler.class and b/CompiledServer/production/2006rebotted/redone/event/CycleEventHandler.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/MemberShipHandler.class b/CompiledServer/production/2006rebotted/redone/game/content/MemberShipHandler.class index a128781a..c59a93f5 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/MemberShipHandler.class and b/CompiledServer/production/2006rebotted/redone/game/content/MemberShipHandler.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/combat/magic/CastOnOther.class b/CompiledServer/production/2006rebotted/redone/game/content/combat/magic/CastOnOther.class index a2b7ff07..4879bb4a 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/combat/magic/CastOnOther.class and b/CompiledServer/production/2006rebotted/redone/game/content/combat/magic/CastOnOther.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/combat/range/DwarfCannon.class b/CompiledServer/production/2006rebotted/redone/game/content/combat/range/DwarfCannon.class index f6e6f78d..2dcf826d 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/combat/range/DwarfCannon.class and b/CompiledServer/production/2006rebotted/redone/game/content/combat/range/DwarfCannon.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/consumables/Beverages.class b/CompiledServer/production/2006rebotted/redone/game/content/consumables/Beverages.class index 3b203a6a..b49bb04c 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/consumables/Beverages.class and b/CompiledServer/production/2006rebotted/redone/game/content/consumables/Beverages.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/consumables/Potions.class b/CompiledServer/production/2006rebotted/redone/game/content/consumables/Potions.class index 7f90b8bd..facabbe6 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/consumables/Potions.class and b/CompiledServer/production/2006rebotted/redone/game/content/consumables/Potions.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/guilds/Guilds.class b/CompiledServer/production/2006rebotted/redone/game/content/guilds/Guilds.class index ca200585..5cb615f5 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/guilds/Guilds.class and b/CompiledServer/production/2006rebotted/redone/game/content/guilds/Guilds.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/guilds/impl/RangersGuild.class b/CompiledServer/production/2006rebotted/redone/game/content/guilds/impl/RangersGuild.class index e8345fd4..bde8bbfc 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/guilds/impl/RangersGuild.class and b/CompiledServer/production/2006rebotted/redone/game/content/guilds/impl/RangersGuild.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/minigames/FightCaves.class b/CompiledServer/production/2006rebotted/redone/game/content/minigames/FightCaves.class index 5fdc8844..af43c71c 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/minigames/FightCaves.class and b/CompiledServer/production/2006rebotted/redone/game/content/minigames/FightCaves.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/minigames/trawler/Trawler.class b/CompiledServer/production/2006rebotted/redone/game/content/minigames/trawler/Trawler.class index 9de746e5..fbf3918c 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/minigames/trawler/Trawler.class and b/CompiledServer/production/2006rebotted/redone/game/content/minigames/trawler/Trawler.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/minigames/trawler/WaitingRoom.class b/CompiledServer/production/2006rebotted/redone/game/content/minigames/trawler/WaitingRoom.class index f0076df3..a8a0cec3 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/minigames/trawler/WaitingRoom.class and b/CompiledServer/production/2006rebotted/redone/game/content/minigames/trawler/WaitingRoom.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/random/Holidays.class b/CompiledServer/production/2006rebotted/redone/game/content/random/Holidays.class index d1e48b88..1e053ab0 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/random/Holidays.class and b/CompiledServer/production/2006rebotted/redone/game/content/random/Holidays.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/Agility.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/Agility.class index a67a69c0..6797a464 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/Agility.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/Agility.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/ApeAtollAgility.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/ApeAtollAgility.class index 614ae450..60d49fa3 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/ApeAtollAgility.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/ApeAtollAgility.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/BarbarianAgility.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/BarbarianAgility.class index f64ed52c..9e14b449 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/BarbarianAgility.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/BarbarianAgility.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/PyramidAgility.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/PyramidAgility.class index 89c8a24a..b8babc4d 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/PyramidAgility.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/PyramidAgility.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/WerewolfAgility.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/WerewolfAgility.class index 8928ec93..bdd877cb 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/WerewolfAgility.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/WerewolfAgility.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/WildernessAgility.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/WildernessAgility.class index e8a75358..e0844924 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/WildernessAgility.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/agility/WildernessAgility.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/cooking/Cooking.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/cooking/Cooking.class index b0cb1d1d..c18a5290 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/cooking/Cooking.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/cooking/Cooking.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/cooking/CookingTutorialIsland.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/cooking/CookingTutorialIsland.class index 8b884152..b44adfcb 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/cooking/CookingTutorialIsland.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/cooking/CookingTutorialIsland.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Fishing.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Fishing.class index a4d7124f..87f2aa84 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Fishing.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Fishing.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Mining$rockData.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Mining$rockData.class index 39f4b166..663dec3b 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Mining$rockData.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Mining$rockData.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Mining.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Mining.class index abf875c4..08d74fb5 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Mining.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Mining.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Prayer.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Prayer.class index c91f5ccc..2ab95f7f 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Prayer.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Prayer.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Woodcutting$2.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Woodcutting$2.class index 834ce6db..33425150 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Woodcutting$2.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Woodcutting$2.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Woodcutting.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Woodcutting.class index 89d7e9b2..271fbbf0 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Woodcutting.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/core/Woodcutting.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/GemCutting.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/GemCutting.class index 8b9947bb..44f95336 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/GemCutting.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/GemCutting.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/GlassBlowing.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/GlassBlowing.class index 44734692..15db20ad 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/GlassBlowing.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/GlassBlowing.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/LeatherMaking.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/LeatherMaking.class index be2a505f..ff699298 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/LeatherMaking.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/LeatherMaking.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/Pottery.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/Pottery.class index 64f60f8c..3ce0ab8a 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/Pottery.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/Pottery.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/SoftClay.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/SoftClay.class index 376d6aa1..77bcd3e8 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/SoftClay.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/SoftClay.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/Spinning.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/Spinning.class index 6baed624..9aca8c82 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/Spinning.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/crafting/Spinning.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/firemaking/Firemaking$1.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/firemaking/Firemaking$1.class index 7d36e8a6..d2f48037 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/firemaking/Firemaking$1.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/firemaking/Firemaking$1.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/firemaking/Firemaking.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/firemaking/Firemaking.class index 73ade57c..603b64b7 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/firemaking/Firemaking.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/firemaking/Firemaking.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/fletching/ArrowMaking.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/fletching/ArrowMaking.class index d8d971b4..a5ae8643 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/fletching/ArrowMaking.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/fletching/ArrowMaking.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/fletching/LogCutting.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/fletching/LogCutting.class index e95a2de8..fdb6bec4 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/fletching/LogCutting.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/fletching/LogCutting.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/fletching/Stringing.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/fletching/Stringing.class index 400b82a4..4fae10e8 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/fletching/Stringing.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/fletching/Stringing.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/herblore/Herblore.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/herblore/Herblore.class index df5933d2..4bc0d55c 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/herblore/Herblore.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/herblore/Herblore.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/smithing/SilverCrafting.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/smithing/SilverCrafting.class index c12ae8af..d7b928de 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/smithing/SilverCrafting.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/smithing/SilverCrafting.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/smithing/Smelting.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/smithing/Smelting.class index 5c89a336..474bed0a 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/smithing/Smelting.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/smithing/Smelting.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/thieving/Pickpocket.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/thieving/Pickpocket.class index 69334247..8db4e094 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/thieving/Pickpocket.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/thieving/Pickpocket.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/thieving/Stalls.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/thieving/Stalls.class index b9f551b3..e8ae6460 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/thieving/Stalls.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/thieving/Stalls.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/skills/thieving/ThieveOther.class b/CompiledServer/production/2006rebotted/redone/game/content/skills/thieving/ThieveOther.class index ac71a4cf..620facd5 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/skills/thieving/ThieveOther.class and b/CompiledServer/production/2006rebotted/redone/game/content/skills/thieving/ThieveOther.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/traveling/Desert.class b/CompiledServer/production/2006rebotted/redone/game/content/traveling/Desert.class index 28096b3d..c159e092 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/traveling/Desert.class and b/CompiledServer/production/2006rebotted/redone/game/content/traveling/Desert.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/traveling/GnomeGlider.class b/CompiledServer/production/2006rebotted/redone/game/content/traveling/GnomeGlider.class index 044e88c9..215db6a9 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/traveling/GnomeGlider.class and b/CompiledServer/production/2006rebotted/redone/game/content/traveling/GnomeGlider.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/traveling/Sailing.class b/CompiledServer/production/2006rebotted/redone/game/content/traveling/Sailing.class index 5ff1576b..1133b2fb 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/traveling/Sailing.class and b/CompiledServer/production/2006rebotted/redone/game/content/traveling/Sailing.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/PassDoor.class b/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/PassDoor.class index 1ae8d42b..a29e9f2b 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/PassDoor.class and b/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/PassDoor.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/items/impl/Flowers.class b/CompiledServer/production/2006rebotted/redone/game/items/impl/Flowers.class index 5f153bcd..0595eab6 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/items/impl/Flowers.class and b/CompiledServer/production/2006rebotted/redone/game/items/impl/Flowers.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/npcs/Npc.class b/CompiledServer/production/2006rebotted/redone/game/npcs/Npc.class index 657db026..8215f6ec 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/npcs/Npc.class and b/CompiledServer/production/2006rebotted/redone/game/npcs/Npc.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/npcs/NpcActions.class b/CompiledServer/production/2006rebotted/redone/game/npcs/NpcActions.class index aa5bc346..3c993f95 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/npcs/NpcActions.class and b/CompiledServer/production/2006rebotted/redone/game/npcs/NpcActions.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/npcs/impl/MilkCow.class b/CompiledServer/production/2006rebotted/redone/game/npcs/impl/MilkCow.class index 3f9d742b..9269fa00 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/npcs/impl/MilkCow.class and b/CompiledServer/production/2006rebotted/redone/game/npcs/impl/MilkCow.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/objects/Objects.class b/CompiledServer/production/2006rebotted/redone/game/objects/Objects.class index 59505a23..40bd20f8 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/objects/Objects.class and b/CompiledServer/production/2006rebotted/redone/game/objects/Objects.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/objects/ObjectsActions.class b/CompiledServer/production/2006rebotted/redone/game/objects/ObjectsActions.class index 442e59ef..09de52ce 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/objects/ObjectsActions.class and b/CompiledServer/production/2006rebotted/redone/game/objects/ObjectsActions.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/objects/impl/Climbing.class b/CompiledServer/production/2006rebotted/redone/game/objects/impl/Climbing.class index 30940177..9a2a34f4 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/objects/impl/Climbing.class and b/CompiledServer/production/2006rebotted/redone/game/objects/impl/Climbing.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/objects/impl/CrystalChest.class b/CompiledServer/production/2006rebotted/redone/game/objects/impl/CrystalChest.class index bfafe5d7..b1581647 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/objects/impl/CrystalChest.class and b/CompiledServer/production/2006rebotted/redone/game/objects/impl/CrystalChest.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/objects/impl/FlourMill.class b/CompiledServer/production/2006rebotted/redone/game/objects/impl/FlourMill.class index 42e842d1..2eab9533 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/objects/impl/FlourMill.class and b/CompiledServer/production/2006rebotted/redone/game/objects/impl/FlourMill.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/objects/impl/Levers.class b/CompiledServer/production/2006rebotted/redone/game/objects/impl/Levers.class index 37615e3c..9dce3149 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/objects/impl/Levers.class and b/CompiledServer/production/2006rebotted/redone/game/objects/impl/Levers.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/objects/impl/OtherObjects$2.class b/CompiledServer/production/2006rebotted/redone/game/objects/impl/OtherObjects$2.class index aa884187..6f687884 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/objects/impl/OtherObjects$2.class and b/CompiledServer/production/2006rebotted/redone/game/objects/impl/OtherObjects$2.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/objects/impl/OtherObjects$3.class b/CompiledServer/production/2006rebotted/redone/game/objects/impl/OtherObjects$3.class index 089caaa2..43c19d98 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/objects/impl/OtherObjects$3.class and b/CompiledServer/production/2006rebotted/redone/game/objects/impl/OtherObjects$3.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/objects/impl/OtherObjects.class b/CompiledServer/production/2006rebotted/redone/game/objects/impl/OtherObjects.class index fcd10002..db6752a0 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/objects/impl/OtherObjects.class and b/CompiledServer/production/2006rebotted/redone/game/objects/impl/OtherObjects.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/objects/impl/Pickable.class b/CompiledServer/production/2006rebotted/redone/game/objects/impl/Pickable.class index af4948f1..03afe41b 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/objects/impl/Pickable.class and b/CompiledServer/production/2006rebotted/redone/game/objects/impl/Pickable.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Client$1.class b/CompiledServer/production/2006rebotted/redone/game/players/Client$1.class index 605b4b20..cbfbcb1b 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Client$1.class and b/CompiledServer/production/2006rebotted/redone/game/players/Client$1.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Client$2.class b/CompiledServer/production/2006rebotted/redone/game/players/Client$2.class index 570e2214..6b1a986d 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Client$2.class and b/CompiledServer/production/2006rebotted/redone/game/players/Client$2.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Client$3.class b/CompiledServer/production/2006rebotted/redone/game/players/Client$3.class index 302b03f7..a618331f 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Client$3.class and b/CompiledServer/production/2006rebotted/redone/game/players/Client$3.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Client$4.class b/CompiledServer/production/2006rebotted/redone/game/players/Client$4.class index f9227ff7..674bf967 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Client$4.class and b/CompiledServer/production/2006rebotted/redone/game/players/Client$4.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Client$TinterfaceText.class b/CompiledServer/production/2006rebotted/redone/game/players/Client$TinterfaceText.class index 8b58739b..5b6d718c 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Client$TinterfaceText.class and b/CompiledServer/production/2006rebotted/redone/game/players/Client$TinterfaceText.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Client.class b/CompiledServer/production/2006rebotted/redone/game/players/Client.class index 67879d5e..358a130f 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Client.class and b/CompiledServer/production/2006rebotted/redone/game/players/Client.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Player.class b/CompiledServer/production/2006rebotted/redone/game/players/Player.class index 5f0f60e4..6b07df3c 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Player.class and b/CompiledServer/production/2006rebotted/redone/game/players/Player.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant$1.class b/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant$1.class index 8bfa2767..9b311e7b 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant$1.class and b/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant$1.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant.class b/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant.class index 2e8f9583..e331587d 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant.class and b/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Trading.class b/CompiledServer/production/2006rebotted/redone/game/players/Trading.class index 4bd16d58..bf52be8f 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Trading.class and b/CompiledServer/production/2006rebotted/redone/game/players/Trading.class differ diff --git a/CompiledServer/production/2006rebotted/redone/integrations/PlayersOnlineWebsite.class b/CompiledServer/production/2006rebotted/redone/integrations/PlayersOnlineWebsite.class index 9e4c458e..ce6d1bb4 100644 Binary files a/CompiledServer/production/2006rebotted/redone/integrations/PlayersOnlineWebsite.class and b/CompiledServer/production/2006rebotted/redone/integrations/PlayersOnlineWebsite.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/AttackPlayer.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/AttackPlayer.class index ef55539c..10d3af79 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/AttackPlayer.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/AttackPlayer.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/Bank10.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/Bank10.class index ceefc102..71bc42f4 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/Bank10.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/Bank10.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/Bank5.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/Bank5.class index fd972cea..1b89d395 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/Bank5.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/Bank5.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/BankAll.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/BankAll.class index 614676c3..1516b618 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/BankAll.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/BankAll.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/BankX1.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/BankX1.class index 985b2e83..2caed26c 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/BankX1.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/BankX1.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/BankX2.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/BankX2.class index 8cc8c3ec..17c1b968 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/BankX2.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/BankX2.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ChangeAppearance.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ChangeAppearance.class index f7d5b2c5..2941f422 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ChangeAppearance.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ChangeAppearance.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickItem.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickItem.class index 5163db04..19d4bcc5 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickItem.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickItem.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC$1.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC$1.class index 6db480b4..29752af0 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC$1.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC$1.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC$2.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC$2.class index a3a83d41..1262b2f4 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC$2.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC$2.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC$3.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC$3.class index 13351a60..63ac83fc 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC$3.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC$3.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC.class index b6e42bd9..c1b19371 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickNPC.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$1.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$1.class index a9e92835..ae69f4e8 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$1.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$1.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$2.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$2.class index ad9b95d7..71c2a904 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$2.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$2.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$3.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$3.class index a59f9ad0..e2df5932 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$3.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$3.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$4.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$4.class index 2c5d488a..b207c3f2 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$4.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$4.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$5.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$5.class index 1c75b0ce..378d23fa 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$5.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$5.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$6.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$6.class index c5ca5638..d9b3e20b 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$6.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$6.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$7.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$7.class deleted file mode 100644 index abd82a7b..00000000 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$7.class and /dev/null differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$8.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$8.class deleted file mode 100644 index 0d9bca8c..00000000 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$8.class and /dev/null differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$9.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$9.class deleted file mode 100644 index 2caff666..00000000 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$9.class and /dev/null differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject.class index 2d8a51ef..b46f4e52 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/Commands$1.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/Commands$1.class index 964305cc..3949d210 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/Commands$1.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/Commands$1.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/Commands.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/Commands.class index 8c36bb62..b99bacb7 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/Commands.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/Commands.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/DropItem.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/DropItem.class index c71cafe9..92c37c32 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/DropItem.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/DropItem.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/FollowPlayer.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/FollowPlayer.class index b8a5b46d..40d677b7 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/FollowPlayer.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/FollowPlayer.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemClick2.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemClick2.class index 70f36e5c..bf9c022d 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemClick2.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemClick2.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemClick2OnGroundItem.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemClick2OnGroundItem.class index ff783103..ea8d9844 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemClick2OnGroundItem.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemClick2OnGroundItem.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemClick3.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemClick3.class index 1c4c1a9f..5c0cf71e 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemClick3.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemClick3.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnGroundItem.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnGroundItem.class index 18207bbc..8f81f88c 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnGroundItem.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnGroundItem.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnItem.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnItem.class index 81b087c2..3073b7e7 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnItem.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnItem.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnNpc.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnNpc.class index a943ca3f..e7addcd9 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnNpc.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnNpc.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnObject.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnObject.class index 8488e8c7..354b888f 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnObject.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnObject.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnPlayer.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnPlayer.class index 80218e1b..8ab4d734 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnPlayer.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ItemOnPlayer.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/MagicOnFloorItems$1.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/MagicOnFloorItems$1.class index 954e12d4..9178cc79 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/MagicOnFloorItems$1.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/MagicOnFloorItems$1.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/MagicOnFloorItems.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/MagicOnFloorItems.class index cb91f4c6..c193dce1 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/MagicOnFloorItems.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/MagicOnFloorItems.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/MagicOnItems.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/MagicOnItems.class index f74d19cd..42ffb209 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/MagicOnItems.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/MagicOnItems.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/MoveItems.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/MoveItems.class index 9ee860b3..221107cc 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/MoveItems.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/MoveItems.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/PickupItem$1.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/PickupItem$1.class index 01d7fb40..db95d442 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/PickupItem$1.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/PickupItem$1.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/PickupItem.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/PickupItem.class index 72e1a9d8..c8e4da13 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/PickupItem.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/PickupItem.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/RemoveItem.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/RemoveItem.class index 845c5c8b..5d11a51b 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/RemoveItem.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/RemoveItem.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/Trade.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/Trade.class index 1c231956..31f69c26 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/Trade.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/Trade.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/Walking.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/Walking.class index 844ee405..a8a9cb6d 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/Walking.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/Walking.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/WearItem.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/WearItem.class index db632e51..c320dfb7 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/WearItem.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/WearItem.class differ diff --git a/CompiledServer/production/2006rebotted/redone/world/GlobalDropsHandler.class b/CompiledServer/production/2006rebotted/redone/world/GlobalDropsHandler.class index c813c1c7..9fb27949 100644 Binary files a/CompiledServer/production/2006rebotted/redone/world/GlobalDropsHandler.class and b/CompiledServer/production/2006rebotted/redone/world/GlobalDropsHandler.class differ diff --git a/CompiledServer/production/2006rebotted/redone/world/ObjectManager.class b/CompiledServer/production/2006rebotted/redone/world/ObjectManager.class index 30af085a..c67cf5b2 100644 Binary files a/CompiledServer/production/2006rebotted/redone/world/ObjectManager.class and b/CompiledServer/production/2006rebotted/redone/world/ObjectManager.class differ diff --git a/CompiledServer/production/2006rebotted/redone/world/clip/Region.class b/CompiledServer/production/2006rebotted/redone/world/clip/Region.class index 6c390a17..d4f3c040 100644 Binary files a/CompiledServer/production/2006rebotted/redone/world/clip/Region.class and b/CompiledServer/production/2006rebotted/redone/world/clip/Region.class differ