Implement Party Room, A bunch of client side changes, Other stuff (#503)

* Fixup Discord links

* Fix required level to chop Dramen tree

* More Discord link fixes

* Show bots as (store)

* Fixup port

move to port 8080 as used by file server

* Fixup report handler

* Some client changes

* minor changes

Show mod status

* Show item value on ground

* Mark stores and players differently on mini map

* Some tidy up

* default to world 1

* Update trade with text

* revert nodeID changes

* Update RS Guide name

* Remove some command aliases

* Log bots and players differently

* Fixup

* minor changes

* Fixup colors

* Update RSInterface.java

* Settings for controlling options

* Add memory command

* Update server skill magic numbers

* Update server skill magic numbers

* Update colors for ground item text

* Update .gitignore

* Update player health value more often

* Add in game item/NPC/object search

* Item amounts and value displayed

* Update examine text

* Start with volume off

* Fixup tab 7 still showing with other interfaces

* Fixup search

* Fixup entering numbers after letter in amounts

* minor fixup

* fix indentation

* change type of value

* Fixup values shown

* Fix when clicking while tab 7 open

* Fixup negative amounts

* Update some method names

* Fixup method name

* tidy up method values

* Initial move for overlays

* Update more method names, variables

* Update debug menu

* Update experience info area

* Update Signlink.java

* more refactoring/deob

* Tidy up

* refresh skills

* Update method name, debug display

* fixup

* Show wrench icon on custom settings tab

* alignment

* Modify zoom

* Use smaller numbers for exp/h

* Update interface command

* tidy up

* Fixup tele location

* Fixup if interface doesn't exist

* Add some interface options

* Update checks

* Open bank interface for item search

TODO:
change title
maybe not display in chat
change options for items?
change command to searchitem - open the bank interface, open a text input interface

* re-fix

* Show open interface ID

* Update bank string shown

* Update search function

* Scroll zooming

* Only fill chat with search if not searching for an item

* add comments

* Change system update message

* Remove fps command

* Increase draw distance

* fixup

* Draw distance option

* [Party Room] Fix party room stairs

* Add new free slots method to check for stackable items counting as a free slot

* [Party Room] Deposit/Withdraw items all working

* [Party Room] Fully working

* [Party Room] Don't spawn balloons on the table

Players cannot pickup the items

* Fixup boundary

* Drop items in random amounts up to 4 stacks

* Update swampy boat to work

* Minor fixup

* Update Game.java

* Move player name up slightly

* Update some naming

* Tidy up

* Add ectoplasm agility shortcuts

* Update ObjectsActions.java

* Ectofuntus stuff

* fixup

* Ectofuntus bone grinder get status

* auto worship

* Allow claiming ecto-tokens

* change variable

* fixup

* Make use of GameConstants.WORLD

* Randomize bot passwords

* Don't show player shops as online

* Update opening oysters

* Update GemCutting.java

* Dragontooth island transport

* Ectofuntus stuff

* More constants

* Bill teach travel to Mos Le'Harmless and back

Also able to explore the whole ship

* Use better looking buttons

* Update .gitignore
This commit is contained in:
Danial
2021-09-29 11:40:34 +13:00
committed by GitHub
parent d30e833dd8
commit 8589277ece
51 changed files with 1756 additions and 717 deletions
@@ -23,7 +23,7 @@ public class ClientSettings {
* on localhost (Assuming you're running Client and LocalGame respectively)
*
*/
public static String SERVER_IP = "127.0.0.1";
public static String SERVER_IP = "www.2006Scape.org";
/**
* The Npc Bits for the Server
*/
+71 -71
View File
@@ -50,29 +50,29 @@ public class DrawingArea extends NodeSub {
}
public static void method335(int i, int j, int k, int l, int i1, int k1) {
if (k1 < topX) {
k -= topX - k1;
k1 = topX;
public static void fillArea(int _color, int _y, int _width, int _height, int _opacity, int _x) {
if (_x < topX) {
_width -= topX - _x;
_x = topX;
}
if (j < topY) {
l -= topY - j;
j = topY;
if (_y < topY) {
_height -= topY - _y;
_y = topY;
}
if (k1 + k > bottomX) {
k = bottomX - k1;
if (_x + _width > bottomX) {
_width = bottomX - _x;
}
if (j + l > bottomY) {
l = bottomY - j;
if (_y + _height > bottomY) {
_height = bottomY - _y;
}
int l1 = 256 - i1;
int i2 = (i >> 16 & 0xff) * i1;
int j2 = (i >> 8 & 0xff) * i1;
int k2 = (i & 0xff) * i1;
int k3 = width - k;
int l3 = k1 + j * width;
for (int i4 = 0; i4 < l; i4++) {
for (int j4 = -k; j4 < 0; j4++) {
int l1 = 256 - _opacity;
int i2 = (_color >> 16 & 0xff) * _opacity;
int j2 = (_color >> 8 & 0xff) * _opacity;
int k2 = (_color & 0xff) * _opacity;
int k3 = width - _width;
int l3 = _x + _y * width;
for (int i4 = 0; i4 < _height; i4++) {
for (int j4 = -_width; j4 < 0; j4++) {
int l2 = (pixels[l3] >> 16 & 0xff) * l1;
int i3 = (pixels[l3] >> 8 & 0xff) * l1;
int j3 = (pixels[l3] & 0xff) * l1;
@@ -84,26 +84,26 @@ public class DrawingArea extends NodeSub {
}
}
public static void method336(int i, int j, int l, int i1, int k) {
if (k < topX) {
i1 -= topX - k;
k = topX;
public static void fillArea(int _height, int _y, int _color, int _width, int _x) {
if (_x < topX) {
_width -= topX - _x;
_x = topX;
}
if (j < topY) {
i -= topY - j;
j = topY;
if (_y < topY) {
_height -= topY - _y;
_y = topY;
}
if (k + i1 > bottomX) {
i1 = bottomX - k;
if (_x + _width > bottomX) {
_width = bottomX - _x;
}
if (j + i > bottomY) {
i = bottomY - j;
if (_y + _height > bottomY) {
_height = bottomY - _y;
}
int k1 = width - i1;
int l1 = k + j * width;
for (int i2 = -i; i2 < 0; i2++) {
for (int j2 = -i1; j2 < 0; j2++) {
pixels[l1++] = l;
int k1 = width - _width;
int l1 = _x + _y * width;
for (int i2 = -_height; i2 < 0; i2++) {
for (int j2 = -_width; j2 < 0; j2++) {
pixels[l1++] = _color;
}
l1 += k1;
@@ -111,23 +111,23 @@ public class DrawingArea extends NodeSub {
}
public static void fillPixels(int i1, int k, int l, int i, int j) {
method339(i1, l, j, i);
method339(i1 + k - 1, l, j, i);
method341(i1, l, k, i);
method341(i1, l, k, i + j - 1);
public static void fillPixels(int _y, int _height, int _color, int _x, int _width) {
drawHorizontalLine(_y, _color, _width, _x);
drawHorizontalLine(_y + _height - 1, _color, _width, _x);
drawVerticalLine(_y, _color, _height, _x);
drawVerticalLine(_y, _color, _height, _x + _width - 1);
}
public static void method338(int i, int j, int k, int l, int i1, int j1) {
method340(l, i1, i, k, j1);
method340(l, i1, i + j - 1, k, j1);
if (j >= 3) {
method342(l, j1, k, i + 1, j - 2);
method342(l, j1 + i1 - 1, k, i + 1, j - 2);
public static void drawFrameRounded(int _y, int _height, int _opacity, int _color, int _width, int _x) {
drawHorizontalLine(_color, _width, _y, _opacity, _x);
drawHorizontalLine(_color, _width, _y + _height - 1, _opacity, _x);
if (_height >= 3) {
drawVerticalLine(_color, _x, _opacity, _y + 1, _height - 2);
drawVerticalLine(_color, _x + _width - 1, _opacity, _y + 1, _height - 2);
}
}
public static void method339(int i, int j, int k, int l) {
public static void drawHorizontalLine(int i, int j, int k, int l) {
if (i < topY || i >= bottomY) {
return;
}
@@ -145,23 +145,23 @@ public class DrawingArea extends NodeSub {
}
private static void method340(int i, int j, int k, int l, int i1) {
if (k < topY || k >= bottomY) {
private static void drawHorizontalLine(int _color, int _width, int _y, int _opacity, int _x) {
if (_y < topY || _y >= bottomY) {
return;
}
if (i1 < topX) {
j -= topX - i1;
i1 = topX;
if (_x < topX) {
_width -= topX - _x;
_x = topX;
}
if (i1 + j > bottomX) {
j = bottomX - i1;
if (_x + _width > bottomX) {
_width = bottomX - _x;
}
int j1 = 256 - l;
int k1 = (i >> 16 & 0xff) * l;
int l1 = (i >> 8 & 0xff) * l;
int i2 = (i & 0xff) * l;
int i3 = i1 + k * width;
for (int j3 = 0; j3 < j; j3++) {
int j1 = 256 - _opacity;
int k1 = (_color >> 16 & 0xff) * _opacity;
int l1 = (_color >> 8 & 0xff) * _opacity;
int i2 = (_color & 0xff) * _opacity;
int i3 = _x + _y * width;
for (int j3 = 0; j3 < _width; j3++) {
int j2 = (pixels[i3] >> 16 & 0xff) * j1;
int k2 = (pixels[i3] >> 8 & 0xff) * j1;
int l2 = (pixels[i3] & 0xff) * j1;
@@ -171,25 +171,25 @@ public class DrawingArea extends NodeSub {
}
public static void method341(int i, int j, int k, int l) {
if (l < topX || l >= bottomX) {
public static void drawVerticalLine(int _y, int _color, int _height, int _x) {
if (_x < topX || _x >= bottomX) {
return;
}
if (i < topY) {
k -= topY - i;
i = topY;
if (_y < topY) {
_height -= topY - _y;
_y = topY;
}
if (i + k > bottomY) {
k = bottomY - i;
if (_y + _height > bottomY) {
_height = bottomY - _y;
}
int j1 = l + i * width;
for (int k1 = 0; k1 < k; k1++) {
pixels[j1 + k1 * width] = j;
int j1 = _x + _y * width;
for (int k1 = 0; k1 < _height; k1++) {
pixels[j1 + k1 * width] = _color;
}
}
private static void method342(int i, int j, int k, int l, int i1) {
private static void drawVerticalLine(int i, int j, int k, int l, int i1) {
if (j < topX || j >= bottomX) {
return;
}
@@ -25,7 +25,7 @@ public final class EntityDef {
break;
case 945:
entityDef.name = "2006Scape Guide";
entityDef.name = ClientSettings.SERVER_NAME + " Guide";
break;
}
return entityDef;
@@ -92,10 +92,12 @@ public final class EntityDef {
}
}
public static int totalNPCs;
public static void unpackConfig(StreamLoader streamLoader) {
stream = new Stream(streamLoader.getDataForName("npc.dat"));
Stream stream2 = new Stream(streamLoader.getDataForName("npc.idx"));
int totalNPCs = stream2.readUnsignedWord();
totalNPCs = stream2.readUnsignedWord();
streamIndices = new int[totalNPCs];
int i = 2;
for (int j = 0; j < totalNPCs; j++) {
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -7,7 +7,7 @@ final class Item extends Animable {
@Override
public final Model getRotatedModel() {
ItemDef itemDef = ItemDef.forID(ID);
return itemDef.method201(anInt1559);
return itemDef.method201(amount);
}
public Item() {
@@ -16,5 +16,5 @@ final class Item extends Animable {
public int ID;
public int x;
public int y;
public int anInt1559;
public int amount;
}
+3 -3
View File
@@ -2103,7 +2103,7 @@ public final class ItemDef {
int j3 = DrawingArea.bottomY;
Texture.aBoolean1464 = false;
DrawingArea.initDrawingArea(32, 32, sprite2.pixels);
DrawingArea.method336(32, 0, 0, 32, 0);
DrawingArea.fillArea(32, 0, 0, 32, 0);
Texture.method364();
int k3 = itemDef.modelZoom;
if (k == -1) {
@@ -2372,7 +2372,7 @@ public final class ItemDef {
private int[] originalModelColors;
public boolean membersObject;
private int anInt162;
private int certTemplateID;
public int certTemplateID;
private int anInt164;
private int anInt165;
private int anInt166;
@@ -2405,7 +2405,7 @@ public final class ItemDef {
private int anInt197;
public int modelRotation2;
private int anInt200;
private int[] stackAmounts;
public int[] stackAmounts;
public int team;
public static int totalItems;
private int anInt204;
+4 -1
View File
@@ -1335,7 +1335,10 @@ public final class Model extends Animable {
int k2 = k1 * j + j2 * k >> 16;
int l2 = anInt1650 * k >> 16;
int i3 = k2 + l2;
if (i3 <= 50 || k2 >= 3500) {
// Check distance of model to camera for rendering (default 3500)
int distance = WorldController.drawDistance * 256;
distance *= 1 + (Game.zoom / 10);
if (i3 <= 50 || k2 >= distance) {
return;
}
int j3 = l1 * l + j1 * i1 >> 16;
@@ -83,10 +83,12 @@ public final class ObjectDef {
stream = null;
}
public static int totalObjects;
public static void unpackConfig(StreamLoader streamLoader) {
stream = new Stream(streamLoader.getDataForName("loc.dat"));
Stream stream = new Stream(streamLoader.getDataForName("loc.idx"));
int totalObjects = stream.readUnsignedWord();
totalObjects = stream.readUnsignedWord();
streamIndices = new int[totalObjects];
int i = 2;
for (int j = 0; j < totalObjects; j++) {
+7 -1
View File
@@ -11,12 +11,14 @@ import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
@SuppressWarnings("serial")
public class RSApplet extends Applet implements Runnable, MouseListener, MouseMotionListener, KeyListener, FocusListener, WindowListener {
public class RSApplet extends Applet implements Runnable, MouseListener, MouseWheelListener, MouseMotionListener, KeyListener, FocusListener, WindowListener {
public static boolean ctrlDown = false;
public static boolean shiftDown = false;
@@ -45,6 +47,7 @@ public class RSApplet extends Applet implements Runnable, MouseListener, MouseMo
public void run() {
getGameComponent().addMouseListener(this);
getGameComponent().addMouseMotionListener(this);
getGameComponent().addMouseWheelListener(this);
getGameComponent().addKeyListener(this);
getGameComponent().addFocusListener(this);
if (gameFrame != null) {
@@ -296,6 +299,9 @@ public class RSApplet extends Applet implements Runnable, MouseListener, MouseMo
mouseY = j;
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {}
@Override
public void keyPressed(KeyEvent keyevent) {
idleTime = 0;
@@ -25,8 +25,6 @@ public final class RSInterface {
rsInterface.id = k;
rsInterface.parentID = i;
rsInterface.type = stream.readUnsignedByte();
//if(rsInterface.type == 0)
// System.out.println(rsInterface.parentID+":"+k);
rsInterface.atActionType = stream.readUnsignedByte();
rsInterface.anInt214 = stream.readUnsignedWord();
rsInterface.width = stream.readUnsignedWord();
+12 -12
View File
@@ -404,17 +404,17 @@ public final class Signlink implements Runnable {
public static boolean reporterror = true;
public static String errorname = "";
public static Midi midii = new Midi();
private static int savelen;
private static String saveReq = null;
private static byte savebuf[] = null;
public static boolean play;
private static int midiPos;
public static String midi = null;
public static int midiVolume;
public static int midifade;
private static boolean waveplay;
private static int wavepos;
public static String wave = null;
public static int wavevol;
private static int savelen;
private static String saveReq = null;
private static byte savebuf[] = null;
public static boolean play;
private static int midiPos;
public static String midi = null;
public static int midiVolume;
public static int midifade;
private static boolean waveplay;
private static int wavepos;
public static String wave = null;
public static int wavevol;
}
@@ -75,16 +75,20 @@ public final class TextDrawingArea extends DrawingArea {
}
}
public void method380(String s, int i, int j, int k) {
method385(j, s, k, i - method384(s));
public void textRight(int i, String s, int k, int l) {
textLeft(i, s, k, l - method384(s));
}
public void drawText(int i, String s, int k, int l) {
method385(i, s, k, l - method384(s) / 2);
public void textCenter(int i, String s, int k, int l) {
textLeft(i, s, k, l - method384(s) / 2);
}
public void method382(int i, int j, String s, int l, boolean flag) {
method389(flag, j - getTextWidth(s) / 2, i, s, l);
public void textCenterShadow(int _color, int _x, String s, int _y, boolean _shadow) {
textLeftShadow(_shadow, _x - getTextWidth(s) / 2, _color, s, _y);
}
public void textRightShadow(boolean _shadow, int _x, int _color, String s, int _y) {
textLeftShadow(_shadow, _x - getTextWidth(s), _color, s, _y);
}
public int getTextWidth(String s) {
@@ -114,7 +118,7 @@ public final class TextDrawingArea extends DrawingArea {
return j;
}
public void method385(int i, String s, int j, int l) {
public void textLeft(int i, String s, int j, int l) {
if (s == null) {
return;
}
@@ -180,37 +184,37 @@ public final class TextDrawingArea extends DrawingArea {
}
public void method389(boolean flag1, int i, int j, String s, int k) {
public void textLeftShadow(boolean _shadow, int _x, int _color, String s, int _y) {
aBoolean1499 = false;
int l = i;
int l = _x;
if (s == null) {
return;
}
k -= anInt1497;
_y -= anInt1497;
for (int i1 = 0; i1 < s.length(); i1++) {
if (s.charAt(i1) == '@' && i1 + 4 < s.length() && s.charAt(i1 + 4) == '@') {
int j1 = getColorByName(s.substring(i1 + 1, i1 + 4));
if (j1 != -1) {
j = j1;
_color = j1;
}
i1 += 4;
} else {
char c = s.charAt(i1);
if (c != ' ') {
if (flag1) {
method392(aByteArrayArray1491[c], i + anIntArray1494[c] + 1, k + anIntArray1495[c] + 1, anIntArray1492[c], anIntArray1493[c], 0);
if (_shadow) {
method392(aByteArrayArray1491[c], _x + anIntArray1494[c] + 1, _y + anIntArray1495[c] + 1, anIntArray1492[c], anIntArray1493[c], 0);
}
try {
method392(aByteArrayArray1491[c], i + anIntArray1494[c], k + anIntArray1495[c], anIntArray1492[c], anIntArray1493[c], j);
method392(aByteArrayArray1491[c], _x + anIntArray1494[c], _y + anIntArray1495[c], anIntArray1492[c], anIntArray1493[c], _color);
} catch (Exception e) {
}
}
i += anIntArray1496[c];
_x += anIntArray1496[c];
}
}
if (aBoolean1499) {
DrawingArea.method339(k + (int) (anInt1497 * 0.69999999999999996D), 0x800000, i - l, l);
DrawingArea.drawHorizontalLine(_y + (int) (anInt1497 * 0.69999999999999996D), 0x800000, _x - l, l);
}
}
@@ -3,6 +3,7 @@
// Decompiler options: packimports(3)
final class WorldController {
public static int drawDistance = 25;
public WorldController(int ai[][][]) {
int i = 104;// was parameter
@@ -794,7 +795,7 @@ final class WorldController {
anInt498 = l;
anInt493 = k / 2;
anInt494 = l / 2;
boolean aflag[][][][] = new boolean[9][32][53][53];
boolean aflag[][][][] = new boolean[9][32][256][256];
for (int i1 = 128; i1 <= 384; i1 += 32) {
for (int j1 = 0; j1 < 2048; j1 += 64) {
anInt458 = Model.modelIntArray1[i1];
@@ -803,8 +804,8 @@ final class WorldController {
anInt461 = Model.modelIntArray2[j1];
int l1 = (i1 - 128) / 32;
int j2 = j1 / 64;
for (int l2 = -26; l2 <= 26; l2++) {
for (int j3 = -26; j3 <= 26; j3++) {
for (int l2 = -(drawDistance + 1); l2 <= (drawDistance + 1); l2++) {
for (int j3 = -(drawDistance + 1); j3 <= (drawDistance + 1); j3++) {
int k3 = l2 * 128;
int i4 = j3 * 128;
boolean flag2 = false;
@@ -816,7 +817,7 @@ final class WorldController {
break;
}
aflag[l1][j2][l2 + 25 + 1][j3 + 25 + 1] = flag2;
aflag[l1][j2][l2 + drawDistance + 1][j3 + drawDistance + 1] = flag2;
}
}
@@ -827,19 +828,19 @@ final class WorldController {
for (int k1 = 0; k1 < 8; k1++) {
for (int i2 = 0; i2 < 32; i2++) {
for (int k2 = -25; k2 < 25; k2++) {
for (int i3 = -25; i3 < 25; i3++) {
for (int k2 = -drawDistance; k2 < drawDistance; k2++) {
for (int i3 = -drawDistance; i3 < drawDistance; i3++) {
boolean flag1 = false;
label0 : for (int l3 = -1; l3 <= 1; l3++) {
for (int j4 = -1; j4 <= 1; j4++) {
if (aflag[k1][i2][k2 + l3 + 25 + 1][i3 + j4 + 25 + 1]) {
if (aflag[k1][i2][k2 + l3 + drawDistance + 1][i3 + j4 + drawDistance + 1]) {
flag1 = true;
} else if (aflag[k1][(i2 + 1) % 31][k2 + l3 + 25 + 1][i3 + j4 + 25 + 1]) {
} else if (aflag[k1][(i2 + 1) % 31][k2 + l3 + drawDistance + 1][i3 + j4 + drawDistance + 1]) {
flag1 = true;
} else if (aflag[k1 + 1][i2][k2 + l3 + 25 + 1][i3 + j4 + 25 + 1]) {
} else if (aflag[k1 + 1][i2][k2 + l3 + drawDistance + 1][i3 + j4 + drawDistance + 1]) {
flag1 = true;
} else {
if (!aflag[k1 + 1][(i2 + 1) % 31][k2 + l3 + 25 + 1][i3 + j4 + 25 + 1]) {
if (!aflag[k1 + 1][(i2 + 1) % 31][k2 + l3 + drawDistance + 1][i3 + j4 + drawDistance + 1]) {
continue;
}
flag1 = true;
@@ -849,7 +850,7 @@ final class WorldController {
}
aBooleanArrayArrayArrayArray491[k1][i2][k2 + 25][i3 + 25] = flag1;
aBooleanArrayArrayArrayArray491[k1][i2][k2 + drawDistance][i3 + drawDistance] = flag1;
}
}
@@ -904,19 +905,19 @@ final class WorldController {
anInt453 = i / 128;
anInt454 = j / 128;
anInt447 = i1;
anInt449 = anInt453 - 25;
anInt449 = anInt453 - drawDistance;
if (anInt449 < 0) {
anInt449 = 0;
}
anInt451 = anInt454 - 25;
anInt451 = anInt454 - drawDistance;
if (anInt451 < 0) {
anInt451 = 0;
}
anInt450 = anInt453 + 25;
anInt450 = anInt453 + drawDistance;
if (anInt450 > anInt438) {
anInt450 = anInt438;
}
anInt452 = anInt454 + 25;
anInt452 = anInt454 + drawDistance;
if (anInt452 > anInt439) {
anInt452 = anInt439;
}
@@ -928,7 +929,7 @@ final class WorldController {
for (int k2 = anInt451; k2 < anInt452; k2++) {
Ground class30_sub3 = aclass30_sub3[i2][k2];
if (class30_sub3 != null) {
if (class30_sub3.anInt1321 > i1 || !aBooleanArrayArray492[i2 - anInt453 + 25][k2 - anInt454 + 25] && anIntArrayArrayArray440[k1][i2][k2] - l < 2000) {
if (class30_sub3.anInt1321 > i1 || !aBooleanArrayArray492[i2 - anInt453 + drawDistance][k2 - anInt454 + drawDistance] && anIntArrayArrayArray440[k1][i2][k2] - l < 50) {
class30_sub3.aBoolean1322 = false;
class30_sub3.aBoolean1323 = false;
class30_sub3.anInt1325 = 0;
@@ -947,11 +948,11 @@ final class WorldController {
for (int l1 = anInt442; l1 < anInt437; l1++) {
Ground aclass30_sub3_1[][] = groundArray[l1];
for (int l2 = -25; l2 <= 0; l2++) {
for (int l2 = -drawDistance; l2 <= 0; l2++) {
int i3 = anInt453 + l2;
int k3 = anInt453 - l2;
if (i3 >= anInt449 || k3 < anInt450) {
for (int i4 = -25; i4 <= 0; i4++) {
for (int i4 = -drawDistance; i4 <= 0; i4++) {
int k4 = anInt454 + i4;
int i5 = anInt454 - i4;
if (i3 >= anInt449) {
@@ -995,11 +996,11 @@ final class WorldController {
for (int j2 = anInt442; j2 < anInt437; j2++) {
Ground aclass30_sub3_2[][] = groundArray[j2];
for (int j3 = -25; j3 <= 0; j3++) {
for (int j3 = -drawDistance; j3 <= 0; j3++) {
int l3 = anInt453 + j3;
int j4 = anInt453 - j3;
if (l3 >= anInt449 || j4 < anInt450) {
for (int l4 = -25; l4 <= 0; l4++) {
for (int l4 = -drawDistance; l4 <= 0; l4++) {
int j5 = anInt454 + l4;
int k5 = anInt454 - l4;
if (l3 >= anInt449) {
@@ -1691,15 +1692,15 @@ final class WorldController {
for (int k = 0; k < j; k++) {
Class47 class47 = aclass47[k];
if (class47.anInt791 == 1) {
int l = class47.anInt787 - anInt453 + 25;
int l = class47.anInt787 - anInt453 + drawDistance;
if (l < 0 || l > 50) {
continue;
}
int k1 = class47.anInt789 - anInt454 + 25;
int k1 = class47.anInt789 - anInt454 + drawDistance;
if (k1 < 0) {
k1 = 0;
}
int j2 = class47.anInt790 - anInt454 + 25;
int j2 = class47.anInt790 - anInt454 + drawDistance;
if (j2 > 50) {
j2 = 50;
}
@@ -1731,15 +1732,15 @@ final class WorldController {
continue;
}
if (class47.anInt791 == 2) {
int i1 = class47.anInt789 - anInt454 + 25;
int i1 = class47.anInt789 - anInt454 + drawDistance;
if (i1 < 0 || i1 > 50) {
continue;
}
int l1 = class47.anInt787 - anInt453 + 25;
int l1 = class47.anInt787 - anInt453 + drawDistance;
if (l1 < 0) {
l1 = 0;
}
int k2 = class47.anInt788 - anInt453 + 25;
int k2 = class47.anInt788 - anInt453 + drawDistance;
if (k2 > 50) {
k2 = 50;
}
@@ -1771,20 +1772,20 @@ final class WorldController {
} else if (class47.anInt791 == 4) {
int j1 = class47.anInt796 - anInt456;
if (j1 > 128) {
int i2 = class47.anInt789 - anInt454 + 25;
int i2 = class47.anInt789 - anInt454 + drawDistance;
if (i2 < 0) {
i2 = 0;
}
int l2 = class47.anInt790 - anInt454 + 25;
int l2 = class47.anInt790 - anInt454 + drawDistance;
if (l2 > 50) {
l2 = 50;
}
if (i2 <= l2) {
int i3 = class47.anInt787 - anInt453 + 25;
int i3 = class47.anInt787 - anInt453 + drawDistance;
if (i3 < 0) {
i3 = 0;
}
int l3 = class47.anInt788 - anInt453 + 25;
int l3 = class47.anInt788 - anInt453 + drawDistance;
if (l3 > 50) {
l3 = 50;
}
@@ -2103,7 +2104,7 @@ final class WorldController {
private int anInt488;
private final int[][] anIntArrayArray489 = {new int[16], {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1}, {1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1}, {0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1}, {1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1}};
private final int[][] anIntArrayArray490 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, {12, 8, 4, 0, 13, 9, 5, 1, 14, 10, 6, 2, 15, 11, 7, 3}, {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, {3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12}};
private static boolean[][][][] aBooleanArrayArrayArrayArray491 = new boolean[8][32][51][51];
private static boolean[][][][] aBooleanArrayArrayArrayArray491 = new boolean[8][32][256][256];
private static boolean[][] aBooleanArrayArray492;
private static int anInt493;
private static int anInt494;