Files
2006Scape/2006Scape Client/src/main/java/EntityDef.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

337 lines
8.4 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 EntityDef {
public static EntityDef forID(int i) {
for (int j = 0; j < 20; j++) {
if (cache[j].type == i) {
return cache[j];
}
}
anInt56 = (anInt56 + 1) % 20;
EntityDef entityDef = cache[anInt56] = new EntityDef();
stream.currentOffset = streamIndices[i];
entityDef.type = i;
entityDef.readValues(stream);
switch(i) {
case 2258 :
entityDef.actions = new String[5];
entityDef.actions[0] = "Talk-to";
entityDef.actions[2] = "Trade";
entityDef.actions[3] = "Teleport";
break;
case 945:
entityDef.name = ClientSettings.SERVER_NAME + " Guide";
break;
}
return entityDef;
}
public Model method160() {
if (childrenIDs != null) {
EntityDef entityDef = method161();
if (entityDef == null) {
return null;
} else {
return entityDef.method160();
}
}
if (anIntArray73 == null) {
return null;
}
boolean flag1 = false;
for (int i = 0; i < anIntArray73.length; i++) {
if (!Model.method463(anIntArray73[i])) {
flag1 = true;
}
}
if (flag1) {
return null;
}
Model aclass30_sub2_sub4_sub6s[] = new Model[anIntArray73.length];
for (int j = 0; j < anIntArray73.length; j++) {
aclass30_sub2_sub4_sub6s[j] = Model.method462(anIntArray73[j]);
}
Model model;
if (aclass30_sub2_sub4_sub6s.length == 1) {
model = aclass30_sub2_sub4_sub6s[0];
} else {
model = new Model(aclass30_sub2_sub4_sub6s.length, aclass30_sub2_sub4_sub6s);
}
if (anIntArray76 != null) {
for (int k = 0; k < anIntArray76.length; k++) {
model.method476(anIntArray76[k], anIntArray70[k]);
}
}
return model;
}
public EntityDef method161() {
int j = -1;
if (anInt57 != -1) {
VarBit varBit = VarBit.cache[anInt57];
int k = varBit.anInt648;
int l = varBit.anInt649;
int i1 = varBit.anInt650;
int j1 = Game.anIntArray1232[i1 - l];
j = clientInstance.variousSettings[k] >> l & j1;
} else if (anInt59 != -1) {
j = clientInstance.variousSettings[anInt59];
}
if (j < 0 || j >= childrenIDs.length || childrenIDs[j] == -1) {
return null;
} else {
return forID(childrenIDs[j]);
}
}
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"));
totalNPCs = stream2.readUnsignedWord();
streamIndices = new int[totalNPCs];
int i = 2;
for (int j = 0; j < totalNPCs; j++) {
streamIndices[j] = i;
i += stream2.readUnsignedWord();
}
cache = new EntityDef[20];
for (int k = 0; k < 20; k++) {
cache[k] = new EntityDef();
}
}
public static void nullLoader() {
mruNodes = null;
streamIndices = null;
cache = null;
stream = null;
}
public Model method164(int j, int k, int ai[]) {
if (childrenIDs != null) {
EntityDef entityDef = method161();
if (entityDef == null) {
return null;
} else {
return entityDef.method164(j, k, ai);
}
}
Model model = (Model) mruNodes.insertFromCache(type);
if (model == null) {
boolean flag = false;
for (int i1 = 0; i1 < anIntArray94.length; i1++) {
if (!Model.method463(anIntArray94[i1])) {
flag = true;
}
}
if (flag) {
return null;
}
Model aclass30_sub2_sub4_sub6s[] = new Model[anIntArray94.length];
for (int j1 = 0; j1 < anIntArray94.length; j1++) {
aclass30_sub2_sub4_sub6s[j1] = Model.method462(anIntArray94[j1]);
}
if (aclass30_sub2_sub4_sub6s.length == 1) {
model = aclass30_sub2_sub4_sub6s[0];
} else {
model = new Model(aclass30_sub2_sub4_sub6s.length, aclass30_sub2_sub4_sub6s);
}
if (anIntArray76 != null) {
for (int k1 = 0; k1 < anIntArray76.length; k1++) {
model.method476(anIntArray76[k1], anIntArray70[k1]);
}
}
model.method469();
model.method479(64 + anInt85, 850 + anInt92, -30, -50, -30, true);
mruNodes.removeFromCache(model, type);
}
Model model_1 = Model.aModel_1621;
model_1.method464(model, Class36.method532(k) & Class36.method532(j));
if (k != -1 && j != -1) {
model_1.method471(ai, j, k);
} else if (k != -1) {
model_1.method470(k);
}
if (anInt91 != 128 || anInt86 != 128) {
model_1.method478(anInt91, anInt91, anInt86);
}
model_1.method466();
model_1.anIntArrayArray1658 = null;
model_1.anIntArrayArray1657 = null;
if (aByte68 == 1) {
model_1.aBoolean1659 = true;
}
return model_1;
}
private void readValues(Stream stream) {
do {
int i = stream.readUnsignedByte();
if (i == 0) {
return;
}
if (i == 1) {
int j = stream.readUnsignedByte();
anIntArray94 = new int[j];
for (int j1 = 0; j1 < j; j1++) {
anIntArray94[j1] = stream.readUnsignedWord();
}
} else if (i == 2) {
name = stream.readString();
} else if (i == 3) {
description = stream.readBytes();
} else if (i == 12) {
aByte68 = stream.readSignedByte();
} else if (i == 13) {
anInt77 = stream.readUnsignedWord();
} else if (i == 14) {
anInt67 = stream.readUnsignedWord();
} else if (i == 17) {
anInt67 = stream.readUnsignedWord();
anInt58 = stream.readUnsignedWord();
anInt83 = stream.readUnsignedWord();
anInt55 = stream.readUnsignedWord();
} else if (i >= 30 && i < 40) {
if (actions == null) {
actions = new String[5];
}
actions[i - 30] = stream.readString();
if (actions[i - 30].equalsIgnoreCase("hidden")) {
actions[i - 30] = null;
}
} else if (i == 40) {
int k = stream.readUnsignedByte();
anIntArray76 = new int[k];
anIntArray70 = new int[k];
for (int k1 = 0; k1 < k; k1++) {
anIntArray76[k1] = stream.readUnsignedWord();
anIntArray70[k1] = stream.readUnsignedWord();
}
} else if (i == 60) {
int l = stream.readUnsignedByte();
anIntArray73 = new int[l];
for (int l1 = 0; l1 < l; l1++) {
anIntArray73[l1] = stream.readUnsignedWord();
}
} else if (i == 90) {
stream.readUnsignedWord();
} else if (i == 91) {
stream.readUnsignedWord();
} else if (i == 92) {
stream.readUnsignedWord();
} else if (i == 93) {
aBoolean87 = false;
} else if (i == 95) {
combatLevel = stream.readUnsignedWord();
} else if (i == 97) {
anInt91 = stream.readUnsignedWord();
} else if (i == 98) {
anInt86 = stream.readUnsignedWord();
} else if (i == 99) {
aBoolean93 = true;
} else if (i == 100) {
anInt85 = stream.readSignedByte();
} else if (i == 101) {
anInt92 = stream.readSignedByte() * 5;
} else if (i == 102) {
anInt75 = stream.readUnsignedWord();
} else if (i == 103) {
anInt79 = stream.readUnsignedWord();
} else if (i == 106) {
anInt57 = stream.readUnsignedWord();
if (anInt57 == 65535) {
anInt57 = -1;
}
anInt59 = stream.readUnsignedWord();
if (anInt59 == 65535) {
anInt59 = -1;
}
int i1 = stream.readUnsignedByte();
childrenIDs = new int[i1 + 1];
for (int i2 = 0; i2 <= i1; i2++) {
childrenIDs[i2] = stream.readUnsignedWord();
if (childrenIDs[i2] == 65535) {
childrenIDs[i2] = -1;
}
}
} else if (i == 107) {
aBoolean84 = false;
}
} while (true);
}
private EntityDef() {
anInt55 = -1;
anInt57 = -1;
anInt58 = -1;
anInt59 = -1;
combatLevel = -1;
anInt67 = -1;
aByte68 = 1;
anInt75 = -1;
anInt77 = -1;
type = -1L;
anInt79 = 32;
anInt83 = -1;
aBoolean84 = true;
anInt86 = 128;
aBoolean87 = true;
anInt91 = 128;
aBoolean93 = false;
}
public int anInt55;
private static int anInt56;
private int anInt57;
public int anInt58;
private int anInt59;
private static Stream stream;
public int combatLevel;
public String name;
public String actions[];
public int anInt67;
public byte aByte68;
private int[] anIntArray70;
private static int[] streamIndices;
private int[] anIntArray73;
public int anInt75;
private int[] anIntArray76;
public int anInt77;
public long type;
public int anInt79;
private static EntityDef[] cache;
public static Game clientInstance;
public int anInt83;
public boolean aBoolean84;
private int anInt85;
private int anInt86;
public boolean aBoolean87;
public int childrenIDs[];
public byte description[];
private int anInt91;
private int anInt92;
public boolean aBoolean93;
private int[] anIntArray94;
public static MRUNodes mruNodes = new MRUNodes(30);
}