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