package rt4; import org.openrs2.deob.annotation.OriginalArg; import org.openrs2.deob.annotation.OriginalMember; import org.openrs2.deob.annotation.Pc; import java.io.IOException; import java.nio.charset.StandardCharsets; public class Protocol { @OriginalMember(owner = "client!eg", name = "e", descriptor = "Lclient!i;") public static final Packet inboundBuffer = new Packet(65536); @OriginalMember(owner = "client!wb", name = "f", descriptor = "Lclient!wa;") public static final Buffer chatBuffer = new Buffer(new byte[5000]); @OriginalMember(owner = "client!ag", name = "P", descriptor = "Lclient!i;") public static final Packet outboundBuffer = new Packet(5000); @OriginalMember(owner = "client!eb", name = "p", descriptor = "[I") public static final int[] removedIds = new int[1000]; @OriginalMember(owner = "client!dh", name = "d", descriptor = "[I") public static final int[] extendedIds = new int[2048]; @OriginalMember(owner = "client!ta", name = "z", descriptor = "[I") public static final int[] PACKET_LENGTHS = new int[] { -1, 0, 8, 0, 2, 0, 0, 0, 0, 12, 0, 1, 0, 3, 7, 0, 15, 6, 0, 0, 4, 7, -2, -1, 2, 0, 2, 8, 0, 0, 0, 0, -2, 5, 0, 0, 8, 3, 6, 0, 0, 0, -1, 0, -1, 0, 0, 6, -2, 0, 12, 0, 0, 0, -1, -2, 10, 0, 0, 0, 3, 0, -1, 0, 0, 5, 6, 0, 0, 8, -1, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 6, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 5, 0, 0, -2, 0, 0, 0, 0, 0, 12, 2, 0, -2, -2, 20, 0, 0, 10, 0, 15, 0, -1, 0, 8, -2, 0, 0, 0, 8, 0, 12, 0, 0, 7, 0, 0, 0, 0, 0, -1, -1, 0, 4, 5, 0, 0, 0, 6, 0, 0, 0, 0, 8, 9, 0, 0, 0, 2, -1, 0, -2, 0, 4, 14, 0, 0, 0, 24, 0, -2, 5, 0, 0, 0, 10, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 1, 0, 0, 2, -1, 1, 0, 0, 0, 0, 14, 0, 0, 0, 0, 10, 5, 0, 0, 0, 0, 0, -2, 0, 0, 9, 0, 0, 8, 0, 0, 0, 0, -2, 6, 0, 0, 0, -2, 0, 3, 0, 1, 7, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 3, 0, 0 }; @OriginalMember(owner = "client!tl", name = "f", descriptor = "Lclient!na;") public static final JagString ASSIST = JagString.parse(":assist:"); @OriginalMember(owner = "client!pl", name = "f", descriptor = "Lclient!na;") public static final JagString TRADEREQ = JagString.parse(":tradereq:"); @OriginalMember(owner = "client!lb", name = "s", descriptor = "Lclient!na;") public static final JagString CLAN = JagString.parse(":clan:"); @OriginalMember(owner = "client!ij", name = "a", descriptor = "Lclient!na;") public static final JagString DUELFRIEND = JagString.parse(":duelfriend:"); @OriginalMember(owner = "client!jk", name = "B", descriptor = "Lclient!ma;") public static BufferedSocket socket; @OriginalMember(owner = "client!fl", name = "C", descriptor = "Lsignlink!im;") public static PrivilegedRequest socketRequest; @OriginalMember(owner = "client!pe", name = "a", descriptor = "I") public static int verifyId = 0; @OriginalMember(owner = "client!na", name = "l", descriptor = "I") public static int opcode = 0; @OriginalMember(owner = "client!sc", name = "o", descriptor = "I") public static int length = 0; @OriginalMember(owner = "client!jb", name = "m", descriptor = "I") public static int extendedCount = 0; @OriginalMember(owner = "client!tg", name = "h", descriptor = "I") public static int removedCount = 0; @OriginalMember(owner = "client!qi", name = "t", descriptor = "I") public static int anInt4762 = 0; @OriginalMember(owner = "client!ck", name = "eb", descriptor = "Z") public static boolean verifyIdChanged = false; @OriginalMember(owner = "client!dm", name = "q", descriptor = "I") public static int opcode4 = 0; @OriginalMember(owner = "client!af", name = "k", descriptor = "I") public static int opcode3 = 0; @OriginalMember(owner = "client!sj", name = "t", descriptor = "I") public static int opcode2 = 0; @OriginalMember(owner = "client!bj", name = "r", descriptor = "I") public static int anInt659 = 2; @OriginalMember(owner = "client!g", name = "b", descriptor = "(B)V") public static void readLocationPacket() { if (opcode == ServerProt.LOCATION_PACKET_195) { int local15 = inboundBuffer.g1neg(); int local19 = local15 & 0x3; int local23 = local15 >> 2; int local27 = Loc.LAYERS[local23]; int local31 = inboundBuffer.g1(); int local39 = (local31 >> 4 & 0x7) + SceneGraph.currentChunkX; int local45 = (local31 & 0x7) + SceneGraph.currentChunkZ; if (local39 >= 0 && local45 >= 0 && local39 < 104 && local45 < 104) { ChangeLocRequest.push(Player.level, local45, local19, local39, -1, -1, local27, local23, 0); } } else if (opcode == ServerProt.LOCATION_PACKET_33) { int local15 = inboundBuffer.ig2(); int local23 = inboundBuffer.g1(); int local27 = (local23 & 0x7) + SceneGraph.currentChunkZ; int local19 = (local23 >> 4 & 0x7) + SceneGraph.currentChunkX; int local31 = inboundBuffer.g2add(); if (local19 >= 0 && local27 >= 0 && local19 < 104 && local27 < 104) { @Pc(122) ObjStack local122 = new ObjStack(); local122.anInt5550 = local31; local122.type = local15; if (SceneGraph.objStacks[Player.level][local19][local27] == null) { SceneGraph.objStacks[Player.level][local19][local27] = new LinkedList(); } SceneGraph.objStacks[Player.level][local19][local27].addTail(new ObjStackNode(local122)); Static220.spawnGroundObject(local27, local19); } } else if (opcode == ServerProt.LOCATION_PACKET_121) { int local15 = inboundBuffer.g1(); int local23 = SceneGraph.currentChunkX * 2 + (local15 >> 4 & 0xF); int local19 = (local15 & 0xF) + SceneGraph.currentChunkZ * 2; int local27 = local23 + inboundBuffer.g1b(); int local31 = inboundBuffer.g1b() + local19; int local39 = inboundBuffer.g2b(); int local45 = inboundBuffer.g2(); int local218 = inboundBuffer.g1() * 4; int local224 = inboundBuffer.g1() * 4; int local228 = inboundBuffer.g2(); int local232 = inboundBuffer.g2(); int local236 = inboundBuffer.g1(); if (local236 == 255) { local236 = -1; } int local247 = inboundBuffer.g1(); if (local23 >= 0 && local19 >= 0 && local23 < 208 && local19 < 208 && local27 >= 0 && local31 >= 0 && local27 < 208 && local31 < 208 && local45 != 65535) { local31 *= 64; local27 = local27 * 64; local19 = local19 * 64; local23 = local23 * 64; ProjAnim local317 = new ProjAnim(local45, Player.level, local23, local19, SceneGraph.getTileHeight(Player.level, local23, local19) - local218, client.loop + local228, local232 + client.loop, local236, local247, local39, local224); local317.method3705(local31, client.loop + local228, -local224 + SceneGraph.getTileHeight(Player.level, local27, local31), local27); Static217.aClass69_116.addTail(new ProjAnimNode(local317)); } } else if (opcode == ServerProt.LOCATION_PACKET_17) { int local15 = inboundBuffer.g1(); int local23 = SceneGraph.currentChunkX + (local15 >> 4 & 0x7); int local19 = SceneGraph.currentChunkZ + (local15 & 0x7); int local27 = inboundBuffer.g2(); int local31 = inboundBuffer.g1(); int local39 = inboundBuffer.g2(); if (local23 >= 0 && local19 >= 0 && local23 < 104 && local19 < 104) { local23 = local23 * 128 + 64; local19 = local19 * 128 + 64; @Pc(427) SpotAnim local427 = new SpotAnim(local27, Player.level, local23, local19, SceneGraph.getTileHeight(Player.level, local23, local19) - local31, local39, client.loop); Static99.aClass69_64.addTail(new SpotAnimNode(local427)); } } else if (opcode == ServerProt.LOCATION_PACKET_179) { int local15 = inboundBuffer.g1add(); int local23 = local15 >> 2; int local19 = local15 & 0x3; int local27 = Loc.LAYERS[local23]; int local31 = inboundBuffer.g1(); int local39 = SceneGraph.currentChunkX + (local31 >> 4 & 0x7); int local45 = (local31 & 0x7) + SceneGraph.currentChunkZ; int local218 = inboundBuffer.g2add(); if (local39 >= 0 && local45 >= 0 && local39 < 104 && local45 < 104) { ChangeLocRequest.push(Player.level, local45, local19, local39, -1, local218, local27, local23, 0); } } else if (opcode == ServerProt.LOCATION_PACKET_20) { int local15 = inboundBuffer.g1sub(); int local23 = (local15 >> 4 & 0x7) + SceneGraph.currentChunkX; int local19 = SceneGraph.currentChunkZ + (local15 & 0x7); int local27 = inboundBuffer.g1sub(); int local31 = local27 >> 2; int local39 = local27 & 0x3; int local45 = Loc.LAYERS[local31]; int local218 = inboundBuffer.ig2(); if (local218 == 65535) { local218 = -1; } SceneGraph.method1881(Player.level, local39, local31, local19, local45, local23, local218); } else if (opcode == ServerProt.LOCATION_PACKET_202) { int local15 = inboundBuffer.g1(); int local23 = local15 >> 2; int local19 = local15 & 0x3; int local27 = inboundBuffer.g1(); int local31 = (local27 >> 4 & 0x7) + SceneGraph.currentChunkX; int local39 = (local27 & 0x7) + SceneGraph.currentChunkZ; @Pc(605) byte local605 = inboundBuffer.g1badd(); @Pc(609) byte local609 = inboundBuffer.g1badd(); @Pc(613) byte local613 = inboundBuffer.g1bsub(); int local228 = inboundBuffer.g2add(); int local232 = inboundBuffer.ig2(); @Pc(625) byte local625 = inboundBuffer.g1b(); int local247 = inboundBuffer.g2(); int local633 = inboundBuffer.ig2badd(); if (!GlRenderer.enabled) { SceneGraph.method2574(local625, local247, local633, local232, local39, local613, local19, local605, local31, local23, local609, local228); } } else if (opcode == ServerProt.LOCATION_PACKET_14) { int local15 = inboundBuffer.g1(); int local19 = SceneGraph.currentChunkZ + (local15 & 0x7); int local23 = (local15 >> 4 & 0x7) + SceneGraph.currentChunkX; int local27 = inboundBuffer.g2(); int local31 = inboundBuffer.g2(); int local39 = inboundBuffer.g2(); if (local23 >= 0 && local19 >= 0 && local23 < 104 && local19 < 104) { @Pc(710) LinkedList local710 = SceneGraph.objStacks[Player.level][local23][local19]; if (local710 != null) { for (@Pc(718) ObjStackNode local718 = (ObjStackNode) local710.head(); local718 != null; local718 = (ObjStackNode) local710.next()) { @Pc(723) ObjStack local723 = local718.value; if ((local27 & 0x7FFF) == local723.type && local31 == local723.anInt5550) { local723.anInt5550 = local39; break; } } Static220.spawnGroundObject(local19, local23); } } } else if (opcode == ServerProt.LOCATION_PACKET_135) { int local15 = inboundBuffer.ig2add(); int local23 = inboundBuffer.g1neg(); int local27 = SceneGraph.currentChunkZ + (local23 & 0x7); int local19 = (local23 >> 4 & 0x7) + SceneGraph.currentChunkX; int local31 = inboundBuffer.ig2(); int local39 = inboundBuffer.ig2(); if (local19 >= 0 && local27 >= 0 && local19 < 104 && local27 < 104 && PlayerList.selfId != local15) { @Pc(812) ObjStack local812 = new ObjStack(); local812.anInt5550 = local31; local812.type = local39; if (SceneGraph.objStacks[Player.level][local19][local27] == null) { SceneGraph.objStacks[Player.level][local19][local27] = new LinkedList(); } SceneGraph.objStacks[Player.level][local19][local27].addTail(new ObjStackNode(local812)); Static220.spawnGroundObject(local27, local19); } } else if (opcode == ServerProt.LOCATION_PACKET_16) { int local15 = inboundBuffer.g1(); int local23 = SceneGraph.currentChunkX + (local15 >> 4 & 0x7); int local19 = (local15 & 0x7) + SceneGraph.currentChunkZ; int local27 = local23 + inboundBuffer.g1b(); int local31 = inboundBuffer.g1b() + local19; int local39 = inboundBuffer.g2b(); int local45 = inboundBuffer.g2(); int local218 = inboundBuffer.g1() * 4; int local224 = inboundBuffer.g1() * 4; int local228 = inboundBuffer.g2(); int local232 = inboundBuffer.g2(); int local236 = inboundBuffer.g1(); int local247 = inboundBuffer.g1(); if (local236 == 255) { local236 = -1; } if (local23 >= 0 && local19 >= 0 && local23 < 104 && local19 < 104 && local27 >= 0 && local31 >= 0 && local27 < 104 && local31 < 104 && local45 != 65535) { local31 = local31 * 128 + 64; local19 = local19 * 128 + 64; local23 = local23 * 128 + 64; local27 = local27 * 128 + 64; ProjAnim local317 = new ProjAnim(local45, Player.level, local23, local19, SceneGraph.getTileHeight(Player.level, local23, local19) - local218, local228 + client.loop, local232 + client.loop, local236, local247, local39, local224); local317.method3705(local31, client.loop + local228, SceneGraph.getTileHeight(Player.level, local27, local31) - local224, local27); Static217.aClass69_116.addTail(new ProjAnimNode(local317)); } } else if (opcode == ServerProt.LOCATION_PACKET_104) { int local15 = inboundBuffer.g1(); int local19 = SceneGraph.currentChunkZ * 2 + (local15 & 0xF); int local23 = SceneGraph.currentChunkX * 2 + (local15 >> 4 & 0xF); int local27 = inboundBuffer.g1b() + local23; int local31 = inboundBuffer.g1b() + local19; int local39 = inboundBuffer.g2b(); int local45 = inboundBuffer.g2b(); int local218 = inboundBuffer.g2(); int local224 = inboundBuffer.g1b(); int local228 = inboundBuffer.g1() * 4; int local232 = inboundBuffer.g2(); int local236 = inboundBuffer.g2(); int local247 = inboundBuffer.g1(); int local633 = inboundBuffer.g1(); if (local247 == 255) { local247 = -1; } if (local23 >= 0 && local19 >= 0 && local23 < 208 && local19 < 208 && local27 >= 0 && local31 >= 0 && local27 < 208 && local31 < 208 && local218 != 65535) { local27 = local27 * 64; local23 *= 64; local31 *= 64; local19 *= 64; if (local39 != 0) { @Pc(1194) int local1194; @Pc(1198) PathingEntity local1198; @Pc(1184) int local1184; @Pc(1188) int local1188; if (local39 >= 0) { local1184 = local39 - 1; local1188 = local1184 & 0x7FF; local1194 = local1184 >> 11 & 0xF; local1198 = NpcList.npcs[local1188]; } else { local1184 = -local39 - 1; local1194 = local1184 >> 11 & 0xF; local1188 = local1184 & 0x7FF; if (PlayerList.selfId == local1188) { local1198 = PlayerList.self; } else { local1198 = PlayerList.players[local1188]; } } if (local1198 != null) { @Pc(1232) BasType local1232 = local1198.getBasType(); if (local1232.modelRotateTranslate != null && local1232.modelRotateTranslate[local1194] != null) { local1188 = local1232.modelRotateTranslate[local1194][0]; local224 -= local1232.modelRotateTranslate[local1194][1]; @Pc(1264) int local1264 = local1232.modelRotateTranslate[local1194][2]; @Pc(1269) int local1269 = MathUtils.sin[local1198.anInt3381]; @Pc(1274) int local1274 = MathUtils.cos[local1198.anInt3381]; @Pc(1284) int local1284 = local1188 * local1274 + local1264 * local1269 >> 16; @Pc(1295) int local1295 = local1274 * local1264 - local1188 * local1269 >> 16; local19 += local1295; local23 += local1284; } } } @Pc(1331) ProjAnim local1331 = new ProjAnim(local218, Player.level, local23, local19, SceneGraph.getTileHeight(Player.level, local23, local19) - local224, local232 + client.loop, local236 + client.loop, local247, local633, local45, local228); local1331.method3705(local31, local232 + client.loop, -local228 + SceneGraph.getTileHeight(Player.level, local27, local31), local27); Static217.aClass69_116.addTail(new ProjAnimNode(local1331)); } } else if (opcode == ServerProt.LOCATION_PACKET_97) { int local15 = inboundBuffer.g1(); int local23 = SceneGraph.currentChunkX + (local15 >> 4 & 0x7); int local19 = SceneGraph.currentChunkZ + (local15 & 0x7); int local27 = inboundBuffer.g2(); if (local27 == 65535) { local27 = -1; } int local31 = inboundBuffer.g1(); int local39 = local31 >> 4 & 0xF; int local218 = inboundBuffer.g1(); int local45 = local31 & 0x7; if (local23 >= 0 && local19 >= 0 && local23 < 104 && local19 < 104) { int local224 = local39 + 1; if (PlayerList.self.movementQueueX[0] >= local23 - local224 && local224 + local23 >= PlayerList.self.movementQueueX[0] && PlayerList.self.movementQueueZ[0] >= local19 - local224 && PlayerList.self.movementQueueZ[0] <= local224 + local19 && Preferences.ambientSoundsVolume != 0 && local45 > 0 && SoundPlayer.anInt4451 < 50 && local27 != -1) { SoundPlayer.anIntArray421[SoundPlayer.anInt4451] = local27; SoundPlayer.anIntArray563[SoundPlayer.anInt4451] = local45; SoundPlayer.anIntArray362[SoundPlayer.anInt4451] = local218; SoundPlayer.aClass138Array1[SoundPlayer.anInt4451] = null; SoundPlayer.anIntArray68[SoundPlayer.anInt4451] = local39 + (local23 << 16) + (local19 << 8); SoundPlayer.anInt4451++; } } } else if (opcode == ServerProt.LOCATION_PACKET_240) { int local15 = inboundBuffer.g1sub(); int local19 = SceneGraph.currentChunkZ + (local15 & 0x7); int local23 = (local15 >> 4 & 0x7) + SceneGraph.currentChunkX; int local27 = inboundBuffer.g2(); if (local23 >= 0 && local19 >= 0 && local23 < 104 && local19 < 104) { @Pc(1565) LinkedList local1565 = SceneGraph.objStacks[Player.level][local23][local19]; if (local1565 != null) { for (@Pc(1572) ObjStackNode local1572 = (ObjStackNode) local1565.head(); local1572 != null; local1572 = (ObjStackNode) local1565.next()) { if (local1572.value.type == (local27 & 0x7FFF)) { local1572.unlink(); break; } } if (local1565.head() == null) { SceneGraph.objStacks[Player.level][local23][local19] = null; } Static220.spawnGroundObject(local19, local23); } } } } @OriginalMember(owner = "client!g", name = "a", descriptor = "(IZ)V") public static void readRebuildPacket(@OriginalArg(1) boolean arg0) { Static230.dynamicMapRegion = arg0; @Pc(13) int local13; @Pc(20) int local20; @Pc(26) int local26; @Pc(31) int local31; @Pc(60) int local60; @Pc(64) int local64; @Pc(138) int local138; @Pc(151) int local151; @Pc(169) int local169; if (!Static230.dynamicMapRegion) { local13 = inboundBuffer.g2add(); local20 = (length - inboundBuffer.offset) / 16; LoginManager.regionsXteaKeys = new int[local20][4]; for (local26 = 0; local26 < local20; local26++) { for (local31 = 0; local31 < 4; local31++) { LoginManager.regionsXteaKeys[local26][local31] = inboundBuffer.mg4(); } } local26 = inboundBuffer.g1sub(); local31 = inboundBuffer.g2(); local60 = inboundBuffer.g2add(); local64 = inboundBuffer.g2add(); LoginManager.regionBitPacked = new int[local20]; LoginManager.mapFilesBuffer = new byte[local20][]; LoginManager.npcSpawnsFilesBuffer = null; LoginManager.underWaterMapFileIds = new int[local20]; LoginManager.locationMapFilesBuffer = new byte[local20][]; LoginManager.underWaterLocationsMapFilesBuffer = new byte[local20][]; LoginManager.npcSpawnsFileIds = null; LoginManager.mapFileIds = new int[local20]; LoginManager.underWaterMapFilesBuffer = new byte[local20][]; LoginManager.locationsMapFileIds = new int[local20]; LoginManager.underWaterLocationsMapFileIds = new int[local20]; local20 = 0; @Pc(100) boolean local100 = (local31 / 8 == 48 || local31 / 8 == 49) && local60 / 8 == 48; if (local31 / 8 == 48 && local60 / 8 == 148) { local100 = true; } for (local138 = (local31 - 6) / 8; local138 <= (local31 + 6) / 8; local138++) { for (local151 = (local60 - 6) / 8; local151 <= (local60 + 6) / 8; local151++) { local169 = (local138 << 8) + local151; if (local100 && (local151 == 49 || local151 == 149 || local151 == 147 || local138 == 50 || local138 == 49 && local151 == 47)) { LoginManager.regionBitPacked[local20] = local169; LoginManager.mapFileIds[local20] = -1; LoginManager.locationsMapFileIds[local20] = -1; LoginManager.underWaterMapFileIds[local20] = -1; LoginManager.underWaterLocationsMapFileIds[local20] = -1; } else { LoginManager.regionBitPacked[local20] = local169; LoginManager.mapFileIds[local20] = client.js5Archive5.getGroupId(JagString.concatenate(new JagString[] { LoginManager.aClass100_558, JagString.parseInt(local138), LoginManager.UNDERSCORE, JagString.parseInt(local151) })); LoginManager.locationsMapFileIds[local20] = client.js5Archive5.getGroupId(JagString.concatenate(new JagString[] { LoginManager.aClass100_1090, JagString.parseInt(local138), LoginManager.UNDERSCORE, JagString.parseInt(local151) })); LoginManager.underWaterMapFileIds[local20] = client.js5Archive5.getGroupId(JagString.concatenate(new JagString[] { LoginManager.aClass100_772, JagString.parseInt(local138), LoginManager.UNDERSCORE, JagString.parseInt(local151) })); LoginManager.underWaterLocationsMapFileIds[local20] = client.js5Archive5.getGroupId(JagString.concatenate(new JagString[] { LoginManager.aClass100_1103, JagString.parseInt(local138), LoginManager.UNDERSCORE, JagString.parseInt(local151) })); } local20++; } } LoginManager.method2463(local26, local60, local31, local64, false, local13); return; } local13 = inboundBuffer.ig2add(); local20 = inboundBuffer.ig2add(); local26 = inboundBuffer.g1sub(); local31 = inboundBuffer.ig2add(); inboundBuffer.accessBits(); @Pc(391) int local391; for (local60 = 0; local60 < 4; local60++) { for (local64 = 0; local64 < 13; local64++) { for (local391 = 0; local391 < 13; local391++) { local138 = inboundBuffer.gBits(1); if (local138 == 1) { Static187.anIntArrayArrayArray18[local60][local64][local391] = inboundBuffer.gBits(26); } else { Static187.anIntArrayArrayArray18[local60][local64][local391] = -1; } } } } inboundBuffer.accessBytes(); local60 = (length - inboundBuffer.offset) / 16; LoginManager.regionsXteaKeys = new int[local60][4]; for (local64 = 0; local64 < local60; local64++) { for (local391 = 0; local391 < 4; local391++) { LoginManager.regionsXteaKeys[local64][local391] = inboundBuffer.mg4(); } } local64 = inboundBuffer.g2(); LoginManager.underWaterLocationsMapFileIds = new int[local60]; LoginManager.locationsMapFileIds = new int[local60]; LoginManager.mapFileIds = new int[local60]; LoginManager.underWaterLocationsMapFilesBuffer = new byte[local60][]; LoginManager.npcSpawnsFileIds = null; LoginManager.underWaterMapFileIds = new int[local60]; LoginManager.locationMapFilesBuffer = new byte[local60][]; LoginManager.mapFilesBuffer = new byte[local60][]; LoginManager.regionBitPacked = new int[local60]; LoginManager.npcSpawnsFilesBuffer = null; LoginManager.underWaterMapFilesBuffer = new byte[local60][]; local60 = 0; for (local391 = 0; local391 < 4; local391++) { for (local138 = 0; local138 < 13; local138++) { for (local151 = 0; local151 < 13; local151++) { local169 = Static187.anIntArrayArrayArray18[local391][local138][local151]; if (local169 != -1) { @Pc(555) int local555 = local169 >> 14 & 0x3FF; @Pc(561) int local561 = local169 >> 3 & 0x7FF; @Pc(571) int local571 = local561 / 8 + (local555 / 8 << 8); @Pc(573) int local573; for (local573 = 0; local573 < local60; local573++) { if (local571 == LoginManager.regionBitPacked[local573]) { local571 = -1; break; } } if (local571 != -1) { LoginManager.regionBitPacked[local60] = local571; @Pc(609) int local609 = local571 & 0xFF; local573 = local571 >> 8 & 0xFF; LoginManager.mapFileIds[local60] = client.js5Archive5.getGroupId(JagString.concatenate(new JagString[] { LoginManager.aClass100_558, JagString.parseInt(local573), LoginManager.UNDERSCORE, JagString.parseInt(local609) })); LoginManager.locationsMapFileIds[local60] = client.js5Archive5.getGroupId(JagString.concatenate(new JagString[] { LoginManager.aClass100_1090, JagString.parseInt(local573), LoginManager.UNDERSCORE, JagString.parseInt(local609) })); LoginManager.underWaterMapFileIds[local60] = client.js5Archive5.getGroupId(JagString.concatenate(new JagString[] { LoginManager.aClass100_772, JagString.parseInt(local573), LoginManager.UNDERSCORE, JagString.parseInt(local609) })); LoginManager.underWaterLocationsMapFileIds[local60] = client.js5Archive5.getGroupId(JagString.concatenate(new JagString[] { LoginManager.aClass100_1103, JagString.parseInt(local573), LoginManager.UNDERSCORE, JagString.parseInt(local609) })); local60++; } } } } } LoginManager.method2463(local26, local64, local20, local31, false, local13); } @OriginalMember(owner = "client!gk", name = "a", descriptor = "(IIBLclient!e;)V") public static void readExtendedPlayerInfo(@OriginalArg(0) int flags, @OriginalArg(1) int id, @OriginalArg(3) Player player) { @Pc(13) int int1; @Pc(17) int int2; @Pc(24) int local24; if ((flags & 0x80) != 0) { int1 = inboundBuffer.ig2(); int2 = inboundBuffer.g1(); @Pc(21) int local21 = inboundBuffer.g1(); local24 = inboundBuffer.offset; @Pc(35) boolean local35 = (int1 & 0x8000) != 0; if (player.username != null && player.appearance != null) { @Pc(48) long local48 = player.username.encode37(); @Pc(50) boolean ignore = false; if (int2 <= 1) { if (!local35 && (LoginManager.playerUnderage && !LoginManager.parentalChatConsent || LoginManager.mapQuickChat)) { ignore = true; } else { for (@Pc(69) int local69 = 0; local69 < IgnoreList.size; local69++) { if (IgnoreList.encodedUsernames[local69] == local48) { ignore = true; break; } } } } if (!ignore && Player.inTutorialIsland == 0) { chatBuffer.offset = 0; inboundBuffer.igdata(local21, chatBuffer.data); chatBuffer.offset = 0; @Pc(106) int local106 = -1; @Pc(127) JagString message; if (local35) { @Pc(112) QuickChatPhrase phrase = Static264.method3568(chatBuffer); int1 &= 0x7FFF; local106 = phrase.id; message = phrase.type.decodeMessage(chatBuffer); } else { message = Font.escape(Static65.formatChatMessage(chatBuffer).encodeMessage()); } player.chatMessage = message.trim(); player.chatEffect = int1 & 0xFF; player.chatLoops = 150; player.chatColor = int1 >> 8; if (int2 == 2) { Chat.add(local106, local35 ? 17 : 1, message, null, JagString.concatenate(new JagString[] { Static44.IMG1, player.getName() })); } else if (int2 == 1) { Chat.add(local106, local35 ? 17 : 1, message, null, JagString.concatenate(new JagString[] { Static65.IMG0, player.getName() })); } else { Chat.add(local106, local35 ? 17 : 2, message, null, player.getName()); } } } inboundBuffer.offset = local24 + local21; } if ((flags & 0x1) != 0) { int1 = inboundBuffer.gsmarts(); int2 = inboundBuffer.g1add(); player.addHit(int2, client.loop, int1); player.hitpointsBarVisibleUntil = client.loop + 300; player.hitpointsBar = inboundBuffer.g1sub(); } if ((flags & 0x8) != 0) { int1 = inboundBuffer.g2(); if (int1 == 65535) { int1 = -1; } int2 = inboundBuffer.g1(); Player.animate(int2, int1, player); } if ((flags & 0x4) != 0) { int1 = inboundBuffer.g1add(); @Pc(309) byte[] bytes = new byte[int1]; @Pc(314) Buffer buffer = new Buffer(bytes); inboundBuffer.gdata(int1, bytes); PlayerList.appearanceCache[id] = buffer; player.decodeAppearance(buffer); } if ((flags & 0x2) != 0) { player.faceEntity = inboundBuffer.g2add(); if (player.faceEntity == 65535) { player.faceEntity = -1; } } if ((flags & 0x400) != 0) { player.anInt3380 = inboundBuffer.g1neg(); player.anInt3428 = inboundBuffer.g1(); player.anInt3416 = inboundBuffer.g1add(); player.anInt3392 = inboundBuffer.g1(); player.anInt3395 = inboundBuffer.ig2() + client.loop; player.anInt3386 = inboundBuffer.ig2() + client.loop; player.anInt3431 = inboundBuffer.g1neg(); player.movementQueueSize = 1; player.anInt3405 = 0; } if ((flags & 0x20) != 0) { player.chatMessage = inboundBuffer.gjstr(); if (player.chatMessage.charAt(0) == 126) { player.chatMessage = player.chatMessage.substring(1); Chat.add(player.getName(), 2, player.chatMessage); } else if (player == PlayerList.self) { Chat.add(player.getName(), 2, player.chatMessage); } player.chatEffect = 0; player.chatColor = 0; player.chatLoops = 150; } if ((flags & 0x200) != 0) { int1 = inboundBuffer.gsmarts(); int2 = inboundBuffer.g1sub(); player.addHit(int2, client.loop, int1); } if ((flags & 0x800) != 0) { int1 = inboundBuffer.g1neg(); @Pc(502) int[] seqIds = new int[int1]; @Pc(505) int[] delays = new int[int1]; @Pc(508) int[] slotMasks = new int[int1]; for (@Pc(510) int i = 0; i < int1; i++) { @Pc(521) int seqId = inboundBuffer.ig2(); if (seqId == 65535) { seqId = -1; } seqIds[i] = seqId; delays[i] = inboundBuffer.g1add(); slotMasks[i] = inboundBuffer.g2(); } Player.method865(delays, seqIds, player, slotMasks); } if ((flags & 0x100) != 0) { int1 = inboundBuffer.ig2(); if (int1 == 65535) { int1 = -1; } int2 = inboundBuffer.mg4(); @Pc(573) boolean local573 = int1 == -1 || player.spotAnimId == -1 || SeqTypeList.get(SpotAnimTypeList.get(int1).seqId).forcedPriority >= SeqTypeList.get(SpotAnimTypeList.get(player.spotAnimId).seqId).forcedPriority; if (local573) { player.spotAnimStart = (int2 & 0xFFFF) + client.loop; player.anInt3361 = 0; player.anInt3399 = 0; player.spotAnimId = int1; if (player.spotAnimStart > client.loop) { player.anInt3399 = -1; } player.spotAnimY = int2 >> 16; player.anInt3418 = 1; if (player.spotAnimId != -1 && client.loop == player.spotAnimStart) { local24 = SpotAnimTypeList.get(player.spotAnimId).seqId; if (local24 != -1) { @Pc(663) SeqType local663 = SeqTypeList.get(local24); if (local663 != null && local663.frames != null) { SoundPlayer.playSeqSound(player.zFine, local663, player.xFine, player == PlayerList.self, 0); } } } } } if ((flags & 0x40) != 0) { player.faceX = inboundBuffer.g2(); player.faceY = inboundBuffer.ig2add(); } } @OriginalMember(owner = "client!fb", name = "b", descriptor = "(B)V") public static void readPlayerInfoPacket() { extendedCount = 0; removedCount = 0; readSelfPlayerInfo(); readPlayerInfo(); readNewPlayerInfo(); readExtendedPlayerInfo(); @Pc(23) int i; for (i = 0; i < removedCount; i++) { @Pc(30) int local30 = removedIds[i]; if (client.loop != PlayerList.players[local30].lastSeenLoop) { if (PlayerList.players[local30].soundRadius > 0) { AreaSoundManager.remove(PlayerList.players[local30]); } PlayerList.players[local30] = null; } } if (length != inboundBuffer.offset) { throw new RuntimeException("gpp1 pos:" + inboundBuffer.offset + " psize:" + length); } for (i = 0; i < PlayerList.size; i++) { if (PlayerList.players[PlayerList.ids[i]] == null) { throw new RuntimeException("gpp2 pos:" + i + " size:" + PlayerList.size); } } } @OriginalMember(owner = "client!bg", name = "a", descriptor = "(B)V") public static void readSelfPlayerInfo() { inboundBuffer.accessBits(); @Pc(11) int upated = inboundBuffer.gBits(1); if (upated == 0) { return; } @Pc(23) int type = inboundBuffer.gBits(2); if (type == 0) { extendedIds[extendedCount++] = 2047; return; } @Pc(54) int local54; @Pc(64) int local64; if (type == 1) { local54 = inboundBuffer.gBits(3); PlayerList.self.move(1, local54); local64 = inboundBuffer.gBits(1); if (local64 == 1) { extendedIds[extendedCount++] = 2047; } } else if (type == 2) { if (inboundBuffer.gBits(1) == 1) { local54 = inboundBuffer.gBits(3); PlayerList.self.move(2, local54); local64 = inboundBuffer.gBits(3); PlayerList.self.move(2, local64); } else { local54 = inboundBuffer.gBits(3); PlayerList.self.move(0, local54); } local54 = inboundBuffer.gBits(1); if (local54 == 1) { extendedIds[extendedCount++] = 2047; } } else if (type == 3) { local54 = inboundBuffer.gBits(7); local64 = inboundBuffer.gBits(1); Player.level = inboundBuffer.gBits(2); @Pc(163) int local163 = inboundBuffer.gBits(1); if (local163 == 1) { extendedIds[extendedCount++] = 2047; } @Pc(181) int x = inboundBuffer.gBits(7); PlayerList.self.teleport(x, local64 == 1, local54); } } @OriginalMember(owner = "client!dc", name = "b", descriptor = "(Z)V") public static void readPlayerInfo() { @Pc(6) int local6 = inboundBuffer.gBits(8); @Pc(20) int local20; if (PlayerList.size > local6) { for (local20 = local6; local20 < PlayerList.size; local20++) { removedIds[removedCount++] = PlayerList.ids[local20]; } } if (local6 > PlayerList.size) { throw new RuntimeException("gppov1"); } PlayerList.size = 0; for (local20 = 0; local20 < local6; local20++) { @Pc(75) int local75 = PlayerList.ids[local20]; @Pc(79) Player local79 = PlayerList.players[local75]; @Pc(84) int local84 = inboundBuffer.gBits(1); if (local84 == 0) { PlayerList.ids[PlayerList.size++] = local75; local79.lastSeenLoop = client.loop; } else { @Pc(107) int local107 = inboundBuffer.gBits(2); if (local107 == 0) { PlayerList.ids[PlayerList.size++] = local75; local79.lastSeenLoop = client.loop; extendedIds[extendedCount++] = local75; } else { @Pc(153) int local153; @Pc(163) int local163; if (local107 == 1) { PlayerList.ids[PlayerList.size++] = local75; local79.lastSeenLoop = client.loop; local153 = inboundBuffer.gBits(3); local79.move(1, local153); local163 = inboundBuffer.gBits(1); if (local163 == 1) { extendedIds[extendedCount++] = local75; } } else if (local107 == 2) { PlayerList.ids[PlayerList.size++] = local75; local79.lastSeenLoop = client.loop; if (inboundBuffer.gBits(1) == 1) { local153 = inboundBuffer.gBits(3); local79.move(2, local153); local163 = inboundBuffer.gBits(3); local79.move(2, local163); } else { local153 = inboundBuffer.gBits(3); local79.move(0, local153); } local153 = inboundBuffer.gBits(1); if (local153 == 1) { extendedIds[extendedCount++] = local75; } } else if (local107 == 3) { removedIds[removedCount++] = local75; } } } } } @OriginalMember(owner = "client!se", name = "a", descriptor = "(I)V") public static void readNewPlayerInfo() { while (true) { if (inboundBuffer.method2241(length) >= 11) { @Pc(20) int local20 = inboundBuffer.gBits(11); if (local20 != 2047) { @Pc(27) boolean local27 = false; if (PlayerList.players[local20] == null) { PlayerList.players[local20] = new Player(); local27 = true; if (PlayerList.appearanceCache[local20] != null) { PlayerList.players[local20].decodeAppearance(PlayerList.appearanceCache[local20]); } } PlayerList.ids[PlayerList.size++] = local20; @Pc(65) Player local65 = PlayerList.players[local20]; local65.lastSeenLoop = client.loop; @Pc(73) int local73 = inboundBuffer.gBits(1); if (local73 == 1) { extendedIds[extendedCount++] = local20; } @Pc(92) int local92 = inboundBuffer.gBits(5); @Pc(99) int local99 = PathingEntity.ANGLES[inboundBuffer.gBits(3)]; if (local92 > 15) { local92 -= 32; } if (local27) { local65.anInt3400 = local65.anInt3381 = local99; } @Pc(116) int local116 = inboundBuffer.gBits(1); @Pc(121) int local121 = inboundBuffer.gBits(5); if (local121 > 15) { local121 -= 32; } local65.teleport(local92 + PlayerList.self.movementQueueX[0], local116 == 1, PlayerList.self.movementQueueZ[0] + local121); continue; } } inboundBuffer.accessBytes(); return; } } @OriginalMember(owner = "client!tm", name = "a", descriptor = "(I)V") public static void readExtendedPlayerInfo() { for (@Pc(7) int i = 0; i < extendedCount; i++) { @Pc(31) int id = extendedIds[i]; @Pc(35) Player player = PlayerList.players[id]; @Pc(39) int flags = inboundBuffer.g1(); if ((flags & 0x10) != 0) { flags += inboundBuffer.g1() << 8; } readExtendedPlayerInfo(flags, id, player); } } @OriginalMember(owner = "client!ac", name = "a", descriptor = "(B)Z") public static boolean readPacketInternal() throws IOException { if (socket == null) { return false; } @Pc(14) int available = socket.available(); if (available == 0) { return false; } if (opcode == -1) { available--; socket.read(0, 1, inboundBuffer.data); inboundBuffer.offset = 0; opcode = inboundBuffer.g1isaac(); length = PACKET_LENGTHS[opcode]; } if (length == -1) { if (available <= 0) { return false; } socket.read(0, 1, inboundBuffer.data); available--; length = inboundBuffer.data[0] & 0xFF; } else if (length == -2) { if (available <= 1) { return false; } available -= 2; socket.read(0, 2, inboundBuffer.data); inboundBuffer.offset = 0; length = inboundBuffer.g2(); } if (length > available) { return false; } inboundBuffer.offset = 0; socket.read(0, length, inboundBuffer.data); opcode4 = opcode3; opcode3 = opcode2; opcode2 = opcode; Static201.anInt1862 = 0; if (opcode == ServerProt.VARP_SMALL) { int id = inboundBuffer.g2add(); @Pc(137) byte value = inboundBuffer.g1bneg(); VarpDomain.set(value, id); opcode = -1; return true; } else if (opcode == ServerProt.RUN_CS2) { int tracknum = inboundBuffer.g2(); JagString argTypes = inboundBuffer.gjstr(); @Pc(163) Object[] scriptArgs = new Object[argTypes.length() + 1]; for (int i = argTypes.length() - 1; i >= 0; i--) { if (argTypes.charAt(i) == 115) { scriptArgs[i + 1] = inboundBuffer.gjstr(); } else { scriptArgs[i + 1] = inboundBuffer.g4(); } } scriptArgs[0] = inboundBuffer.g4(); setVerifyId(tracknum); @Pc(226) HookRequest request = new HookRequest(); request.arguments = scriptArgs; ScriptRunner.run(request); opcode = -1; return true; } else if (opcode == ServerProt.MESSAGE_GAME) { @Pc(245) JagString message = inboundBuffer.gjstr(); if (message.endsWith(TRADEREQ)) { JagString name = message.substring(message.indexOf(Static264.COLON), 0); long name37 = name.encode37(); boolean ignored = false; for (int i = 0; i < IgnoreList.size; i++) { if (IgnoreList.encodedUsernames[i] == name37) { ignored = true; break; } } if (!ignored && Player.inTutorialIsland == 0) { Chat.add(name, 4, LocalizedText.TRADEREQ); } } else if (message.endsWith(Static61.CHALREQ)) { JagString name = message.substring(message.indexOf(Static264.COLON), 0); long name37 = name.encode37(); boolean ignored = false; for (int i = 0; i < IgnoreList.size; i++) { if (IgnoreList.encodedUsernames[i] == name37) { ignored = true; break; } } if (!ignored && Player.inTutorialIsland == 0) { JagString local506 = message.substring(message.length() - 9, message.indexOf(Static264.COLON) + 1); Chat.add(name, 8, local506); } } else if (message.endsWith(Static191.ASSISTREQ)) { JagString name = message.substring(message.indexOf(Static264.COLON), 0); long name37 = name.encode37(); boolean ignored = false; for (int i = 0; i < IgnoreList.size; i++) { if (name37 == IgnoreList.encodedUsernames[i]) { ignored = true; break; } } if (!ignored && Player.inTutorialIsland == 0) { Chat.add(name, 10, JagString.EMPTY); } } else if (message.endsWith(CLAN)) { JagString name = message.substring(message.indexOf(CLAN), 0); Chat.add(JagString.EMPTY, 11, name); } else if (message.endsWith(Static138.TRADE)) { JagString name = message.substring(message.indexOf(Static138.TRADE), 0); if (Player.inTutorialIsland == 0) { Chat.add(JagString.EMPTY, 12, name); } } else if (message.endsWith(ASSIST)) { JagString name = message.substring(message.indexOf(ASSIST), 0); if (Player.inTutorialIsland == 0) { Chat.add(JagString.EMPTY, 13, name); } } else if (message.endsWith(Static56.DUELSTAKE)) { JagString name = message.substring(message.indexOf(Static264.COLON), 0); long name37 = name.encode37(); boolean ignored = false; for (int i = 0; i < IgnoreList.size; i++) { if (name37 == IgnoreList.encodedUsernames[i]) { ignored = true; break; } } if (!ignored && Player.inTutorialIsland == 0) { Chat.add(name, 14, JagString.EMPTY); } } else if (message.endsWith(DUELFRIEND)) { JagString name = message.substring(message.indexOf(Static264.COLON), 0); long name37 = name.encode37(); boolean ignored = false; for (int local277 = 0; local277 < IgnoreList.size; local277++) { if (IgnoreList.encodedUsernames[local277] == name37) { ignored = true; break; } } if (!ignored && Player.inTutorialIsland == 0) { Chat.add(name, 15, JagString.EMPTY); } } else if (message.endsWith(Static217.aClass100_916)) { JagString name = message.substring(message.indexOf(Static264.COLON), 0); long name37 = name.encode37(); boolean ignored = false; for (int i = 0; i < IgnoreList.size; i++) { if (name37 == IgnoreList.encodedUsernames[i]) { ignored = true; break; } } if (!ignored && Player.inTutorialIsland == 0) { Chat.add(name, 16, JagString.EMPTY); } } else if (message.endsWith(Static164.aClass100_770)) { JagString name = message.substring(message.indexOf(Static264.COLON), 0); long name37 = name.encode37(); boolean ignored = false; for (int i = 0; i < IgnoreList.size; i++) { if (IgnoreList.encodedUsernames[i] == name37) { ignored = true; break; } } if (!ignored && Player.inTutorialIsland == 0) { JagString local506 = message.substring(message.length() - 9, message.indexOf(Static264.COLON) + 1); Chat.add(name, 21, local506); } } else { Chat.add(JagString.EMPTY, 0, message); } opcode = -1; return true; } else if (opcode == ServerProt.IF_SETTEXT3) { int id = inboundBuffer.ig2(); int tracknum = inboundBuffer.g2add(); JagString value = inboundBuffer.gjstr(); setVerifyId(tracknum); DelayedStateChange.method3498(value, id); opcode = -1; return true; } else if (opcode == ServerProt.BATCH_LOCATION_PACKET) { SceneGraph.currentChunkZ = inboundBuffer.g1add(); SceneGraph.currentChunkX = inboundBuffer.g1sub(); while (length > inboundBuffer.offset) { opcode = inboundBuffer.g1(); readLocationPacket(); } opcode = -1; return true; } else if (opcode == ServerProt.CLEAR_MINIMAP_FLAG) { opcode = -1; LoginManager.mapFlagX = 0; return true; } else if (opcode == ServerProt.IF_SETSCROLLPOS) { int id = inboundBuffer.mg4(); int pos = inboundBuffer.ig2(); int tracknum = inboundBuffer.g2(); setVerifyId(tracknum); DelayedStateChange.method3938(pos, id); opcode = -1; return true; } else if (opcode == ServerProt.CLAN_QUICK_CHAT) { long name37 = inboundBuffer.g8(); inboundBuffer.g1b(); long clan37 = inboundBuffer.g8(); int top = inboundBuffer.g2(); int bot = inboundBuffer.g3(); int rights = inboundBuffer.g1(); int quickchatId = inboundBuffer.g2(); @Pc(910) boolean ignored = false; @Pc(922) long messageId = ((long)top << 32) + bot; @Pc(924) int n = 0; check: while (true) { if (n < 100) { if (messageId != Chat.recentMessages[n]) { n++; continue; } ignored = true; break; } if (rights <= 1) { for (n = 0; n < IgnoreList.size; n++) { if (IgnoreList.encodedUsernames[n] == name37) { ignored = true; break check; } } } break; } if (!ignored && Player.inTutorialIsland == 0) { Chat.recentMessages[Chat.messageCounter] = messageId; Chat.messageCounter = (Chat.messageCounter + 1) % 100; @Pc(999) JagString message = QuickChatPhraseTypeList.get(quickchatId).decodeMessage(inboundBuffer); if (rights == 2 || rights == 3) { Chat.add(quickchatId, 20, message, Base37.decode37(clan37).toTitleCase(), JagString.concatenate(new JagString[] { Static44.IMG1, Base37.decode37(name37).toTitleCase() })); } else if (rights == 1) { Chat.add(quickchatId, 20, message, Base37.decode37(clan37).toTitleCase(), JagString.concatenate(new JagString[] { Static65.IMG0, Base37.decode37(name37).toTitleCase() })); } else { Chat.add(quickchatId, 20, message, Base37.decode37(clan37).toTitleCase(), Base37.decode37(name37).toTitleCase()); } } opcode = -1; return true; } else if (opcode == ServerProt.JOIN_CLAN_CHAT) { ClanChat.transmitAt = InterfaceList.transmitTimer; long owner37 = inboundBuffer.g8(); if (owner37 == 0L) { ClanChat.owner = null; opcode = -1; ClanChat.name = null; ClanChat.members = null; ClanChat.size = 0; return true; } long name37 = inboundBuffer.g8(); ClanChat.name = Base37.decode37(name37); ClanChat.owner = Base37.decode37(owner37); ClanChat.minKick = inboundBuffer.g1b(); int clanSize = inboundBuffer.g1(); if (clanSize == 255) { opcode = -1; return true; } ClanChat.size = clanSize; @Pc(1158) ClanMember[] members = new ClanMember[100]; for (int i = 0; i < ClanChat.size; i++) { members[i] = new ClanMember(); members[i].key = inboundBuffer.g8(); members[i].username = Base37.decode37(members[i].key); members[i].world = inboundBuffer.g2(); members[i].rank = inboundBuffer.g1b(); members[i].worldName = inboundBuffer.gjstr(); if (members[i].key == Player.name37) { ClanChat.rank = members[i].rank; } } int count = ClanChat.size; while (count > 0) { boolean local1245 = true; count--; for (int i = 0; i < count; i++) { if (members[i].username.method3139(members[i + 1].username) > 0) { local1245 = false; @Pc(1279) ClanMember member = members[i]; members[i] = members[i + 1]; members[i + 1] = member; } } if (local1245) { break; } } ClanChat.members = members; opcode = -1; return true; } else if (opcode == ServerProt.LAST_LOGIN_INFO) { int ip32 = inboundBuffer.img4(); Player.lastLogAddress = GameShell.signLink.getReverseDns(ip32); opcode = -1; return true; } else if (opcode == ServerProt.PLAYER_INFO) { readPlayerInfoPacket(); opcode = -1; return true; } else if (opcode == ServerProt.IF_SETTEXT2) { int tracknum = inboundBuffer.g2(); JagString text = inboundBuffer.gjstr(); int id = inboundBuffer.ig2add(); setVerifyId(tracknum); DelayedStateChange.method3498(text, id); opcode = -1; return true; } else if (opcode == ServerProt.CHAT_FILTER_SETTINGS) { Chat.publicFilter = inboundBuffer.g1(); Chat.privateFilter = inboundBuffer.g1(); Chat.tradeFilter = inboundBuffer.g1(); opcode = -1; return true; } else if (opcode == ServerProt.SET_INTERACTION) { int cursor = inboundBuffer.ig2add(); if (cursor == 65535) { cursor = -1; } int top = inboundBuffer.g1(); int optId = inboundBuffer.g1(); JagString option = inboundBuffer.gjstr(); if (optId >= 1 && optId <= 8) { if (option.equalsIgnoreCase(MiniMenu.NULL)) { option = null; } Player.options[optId - 1] = option; Player.cursors[optId - 1] = cursor; Player.secondaryOptions[optId - 1] = top == 0; } opcode = -1; return true; } else if (opcode == ServerProt.VARP_LARGE) { int value = inboundBuffer.g4(); int id = inboundBuffer.g2add(); VarpDomain.set(value, id); opcode = -1; return true; } else if (opcode == ServerProt.IF_SETHIDE) { int parent = inboundBuffer.g1neg(); int tracknum = inboundBuffer.g2(); int reset = inboundBuffer.ig4(); setVerifyId(tracknum); DelayedStateChange.method2905(reset, parent); opcode = -1; return true; } else if (opcode == ServerProt.IF_OPENSUB) { int parent = inboundBuffer.ig2add(); int reset = inboundBuffer.g1add(); int tracknum = inboundBuffer.ig2add(); setVerifyId(tracknum); if (reset == 2) { WorldMap.reset(); } InterfaceList.topLevelInterface = parent; InterfaceList.method1753(parent); InterfaceList.method3712(false); InterfaceList.method1626(InterfaceList.topLevelInterface); for (int i = 0; i < 100; i++) { InterfaceList.aBooleanArray100[i] = true; } opcode = -1; return true; } else if (opcode == ServerProt.CLIENT_SETVARC_LARGE) { int tracknum = inboundBuffer.ig2add(); int value = inboundBuffer.g4(); int id = inboundBuffer.g2add(); setVerifyId(tracknum); DelayedStateChange.updateVarC(id, value); opcode = -1; return true; } else if (opcode == ServerProt.MESSAGE_QUICKCHAT_PRIVATE_ECHO) { long name37 = inboundBuffer.g8(); int chatId = inboundBuffer.g2(); JagString message = QuickChatPhraseTypeList.get(chatId).decodeMessage(inboundBuffer); Chat.add(chatId, 19, message, null, Base37.decode37(name37).toTitleCase()); opcode = -1; return true; } else if (opcode == ServerProt.UPDATE_UID192) { writeRandom(inboundBuffer); opcode = -1; return true; } else if (opcode == ServerProt.RESET_CLIENT_VARCACHE) { VarpDomain.reset(); InterfaceList.redrawActiveInterfaces(); VarpDomain.updatedVarpsWriterIndex += 32; opcode = -1; return true; } else if (opcode == ServerProt.CAM_LOOKAT) { int tracknum = inboundBuffer.g2(); int tx = inboundBuffer.g1(); int tz = inboundBuffer.g1(); int cy = inboundBuffer.g2(); int step = inboundBuffer.g1(); int dur = inboundBuffer.g1(); setVerifyId(tracknum); Camera.method3849(cy, tz, step, tx, dur); opcode = -1; return true; } else if (opcode == ServerProt.IF_SETANIM) { int id = inboundBuffer.mg4(); int value = inboundBuffer.ig2b(); int tracknum = inboundBuffer.g2add(); setVerifyId(tracknum); DelayedStateChange.method3893(id, value); opcode = -1; return true; } else if (opcode == ServerProt.WIDGETSTRUCT_SETTING) { int value = inboundBuffer.ig2add(); int parent = inboundBuffer.ig4(); int tracknum = inboundBuffer.g2add(); int end = inboundBuffer.ig2(); if (end == 65535) { end = -1; } int start = inboundBuffer.g2add(); if (start == 65535) { start = -1; } setVerifyId(tracknum); ServerActiveProperties properties; for (int slot = start; slot <= end; slot++) { long ptr = (long) slot + ((long) parent << 32); ServerActiveProperties prev = (ServerActiveProperties) InterfaceList.properties.get(ptr); if (prev != null) { properties = new ServerActiveProperties(prev.events, value); prev.unlink(); } else if (slot == -1) { properties = new ServerActiveProperties(InterfaceList.getComponent(parent).properties.events, value); } else { properties = new ServerActiveProperties(0, value); } InterfaceList.properties.put(properties, ptr); } opcode = -1; return true; } else if (opcode == ServerProt.SPOTANIM_SPECIFIC) { int delay = inboundBuffer.g2(); int height = inboundBuffer.ig2(); int target = inboundBuffer.img4(); int gfxId = inboundBuffer.ig2add(); if (target >> 30 == 0) { @Pc(1994) SeqType seq; if (target >> 29 != 0) { int npcId = target & 0xFFFF; @Pc(1894) Npc npc = NpcList.npcs[npcId]; if (npc != null) { if (gfxId == 65535) { gfxId = -1; } boolean animated = gfxId == -1 || npc.spotAnimId == -1 || SeqTypeList.get(SpotAnimTypeList.get(gfxId).seqId).forcedPriority >= SeqTypeList.get(SpotAnimTypeList.get(npc.spotAnimId).seqId).forcedPriority; if (animated) { npc.anInt3361 = 0; npc.spotAnimId = gfxId; npc.spotAnimStart = client.loop + delay; npc.anInt3399 = 0; if (npc.spotAnimStart > client.loop) { npc.anInt3399 = -1; } npc.spotAnimY = height; npc.anInt3418 = 1; if (npc.spotAnimId != -1 && client.loop == npc.spotAnimStart) { int seqId = SpotAnimTypeList.get(npc.spotAnimId).seqId; if (seqId != -1) { seq = SeqTypeList.get(seqId); if (seq.frames != null) { SoundPlayer.playSeqSound(npc.zFine, seq, npc.xFine, false, 0); } } } } } } else if (target >> 28 != 0) { int playerId = target & 0xFFFF; @Pc(2033) Player player; if (PlayerList.selfId == playerId) { player = PlayerList.self; } else { player = PlayerList.players[playerId]; } if (player != null) { if (gfxId == 65535) { gfxId = -1; } boolean animated = gfxId == -1 || player.spotAnimId == -1 || SeqTypeList.get(SpotAnimTypeList.get(gfxId).seqId).forcedPriority >= SeqTypeList.get(SpotAnimTypeList.get(player.spotAnimId).seqId).forcedPriority; if (animated) { player.spotAnimStart = delay + client.loop; player.spotAnimY = height; player.spotAnimId = gfxId; player.anInt3418 = 1; player.anInt3361 = 0; player.anInt3399 = 0; if (player.spotAnimStart > client.loop) { player.anInt3399 = -1; } if (player.spotAnimId != -1 && player.spotAnimStart == client.loop) { int seqId = SpotAnimTypeList.get(player.spotAnimId).seqId; if (seqId != -1) { seq = SeqTypeList.get(seqId); if (seq.frames != null) { SoundPlayer.playSeqSound(player.zFine, seq, player.xFine, player == PlayerList.self, 0); } } } } } } } else { int plane = target >> 28 & 0x3; int posX = (target >> 14 & 0x3FFF) - Camera.originX; int posZ = (target & 0x3FFF) - Camera.originZ; if (posX >= 0 && posZ >= 0 && posX < 104 && posZ < 104) { posZ = posZ * 128 + 64; posX = posX * 128 + 64; @Pc(2241) SpotAnim spotAnim = new SpotAnim(gfxId, plane, posX, posZ, SceneGraph.getTileHeight(plane, posX, posZ) - height, delay, client.loop); Static99.aClass69_64.addTail(new SpotAnimNode(spotAnim)); } } opcode = -1; return true; } else if (opcode == ServerProt.INTERFACE_ANIMATE_ROTATE) { int ptr = inboundBuffer.mg4(); int tracknum = inboundBuffer.g2add(); int pitchStep = inboundBuffer.g2(); int yawStep = inboundBuffer.g2add(); setVerifyId(tracknum); DelayedStateChange.setComponentModelRotationSpeedServer(yawStep + (pitchStep << 16), ptr); opcode = -1; return true; } else if (opcode == ServerProt.UPDATE_STAT) { InterfaceList.redrawActiveInterfaces(); int level = inboundBuffer.g1add(); int xp = inboundBuffer.img4(); int skill = inboundBuffer.g1(); PlayerSkillXpTable.experience[skill] = xp; PlayerSkillXpTable.boostedLevels[skill] = level; PlayerSkillXpTable.baseLevels[skill] = 1; for (int i = 0; i < 98; i++) { if (PlayerSkillXpTable.xpLevelLookup[i] <= xp) { PlayerSkillXpTable.baseLevels[skill] = i + 2; } } PlayerSkillXpTable.updatedStats[PlayerSkillXpTable.updatedStatsWriterIndex++ & 0x1F] = skill; opcode = -1; return true; } else if (opcode == ServerProt.LOCATION_PACKET_104 || opcode == ServerProt.LOCATION_PACKET_121 || opcode == ServerProt.LOCATION_PACKET_97 || opcode == ServerProt.LOCATION_PACKET_14 || opcode == ServerProt.LOCATION_PACKET_202 || opcode == ServerProt.LOCATION_PACKET_135 || opcode == ServerProt.LOCATION_PACKET_17 || opcode == ServerProt.LOCATION_PACKET_16 || opcode == ServerProt.LOCATION_PACKET_240 || opcode == ServerProt.LOCATION_PACKET_33 || opcode == ServerProt.LOCATION_PACKET_20 || opcode == ServerProt.LOCATION_PACKET_195 || opcode == ServerProt.LOCATION_PACKET_179) { readLocationPacket(); opcode = -1; return true; } else if (opcode == ServerProt.IF_CLOSESUB) { int tracknum = inboundBuffer.g2(); int id = inboundBuffer.g4(); setVerifyId(tracknum); @Pc(2441) ComponentPointer pointer = (ComponentPointer) InterfaceList.openInterfaces.get(id); if (pointer != null) { InterfaceList.closeInterface(true, pointer); } if (Static39.aClass13_10 != null) { InterfaceList.redraw(Static39.aClass13_10); Static39.aClass13_10 = null; } opcode = -1; return true; } else if (opcode == ServerProt.CAM_FORCEANGLE) { int yaw = inboundBuffer.ig2(); int tracknum = inboundBuffer.g2(); int pitch = inboundBuffer.g2(); setVerifyId(tracknum); Camera.yawTarget = yaw; Camera.pitchTarget = pitch; if (Camera.cameraType == 2) { Camera.cameraPitch = (int)Camera.pitchTarget; Camera.cameraYaw = (int)Camera.yawTarget; } Camera.clampCameraAngle(); opcode = -1; return true; } else if (opcode == ServerProt.IF_SETANGLE) { int pitch = inboundBuffer.g2(); int tracknum = inboundBuffer.g2add(); int scale = inboundBuffer.ig2add(); int yaw = inboundBuffer.ig2add(); int ptr = inboundBuffer.g4(); setVerifyId(tracknum); DelayedStateChange.updateView(scale, ptr, yaw, pitch); opcode = -1; return true; } else if (opcode == ServerProt.CLEAR_GROUND_ITEMS) { SceneGraph.currentChunkX = inboundBuffer.g1(); SceneGraph.currentChunkZ = inboundBuffer.g1neg(); for (int x = SceneGraph.currentChunkX; x < SceneGraph.currentChunkX + 8; x++) { for (int z = SceneGraph.currentChunkZ; z < SceneGraph.currentChunkZ + 8; z++) { if (SceneGraph.objStacks[Player.level][x][z] != null) { SceneGraph.objStacks[Player.level][x][z] = null; Static220.spawnGroundObject(z, x); } } } for (@Pc(2604) ChangeLocRequest loc = (ChangeLocRequest) ChangeLocRequest.queue.head(); loc != null; loc = (ChangeLocRequest) ChangeLocRequest.queue.next()) { if (loc.x >= SceneGraph.currentChunkX && SceneGraph.currentChunkX + 8 > loc.x && loc.z >= SceneGraph.currentChunkZ && loc.z < SceneGraph.currentChunkZ + 8 && loc.level == Player.level) { loc.resetLoops = 0; } } opcode = -1; return true; } else if (opcode == ServerProt.INTERFACE_ITEMS_CLEAR) { int id = inboundBuffer.mg4(); @Pc(2666) Component component = InterfaceList.getComponent(id); for (int i = 0; i < component.objTypes.length; i++) { component.objTypes[i] = -1; component.objTypes[i] = 0; } InterfaceList.redraw(component); opcode = -1; return true; } else if (opcode == ServerProt.IF_SETMODEL) { int id = inboundBuffer.ig4(); int tracknum = inboundBuffer.ig2add(); int modelId = inboundBuffer.g2add(); if (modelId == 65535) { modelId = -1; } setVerifyId(tracknum); DelayedStateChange.updateComponentModel(-1, 1, id, modelId); opcode = -1; return true; } else if (opcode == ServerProt.SET_MINIMAP_STATE) { MiniMap.state = inboundBuffer.g1(); opcode = -1; return true; } else if (opcode == ServerProt.TELEPORT_LOCAL_PLAYER) { int pos1 = inboundBuffer.g1sub(); int flags = inboundBuffer.g1add(); int pos2 = inboundBuffer.g1(); Player.level = flags >> 1; PlayerList.self.teleport(pos1, (flags & 0x1) == 1, pos2); opcode = -1; return true; } else if (opcode == ServerProt.UPDATE_FRIENDLIST) { long name37 = inboundBuffer.g8(); int worldId = inboundBuffer.g2(); int x = inboundBuffer.g1(); boolean ignored = true; if (name37 < 0L) { name37 &= Long.MAX_VALUE; ignored = false; } JagString worldName = JagString.EMPTY; if (worldId > 0) { worldName = inboundBuffer.gjstr(); } @Pc(2834) JagString name = Base37.decode37(name37).toTitleCase(); for (int i = 0; i < FriendsList.size; i++) { if (name37 == FriendsList.encodedUsernames[i]) { if (worldId != FriendsList.worlds[i]) { FriendsList.worlds[i] = worldId; if (worldId > 0) { Chat.add(JagString.EMPTY, 5, JagString.concatenate(new JagString[] { name, LocalizedText.FRIENDLOGIN})); } if (worldId == 0) { Chat.add(JagString.EMPTY, 5, JagString.concatenate(new JagString[] { name, LocalizedText.FRIENDLOGOUT})); } } FriendsList.worldNames[i] = worldName; FriendsList.ranks[i] = x; name = null; FriendsList.aBooleanArray135[i] = ignored; break; } } if (name != null && FriendsList.size < 200) { FriendsList.encodedUsernames[FriendsList.size] = name37; FriendsList.usernames[FriendsList.size] = name; FriendsList.worlds[FriendsList.size] = worldId; FriendsList.worldNames[FriendsList.size] = worldName; FriendsList.ranks[FriendsList.size] = x; FriendsList.aBooleanArray135[FriendsList.size] = ignored; FriendsList.size++; } FriendsList.transmitAt = InterfaceList.transmitTimer; int friendCount = FriendsList.size; while (friendCount > 0) { friendCount--; @Pc(2961) boolean sorting = true; for (int i = 0; i < friendCount; i++) { if (FriendsList.worlds[i] != Player.worldId && Player.worldId == FriendsList.worlds[i + 1] || FriendsList.worlds[i] == 0 && FriendsList.worlds[i + 1] != 0) { sorting = false; int local3002 = FriendsList.worlds[i]; FriendsList.worlds[i] = FriendsList.worlds[i + 1]; FriendsList.worlds[i + 1] = local3002; JagString local3020 = FriendsList.worldNames[i]; FriendsList.worldNames[i] = FriendsList.worldNames[i + 1]; FriendsList.worldNames[i + 1] = local3020; JagString local3038 = FriendsList.usernames[i]; FriendsList.usernames[i] = FriendsList.usernames[i + 1]; FriendsList.usernames[i + 1] = local3038; @Pc(3056) long local3056 = FriendsList.encodedUsernames[i]; FriendsList.encodedUsernames[i] = FriendsList.encodedUsernames[i + 1]; FriendsList.encodedUsernames[i + 1] = local3056; @Pc(3074) int local3074 = FriendsList.ranks[i]; FriendsList.ranks[i] = FriendsList.ranks[i + 1]; FriendsList.ranks[i + 1] = local3074; @Pc(3092) boolean local3092 = FriendsList.aBooleanArray135[i]; FriendsList.aBooleanArray135[i] = FriendsList.aBooleanArray135[i + 1]; FriendsList.aBooleanArray135[i + 1] = local3092; } } if (sorting) { break; } } opcode = -1; return true; } else if (opcode == ServerProt.SET_WALK_TEXT) { if (length == 0) { MiniMenu.walkText = LocalizedText.WALKHERE; } else { MiniMenu.walkText = inboundBuffer.gjstr(); } opcode = -1; return true; } else if (opcode == ServerProt.FORCE_VARP_REFRESH) { for (int i = 0; i < VarpDomain.activeVarps.length; i++) { if (VarpDomain.varp[i] != VarpDomain.activeVarps[i]) { VarpDomain.activeVarps[i] = VarpDomain.varp[i]; VarpDomain.refreshMagicVarp(i); VarpDomain.updatedVarps[VarpDomain.updatedVarpsWriterIndex++ & 0x1F] = i; } } opcode = -1; return true; } else if (opcode == ServerProt.CAMERA_DETACH) { int tracknum = inboundBuffer.g2(); int local786 = inboundBuffer.g1(); int modelId = inboundBuffer.g1(); int counter = inboundBuffer.g2(); int local1146 = inboundBuffer.g1(); int local277 = inboundBuffer.g1(); setVerifyId(tracknum); Camera.method2722(true, local1146, counter, local277, modelId, local786); opcode = -1; return true; } else if (opcode == ServerProt.MESSAGE_QUICKCHAT_PRIVATE) { long name = inboundBuffer.g8(); int top = inboundBuffer.g2(); int bot = inboundBuffer.g3(); int rights = inboundBuffer.g1(); int chatId = inboundBuffer.g2(); @Pc(3263) boolean ignore = false; @Pc(3270) long messageId = ((long)top << 32) + bot; @Pc(3272) int ix = 0; check: while (true) { if (ix < 100) { if (messageId != Chat.recentMessages[ix]) { ix++; continue; } ignore = true; break; } if (rights <= 1) { for (ix = 0; ix < IgnoreList.size; ix++) { if (name == IgnoreList.encodedUsernames[ix]) { ignore = true; break check; } } } break; } if (!ignore && Player.inTutorialIsland == 0) { Chat.recentMessages[Chat.messageCounter] = messageId; Chat.messageCounter = (Chat.messageCounter + 1) % 100; JagString message = QuickChatPhraseTypeList.get(chatId).decodeMessage(inboundBuffer); if (rights == 2) { Chat.add(chatId, 18, message, null, JagString.concatenate(new JagString[] { Static44.IMG1, Base37.decode37(name).toTitleCase() })); } else if (rights == 1) { Chat.add(chatId, 18, message, null, JagString.concatenate(new JagString[] { Static65.IMG0, Base37.decode37(name).toTitleCase() })); } else { Chat.add(chatId, 18, message, null, Base37.decode37(name).toTitleCase()); } } opcode = -1; return true; } else if (opcode == ServerProt.SWITCH_WIDGET) { int source = inboundBuffer.img4(); int tracknum = inboundBuffer.g2add(); int target = inboundBuffer.img4(); setVerifyId(tracknum); @Pc(3449) ComponentPointer src = (ComponentPointer) InterfaceList.openInterfaces.get(source); ComponentPointer tgt = (ComponentPointer) InterfaceList.openInterfaces.get(target); if (tgt != null) { InterfaceList.closeInterface(src == null || tgt.anInt5878 != src.anInt5878, tgt); } if (src != null) { src.unlink(); InterfaceList.openInterfaces.put(src, target); } @Pc(3490) Component component = InterfaceList.getComponent(source); if (component != null) { InterfaceList.redraw(component); } component = InterfaceList.getComponent(target); if (component != null) { InterfaceList.redraw(component); InterfaceList.method531(component, true); } if (InterfaceList.topLevelInterface != -1) { Static54.runScripts(1, InterfaceList.topLevelInterface); } opcode = -1; return true; } else if (opcode == ServerProt.CAM_SHAKE) { int tracknum = inboundBuffer.g2(); int cameraId = inboundBuffer.g1(); int jitter = inboundBuffer.g1(); int amplitude = inboundBuffer.g1(); int frequency = inboundBuffer.g1(); int shake4 = inboundBuffer.g2(); setVerifyId(tracknum); Static176.customCameraActive[cameraId] = true; Camera.cameraJitter[cameraId] = jitter; Camera.cameraAmplitude[cameraId] = amplitude; Camera.cameraFrequency[cameraId] = frequency; Static31.anIntArray76[cameraId] = shake4; opcode = -1; return true; } else if (opcode == ServerProt.IF_SETCOLOUR) { int id = inboundBuffer.img4(); int tracknum = inboundBuffer.g2add(); int color = inboundBuffer.ig2add(); setVerifyId(tracknum); DelayedStateChange.setColor(color, id); opcode = -1; return true; } else if (opcode == ServerProt.UPDATE_REBOOT_TIMER) { Player.rebootTimer = inboundBuffer.g2() * 30; opcode = -1; InterfaceList.miscTransmitAt = InterfaceList.transmitTimer; return true; } else if (opcode == ServerProt.REFLECTION_CHEAT_CHECK) { ReflectionCheck.method3654(GameShell.signLink, inboundBuffer, length); opcode = -1; return true; } else if (opcode == ServerProt.CLIENT_SETVARC_SMALL) { int tracknum = inboundBuffer.ig2(); int value = inboundBuffer.g1neg(); int id = inboundBuffer.ig2add(); setVerifyId(tracknum); DelayedStateChange.updateVarC(id, value); opcode = -1; return true; } else if (opcode == ServerProt.UPDATE_RUNENERGY) { InterfaceList.redrawActiveInterfaces(); Player.runEnergy = inboundBuffer.g1(); InterfaceList.miscTransmitAt = InterfaceList.transmitTimer; opcode = -1; return true; } else if (opcode == ServerProt.GAME_FRAME_UNK) { if (InterfaceList.topLevelInterface != -1) { Static54.runScripts(0, InterfaceList.topLevelInterface); } opcode = -1; return true; } else if (opcode == ServerProt.DELETE_INVENTORY) { int id = inboundBuffer.ig2(); Inv.delete(id); Inv.updatedInventories[Inv.updatedInventoriesWriterIndex++ & 0x1F] = id & 0x7FFF; opcode = -1; return true; } else if (opcode == ServerProt.NPC_ANIM_SPECIFIC) { int npcId = inboundBuffer.ig2(); int value = inboundBuffer.g1sub(); int seqId = inboundBuffer.g2(); @Pc(3766) Npc npc = NpcList.npcs[npcId]; if (npc != null) { Static223.animateNpc(value, seqId, npc); } opcode = -1; return true; } else if (opcode == ServerProt.UPDATE_RUNWEIGHT) { InterfaceList.redrawActiveInterfaces(); Player.weight = inboundBuffer.g2b(); InterfaceList.miscTransmitAt = InterfaceList.transmitTimer; opcode = -1; return true; } else if (opcode == ServerProt.MESSAGE_PRIVATE_ECHO) { long name37 = inboundBuffer.g8(); JagString message = Font.escape(Static65.formatChatMessage(inboundBuffer).encodeMessage()); Chat.add(Base37.decode37(name37).toTitleCase(), 6, message); opcode = -1; return true; } else if (opcode == ServerProt.URL_OPEN) { if (GameShell.fullScreenFrame != null) { DisplayMode.setWindowMode(false, Preferences.favoriteWorlds, -1, -1); } @Pc(3848) byte[] data = new byte[length]; inboundBuffer.gBytesIsaac(data, length); JagString url = JagString.decodeString(data, length, 0); if (GameShell.frame == null && (SignLink.anInt5928 == 3 || !SignLink.osName.startsWith("win") || client.haveIe6)) { Static169.openUrl(url, true); } else { Static175.url = url; Static164.newTab = true; Static33.openUrlRequest = GameShell.signLink.openUrl(new String(url.method3148(), StandardCharsets.ISO_8859_1)); } opcode = -1; return true; } else if (opcode == ServerProt.GENERATE_CHAT_HEAD_FROM_BODY) { int tracknum = inboundBuffer.g2add(); int id = inboundBuffer.mg4(); int value1 = inboundBuffer.ig2add(); int value2 = inboundBuffer.ig2(); int value3 = inboundBuffer.ig2add(); setVerifyId(tracknum); DelayedStateChange.updateComponentModel(value1, 7, id, value2 << 16 | value3); opcode = -1; return true; } else if (opcode == ServerProt.VARBIT_SMALL) { int value = inboundBuffer.g1add(); int id = inboundBuffer.ig2(); VarpDomain.setVarbit(value, id); opcode = -1; return true; } else if (opcode == ServerProt.IF_OPENTOP) { int type = inboundBuffer.g1(); int pointer = inboundBuffer.mg4(); int tracknum = inboundBuffer.g2add(); int component = inboundBuffer.g2(); setVerifyId(tracknum); ComponentPointer ptr = (ComponentPointer) InterfaceList.openInterfaces.get(pointer); if (ptr != null) { InterfaceList.closeInterface(ptr.anInt5878 != component, ptr); } Static44.method1148(component, pointer, type); opcode = -1; return true; } else if (opcode == ServerProt.RESET_ANIMS) { for (int i = 0; i < PlayerList.players.length; i++) { if (PlayerList.players[i] != null) { PlayerList.players[i].seqId = -1; } } for (int i = 0; i < NpcList.npcs.length; i++) { if (NpcList.npcs[i] != null) { NpcList.npcs[i].seqId = -1; } } opcode = -1; return true; } else if (opcode == ServerProt.HINT_ARROW) { int flags = inboundBuffer.g1(); @Pc(4084) MapMarker mapMarker = new MapMarker(); int slot = flags >> 6; mapMarker.type = flags & 0x3F; mapMarker.anInt4048 = inboundBuffer.g1(); if (mapMarker.anInt4048 >= 0 && mapMarker.anInt4048 < Sprites.headhints.length) { if (mapMarker.type == 1 || mapMarker.type == 10) { mapMarker.actorTargetId = inboundBuffer.g2(); inboundBuffer.offset += 3; } else if (mapMarker.type >= 2 && mapMarker.type <= 6) { if (mapMarker.type == 2) { mapMarker.anInt4045 = 64; mapMarker.anInt4047 = 64; } if (mapMarker.type == 3) { mapMarker.anInt4045 = 0; mapMarker.anInt4047 = 64; } if (mapMarker.type == 4) { mapMarker.anInt4045 = 128; mapMarker.anInt4047 = 64; } if (mapMarker.type == 5) { mapMarker.anInt4045 = 64; mapMarker.anInt4047 = 0; } if (mapMarker.type == 6) { mapMarker.anInt4045 = 64; mapMarker.anInt4047 = 128; } mapMarker.type = 2; mapMarker.targetX = inboundBuffer.g2(); mapMarker.anInt4046 = inboundBuffer.g2(); mapMarker.anInt4050 = inboundBuffer.g1(); } mapMarker.playerModelId = inboundBuffer.g2(); if (mapMarker.playerModelId == 65535) { mapMarker.playerModelId = -1; } Static143.hintMapMarkers[slot] = mapMarker; } opcode = -1; return true; } else if (opcode == ServerProt.UPDATE_IGNORELIST) { IgnoreList.size = length / 8; for (int i = 0; i < IgnoreList.size; i++) { IgnoreList.encodedUsernames[i] = inboundBuffer.g8(); IgnoreList.aClass100Array134[i] = Base37.decode37(IgnoreList.encodedUsernames[i]); } FriendsList.transmitAt = InterfaceList.transmitTimer; opcode = -1; return true; } else if (opcode == ServerProt.NPC_INFO) { readNpcPacket(); opcode = -1; return true; } else if (opcode == ServerProt.IF_SETPOSITION) { int tracknum = inboundBuffer.g2add(); int ptr = inboundBuffer.ig4(); int x = inboundBuffer.g2b(); int y = inboundBuffer.g2badd(); setVerifyId(tracknum); DelayedStateChange.method4666(x, ptr, y); opcode = -1; return true; } else if (opcode == ServerProt.LOC_ANIM_SPECIFIC) { int slot = inboundBuffer.g1sub(); int type = slot >> 2; int rotation = slot & 0x3; int type2 = Loc.LAYERS[type]; int seqId = inboundBuffer.g2(); int pos = inboundBuffer.g4(); if (seqId == 65535) { seqId = -1; } int z = pos & 0x3FFF; int x = pos >> 14 & 0x3FFF; x -= Camera.originX; z -= Camera.originZ; int plane = pos >> 28 & 0x3; SceneGraph.method1881(plane, rotation, type, z, type2, x, seqId); opcode = -1; return true; } else if (opcode == ServerProt.MESSAGE_PRIVATE) { long name37 = inboundBuffer.g8(); int top = inboundBuffer.g2(); int bot = inboundBuffer.g3(); int rights = inboundBuffer.g1(); @Pc(4425) boolean ignored = false; @Pc(4431) long messageId = bot + ((long)top << 32); int ix = 0; check: while (true) { if (ix >= 100) { if (rights <= 1) { if (LoginManager.playerUnderage && !LoginManager.parentalChatConsent || LoginManager.mapQuickChat) { ignored = true; } else { for (ix = 0; ix < IgnoreList.size; ix++) { if (name37 == IgnoreList.encodedUsernames[ix]) { ignored = true; break check; } } } } break; } if (messageId == Chat.recentMessages[ix]) { ignored = true; break; } ix++; } if (!ignored && Player.inTutorialIsland == 0) { Chat.recentMessages[Chat.messageCounter] = messageId; Chat.messageCounter = (Chat.messageCounter + 1) % 100; @Pc(4518) JagString message = Font.escape(Static65.formatChatMessage(inboundBuffer).encodeMessage()); if (rights == 2 || rights == 3) { Chat.add(JagString.concatenate(new JagString[] { Static44.IMG1, Base37.decode37(name37).toTitleCase() }), 7, message); } else if (rights == 1) { Chat.add(JagString.concatenate(new JagString[] { Static65.IMG0, Base37.decode37(name37).toTitleCase() }), 7, message); } else { Chat.add(Base37.decode37(name37).toTitleCase(), 3, message); } } opcode = -1; return true; } else if (opcode == ServerProt.MESSAGE_CLANCHANNEL) { long name37 = inboundBuffer.g8(); inboundBuffer.g1b(); long chat37 = inboundBuffer.g8(); int top = inboundBuffer.g2(); int bot = inboundBuffer.g3(); @Pc(4626) long local4626 = ((long)top << 32) + bot; int rights = inboundBuffer.g1(); @Pc(4632) boolean ignored = false; @Pc(4634) int ix = 0; check: while (true) { if (ix >= 100) { if (rights <= 1) { if (LoginManager.playerUnderage && !LoginManager.parentalChatConsent || LoginManager.mapQuickChat) { ignored = true; } else { for (ix = 0; ix < IgnoreList.size; ix++) { if (IgnoreList.encodedUsernames[ix] == name37) { ignored = true; break check; } } } } break; } if (Chat.recentMessages[ix] == local4626) { ignored = true; break; } ix++; } if (!ignored && Player.inTutorialIsland == 0) { Chat.recentMessages[Chat.messageCounter] = local4626; Chat.messageCounter = (Chat.messageCounter + 1) % 100; JagString message = Font.escape(Static65.formatChatMessage(inboundBuffer).encodeMessage()); if (rights == 2 || rights == 3) { Static73.method1598(message, JagString.concatenate(new JagString[] { Static44.IMG1, Base37.decode37(name37).toTitleCase() }), Base37.decode37(chat37).toTitleCase()); } else if (rights == 1) { Static73.method1598(message, JagString.concatenate(new JagString[] { Static65.IMG0, Base37.decode37(name37).toTitleCase() }), Base37.decode37(chat37).toTitleCase()); } else { Static73.method1598(message, Base37.decode37(name37).toTitleCase(), Base37.decode37(chat37).toTitleCase()); } } opcode = -1; return true; } else if (opcode == ServerProt.DYNAMIC_SCENE_GRAPH) { readRebuildPacket(true); opcode = -1; return true; } else if (opcode == ServerProt.SYNTH_SOUND) { int trackId = inboundBuffer.g2(); int volume = inboundBuffer.g1(); if (trackId == 65535) { trackId = -1; } int delay = inboundBuffer.g2(); SoundPlayer.play(volume, trackId, delay); opcode = -1; return true; } else if (opcode == ServerProt.IF_SETPLAYERHEAD) { int tracknum = inboundBuffer.ig2add(); int id = inboundBuffer.img4(); setVerifyId(tracknum); int set = 0; if (PlayerList.self.appearance != null) { set = PlayerList.self.appearance.method1952(); } DelayedStateChange.updateComponentModel(-1, 3, id, set); opcode = -1; return true; } else if (opcode == ServerProt.IF_SETTEXT1) { int id = inboundBuffer.mg4(); JagString text = inboundBuffer.gjstr(); int tracknum = inboundBuffer.g2add(); setVerifyId(tracknum); DelayedStateChange.method3617(text, id); opcode = -1; return true; } else if (opcode == ServerProt.VARBIT_LARGE) { int value = inboundBuffer.ig4(); int id = inboundBuffer.ig2add(); VarpDomain.setVarbit(value, id); opcode = -1; return true; } else if (opcode == ServerProt.UPDATE_INV_PARTIAL) { int componentHash = inboundBuffer.g4(); int containerId = inboundBuffer.g2(); if (componentHash < -70000) { containerId += 32768; } Component component; if (componentHash < 0) { component = null; } else { component = InterfaceList.getComponent(componentHash); } while (inboundBuffer.offset < length) { int slot = inboundBuffer.gsmarts(); int amount = inboundBuffer.g2(); int id = 0; if (amount != 0) { id = inboundBuffer.g1(); if (id == 255) { id = inboundBuffer.g4(); } } if (component != null && slot >= 0 && component.objTypes.length > slot) { component.objTypes[slot] = amount; component.objCounts[slot] = id; } Inv.updateContainer(amount - 1, slot, id, containerId); } if (component != null) { InterfaceList.redraw(component); } InterfaceList.redrawActiveInterfaces(); Inv.updatedInventories[Inv.updatedInventoriesWriterIndex++ & 0x1F] = containerId & 0x7FFF; opcode = -1; return true; } else if (opcode == ServerProt.CAM_RESET) { int tracknum = inboundBuffer.g2(); setVerifyId(tracknum); Camera.resetCameraEffects(); opcode = -1; return true; } else if (opcode == ServerProt.LOGOUT) { LoginManager.processLogout(); opcode = -1; return false; } else if (opcode == ServerProt.GRAND_EXCHANGE_OFFERS) { int offer = inboundBuffer.g1(); if (inboundBuffer.g1() == 0) { StockMarketManager.offers[offer] = new StockMarketOffer(); } else { inboundBuffer.offset--; StockMarketManager.offers[offer] = new StockMarketOffer(inboundBuffer); } opcode = -1; StockMarketManager.transmitAt = InterfaceList.transmitTimer; return true; } else if (opcode == ServerProt.IF_SETNPCHEAD) { int npcId = inboundBuffer.g2add(); int id = inboundBuffer.ig4(); if (npcId == 65535) { npcId = -1; } int tracknum = inboundBuffer.ig2(); setVerifyId(tracknum); DelayedStateChange.updateComponentModel(-1, 2, id, npcId); opcode = -1; return true; } else if (opcode == ServerProt.UPDATE_SCENE_GRAPH) { readRebuildPacket(false); opcode = -1; return true; } else if (opcode == ServerProt.SET_INTERFACE_SETTINGS) { int tracknum = inboundBuffer.ig2(); int end = inboundBuffer.ig2(); if (end == 65535) { end = -1; } int pointer = inboundBuffer.g4(); int start = inboundBuffer.g2add(); int accessMask = inboundBuffer.img4(); if (start == 65535) { start = -1; } setVerifyId(tracknum); for (int local277 = start; local277 <= end; local277++) { long local904 = ((long) pointer << 32) + ((long) local277); ServerActiveProperties properties = (ServerActiveProperties) InterfaceList.properties.get(local904); ServerActiveProperties target; if (properties != null) { target = new ServerActiveProperties(accessMask, properties.anInt540); properties.unlink(); } else if (local277 == -1) { target = new ServerActiveProperties(accessMask, InterfaceList.getComponent(pointer).properties.anInt540); } else { target = new ServerActiveProperties(accessMask, -1); } InterfaceList.properties.put(target, local904); } opcode = -1; return true; } else if (opcode == ServerProt.FRIENDLIST_LOADED) { FriendsList.state = inboundBuffer.g1(); FriendsList.transmitAt = InterfaceList.transmitTimer; opcode = -1; return true; } else if (opcode == ServerProt.UPDATE_CLAN) { long name37 = inboundBuffer.g8(); int worldId = inboundBuffer.g2(); @Pc(5325) byte rights = inboundBuffer.g1b(); boolean ignored = (Long.MIN_VALUE & name37) != 0L; if (ignored) { if (ClanChat.size == 0) { opcode = -1; return true; } name37 &= Long.MAX_VALUE; int i; for (i = 0; ClanChat.size > i && (name37 != ClanChat.members[i].key || worldId != ClanChat.members[i].world); i++) { } if (i < ClanChat.size) { while (ClanChat.size - 1 > i) { ClanChat.members[i] = ClanChat.members[i + 1]; i++; } ClanChat.size--; ClanChat.members[ClanChat.size] = null; } } else { JagString worldName = inboundBuffer.gjstr(); @Pc(5347) ClanMember member = new ClanMember(); member.key = name37; member.username = Base37.decode37(member.key); member.rank = rights; member.worldName = worldName; member.world = worldId; int n; for (n = ClanChat.size - 1; n >= 0; n--) { int m = ClanChat.members[n].username.method3139(member.username); if (m == 0) { ClanChat.members[n].world = worldId; ClanChat.members[n].rank = rights; ClanChat.members[n].worldName = worldName; if (name37 == Player.name37) { ClanChat.rank = rights; } ClanChat.transmitAt = InterfaceList.transmitTimer; opcode = -1; return true; } if (m < 0) { break; } } if (ClanChat.members.length <= ClanChat.size) { opcode = -1; return true; } for (int i = ClanChat.size - 1; i > n; i--) { ClanChat.members[i + 1] = ClanChat.members[i]; } if (ClanChat.size == 0) { ClanChat.members = new ClanMember[100]; } ClanChat.members[n + 1] = member; if (Player.name37 == name37) { ClanChat.rank = rights; } ClanChat.size++; } opcode = -1; ClanChat.transmitAt = InterfaceList.transmitTimer; return true; } else if (opcode == ServerProt.IF_SETOBJECT) { int slot = inboundBuffer.g4(); int id = inboundBuffer.mg4(); int itemId = inboundBuffer.ig2add(); if (itemId == 65535) { itemId = -1; } int tracknum = inboundBuffer.ig2(); setVerifyId(tracknum); @Pc(5603) Component component = InterfaceList.getComponent(id); @Pc(5615) ObjType objType; if (component.if3) { DelayedStateChange.method3707(id, slot, itemId); objType = ObjTypeList.get(itemId); DelayedStateChange.updateView(objType.zoom2d, id, objType.yAngle2D, objType.xAngle2D); DelayedStateChange.method2745(id, objType.zAngle2D, objType.yOffset2D, objType.xOffset2D); } else if (itemId == -1) { component.modelType = 0; opcode = -1; return true; } else { objType = ObjTypeList.get(itemId); component.modelXAngle = objType.xAngle2D; component.modelZoom = objType.zoom2d * 100 / slot; component.modelType = 4; component.modelId = itemId; component.modelYAngle = objType.yAngle2D; InterfaceList.redraw(component); } opcode = -1; return true; } else if (opcode == ServerProt.UPDATE_INV_FULL) { int componentHash = inboundBuffer.g4(); int containerId = inboundBuffer.g2(); if (componentHash < -70000) { containerId += 32768; } Component component; if (componentHash >= 0) { component = InterfaceList.getComponent(componentHash); } else { component = null; } if (component != null) { for (int i = 0; i < component.objTypes.length; i++) { component.objTypes[i] = 0; component.objCounts[i] = 0; } } Static14.method475(containerId); int total = inboundBuffer.g2(); for (int slot = 0; slot < total; slot++) { int amount = inboundBuffer.g1sub(); if (amount == 255) { amount = inboundBuffer.g4(); } int itemId = inboundBuffer.g2(); if (component != null && slot < component.objTypes.length) { component.objTypes[slot] = itemId; component.objCounts[slot] = amount; } Inv.updateContainer(itemId - 1, slot, amount, containerId); } if (component != null) { InterfaceList.redraw(component); } InterfaceList.redrawActiveInterfaces(); Inv.updatedInventories[Inv.updatedInventoriesWriterIndex++ & 0x1F] = containerId & 0x7FFF; opcode = -1; return true; } else if (opcode == ServerProt.SET_SETTINGS_STRING) { Static230.method3954(inboundBuffer.gjstr()); opcode = -1; return true; } else if (opcode == ServerProt.UPDATE_CURRENT_LOCATION) { SceneGraph.currentChunkX = inboundBuffer.g1neg(); SceneGraph.currentChunkZ = inboundBuffer.g1(); opcode = -1; return true; } else if (opcode == ServerProt.MIDI_SONG) { int id = inboundBuffer.ig2add(); if (id == 65535) { id = -1; } MusicPlayer.playSong(id); opcode = -1; return true; } else if (opcode == ServerProt.MIDI_JINGLE) { int volume = inboundBuffer.ig3(); int id = inboundBuffer.ig2(); if (id == 65535) { id = -1; } MusicPlayer.playJingle(volume, id); opcode = -1; return true; } else { TracingException.report("T1 - " + opcode + "," + opcode3 + "," + opcode4 + " - " + length, null); LoginManager.processLogout(); return true; } } @OriginalMember(owner = "client!an", name = "h", descriptor = "(I)Z") public static boolean readPacket() { try { return readPacketInternal(); } catch (@Pc(14) IOException ex) { ex.printStackTrace(); Static175.method3279(); return true; } catch (@Pc(19) Exception ex) { ex.printStackTrace(); @Pc(61) String local61 = "T2 - " + opcode + "," + opcode3 + "," + opcode4 + " - " + length + "," + (Camera.originX + PlayerList.self.movementQueueX[0]) + "," + (PlayerList.self.movementQueueZ[0] + Camera.originZ) + " - "; for (@Pc(63) int local63 = 0; local63 < length && local63 < 50; local63++) { local61 = local61 + inboundBuffer.data[local63] + ","; } TracingException.report(local61, ex); LoginManager.processLogout(); return true; } } @OriginalMember(owner = "client!gg", name = "a", descriptor = "(Z)V") public static void method1756() { // todo: consolidate/rename static classes if (Static267.anInt5775 > 0) { Static267.anInt5775--; } if (Player.rebootTimer > 1) { Player.rebootTimer--; InterfaceList.miscTransmitAt = InterfaceList.transmitTimer; } if (LoginManager.aBoolean247) { LoginManager.aBoolean247 = false; Static175.method3279(); return; } for (@Pc(34) int i = 0; i < 100 && readPacket(); i++) { } if (client.gameState != 30) { return; } ReflectionCheck.loop(outboundBuffer); @Pc(60) Object mouseRecorder = MouseRecorder.instance.lock; @Pc(86) int offset; @Pc(79) int type; @Pc(88) int i; @Pc(106) int y; @Pc(111) int x; @Pc(182) int dx; @Pc(189) int dy; synchronized (mouseRecorder) { if (!MouseRecorder.enabled) { MouseRecorder.instance.samples = 0; } else if (Mouse.clickButton != 0 || MouseRecorder.instance.samples >= 40) { outboundBuffer.p1isaac(123); type = 0; outboundBuffer.p1(0); offset = outboundBuffer.offset; for (i = 0; MouseRecorder.instance.samples > i && outboundBuffer.offset - offset < 240; i++) { type++; y = MouseRecorder.instance.y[i]; x = MouseRecorder.instance.x[i]; if (y < 0) { y = 0; } else if (y > 65534) { y = 65534; } if (x < 0) { x = 0; } else if (x > 65534) { x = 65534; } @Pc(142) boolean outsideWindow = false; if (MouseRecorder.instance.y[i] == -1 && MouseRecorder.instance.x[i] == -1) { outsideWindow = true; y = -1; x = -1; } if (Static264.mouseRecorderPrevX != x || y != MouseRecorder.mouseRecorderPrevY) { dx = x - Static264.mouseRecorderPrevX; Static264.mouseRecorderPrevX = x; dy = y - MouseRecorder.mouseRecorderPrevY; MouseRecorder.mouseRecorderPrevY = y; if (anInt4762 < 8 && dx >= -32 && dx <= 31 && dy >= -32 && dy <= 31) { dy += 32; dx += 32; outboundBuffer.p2(dy + (anInt4762 << 12) + (dx << 6)); anInt4762 = 0; } else if (anInt4762 < 32 && dx >= -128 && dx <= 127 && dy >= -128 && dy <= 127) { outboundBuffer.p1(anInt4762 + 128); dy += 128; dx += 128; outboundBuffer.p2((dx << 8) + dy); anInt4762 = 0; } else if (anInt4762 < 32) { outboundBuffer.p1(anInt4762 + 192); if (outsideWindow) { outboundBuffer.p4(Integer.MIN_VALUE); } else { outboundBuffer.p4(x | y << 16); } anInt4762 = 0; } else { outboundBuffer.p2(anInt4762 + 57344); if (outsideWindow) { outboundBuffer.p4(Integer.MIN_VALUE); } else { outboundBuffer.p4(x | y << 16); } anInt4762 = 0; } } else if (anInt4762 < 2047) { anInt4762++; } } outboundBuffer.psize1(outboundBuffer.offset - offset); if (MouseRecorder.instance.samples > type) { MouseRecorder.instance.samples -= type; for (i = 0; i < MouseRecorder.instance.samples; i++) { MouseRecorder.instance.x[i] = MouseRecorder.instance.x[type + i]; MouseRecorder.instance.y[i] = MouseRecorder.instance.y[type + i]; } } else { MouseRecorder.instance.samples = 0; } } } if (Mouse.clickButton != 0) { @Pc(411) long loops = (Mouse.clickTime - Static183.prevClickTime) / 50L; type = Mouse.clickY; if (type < 0) { type = 0; } else if (type > 65535) { type = 65535; } if (loops > 32767L) { loops = 32767L; } i = Mouse.clickX; Static183.prevClickTime = Mouse.clickTime; @Pc(437) byte button = 0; if (i < 0) { i = 0; } else if (i > 65535) { i = 65535; } x = (int) loops; if (Mouse.clickButton == 2) { button = 1; } outboundBuffer.p1isaac(75); outboundBuffer.ip2add(button << 15 | x); outboundBuffer.mp4(i | type << 16); } if (Static16.anInt551 > 0) { Static16.anInt551--; } if (Preferences.aBoolean63) { for (i = 0; i < InterfaceList.keyQueueSize; i++) { offset = InterfaceList.keyCodes[i]; if (offset == 98 || offset == 99 || offset == 96 || offset == 97) { Static197.aBoolean228 = true; break; } } } else if (Keyboard.pressedKeys[Keyboard.KEY_LEFT] || Keyboard.pressedKeys[Keyboard.KEY_RIGHT] || Keyboard.pressedKeys[Keyboard.KEY_UP] || Keyboard.pressedKeys[Keyboard.KEY_DOWN]) { Static197.aBoolean228 = true; } if (Static197.aBoolean228 && Static16.anInt551 <= 0) { Static16.anInt551 = 20; Static197.aBoolean228 = false; outboundBuffer.p1isaac(21); outboundBuffer.p2add((int)Camera.pitchTarget); outboundBuffer.ip2((int)Camera.yawTarget); } if (GameShell.focus && !Static67.prevFocus) { Static67.prevFocus = true; outboundBuffer.p1isaac(22); outboundBuffer.p1(1); } if (!GameShell.focus && Static67.prevFocus) { Static67.prevFocus = false; outboundBuffer.p1isaac(22); outboundBuffer.p1(0); } if (!Preferences.sentToServer) { outboundBuffer.p1isaac(98); outboundBuffer.p4(Preferences.toInt()); Preferences.sentToServer = true; } Static31.method846(); if (client.gameState != 30) { return; } ChangeLocRequest.loop(); AttachLocRequest.loop(); SoundPlayer.loop(); Static201.anInt1862++; if (Static201.anInt1862 > 750) { Static175.method3279(); return; } Static71.method1444(); NpcList.method2274(); OverheadChat.loop(); if (WorldMap.component != null) { WorldMap.method447(); } // VarpDomain for (i = Static38.poll(true); i != -1; i = Static38.poll(false)) { VarpDomain.refreshMagicVarp(i); VarpDomain.updatedVarps[VarpDomain.updatedVarpsWriterIndex++ & 0x1F] = i; } @Pc(782) int modelId; // DelayedStateChange for (@Pc(709) DelayedStateChange change = DelayedStateChange.poll(); change != null; change = DelayedStateChange.poll()) { type = change.getType(); i = change.getId(); if (type == 1) { VarcDomain.varcs[i] = change.intArg1; VarcDomain.updatedVarcs[VarcDomain.updatedVarcsWriterIndex++ & 0x1F] = i; } else if (type == 2) { VarcDomain.varcstrs[i] = change.stringArg; VarcDomain.updatedVarcstrs[VarcDomain.updatedVarcstrsWriterIndex++ & 0x1F] = i; } else { @Pc(773) Component component; if (type == 3) { component = InterfaceList.getComponent(i); if (!change.stringArg.strEquals(component.text)) { component.text = change.stringArg; InterfaceList.redraw(component); } } else if (type == 4) { component = InterfaceList.getComponent(i); x = change.intArg1; dx = change.intArg2; modelId = change.intArg3; if (component.modelType != x || component.modelId != modelId || dx != component.anInt498) { component.modelId = modelId; component.anInt498 = dx; component.modelType = x; InterfaceList.redraw(component); } } else if (type == 5) { component = InterfaceList.getComponent(i); if (component.modelSeqId != change.intArg1 || change.intArg1 == -1) { component.anInt496 = 1; component.anInt500 = 0; component.modelSeqId = change.intArg1; component.anInt510 = 0; InterfaceList.redraw(component); } } else if (type == 6) { y = change.intArg1; x = y >> 10 & 0x1F; dx = y & 0x1F; modelId = y >> 5 & 0x1F; @Pc(1189) Component local1189 = InterfaceList.getComponent(i); dy = (dx << 3) + (modelId << 11) + (x << 19); if (dy != local1189.color) { local1189.color = dy; InterfaceList.redraw(local1189); } } else if (type == 7) { component = InterfaceList.getComponent(i); @Pc(1145) boolean hidden = change.intArg1 == 1; if (component != null && hidden != component.hidden) { component.hidden = hidden; InterfaceList.redraw(component); } } else if (type == 8) { component = InterfaceList.getComponent(i); if (change.intArg1 != component.modelXAngle || component.modelYAngle != change.intArg3 || change.intArg2 != component.modelZoom) { component.modelXAngle = change.intArg1; component.modelZoom = change.intArg2; component.modelYAngle = change.intArg3; if (component.objId != -1) { if (component.anInt451 > 0) { component.modelZoom = component.modelZoom * 32 / component.anInt451; } else if (component.baseWidth > 0) { component.modelZoom = component.modelZoom * 32 / component.baseWidth; } } InterfaceList.redraw(component); } } else if (type == 9) { component = InterfaceList.getComponent(i); if (change.intArg1 != component.objId || component.objCount != change.intArg3) { component.objId = change.intArg1; component.objCount = change.intArg3; InterfaceList.redraw(component); } } else if (type == 10) { component = InterfaceList.getComponent(i); if (component.modelXOffset != change.intArg1 || change.intArg3 != component.modelZOffset || component.modelYOffset != change.intArg2) { component.modelZOffset = change.intArg3; component.modelYOffset = change.intArg2; component.modelXOffset = change.intArg1; InterfaceList.redraw(component); } } else if (type == 11) { component = InterfaceList.getComponent(i); component.x = component.baseX = change.intArg1; component.yMode = 0; component.xMode = 0; component.y = component.baseY = change.intArg3; InterfaceList.redraw(component); } else if (type == 12) { component = InterfaceList.getComponent(i); int scrollY = change.intArg1; if (component != null && component.type == 0) { if (scrollY > component.scrollMaxV - component.height) { scrollY = component.scrollMaxV - component.height; } if (scrollY < 0) { scrollY = 0; } if (scrollY != component.scrollY) { component.scrollY = scrollY; InterfaceList.redraw(component); } } } else if (type == 13) { component = InterfaceList.getComponent(i); component.modelRotationSpeed = change.intArg1; } } } if (Cross.type != 0) { Cross.milliseconds += 20; if (Cross.milliseconds >= 400) { Cross.type = 0; } } Static178.anInt4247++; if (MiniMenu.pressedInventoryComponent != null) { MiniMenu.anInt2043++; if (MiniMenu.anInt2043 >= 15) { InterfaceList.redraw(MiniMenu.pressedInventoryComponent); MiniMenu.pressedInventoryComponent = null; } } @Pc(1361) Component component; if (Static118.clickedInventoryComponent != null) { InterfaceList.redraw(Static118.clickedInventoryComponent); if (Static149.clickedInventoryComponentX + 5 < Mouse.lastMouseX || Mouse.lastMouseX < Static149.clickedInventoryComponentX - 5 || Static206.clickedInventoryComponentY + 5 < Mouse.lastMouseY || Static206.clickedInventoryComponentY - 5 > Mouse.lastMouseY) { Static123.draggingClickedInventoryObject = true; } Static78.clickedInventoryComponentCycle++; if (Mouse.pressedButton == 0) { if (Static123.draggingClickedInventoryObject && Static78.clickedInventoryComponentCycle >= 5) { if (Static118.clickedInventoryComponent == Static169.mouseOverInventoryInterface && Static4.mouseOverInventoryObjectIndex != Static18.clickedInventoryIndex) { component = Static118.clickedInventoryComponent; @Pc(1363) byte inserting = 0; if (VarpDomain.inserting == 1 && component.clientCode == 206) { inserting = 1; } if (component.objTypes[Static18.clickedInventoryIndex] <= 0) { inserting = 0; } if (InterfaceList.getServerActiveProperties(component).isObjReplaceEnabled()) { int newIndex = Static4.mouseOverInventoryObjectIndex; int currentIndex = Static18.clickedInventoryIndex; component.objTypes[currentIndex] = component.objTypes[newIndex]; component.objCounts[currentIndex] = component.objCounts[newIndex]; component.objTypes[newIndex] = -1; component.objCounts[newIndex] = 0; } else if (inserting == 1) { int currentIndex = Static18.clickedInventoryIndex; int newIndex = Static4.mouseOverInventoryObjectIndex; while (currentIndex != newIndex) { if (currentIndex > newIndex) { component.swapObjs(currentIndex - 1, currentIndex); currentIndex--; } else { component.swapObjs(currentIndex + 1, currentIndex); currentIndex++; } } } else { component.swapObjs(Static18.clickedInventoryIndex, Static4.mouseOverInventoryObjectIndex); } outboundBuffer.p1isaac(231); outboundBuffer.p2(Static4.mouseOverInventoryObjectIndex); outboundBuffer.ip4(Static118.clickedInventoryComponent.id); outboundBuffer.p2add(Static18.clickedInventoryIndex); outboundBuffer.p1sub(inserting); } } else if ((VarpDomain.anInt2952 == 1 || MiniMenu.method4640(MiniMenu.size - 1)) && MiniMenu.size > 2) { Static226.method3901(); } else if (MiniMenu.size > 0) { Static59.method1372(); } Mouse.clickButton = 0; MiniMenu.anInt2043 = 10; Static118.clickedInventoryComponent = null; } } Static146.aBoolean174 = false; Static56.aClass13_12 = null; Static44.aBoolean83 = false; InterfaceList.keyQueueSize = 0; component = Static180.aClass13_22; Static180.aClass13_22 = null; @Pc(1508) Component local1508 = Static43.aClass13_11; Static43.aClass13_11 = null; while (Keyboard.nextKey() && InterfaceList.keyQueueSize < 128) { InterfaceList.keyCodes[InterfaceList.keyQueueSize] = Keyboard.keyCode; InterfaceList.keyChars[InterfaceList.keyQueueSize] = Keyboard.keyChar; InterfaceList.keyQueueSize++; } WorldMap.component = null; if (InterfaceList.topLevelInterface != -1) { Static57.method1320(0, 0, 0, GameShell.canvasWidth, InterfaceList.topLevelInterface, 0, GameShell.canvasHeight); } InterfaceList.transmitTimer++; while (true) { @Pc(1569) Component priorityComponent; @Pc(1560) Component prioritySource; @Pc(1555) HookRequest priorityRequest; do { priorityRequest = (HookRequest) Static4.highPriorityRequests.removeHead(); if (priorityRequest == null) { while (true) { do { priorityRequest = (HookRequest) Static115.mediumPriorityRequests.removeHead(); if (priorityRequest == null) { while (true) { do { priorityRequest = (HookRequest) InterfaceList.lowPriorityRequests.removeHead(); if (priorityRequest == null) { if (WorldMap.component == null) { Static36.anInt3337 = 0; } if (Static40.aClass13_14 != null) { ClientProt.method28(); } if (LoginManager.staffModLevel > 0 && Keyboard.pressedKeys[Keyboard.KEY_CTRL] && Keyboard.pressedKeys[Keyboard.KEY_SHIFT] && MouseWheel.wheelRotation != 0) { y = Player.level - MouseWheel.wheelRotation; if (y < 0) { y = 0; } else if (y > 3) { y = 3; } // Cheat Cheat.teleport(PlayerList.self.movementQueueX[0] + Camera.originX, PlayerList.self.movementQueueZ[0] + Camera.originZ, y); } if (LoginManager.staffModLevel > 0 && Keyboard.pressedKeys[Keyboard.KEY_CTRL] && Keyboard.pressedKeys[Keyboard.KEY_SHIFT]) { if (MiniMenu.anInt1742 != -1) { Cheat.teleport(Camera.originX + MiniMenu.anInt1742, Camera.originZ - -MiniMenu.anInt2954, Player.level); } Static187.anInt4422 = 0; MiniMenu.anInt3096 = 0; } else if (MiniMenu.anInt3096 == 2) { if (MiniMenu.anInt1742 != -1) { outboundBuffer.p1isaac(131); outboundBuffer.mp4(MiniMenu.anInt2512); outboundBuffer.p2add(Camera.originX + MiniMenu.anInt1742); outboundBuffer.ip2add(MiniMenu.anInt506); outboundBuffer.p2add(MiniMenu.anInt2954 + Camera.originZ); Cross.type = 1; Cross.milliseconds = 0; Cross.y = Mouse.clickY; Cross.x = Mouse.clickX; } MiniMenu.anInt3096 = 0; } else if (Static187.anInt4422 == 2) { if (MiniMenu.anInt1742 != -1) { outboundBuffer.p1isaac(179); outboundBuffer.p2(Camera.originZ + MiniMenu.anInt2954); outboundBuffer.p2(MiniMenu.anInt1742 + Camera.originX); Cross.milliseconds = 0; Cross.type = 1; Cross.x = Mouse.clickX; Cross.y = Mouse.clickY; } Static187.anInt4422 = 0; } else if (MiniMenu.anInt1742 != -1 && MiniMenu.anInt3096 == 0 && Static187.anInt4422 == 0) { @Pc(1871) boolean local1871 = PathFinder.findPath(PlayerList.self.movementQueueZ[0], 0, 0, true, 0, MiniMenu.anInt1742, 0, 0, 0, MiniMenu.anInt2954, PlayerList.self.movementQueueX[0]); if (local1871) { Cross.y = Mouse.clickY; Cross.milliseconds = 0; Cross.x = Mouse.clickX; Cross.type = 1; } } MiniMenu.anInt1742 = -1; Static7.method843(); if (Static180.aClass13_22 != component) { if (component != null) { InterfaceList.redraw(component); } if (Static180.aClass13_22 != null) { InterfaceList.redraw(Static180.aClass13_22); } } if (local1508 != Static43.aClass13_11 && Static191.anInt4504 == Static133.anInt5235) { if (local1508 != null) { InterfaceList.redraw(local1508); } if (Static43.aClass13_11 != null) { InterfaceList.redraw(Static43.aClass13_11); } } if (Static43.aClass13_11 == null) { if (Static133.anInt5235 > 0) { Static133.anInt5235--; } } else if (Static133.anInt5235 < Static191.anInt4504) { Static133.anInt5235++; if (Static191.anInt4504 == Static133.anInt5235) { InterfaceList.redraw(Static43.aClass13_11); } } if (Camera.cameraType == 1) { Camera.method4273(); } else if (Camera.cameraType == 2) { Camera.updateLockedCamera(); } else { Camera.updateLoginScreenCamera(); } for (y = 0; y < 5; y++) { @Pc(2001) int local2001 = Static31.anIntArray76[y]++; } y = Mouse.getIdleLoops(); x = Keyboard.getIdleLoops(); if (y > 15000 && x > 15000) { Static267.anInt5775 = 250; Mouse.setIdleLoops(14500); outboundBuffer.p1isaac(245); } if (Static33.openUrlRequest != null && Static33.openUrlRequest.status == 1) { if (Static33.openUrlRequest.result != null) { Static169.openUrl(Static175.url, Static164.newTab); } Static175.url = null; Static33.openUrlRequest = null; Static164.newTab = false; } Static131.anInt3251++; MiniMap.anInt2252++; Static143.anInt3486++; if (Static143.anInt3486 > 500) { Static143.anInt3486 = 0; modelId = (int) (Math.random() * 8.0D); if ((modelId & 0x4) == 4) { Static230.anInt5161 += Static220.anInt4941; } if ((modelId & 0x2) == 2) { Static206.anInt4774 += anInt659; } if ((modelId & 0x1) == 1) { Static132.anInt3291 += Static248.anInt4229; } } if (MiniMap.anInt2252 > 500) { MiniMap.anInt2252 = 0; modelId = (int) (Math.random() * 8.0D); if ((modelId & 0x1) == 1) { MiniMap.anInt1814 += MiniMap.anInt5755; } if ((modelId & 0x2) == 2) { MiniMap.anInt4130 += MiniMap.anInt4262; } } if (Static132.anInt3291 < -50) { Static248.anInt4229 = 2; } if (MiniMap.anInt1814 < -60) { MiniMap.anInt5755 = 2; } if (MiniMap.anInt4130 < -20) { MiniMap.anInt4262 = 1; } if (Static206.anInt4774 < -55) { anInt659 = 2; } if (Static206.anInt4774 > 55) { anInt659 = -2; } if (Static230.anInt5161 < -40) { Static220.anInt4941 = 1; } if (Static132.anInt3291 > 50) { Static248.anInt4229 = -2; } if (Static230.anInt5161 > 40) { Static220.anInt4941 = -1; } if (MiniMap.anInt4130 > 10) { MiniMap.anInt4262 = -1; } if (MiniMap.anInt1814 > 60) { MiniMap.anInt5755 = -2; } if (Static131.anInt3251 > 50) { outboundBuffer.p1isaac(93); } if (verifyIdChanged) { transmitVerifyId(); verifyIdChanged = false; } try { if (socket != null && outboundBuffer.offset > 0) { socket.write(outboundBuffer.data, outboundBuffer.offset); Static131.anInt3251 = 0; outboundBuffer.offset = 0; } } catch (@Pc(2266) IOException local2266) { Static175.method3279(); } return; } prioritySource = priorityRequest.source; if (prioritySource.createdComponentId < 0) { break; } priorityComponent = InterfaceList.getComponent(prioritySource.layer); } while (priorityComponent == null || priorityComponent.createdComponents == null || prioritySource.createdComponentId >= priorityComponent.createdComponents.length || prioritySource != priorityComponent.createdComponents[prioritySource.createdComponentId]); ScriptRunner.run(priorityRequest); } } prioritySource = priorityRequest.source; if (prioritySource.createdComponentId < 0) { break; } priorityComponent = InterfaceList.getComponent(prioritySource.layer); } while (priorityComponent == null || priorityComponent.createdComponents == null || priorityComponent.createdComponents.length <= prioritySource.createdComponentId || priorityComponent.createdComponents[prioritySource.createdComponentId] != prioritySource); ScriptRunner.run(priorityRequest); } } prioritySource = priorityRequest.source; if (prioritySource.createdComponentId < 0) { break; } priorityComponent = InterfaceList.getComponent(prioritySource.layer); } while (priorityComponent == null || priorityComponent.createdComponents == null || prioritySource.createdComponentId >= priorityComponent.createdComponents.length || priorityComponent.createdComponents[prioritySource.createdComponentId] != prioritySource); ScriptRunner.run(priorityRequest); } } @OriginalMember(owner = "client!ta", name = "a", descriptor = "(I)V") public static void npcCombat() { for (@Pc(3) int i = 0; i < extendedCount; i++) { @Pc(10) int extendedId = extendedIds[i]; @Pc(14) Npc npc = NpcList.npcs[extendedId]; @Pc(18) int local18 = inboundBuffer.g1(); @Pc(43) int local43; @Pc(47) int local47; //idk if ((local18 & 0x8) != 0) { local18 += inboundBuffer.g1() << 8; } boolean hasHitsplat = (local18 & 0x40) != 0; if (hasHitsplat) { local43 = inboundBuffer.g1(); // Hit value local47 = inboundBuffer.g1neg(); // Color npc.addHit(local47, client.loop, local43); npc.hitpointsBarVisibleUntil = client.loop + 300; npc.hitpointsBar = inboundBuffer.g1sub(); } boolean hasSecondaryHitsplat = (local18 & 0x2) != 0; if (hasSecondaryHitsplat) { local43 = inboundBuffer.g1neg(); // Hit value local47 = inboundBuffer.g1sub(); // Color npc.addHit(local47, client.loop, local43); } boolean hasAnimation = (local18 & 0x10) != 0; if (hasAnimation) { local43 = inboundBuffer.g2(); // Animation ID local47 = inboundBuffer.g1(); // Sequence if (local43 == 65535) { local43 = -1; } Static223.animateNpc(local47, local43, npc); } boolean hasFaceEntity = (local18 & 0x4) != 0; if (hasFaceEntity) { npc.faceEntity = inboundBuffer.g2add(); if (npc.faceEntity == 65535) { npc.faceEntity = -1; } } boolean isKillingBlow = (local18 & 0x80) != 0; if (isKillingBlow) { local43 = inboundBuffer.g2add(); if (local43 == 65535) { local43 = -1; } local47 = inboundBuffer.ig4(); @Pc(147) boolean local147 = local43 == -1 || npc.spotAnimId == -1 || SeqTypeList.get(SpotAnimTypeList.get(local43).seqId).forcedPriority >= SeqTypeList.get(SpotAnimTypeList.get(npc.spotAnimId).seqId).forcedPriority; if (local147) { npc.spotAnimId = local43; npc.spotAnimStart = (local47 & 0xFFFF) + client.loop; npc.anInt3361 = 0; npc.anInt3399 = 0; npc.spotAnimY = local47 >> 16; npc.anInt3418 = 1; if (npc.spotAnimStart > client.loop) { npc.anInt3399 = -1; } if (npc.spotAnimId != -1 && npc.spotAnimStart == client.loop) { @Pc(227) int seqId = SpotAnimTypeList.get(npc.spotAnimId).seqId; if (seqId != -1) { @Pc(236) SeqType seqType = SeqTypeList.get(seqId); if (seqType.frames != null) { SoundPlayer.playSeqSound(npc.zFine, seqType, npc.xFine, false, 0); } } } } } boolean hasSound = (local18 & 0x1) != 0; if (hasSound) { if (npc.type.hasAreaSound()) { AreaSoundManager.remove(npc); } npc.setNpcType(NpcTypeList.get(inboundBuffer.ig2())); npc.setSize(npc.type.size); npc.anInt3365 = npc.type.basId; if (npc.type.hasAreaSound()) { AreaSoundManager.add(npc.movementQueueZ[0], null, 0, npc, npc.movementQueueX[0], Player.level, null); } } boolean hasChatMessage = (local18 & 0x20) != 0; if (hasChatMessage) { npc.chatMessage = inboundBuffer.gjstr(); npc.chatLoops = 100; } if ((local18 & 0x100) != 0) { local43 = inboundBuffer.g1neg(); @Pc(331) int[] local331 = new int[local43]; @Pc(334) int[] local334 = new int[local43]; @Pc(337) int[] local337 = new int[local43]; for (@Pc(339) int i1 = 0; i1 < local43; i1++) { @Pc(350) int local350 = inboundBuffer.ig2(); if (local350 == 65535) { local350 = -1; } local331[i1] = local350; local334[i1] = inboundBuffer.g1sub(); local337[i1] = inboundBuffer.g2(); } Static159.method3037(local337, npc, local334, local331); } boolean hasFaceLocation = (local18 & 0x200) != 0; if (hasFaceLocation) { npc.faceX = inboundBuffer.g2add(); npc.faceY = inboundBuffer.g2(); } } } @OriginalMember(owner = "client!gm", name = "h", descriptor = "(I)V") public static void readNpcPacket() { extendedCount = 0; removedCount = 0; clearAreaNPCs(); loadAreaNPCs(); npcCombat(); @Pc(19) int i; for (i = 0; i < removedCount; i++) { @Pc(30) int removedId = removedIds[i]; if (NpcList.npcs[removedId].lastSeenLoop != client.loop) { if (NpcList.npcs[removedId].type.hasAreaSound()) { AreaSoundManager.remove(NpcList.npcs[removedId]); } NpcList.npcs[removedId].setNpcType(null); NpcList.npcs[removedId] = null; } } if (length != inboundBuffer.offset) { throw new RuntimeException("gnp1 pos:" + inboundBuffer.offset + " psize:" + length); } for (i = 0; i < NpcList.size; i++) { if (NpcList.npcs[NpcList.ids[i]] == null) { throw new RuntimeException("gnp2 pos:" + i + " size:" + NpcList.size); } } } @OriginalMember(owner = "client!dm", name = "a", descriptor = "(B)V") public static void clearAreaNPCs() { inboundBuffer.accessBits(); @Pc(13) int npcsInArea = inboundBuffer.gBits(8); @Pc(22) int i; if (NpcList.size > npcsInArea) { for (i = npcsInArea; i < NpcList.size; i++) { removedIds[removedCount++] = NpcList.ids[i]; } } if (NpcList.size < npcsInArea) { throw new RuntimeException("gnpov1"); } NpcList.size = 0; for (i = 0; i < npcsInArea; i++) { @Pc(61) int id = NpcList.ids[i]; @Pc(65) Npc npc = NpcList.npcs[id]; @Pc(70) int local70 = inboundBuffer.gBits(1); if (local70 == 0) { NpcList.ids[NpcList.size++] = id; npc.lastSeenLoop = client.loop; } else { @Pc(92) int local92 = inboundBuffer.gBits(2); if (local92 == 0) { NpcList.ids[NpcList.size++] = id; npc.lastSeenLoop = client.loop; extendedIds[extendedCount++] = id; } else { @Pc(139) int local139; @Pc(149) int local149; if (local92 == 1) { NpcList.ids[NpcList.size++] = id; npc.lastSeenLoop = client.loop; local139 = inboundBuffer.gBits(3); npc.move(1, local139); local149 = inboundBuffer.gBits(1); if (local149 == 1) { extendedIds[extendedCount++] = id; } } else if (local92 == 2) { NpcList.ids[NpcList.size++] = id; npc.lastSeenLoop = client.loop; if (inboundBuffer.gBits(1) == 1) { local139 = inboundBuffer.gBits(3); npc.move(2, local139); local149 = inboundBuffer.gBits(3); npc.move(2, local149); } else { local139 = inboundBuffer.gBits(3); npc.move(0, local139); } local139 = inboundBuffer.gBits(1); if (local139 == 1) { extendedIds[extendedCount++] = id; } } else if (local92 == 3) { removedIds[removedCount++] = id; } } } } } @OriginalMember(owner = "client!wj", name = "a", descriptor = "(I)V") public static void loadAreaNPCs() { while (true) { if (inboundBuffer.method2241(length) >= 27) { @Pc(14) int npcIndex = inboundBuffer.gBits(15); if (npcIndex != 32767) { @Pc(19) boolean local19 = false; if (NpcList.npcs[npcIndex] == null) { local19 = true; NpcList.npcs[npcIndex] = new Npc(); } @Pc(37) Npc npc = NpcList.npcs[npcIndex]; NpcList.ids[NpcList.size++] = npcIndex; npc.lastSeenLoop = client.loop; if (npc.type != null && npc.type.hasAreaSound()) { AreaSoundManager.remove(npc); } @Pc(66) int local66 = inboundBuffer.gBits(1); @Pc(73) int angle = PathingEntity.ANGLES[inboundBuffer.gBits(3)]; if (local19) { npc.anInt3400 = npc.anInt3381 = angle; } @Pc(86) int local86 = inboundBuffer.gBits(1); if (local86 == 1) { extendedIds[extendedCount++] = npcIndex; } @Pc(105) int local105 = inboundBuffer.gBits(5); npc.setNpcType(NpcTypeList.get(inboundBuffer.gBits(14))); if (local105 > 15) { local105 -= 32; } @Pc(124) int local124 = inboundBuffer.gBits(5); if (local124 > 15) { local124 -= 32; } npc.setSize(npc.type.size); npc.anInt3365 = npc.type.basId; npc.anInt3376 = npc.type.anInt3733; if (npc.anInt3376 == 0) { npc.anInt3381 = 0; } npc.method2683(npc.getSize(), PlayerList.self.movementQueueX[0] + local124, local105 + PlayerList.self.movementQueueZ[0], local66 == 1); if (npc.type.hasAreaSound()) { AreaSoundManager.add(npc.movementQueueZ[0], null, 0, npc, npc.movementQueueX[0], Player.level, null); } continue; } } inboundBuffer.accessBytes(); return; } } @OriginalMember(owner = "client!uc", name = "a", descriptor = "(IB)Z") public static boolean setVerifyId(@OriginalArg(0) int arg0) { verifyId = arg0 + 1 & 0xFFFF; verifyIdChanged = true; return true; } @OriginalMember(owner = "client!fk", name = "c", descriptor = "(I)V") public static void transmitVerifyId() { outboundBuffer.p1isaac(177); outboundBuffer.p2(verifyId); } @OriginalMember(owner = "client!wc", name = "a", descriptor = "(Lclient!wa;I)V") public static void writeRandom(@OriginalArg(0) Buffer buffer) { if (client.uid != null) { try { client.uid.seek(0L); client.uid.write(buffer.data, buffer.offset, 24); } catch (@Pc(16) Exception local16) { } } buffer.offset += 24; } }