rt4-client/client/src/main/java/rt4/Player.java

515 lines
21 KiB
Java

package rt4;
import org.openrs2.deob.annotation.OriginalArg;
import org.openrs2.deob.annotation.OriginalClass;
import org.openrs2.deob.annotation.OriginalMember;
import org.openrs2.deob.annotation.Pc;
@OriginalClass("client!e")
public final class Player extends PathingEntity {
@OriginalMember(owner = "client!mj", name = "d", descriptor = "[Lclient!na;")
public static final JagString[] options = new JagString[8];
@OriginalMember(owner = "client!pg", name = "ab", descriptor = "[I")
public static final int[] cursors = new int[8];
@OriginalMember(owner = "client!a", name = "f", descriptor = "[Z")
public static final boolean[] secondaryOptions = new boolean[8];
@OriginalMember(owner = "client!pa", name = "P", descriptor = "Lclient!na;")
public static JagString password = JagString.EMPTY;
@OriginalMember(owner = "client!pa", name = "S", descriptor = "Lclient!na;")
public static JagString usernameInput = JagString.EMPTY;
@OriginalMember(owner = "client!ba", name = "w", descriptor = "I")
public static int inTutorialIsland = 0;
@OriginalMember(owner = "client!ee", name = "b", descriptor = "I")
public static int level;
@OriginalMember(owner = "client!bb", name = "E", descriptor = "I")
public static int runEnergy = 0;
@OriginalMember(owner = "client!ug", name = "o", descriptor = "I")
public static int weight = 0;
@OriginalMember(owner = "client!jl", name = "H", descriptor = "I")
public static int worldId = -1;
@OriginalMember(owner = "client!em", name = "B", descriptor = "I")
public static int rebootTimer = 0;
@OriginalMember(owner = "client!hm", name = "gb", descriptor = "J")
public static long name37;
@OriginalMember(owner = "client!sm", name = "k", descriptor = "Lsignlink!im;")
public static PrivilegedRequest lastLogAddress;
@OriginalMember(owner = "client!e", name = "Bc", descriptor = "Lclient!hh;")
public PlayerAppearance appearance;
@OriginalMember(owner = "client!e", name = "Mc", descriptor = "Lclient!na;")
public JagString username;
@OriginalMember(owner = "client!e", name = "tc", descriptor = "I")
public int anInt1649 = -1;
@OriginalMember(owner = "client!e", name = "wc", descriptor = "I")
private int anInt1651 = 0;
@OriginalMember(owner = "client!e", name = "uc", descriptor = "I")
public int anInt1650 = 0;
@OriginalMember(owner = "client!e", name = "yc", descriptor = "I")
public int combatLevel = 0;
@OriginalMember(owner = "client!e", name = "Fc", descriptor = "I")
public int combatLevelWithSummoning = 0;
@OriginalMember(owner = "client!e", name = "Cc", descriptor = "I")
public int anInt1654 = -1;
@OriginalMember(owner = "client!e", name = "qc", descriptor = "I")
public int anInt1648 = -1;
@OriginalMember(owner = "client!e", name = "Pc", descriptor = "I")
public int soundRadius = 0;
@OriginalMember(owner = "client!e", name = "Hc", descriptor = "I")
public int anInt1658 = -1;
@OriginalMember(owner = "client!e", name = "Sc", descriptor = "I")
public int combatRange = -1;
@OriginalMember(owner = "client!e", name = "Oc", descriptor = "Z")
public boolean aBoolean98 = false;
@OriginalMember(owner = "client!e", name = "Xc", descriptor = "I")
public int skill = 0;
@OriginalMember(owner = "client!e", name = "Vc", descriptor = "I")
public int anInt1669 = -1;
@OriginalMember(owner = "client!e", name = "Wc", descriptor = "I")
public int anInt1670 = -1;
@OriginalMember(owner = "client!pa", name = "a", descriptor = "(IIILclient!e;)V")
public static void animate(@OriginalArg(1) int arg0, @OriginalArg(2) int arg1, @OriginalArg(3) Player arg2) {
if (arg1 == arg2.seqId && arg1 != -1) {
@Pc(89) SeqType local89 = SeqTypeList.get(arg1);
@Pc(92) int local92 = local89.anInt5347;
if (local92 == 1) {
arg2.anInt3420 = arg0;
arg2.anInt3360 = 0;
arg2.anInt3373 = 1;
arg2.anInt3425 = 0;
arg2.anInt3371 = 0;
SoundPlayer.playSeqSound(arg2.zFine, local89, arg2.xFine, PlayerList.self == arg2, arg2.anInt3425);
}
if (local92 == 2) {
arg2.anInt3371 = 0;
}
} else if (arg1 == -1 || arg2.seqId == -1 || SeqTypeList.get(arg1).forcedPriority >= SeqTypeList.get(arg2.seqId).forcedPriority) {
arg2.anInt3373 = 1;
arg2.anInt3425 = 0;
arg2.anInt3420 = arg0;
arg2.anInt3405 = arg2.movementQueueSize;
arg2.anInt3371 = 0;
arg2.anInt3360 = 0;
arg2.seqId = arg1;
if (arg2.seqId != -1) {
SoundPlayer.playSeqSound(arg2.zFine, SeqTypeList.get(arg2.seqId), arg2.xFine, arg2 == PlayerList.self, arg2.anInt3425);
}
}
}
@OriginalMember(owner = "client!ci", name = "a", descriptor = "([I[ILclient!e;B[I)V")
public static void method865(@OriginalArg(0) int[] arg0, @OriginalArg(1) int[] arg1, @OriginalArg(2) Player arg2, @OriginalArg(4) int[] arg3) {
for (@Pc(7) int local7 = 0; local7 < arg1.length; local7++) {
@Pc(20) int local20 = arg1[local7];
@Pc(24) int local24 = arg3[local7];
@Pc(28) int local28 = arg0[local7];
@Pc(30) int local30 = 0;
while (local24 != 0 && local30 < arg2.aClass147Array3.length) {
if ((local24 & 0x1) != 0) {
if (local20 == -1) {
arg2.aClass147Array3[local30] = null;
} else {
@Pc(68) SeqType local68 = SeqTypeList.get(local20);
@Pc(71) int local71 = local68.anInt5347;
@Pc(76) Npc_Class147 local76 = arg2.aClass147Array3[local30];
if (local76 != null) {
if (local20 == local76.anInt5396) {
if (local71 == 0) {
local76 = arg2.aClass147Array3[local30] = null;
} else if (local71 == 1) {
local76.anInt5400 = 0;
local76.anInt5398 = 1;
local76.anInt5399 = 0;
local76.anInt5408 = local28;
local76.anInt5404 = 0;
SoundPlayer.playSeqSound(arg2.zFine, local68, arg2.xFine, arg2 == PlayerList.self, 0);
} else if (local71 == 2) {
local76.anInt5400 = 0;
}
} else if (local68.forcedPriority >= SeqTypeList.get(local76.anInt5396).forcedPriority) {
local76 = arg2.aClass147Array3[local30] = null;
}
}
if (local76 == null) {
local76 = arg2.aClass147Array3[local30] = new Npc_Class147();
local76.anInt5396 = local20;
local76.anInt5398 = 1;
local76.anInt5404 = 0;
local76.anInt5408 = local28;
local76.anInt5399 = 0;
local76.anInt5400 = 0;
SoundPlayer.playSeqSound(arg2.zFine, local68, arg2.xFine, arg2 == PlayerList.self, 0);
}
}
}
local30++;
local24 >>>= 0x1;
}
}
}
@OriginalMember(owner = "client!la", name = "a", descriptor = "(ILclient!e;)I")
public static int getSound(@OriginalArg(1) Player arg0) {
@Pc(14) int local14 = arg0.anInt1654;
@Pc(18) BasType local18 = arg0.getBasType();
if (local18.idleAnimationId == arg0.movementSeqId) {
local14 = arg0.anInt1648;
} else if (local18.runAnimationId == arg0.movementSeqId || arg0.movementSeqId == local18.runAnimationId2 || arg0.movementSeqId == local18.runAnimationId4 || local18.runAnimationId3 == arg0.movementSeqId) {
local14 = arg0.anInt1670;
} else if (arg0.movementSeqId == local18.anInt1062 || arg0.movementSeqId == local18.anInt1042 || arg0.movementSeqId == local18.anInt1048 || arg0.movementSeqId == local18.anInt1066) {
local14 = arg0.anInt1658;
}
return local14;
}
@OriginalMember(owner = "client!um", name = "a", descriptor = "(Z)V")
public static void setTutorialIsland() {
inTutorialIsland = 0;
@Pc(17) int local17 = Camera.originX + (PlayerList.self.xFine >> 7);
@Pc(25) int local25 = (PlayerList.self.zFine >> 7) + Camera.originZ;
if (local17 >= 3053 && local17 <= 3156 && local25 >= 3056 && local25 <= 3136) {
inTutorialIsland = 1;
}
if (local17 >= 3072 && local17 <= 3118 && local25 >= 9492 && local25 <= 9535) {
inTutorialIsland = 1;
}
if (inTutorialIsland == 1 && local17 >= 3139 && local17 <= 3199 && local25 >= 3008 && local25 <= 3062) {
inTutorialIsland = 0;
}
}
@OriginalMember(owner = "client!e", name = "c", descriptor = "(B)I")
@Override
public final int getSize() {
return this.appearance == null || this.appearance.anInt2492 == -1 ? super.getSize() : NpcTypeList.get(this.appearance.anInt2492).size;
}
@OriginalMember(owner = "client!e", name = "b", descriptor = "(I)I")
@Override
protected final int method2688() {
return this.anInt3365;
}
@OriginalMember(owner = "client!e", name = "a", descriptor = "(ILclient!wa;)V")
public final void decodeAppearance(@OriginalArg(1) Buffer arg0) {
arg0.offset = 0;
@Pc(20) int local20 = arg0.g1();
@Pc(22) int local22 = -1;
@Pc(26) int local26 = local20 & 0x1;
@Pc(37) boolean local37 = (local20 & 0x4) != 0;
@Pc(41) int local41 = super.getSize();
@Pc(44) int[] local44 = new int[12];
this.method2692((local20 >> 3 & 0x7) + 1);
this.anInt1651 = local20 >> 6 & 0x3;
this.xFine += (this.getSize() - local41) * 64;
this.zFine += (this.getSize() - local41) * 64;
this.anInt1669 = arg0.g1s();
this.anInt1649 = arg0.g1s();
this.anInt1650 = 0;
@Pc(111) int local111;
@Pc(127) int local127;
@Pc(134) int local134;
@Pc(175) int local175;
for (@Pc(102) int local102 = 0; local102 < 12; local102++) {
local111 = arg0.g1();
if (local111 == 0) {
local44[local102] = 0;
} else {
local127 = arg0.g1();
local134 = (local111 << 8) + local127;
if (local102 == 0 && local134 == 65535) {
local22 = arg0.g2();
this.anInt1650 = arg0.g1();
break;
}
if (local134 >= 32768) {
local134 = Equipment.anIntArray455[local134 - 32768];
local44[local102] = local134 | 0x40000000;
local175 = ObjTypeList.get(local134).team;
if (local175 != 0) {
this.anInt1650 = local175;
}
} else {
local44[local102] = local134 - 256 | Integer.MIN_VALUE;
}
}
}
@Pc(197) int[] local197 = new int[5];
for (local111 = 0; local111 < 5; local111++) {
local127 = arg0.g1();
if (local127 < 0 || local127 >= PlayerAppearance.aShortArrayArray2[local111].length) {
local127 = 0;
}
local197[local111] = local127;
}
this.anInt3365 = arg0.g2();
@Pc(236) long local236 = arg0.g8();
this.username = Base37.decode37(local236).toTitleCase();
this.combatLevel = arg0.g1();
if (local37) {
this.skill = arg0.g2();
this.combatLevelWithSummoning = this.combatLevel;
this.combatRange = -1;
} else {
this.skill = 0;
this.combatLevelWithSummoning = arg0.g1();
this.combatRange = arg0.g1();
if (this.combatRange == 255) {
this.combatRange = -1;
}
}
local134 = this.soundRadius;
this.soundRadius = arg0.g1();
if (this.soundRadius == 0) {
AreaSoundManager.remove(this);
} else {
@Pc(309) int local309 = this.anInt1658;
@Pc(312) int local312 = this.anInt1654;
@Pc(315) int local315 = this.anInt1670;
local175 = this.anInt1648;
this.anInt1648 = arg0.g2();
this.anInt1658 = arg0.g2();
this.anInt1654 = arg0.g2();
this.anInt1670 = arg0.g2();
if (this.soundRadius != local134 || this.anInt1648 != local175 || this.anInt1658 != local309 || local312 != this.anInt1654 || this.anInt1670 != local315) {
Static214.method4359(this);
}
}
if (this.appearance == null) {
this.appearance = new PlayerAppearance();
}
local175 = this.appearance.anInt2492;
this.appearance.method1950(local197, local22, local26 == 1, local44, this.anInt3365);
if (local175 != local22) {
this.xFine = this.movementQueueX[0] * 128 + this.getSize() * 64;
this.zFine = this.movementQueueZ[0] * 128 + this.getSize() * 64;
}
if (this.aClass47_Sub1_5 != null) {
this.aClass47_Sub1_5.method1646();
}
}
@OriginalMember(owner = "client!e", name = "a", descriptor = "(IIIIIIIIJILclient!ga;)V")
@Override
public final void render(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5, @OriginalArg(6) int arg6, @OriginalArg(7) int arg7, @OriginalArg(8) long arg8, @OriginalArg(9) int arg9, @OriginalArg(10) ParticleSystem arg10) {
if (this.appearance == null) {
return;
}
@Pc(25) SeqType local25 = this.seqId != -1 && this.anInt3420 == 0 ? SeqTypeList.get(this.seqId) : null;
@Pc(54) SeqType local54 = this.movementSeqId == -1 || this.aBoolean98 || this.movementSeqId == this.getBasType().idleAnimationId && local25 != null ? null : SeqTypeList.get(this.movementSeqId);
@Pc(76) Model local76 = this.appearance.method1954(this.aClass147Array3, this.anInt3373, local54, local25, this.anInt3396, this.anInt3388, this.anInt3360, this.anInt3425, this.anInt3407);
@Pc(79) int local79 = Static198.method1029();
if (GlRenderer.enabled && GameShell.maxMemory < 96 && local79 > 50) {
Static16.method501();
}
@Pc(102) int local102;
if (client.modeWhat != 0 && local79 < 50) {
local102 = 50 - local79;
while (Static105.anInt2863 < local102) {
Static51.aByteArrayArray8[Static105.anInt2863] = new byte[102400];
Static105.anInt2863++;
}
while (Static105.anInt2863 > local102) {
Static105.anInt2863--;
Static51.aByteArrayArray8[Static105.anInt2863] = null;
}
}
if (local76 == null) {
return;
}
this.anInt3413 = local76.getMaxY();
@Pc(184) Model local184;
if (Preferences.characterShadowsOn && (this.appearance.anInt2492 == -1 || NpcTypeList.get(this.appearance.anInt2492).shadow)) {
local184 = ShadowModelList.method1043(160, this.aBoolean171, local54 == null ? local25 : local54, this.xFine, 0, this.zFine, 0, 1, local76, arg0, local54 == null ? this.anInt3425 : this.anInt3407, this.anInt3424, 240);
if (GlRenderer.enabled) {
@Pc(188) float local188 = GlRenderer.method4179();
@Pc(190) float local190 = GlRenderer.method4166();
GlRenderer.disableDepthMask();
GlRenderer.method4152(local188, local190 - 150.0F);
local184.render(0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, -1L, arg9, null);
GlRenderer.enableDepthMask();
GlRenderer.method4152(local188, local190);
} else {
local184.render(0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, -1L, arg9, null);
}
}
if (PlayerList.self == this) {
for (local102 = Static143.hintMapMarkers.length - 1; local102 >= 0; local102--) {
@Pc(245) MapMarker local245 = Static143.hintMapMarkers[local102];
if (local245 != null && local245.playerModelId != -1) {
@Pc(291) int local291;
@Pc(302) int local302;
if (local245.type == 1 && local245.actorTargetId >= 0 && NpcList.npcs.length > local245.actorTargetId) {
@Pc(278) Npc local278 = NpcList.npcs[local245.actorTargetId];
if (local278 != null) {
local291 = local278.xFine / 32 - PlayerList.self.xFine / 32;
local302 = local278.zFine / 32 - PlayerList.self.zFine / 32;
this.method1263(null, local302, local76, local291, arg5, arg9, arg0, arg7, arg4, arg3, arg1, local245.playerModelId, arg2, arg6);
}
}
if (local245.type == 2) {
@Pc(340) int local340 = (local245.targetX - Camera.originX) * 4 + 2 - PlayerList.self.xFine / 32;
local291 = (local245.anInt4046 - Camera.originZ) * 4 + 2 - PlayerList.self.zFine / 32;
this.method1263(null, local291, local76, local340, arg5, arg9, arg0, arg7, arg4, arg3, arg1, local245.playerModelId, arg2, arg6);
}
if (local245.type == 10 && local245.actorTargetId >= 0 && PlayerList.players.length > local245.actorTargetId) {
@Pc(395) Player local395 = PlayerList.players[local245.actorTargetId];
if (local395 != null) {
local291 = local395.xFine / 32 - PlayerList.self.xFine / 32;
local302 = local395.zFine / 32 - PlayerList.self.zFine / 32;
this.method1263(null, local302, local76, local291, arg5, arg9, arg0, arg7, arg4, arg3, arg1, local245.playerModelId, arg2, arg6);
}
}
}
}
}
this.method2687(local76);
this.method2685(local76, arg0);
local184 = null;
if (!this.aBoolean98 && this.spotAnimId != -1 && this.anInt3399 != -1) {
@Pc(471) SpotAnimType local471 = SpotAnimTypeList.get(this.spotAnimId);
local184 = local471.constructModel(this.anInt3418, this.anInt3399, this.anInt3361);
if (local184 != null) {
local184.translate(0, -this.spotAnimY, 0);
if (local471.aBoolean100) {
if (Static101.anInt2640 != 0) {
local184.rotateX(Static101.anInt2640);
}
if (Static102.anInt2680 != 0) {
local184.rotateZ(Static102.anInt2680);
}
if (Static62.anInt1938 != 0) {
local184.translate(0, Static62.anInt1938, 0);
}
}
}
}
@Pc(515) Model local515 = null;
if (!this.aBoolean98 && this.attachment != null) {
if (client.loop >= this.anInt3375) {
this.attachment = null;
}
if (this.anInt3390 <= client.loop && this.anInt3375 > client.loop) {
if (this.attachment instanceof Loc) {
local515 = (Model) ((Loc) this.attachment).method1049();
} else {
local515 = (Model) this.attachment;
}
local515.translate(this.attachmentXFine - this.xFine, this.attachmentY + -this.anInt3424, this.attachmentZFine - this.zFine);
if (this.anInt3400 == 512) {
local515.method4578();
} else if (this.anInt3400 == 1024) {
local515.method4552();
} else if (this.anInt3400 == 1536) {
local515.method4563();
}
}
}
if (GlRenderer.enabled) {
local76.aBoolean303 = true;
local76.render(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, this.aClass47_Sub1_5);
if (local184 != null) {
local184.aBoolean303 = true;
local184.render(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, this.aClass47_Sub1_5);
}
} else {
if (local184 != null) {
local76 = ((SoftwareModel) local76).method4588(local184);
}
if (local515 != null) {
local76 = ((SoftwareModel) local76).method4588(local515);
}
local76.aBoolean303 = true;
local76.render(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, this.aClass47_Sub1_5);
}
if (local515 == null) {
return;
}
if (this.anInt3400 == 512) {
local515.method4563();
} else if (this.anInt3400 == 1024) {
local515.method4552();
} else if (this.anInt3400 == 1536) {
local515.method4578();
}
local515.translate(this.xFine - this.attachmentXFine, -this.attachmentY + this.anInt3424, this.zFine - this.attachmentZFine);
}
@OriginalMember(owner = "client!e", name = "a", descriptor = "(Lclient!ga;ILclient!ak;IIIIIIIIIIII)V")
private void method1263(@OriginalArg(0) ParticleSystem arg0, @OriginalArg(1) int arg1, @OriginalArg(2) Model arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5, @OriginalArg(7) int arg6, @OriginalArg(8) int arg7, @OriginalArg(9) int arg8, @OriginalArg(10) int arg9, @OriginalArg(11) int arg10, @OriginalArg(12) int arg11, @OriginalArg(13) int arg12, @OriginalArg(14) int arg13) {
@Pc(12) int local12 = arg3 * arg3 + arg1 * arg1;
if (local12 < 16 || local12 > 360000) {
return;
}
@Pc(34) int local34 = (int) (Math.atan2((double) arg3, (double) arg1) * 325.949D) & 0x7FF;
@Pc(46) Model local46 = HintArrowManager.getModel(local34, this.zFine, arg11, this.xFine, arg2, this.anInt3424);
if (local46 == null) {
return;
}
if (!GlRenderer.enabled) {
local46.render(0, arg10, arg12, arg9, arg8, arg4, arg13, arg7, -1L, arg5, arg0);
return;
}
@Pc(52) float local52 = GlRenderer.method4179();
@Pc(54) float local54 = GlRenderer.method4166();
GlRenderer.disableDepthMask();
GlRenderer.method4152(local52, local54 - 150.0F);
local46.render(0, arg10, arg12, arg9, arg8, arg4, arg13, arg7, -1L, arg5, arg0);
GlRenderer.enableDepthMask();
GlRenderer.method4152(local52, local54);
}
@OriginalMember(owner = "client!e", name = "a", descriptor = "(B)Z")
@Override
public final boolean method2682() {
return this.appearance != null;
}
@OriginalMember(owner = "client!e", name = "e", descriptor = "(I)Lclient!na;")
public final JagString getName() {
@Pc(2) JagString local2 = this.username;
if (Static103.aClass100Array88 != null) {
local2 = JagString.concatenate(new JagString[] { Static103.aClass100Array88[this.anInt1651], local2 });
}
if (Static263.aClass100Array174 != null) {
local2 = JagString.concatenate(new JagString[] { local2, Static263.aClass100Array174[this.anInt1651] });
}
return local2;
}
@OriginalMember(owner = "client!e", name = "a", descriptor = "(IIIII)V")
@Override
public final void method4545(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4) {
}
@OriginalMember(owner = "client!e", name = "a", descriptor = "(BIZI)V")
public final void teleport(@OriginalArg(1) int arg0, @OriginalArg(2) boolean arg1, @OriginalArg(3) int arg2) {
super.method2683(this.getSize(), arg0, arg2, arg1);
}
@OriginalMember(owner = "client!e", name = "finalize", descriptor = "()V")
@Override
public final void finalize() {
}
@OriginalMember(owner = "client!e", name = "b", descriptor = "()I")
@Override
public final int getMaxY() {
return this.anInt3413;
}
}