osrscachereader
Version:
Read Old-School Runescape Cache files
567 lines (513 loc) • 21.2 kB
JavaScript
export class AttackOption {
static method590(var0, var1) {
if (var0 != null && var0.method703() != 0) {
if (var1 < var0.field1203[0].field1165) {
return var0.field1201 == 0 ? var0.field1203[0].field1158 : class181.method922(var0, var1, true);
} else if (var1 > var0.field1203[var0.method703() - 1].field1165) {
return var0.field1214 == 0
? var0.field1203[var0.method703() - 1].field1158
: class181.method922(var0, var1, false);
} else if (var0.field1200) {
return var0.field1203[0].field1158;
} else {
let var2 = var0.method702(var1);
let var3 = false;
let var4 = false;
if (var2 == null) {
return 0.0;
} else {
if (var2.field1161 == 0.0 && var2.field1162 == 0.0) {
var3 = true;
} else if (var2.field1161 == 3.4028234663852886e38 && 3.4028234663852886e38 == var2.field1162) {
var4 = true;
} else if (var2.field1163 != null) {
if (var0.field1215) {
let var5 = var2.field1165;
let var9 = var2.field1158;
let var6 = var2.field1161 * 0.33333334 + var5;
let var10 = var9 + var2.field1162 * 0.33333334;
let var8 = var2.field1163.field1165;
let var12 = var2.field1163.field1158;
let var7 = var8 - var2.field1163.field1159 * 0.33333334;
let var11 = var12 - var2.field1163.field1160 * 0.33333334;
if (var0.field1210) {
class145.method767(var0, var5, var6, var7, var8, var9, var10, var11, var12);
} else {
class136.method735(var0, var5, var6, var7, var8, var9, var10, var11, var12);
}
var0.field1215 = false;
}
} else {
var3 = true;
}
if (var3) {
return var2.field1158;
} else if (var4) {
return var2.field1165 != var1 && var2.field1163 != null
? var2.field1163.field1158
: var2.field1158;
} else {
return var0.field1210 ? Tiles.method453(var0, var1) : class467.method2360(var0, var1);
}
}
}
} else {
return 0.0;
}
}
}
export class class467 {
static method2360(var0, var1) {
if (var0 == null) {
return 0.0;
} else {
let var2 = var1 - var0.field1207;
return var0.field1202 + var2 * (var2 * (var2 * var0.field1223 + var0.field1208) + var0.field1209);
}
}
}
export class class181 {
static method922(var0, var1, var2) {
let var3 = 0.0;
if (var0 != null && var0.method703() != 0) {
let var4 = var0.field1203[0].field1165;
let var5 = var0.field1203[var0.method703() - 1].field1165;
let var6 = var5 - var4;
if (0.0 == var6) {
return var0.field1203[0].field1158;
} else {
let var7 = 0.0;
if (var1 > var5) {
var7 = (var1 - var5) / var6;
} else {
var7 = (var1 - var4) / var6;
}
let var8 = var7;
let var10 = Math.abs(var7 - var8);
let var11 = var10 * var6;
var8 = Math.abs(var8 + 1.0);
let var12 = var8 / 2.0;
let var14 = var12;
var10 = var12 - var14;
let var16;
let var17;
if (var2) {
if (var0.field1201 == class125.field1190) {
if (var10 != 0.0) {
var11 += var4;
} else {
var11 = var5 - var11;
}
} else if (var0.field1201 != class125.field1189 && var0.field1201 != class125.field1188) {
if (var0.field1201 == class125.field1193) {
var11 = var4 - var1;
var16 = var0.field1203[0].field1159;
var17 = var0.field1203[0].field1160;
var3 = var0.field1203[0].field1158;
if (var16 != 0.0) {
var3 -= (var11 * var17) / var16;
}
return var3;
}
} else {
var11 = var5 - var11;
}
} else if (var0.field1214 == class125.field1190) {
if (0.0 != var10) {
var11 = var5 - var11;
} else {
var11 += var4;
}
} else if (var0.field1214 != class125.field1189 && var0.field1214 != class125.field1188) {
if (var0.field1214 == class125.field1193) {
var11 = var1 - var5;
var16 = var0.field1203[var0.method703() - 1].field1161;
var17 = var0.field1203[var0.method703() - 1].field1162;
var3 = var0.field1203[var0.method703() - 1].field1158;
if (0.0 != var16) {
var3 += (var11 * var17) / var16;
}
return var3;
}
} else {
var11 += var4;
}
var3 = AttackOption.method590(var0, var11);
let var18;
if (var2 && var0.field1201 == class125.field1188) {
var18 = var0.field1203[var0.method703() - 1].field1158 - var0.field1203[0].field1158;
var3 = var3 - var8 * var18;
} else if (!var2 && var0.field1214 == class125.field1188) {
var18 = var0.field1203[var0.method703() - 1].field1158 - var0.field1203[0].field1158;
var3 = var3 + var8 * var18;
}
return var3;
}
} else {
return var3;
}
}
}
export class class145 {
static method767(var0, var1, var2, var3, var4, var5, var6, var7, var8) {
if (var0 != null) {
let var9 = var4 - var1;
if (0.0 != var9) {
let var10 = var2 - var1;
let var11 = var3 - var1;
let var12 = [var10 / var9, var11 / var9];
var0.field1221 = var12[0] == 0.33333334 && 0.6666667 == var12[1];
let var13 = var12[0];
let var14 = var12[1];
if (var12[0] < 0.0) {
var12[0] = 0.0;
}
if (var12[1] > 1.0) {
var12[1] = 1.0;
}
let var15;
if (var12[0] > 1.0 || var12[1] < -1.0) {
var12[1] = 1.0 - var12[1];
if (var12[0] < 0.0) {
var12[0] = 0.0;
}
if (var12[1] < 0.0) {
var12[1] = 0.0;
}
if (var12[0] > 1.0 || var12[1] > 1.0) {
var15 = 1.0 + var12[1] * (var12[1] - 2.0) + var12[0] * (var12[1] + (var12[0] - 2.0));
if (var15 + class123.field1167 > 0.0) {
Client.method384(var12);
}
}
var12[1] = 1.0 - var12[1];
}
let var10000;
if (var13 != var12[0]) {
var10000 = var1 + var9 * var12[0];
if (0.0 != var13) {
var6 = var5 + (var12[0] * (var6 - var5)) / var13;
}
}
if (var12[1] != var14) {
var10000 = var1 + var12[1] * var9;
if (1.0 != var14) {
var7 = var8 - ((var8 - var7) * (1.0 - var12[1])) / (1.0 - var14);
}
}
var0.field1207 = var1;
var0.field1206 = var4;
var15 = var12[0];
let var16 = var12[1];
let var17 = var15 - 0.0;
let var18 = var16 - var15;
let var19 = 1.0 - var16;
let var20 = var18 - var17;
var0.field1202 = var19 - var18 - var20;
var0.field1209 = var20 + var20 + var20;
var0.field1208 = var17 + var17 + var17;
var0.field1223 = 0.0;
DesktopPlatformInfoProvider.method2241(var5, var6, var7, var8, var0);
}
}
}
}
export class class123 {
static field1167 = 1.1920929e-7;
static field1166;
static field1168 = [];
static field1169 = [];
static field1166 = class123.field1167 * 2;
static field1168 = [];
static field1169 = [];
}
export class Client {
method384(var0) {
if (class123.field1167 + var0[0] < 1.3333334) {
let var1 = var0[0] - 2.0;
let var2 = var0[0] - 1.0;
let var3 = Math.sqrt(double(var1 * var1 - var2 * var2 * 4.0));
let var4 = 0.5 * (var3 + -var1);
if (var0[1] + class123.field1167 > var4) {
var0[1] = var4 - class123.field1167;
} else {
var4 = (-var1 - var3) * 0.5;
if (var0[1] < var4 + class123.field1167) {
var0[1] = var4 + class123.field1167;
}
}
} else {
var0[0] = 1.3333334 - class123.field1167;
var0[1] = 0.33333334 - class123.field1167;
}
}
}
export class DesktopPlatformInfoProvider {
static method2241(var0, var1, var2, var3, var4) {
let var5 = var1 - var0;
let var6 = var2 - var1;
let var7 = var3 - var2;
let var8 = var6 - var5;
var4.field1222 = var7 - var6 - var8;
var4.field1213 = var8 + var8 + var8;
var4.field1212 = var5 + var5 + var5;
var4.field1211 = var0;
}
}
export class class136 {
static method735(var0, var1, var2, var3, var4, var5, var6, var7, var8) {
if (var0 != null) {
var0.field1207 = var1;
let var9 = var4 - var1;
let var10 = var8 - var5;
let var11 = var2 - var1;
let var12 = 0.0;
let var13 = 0.0;
if (var11 != 0.0) {
var12 = (var6 - var5) / var11;
}
var11 = var4 - var3;
if (0.0 != var11) {
var13 = (var8 - var7) / var11;
}
let var14 = 1.0 / (var9 * var9);
let var15 = var9 * var12;
let var16 = var13 * var9;
var0.field1223 = ((var16 + var15 - var10 - var10) * var14) / var9;
var0.field1208 = (var10 + var10 + var10 - var15 - var15 - var16) * var14;
var0.field1209 = var12;
var0.field1202 = var5;
}
}
}
export class Tiles {
static method453(var0, var1) {
if (var0 == null) {
return 0.0;
} else {
let var2;
if (var0.field1207 == var1) {
var2 = 0.0;
} else if (var0.field1206 == var1) {
var2 = 1.0;
} else {
var2 = (var1 - var0.field1207) / (var0.field1206 - var0.field1207);
}
let var3;
if (var0.field1221) {
var3 = var2;
} else {
class123.field1168[3] = var0.field1202;
class123.field1168[2] = var0.field1209;
class123.field1168[1] = var0.field1208;
class123.field1168[0] = var0.field1223 - var2;
class123.field1169[0] = 0.0;
class123.field1169[1] = 0.0;
class123.field1169[2] = 0.0;
class123.field1169[3] = 0.0;
class123.field1169[4] = 0.0;
let var4 = class368.method1942(class123.field1168, 3, 0.0, true, 1.0, true, class123.field1169);
if (var4 == 1) {
var3 = class123.field1169[0];
} else {
var3 = 0.0;
}
}
return var0.field1211 + (var0.field1212 + (var3 * var0.field1222 + var0.field1213) * var3) * var3;
}
}
}
export class class368 {
static method1942(var0, var1, var2, var3, var4, var5, var6) {
let var7 = 0.0;
for (let var8 = 0; var8 < var1 + 1; ++var8) {
var7 += Math.abs(var0[var8]);
}
let var24 = (Math.abs(var2) + Math.abs(var4)) * (var1 + 1) * class123.field1167;
if (var7 <= var24) {
return -1;
} else {
let var9 = new Array(var1 + 1);
let var10;
for (var10 = 0; var10 < var1 + 1; ++var10) {
var9[var10] = var0[var10] * (1.0 / var7);
}
while (Math.abs(var9[var1]) < var24) {
--var1;
}
var10 = 0;
if (var1 == 0) {
return var10;
} else if (var1 == 1) {
var6[0] = -var9[0] / var9[1];
let var11 = var3 ? var2 < var24 + var6[0] : var2 < var6[0] - var24;
let var12 = var5 ? var4 > var6[0] - var24 : var4 > var24 + var6[0];
var10 = var11 && var12 ? 1 : 0;
if (var10 > 0) {
if (var3 && var6[0] < var2) {
var6[0] = var2;
} else if (var5 && var6[0] > var4) {
var6[0] = var4;
}
}
return var10;
} else {
let var21 = new class423(var9, var1);
let var22 = new Array(var1 + 1);
for (let var13 = 1; var13 <= var1; ++var13) {
var22[var13 - 1] = var13 * var9[var13];
}
let var23 = new Array(var1 + 1);
let var14 = this.method1942(var22, var1 - 1, var2, false, var4, false, var23);
if (var14 == -1) {
return 0;
} else {
let var15 = false;
let var17 = 0.0;
let var18 = 0.0;
let var19 = 0.0;
for (let var20 = 0; var20 <= var14; ++var20) {
if (var10 > var1) {
return var10;
}
let var16;
if (var20 == 0) {
var16 = var2;
var18 = class102.method598(var9, var1, var2);
if (Math.abs(var18) <= var24 && var3) {
var6[var10++] = var2;
}
} else {
var16 = var19;
var18 = var17;
}
if (var20 == var14) {
var19 = var4;
var15 = false;
} else {
var19 = var23[var20];
}
var17 = class102.method598(var9, var1, var19);
if (var15) {
var15 = false;
} else if (Math.abs(var17) < var24) {
if (var14 != var20 || var5) {
var6[var10++] = var19;
var15 = true;
}
} else if ((var18 < 0.0 && var17 > 0.0) || (var18 > 0.0 && var17 < 0.0)) {
var6[var10++] = class88.method478(var21, var16, var19, 0.0);
if (var10 > 1 && var6[var10 - 2] >= var6[var10 - 1] - var24) {
var6[var10 - 2] = (var6[var10 - 2] + var6[var10 - 1]) * 0.5;
--var10;
}
}
}
return var10;
}
}
}
}
}
export class class102 {
static method598(var0, var1, var2) {
let var3 = var0[var1];
for (let var4 = var1 - 1; var4 >= 0; --var4) {
var3 = var0[var4] + var3 * var2;
}
return var3;
}
}
export class class188 {
static method478(var0, var1, var2, var3) {
let var4 = class102.method598(var0.field3760, var0.field3761, var1);
if (Math.abs(var4) < class123.field1167) {
return var1;
} else {
let var5 = class102.method598(var0.field3760, var0.field3761, var2);
if (Math.abs(var5) < class123.field1167) {
return var2;
} else {
let var6 = 0.0;
let var7 = 0.0;
let var8 = 0.0;
let var13 = 0.0;
let var14 = true;
let var15 = false;
do {
var15 = false;
if (var14) {
var6 = var1;
var13 = var4;
var7 = var2 - var1;
var8 = var7;
var14 = false;
}
if (Math.abs(var13) < Math.abs(var5)) {
var1 = var2;
var2 = var6;
var6 = var1;
var4 = var5;
var5 = var13;
var13 = var4;
}
let var16 = class123.field1166 * Math.abs(var2) + var3 * 0.5;
let var17 = (var6 - var2) * 0.5;
let var18 = Math.abs(var17) > var16 && 0.0 != var5;
if (var18) {
if (Math.abs(var8) >= var16 && Math.abs(var4) > Math.abs(var5)) {
let var12 = var5 / var4;
let var9;
let var10;
if (var1 == var6) {
var9 = var17 * 2.0 * var12;
var10 = 1.0 - var12;
} else {
var10 = var4 / var13;
let var11 = var5 / var13;
var9 = (var17 * 2.0 * var10 * (var10 - var11) - (var2 - var1) * (var11 - 1.0)) * var12;
var10 = (var10 - 1.0) * (var11 - 1.0) * (var12 - 1.0);
}
if (var9 > 0.0) {
var10 = -var10;
} else {
var9 = -var9;
}
var12 = var8;
var8 = var7;
if (
var9 * 2.0 < var10 * var17 * 3.0 - Math.abs(var16 * var10) &&
var9 < Math.abs(var10 * var12 * 0.5)
) {
var7 = var9 / var10;
} else {
var7 = var17;
var8 = var17;
}
} else {
var7 = var17;
var8 = var17;
}
var1 = var2;
var4 = var5;
if (Math.abs(var7) > var16) {
var2 += var7;
} else if (var17 > 0.0) {
var2 += var16;
} else {
var2 -= var16;
}
var5 = class102.method598(var0.field3760, var0.field3761, var2);
if (var5 * (var13 / Math.abs(var13)) > 0.0) {
var14 = true;
var15 = true;
} else {
var15 = true;
}
}
} while (var15);
return var2;
}
}
}
}