// 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); }