Files
2006Scape/2006Scape Client/src/main/java/ObjectDef.java
T
Danial 8589277ece 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
2021-09-28 23:40:34 +01:00

502 lines
12 KiB
Java

// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
public final class ObjectDef {
public static ObjectDef forID(int i) {
for (int j = 0; j < 20; j++) {
if (cache[j].type == i) {
return cache[j];
}
}
cacheIndex = (cacheIndex + 1) % 20;
ObjectDef class46 = cache[cacheIndex];
stream.currentOffset = streamIndices[i];
class46.type = i;
class46.setDefaults();
class46.readValues(stream);
if (i == 6) {
class46.actions[1] = "Load";
class46.actions[2] = "Pick-up";
}
switch (i) {
}
return class46;
}
private void setDefaults() {
anIntArray773 = null;
anIntArray776 = null;
name = null;
description = null;
modifiedModelColors = null;
originalModelColors = null;
anInt744 = 1;
anInt761 = 1;
aBoolean767 = true;
aBoolean757 = true;
hasActions = false;
aBoolean762 = false;
aBoolean769 = false;
aBoolean764 = false;
anInt781 = -1;
anInt775 = 16;
aByte737 = 0;
aByte742 = 0;
actions = null;
anInt746 = -1;
anInt758 = -1;
aBoolean751 = false;
aBoolean779 = true;
anInt748 = 128;
anInt772 = 128;
anInt740 = 128;
anInt768 = 0;
anInt738 = 0;
anInt745 = 0;
anInt783 = 0;
aBoolean736 = false;
aBoolean766 = false;
anInt760 = -1;
anInt774 = -1;
anInt749 = -1;
childrenIDs = null;
}
public void method574(OnDemandFetcher class42_sub1) {
if (anIntArray773 == null) {
return;
}
for (int element : anIntArray773) {
class42_sub1.method560(element & 0xffff, 0);
}
}
public static void nullLoader() {
mruNodes1 = null;
mruNodes2 = null;
streamIndices = null;
cache = null;
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"));
totalObjects = stream.readUnsignedWord();
streamIndices = new int[totalObjects];
int i = 2;
for (int j = 0; j < totalObjects; j++) {
streamIndices[j] = i;
i += stream.readUnsignedWord();
}
cache = new ObjectDef[20];
for (int k = 0; k < 20; k++) {
cache[k] = new ObjectDef();
}
}
public boolean method577(int i) {
if (anIntArray776 == null) {
if (anIntArray773 == null) {
return true;
}
if (i != 10) {
return true;
}
boolean flag1 = true;
for (int element : anIntArray773) {
flag1 &= Model.method463(element & 0xffff);
}
return flag1;
}
for (int j = 0; j < anIntArray776.length; j++) {
if (anIntArray776[j] == i) {
return Model.method463(anIntArray773[j] & 0xffff);
}
}
return true;
}
public Model method578(int i, int j, int k, int l, int i1, int j1, int k1) {
Model model = method581(i, k1, j);
if (model == null) {
return null;
}
if (aBoolean762 || aBoolean769) {
model = new Model(aBoolean762, aBoolean769, model);
}
if (aBoolean762) {
int l1 = (k + l + i1 + j1) / 4;
for (int i2 = 0; i2 < model.anInt1626; i2++) {
int j2 = model.anIntArray1627[i2];
int k2 = model.anIntArray1629[i2];
int l2 = k + (l - k) * (j2 + 64) / 128;
int i3 = j1 + (i1 - j1) * (j2 + 64) / 128;
int j3 = l2 + (i3 - l2) * (k2 + 64) / 128;
model.anIntArray1628[i2] += j3 - l1;
}
model.method467();
}
return model;
}
public boolean method579() {
if (anIntArray773 == null) {
return true;
}
boolean flag1 = true;
for (int element : anIntArray773) {
flag1 &= Model.method463(element & 0xffff);
}
return flag1;
}
public ObjectDef method580() {
int i = -1;
if (anInt774 != -1) {
VarBit varBit = VarBit.cache[anInt774];
int j = varBit.anInt648;
int k = varBit.anInt649;
int l = varBit.anInt650;
int i1 = Game.anIntArray1232[l - k];
i = clientInstance.variousSettings[j] >> k & i1;
} else if (anInt749 != -1) {
i = clientInstance.variousSettings[anInt749];
}
if (i < 0 || i >= childrenIDs.length || childrenIDs[i] == -1) {
return null;
} else {
return forID(childrenIDs[i]);
}
}
private Model method581(int j, int k, int l) {
Model model = null;
long l1;
if (anIntArray776 == null) {
if (j != 10) {
return null;
}
l1 = (type << 6) + l + ((long) (k + 1) << 32);
Model model_1 = (Model) mruNodes2.insertFromCache(l1);
if (model_1 != null) {
return model_1;
}
if (anIntArray773 == null) {
return null;
}
boolean flag1 = aBoolean751 ^ l > 3;
int k1 = anIntArray773.length;
for (int i2 = 0; i2 < k1; i2++) {
int l2 = anIntArray773[i2];
if (flag1) {
l2 += 0x10000;
}
model = (Model) mruNodes1.insertFromCache(l2);
if (model == null) {
model = Model.method462(l2 & 0xffff);
if (model == null) {
return null;
}
if (flag1) {
model.method477();
}
mruNodes1.removeFromCache(model, l2);
}
if (k1 > 1) {
aModelArray741s[i2] = model;
}
}
if (k1 > 1) {
model = new Model(k1, aModelArray741s);
}
} else {
int i1 = -1;
for (int j1 = 0; j1 < anIntArray776.length; j1++) {
if (anIntArray776[j1] != j) {
continue;
}
i1 = j1;
break;
}
if (i1 == -1) {
return null;
}
l1 = (type << 6) + (i1 << 3) + l + ((long) (k + 1) << 32);
Model model_2 = (Model) mruNodes2.insertFromCache(l1);
if (model_2 != null) {
return model_2;
}
int j2 = anIntArray773[i1];
boolean flag3 = aBoolean751 ^ l > 3;
if (flag3) {
j2 += 0x10000;
}
model = (Model) mruNodes1.insertFromCache(j2);
if (model == null) {
model = Model.method462(j2 & 0xffff);
if (model == null) {
return null;
}
if (flag3) {
model.method477();
}
mruNodes1.removeFromCache(model, j2);
}
}
boolean flag;
flag = anInt748 != 128 || anInt772 != 128 || anInt740 != 128;
boolean flag2;
flag2 = anInt738 != 0 || anInt745 != 0 || anInt783 != 0;
Model model_3 = new Model(modifiedModelColors == null, Class36.method532(k), l == 0 && k == -1 && !flag && !flag2, model);
if (k != -1) {
model_3.method469();
model_3.method470(k);
model_3.anIntArrayArray1658 = null;
model_3.anIntArrayArray1657 = null;
}
while (l-- > 0) {
model_3.method473();
}
if (modifiedModelColors != null) {
for (int k2 = 0; k2 < modifiedModelColors.length; k2++) {
model_3.method476(modifiedModelColors[k2], originalModelColors[k2]);
}
}
if (flag) {
model_3.method478(anInt748, anInt740, anInt772);
}
if (flag2) {
model_3.method475(anInt738, anInt745, anInt783);
}
model_3.method479(64 + aByte737, 768 + aByte742 * 5, -50, -10, -50, !aBoolean769);
if (anInt760 == 1) {
model_3.anInt1654 = model_3.modelHeight;
}
mruNodes2.removeFromCache(model_3, l1);
return model_3;
}
private void readValues(Stream stream) {
int i = -1;
label0 : do {
int j;
do {
j = stream.readUnsignedByte();
if (j == 0) {
break label0;
}
if (j == 1) {
int k = stream.readUnsignedByte();
if (k > 0) {
if (anIntArray773 == null || lowMem) {
anIntArray776 = new int[k];
anIntArray773 = new int[k];
for (int k1 = 0; k1 < k; k1++) {
anIntArray773[k1] = stream.readUnsignedWord();
anIntArray776[k1] = stream.readUnsignedByte();
}
} else {
stream.currentOffset += k * 3;
}
}
} else if (j == 2) {
name = stream.readString();
} else if (j == 3) {
description = stream.readBytes();
} else if (j == 5) {
int l = stream.readUnsignedByte();
if (l > 0) {
if (anIntArray773 == null || lowMem) {
anIntArray776 = null;
anIntArray773 = new int[l];
for (int l1 = 0; l1 < l; l1++) {
anIntArray773[l1] = stream.readUnsignedWord();
}
} else {
stream.currentOffset += l * 2;
}
}
} else if (j == 14) {
anInt744 = stream.readUnsignedByte();
} else if (j == 15) {
anInt761 = stream.readUnsignedByte();
} else if (j == 17) {
aBoolean767 = false;
} else if (j == 18) {
aBoolean757 = false;
} else if (j == 19) {
i = stream.readUnsignedByte();
if (i == 1) {
hasActions = true;
}
} else if (j == 21) {
aBoolean762 = true;
} else if (j == 22) {
aBoolean769 = true;
} else if (j == 23) {
aBoolean764 = true;
} else if (j == 24) {
anInt781 = stream.readUnsignedWord();
if (anInt781 == 65535) {
anInt781 = -1;
}
} else if (j == 28) {
anInt775 = stream.readUnsignedByte();
} else if (j == 29) {
aByte737 = stream.readSignedByte();
} else if (j == 39) {
aByte742 = stream.readSignedByte();
} else if (j >= 30 && j < 39) {
if (actions == null) {
actions = new String[5];
}
actions[j - 30] = stream.readString();
if (actions[j - 30].equalsIgnoreCase("hidden")) {
actions[j - 30] = null;
}
} else if (j == 40) {
int i1 = stream.readUnsignedByte();
modifiedModelColors = new int[i1];
originalModelColors = new int[i1];
for (int i2 = 0; i2 < i1; i2++) {
modifiedModelColors[i2] = stream.readUnsignedWord();
originalModelColors[i2] = stream.readUnsignedWord();
}
} else if (j == 60) {
anInt746 = stream.readUnsignedWord();
} else if (j == 62) {
aBoolean751 = true;
} else if (j == 64) {
aBoolean779 = false;
} else if (j == 65) {
anInt748 = stream.readUnsignedWord();
} else if (j == 66) {
anInt772 = stream.readUnsignedWord();
} else if (j == 67) {
anInt740 = stream.readUnsignedWord();
} else if (j == 68) {
anInt758 = stream.readUnsignedWord();
} else if (j == 69) {
anInt768 = stream.readUnsignedByte();
} else if (j == 70) {
anInt738 = stream.readSignedWord();
} else if (j == 71) {
anInt745 = stream.readSignedWord();
} else if (j == 72) {
anInt783 = stream.readSignedWord();
} else if (j == 73) {
aBoolean736 = true;
} else if (j == 74) {
aBoolean766 = true;
} else {
if (j != 75) {
continue;
}
anInt760 = stream.readUnsignedByte();
}
continue label0;
} while (j != 77);
anInt774 = stream.readUnsignedWord();
if (anInt774 == 65535) {
anInt774 = -1;
}
anInt749 = stream.readUnsignedWord();
if (anInt749 == 65535) {
anInt749 = -1;
}
int j1 = stream.readUnsignedByte();
childrenIDs = new int[j1 + 1];
for (int j2 = 0; j2 <= j1; j2++) {
childrenIDs[j2] = stream.readUnsignedWord();
if (childrenIDs[j2] == 65535) {
childrenIDs[j2] = -1;
}
}
} while (true);
if (i == -1) {
hasActions = anIntArray773 != null && (anIntArray776 == null || anIntArray776[0] == 10);
if (actions != null) {
hasActions = true;
}
}
if (aBoolean766) {
aBoolean767 = false;
aBoolean757 = false;
}
if (anInt760 == -1) {
anInt760 = aBoolean767 ? 1 : 0;
}
}
private ObjectDef() {
type = -1;
}
public boolean aBoolean736;
private byte aByte737;
private int anInt738;
public String name;
private int anInt740;
private static final Model[] aModelArray741s = new Model[4];
private byte aByte742;
public int anInt744;
private int anInt745;
public int anInt746;
private int[] originalModelColors;
private int anInt748;
public int anInt749;
private boolean aBoolean751;
public static boolean lowMem;
private static Stream stream;
public int type;
private static int[] streamIndices;
public boolean aBoolean757;
public int anInt758;
public int childrenIDs[];
private int anInt760;
public int anInt761;
public boolean aBoolean762;
public boolean aBoolean764;
public static Game clientInstance;
private boolean aBoolean766;
public boolean aBoolean767;
public int anInt768;
private boolean aBoolean769;
private static int cacheIndex;
private int anInt772;
private int[] anIntArray773;
public int anInt774;
public int anInt775;
private int[] anIntArray776;
public byte description[];
public boolean hasActions;
public boolean aBoolean779;
public static MRUNodes mruNodes2 = new MRUNodes(30);
public int anInt781;
private static ObjectDef[] cache;
private int anInt783;
private int[] modifiedModelColors;
public static MRUNodes mruNodes1 = new MRUNodes(500);
public String actions[];
}