Decompiled source of EXOS MMORPG v1.2.6
plugins/CookieMilk-ElementalFalls/ElementalFalls.dll
Decompiled 6 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.IO.Compression; using System.Linq; using System.Net; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security; using System.Security.Cryptography; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using System.Threading; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using HarmonyLib.Public.Patching; using JetBrains.Annotations; using Mono.Cecil; using Mono.Cecil.Cil; using Mono.Collections.Generic; using MonoMod.Utils; using PieceManager; using ServerSync; using UnityEngine; using UnityEngine.Diagnostics; using UnityEngine.UI; [assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")] [assembly: CompilationRelaxations(8)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("ElementalFalls")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: AssemblyProduct("ElementalFalls")] [assembly: AssemblyCopyright("Copyright © 2022")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("E0E2F92E-557C-4A05-9D89-AA92A0BD75C4")] [assembly: AssemblyFileVersion("1.2.2")] [assembly: AssemblyCompany("CookieMilk")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.2.2.0")] [module: UnverifiableCode] [module: SuppressIldasm] [module: ConfusedBy("Confuser.Core 1.6.0+447341964f")] internal class <Module> { internal struct qTlwluMfboqHwpvxffFKximbxSPc { internal uint mLrNajdgZMrHnyFvJIuOgziMkIcd; internal void vktztXwgzHmcejCzUrVqJJFeasLO() { mLrNajdgZMrHnyFvJIuOgziMkIcd = 1024u; } internal uint VvRXueeCQWAkOrVODLwRaaIfwXbu(LskAzAdzfpHXVrCiFZhdoulFHvEi rangeDecoder) { uint num = (rangeDecoder.qByCOzHNMtXJiNmLCeiIfYENyrpP >> 11) * mLrNajdgZMrHnyFvJIuOgziMkIcd; while (true) { int num2 = -715723310; while (true) { uint num3; int num4; switch ((num3 = (uint)num2 ^ 0x95403359u) % 6) { case 0u: break; case 4u: num4 = 1477453086; goto IL_005b; case 3u: if (rangeDecoder.vmdZTGeNaTHbrJQKyusEODnKrBCHA < num) { num2 = ((int)num3 * -1915428266) ^ 0x571D7357; continue; } goto IL_0192; case 1u: goto IL_00c7; default: num4 = 860682041; goto IL_005b; case 2u: goto IL_0259; IL_009f: num2 = -974579197; continue; IL_005b: while (true) { uint num5; switch ((num5 = (uint)num4 ^ 0x362932A3u) % 13) { case 9u: break; default: goto IL_009f; case 0u: goto IL_00c7; case 7u: rangeDecoder.qByCOzHNMtXJiNmLCeiIfYENyrpP <<= 8; num4 = (int)(num5 * 602281643) ^ -108335848; continue; case 8u: mLrNajdgZMrHnyFvJIuOgziMkIcd -= mLrNajdgZMrHnyFvJIuOgziMkIcd >> 5; num4 = ((int)num5 * -290081153) ^ -76585236; continue; case 10u: { mLrNajdgZMrHnyFvJIuOgziMkIcd += 2048 - mLrNajdgZMrHnyFvJIuOgziMkIcd >> 5; int num8; int num9; if (rangeDecoder.qByCOzHNMtXJiNmLCeiIfYENyrpP >= 16777216) { num8 = 1686229989; num9 = num8; } else { num8 = 1440953165; num9 = num8; } num4 = num8 ^ ((int)num5 * -862749042); continue; } case 6u: rangeDecoder.vmdZTGeNaTHbrJQKyusEODnKrBCHA = (rangeDecoder.vmdZTGeNaTHbrJQKyusEODnKrBCHA << 8) | (byte)\u206c\u202d\u200f\u206c\u206a\u206c\u206d\u200d\u206e\u202d\u206c\u200e\u206e\u202d\u200b\u200d\u202c\u202e\u206d\u200b\u200e\u202a\u202b\u200f\u206e\u206a\u202d\u206f\u206a\u206b\u206d\u206d\u202e\u206a\u202e\u206a\u202d\u200f\u200f\u202d\u202e(rangeDecoder.qKCirHDjvqqAzktXForAkcOxADfHA); num4 = ((int)num5 * -215271962) ^ 0x725AF3A0; continue; case 12u: goto IL_0192; case 1u: rangeDecoder.qByCOzHNMtXJiNmLCeiIfYENyrpP = num; num4 = ((int)num5 * -1727276117) ^ 0x91E47AC; continue; case 11u: rangeDecoder.qByCOzHNMtXJiNmLCeiIfYENyrpP <<= 8; num4 = ((int)num5 * -974167893) ^ 0x34EF329F; continue; case 3u: rangeDecoder.vmdZTGeNaTHbrJQKyusEODnKrBCHA -= num; num4 = (int)((num5 * 1431274858) ^ 0x7248E295); continue; case 2u: { int num6; int num7; if (rangeDecoder.qByCOzHNMtXJiNmLCeiIfYENyrpP >= 16777216) { num6 = -318936568; num7 = num6; } else { num6 = -2047550119; num7 = num6; } num4 = num6 ^ (int)(num5 * 643082157); continue; } case 4u: rangeDecoder.vmdZTGeNaTHbrJQKyusEODnKrBCHA = (rangeDecoder.vmdZTGeNaTHbrJQKyusEODnKrBCHA << 8) | (byte)\u206c\u202d\u200f\u206c\u206a\u206c\u206d\u200d\u206e\u202d\u206c\u200e\u206e\u202d\u200b\u200d\u202c\u202e\u206d\u200b\u200e\u202a\u202b\u200f\u206e\u206a\u202d\u206f\u206a\u206b\u206d\u206d\u202e\u206a\u202e\u206a\u202d\u200f\u200f\u202d\u202e(rangeDecoder.qKCirHDjvqqAzktXForAkcOxADfHA); num4 = (int)(num5 * 349129394) ^ -1356711769; continue; case 5u: goto IL_0259; } break; } goto case 4u; IL_0259: return 1u; IL_0192: rangeDecoder.qByCOzHNMtXJiNmLCeiIfYENyrpP -= num; num4 = 415686995; goto IL_005b; IL_00c7: return 0u; } break; } } } static int \u206c\u202d\u200f\u206c\u206a\u206c\u206d\u200d\u206e\u202d\u206c\u200e\u206e\u202d\u200b\u200d\u202c\u202e\u206d\u200b\u200e\u202a\u202b\u200f\u206e\u206a\u202d\u206f\u206a\u206b\u206d\u206d\u202e\u206a\u202e\u206a\u202d\u200f\u200f\u202d\u202e(Stream P_0) { return P_0.ReadByte(); } } internal struct aeZYgUGqHdALyefYUuNWSMmNNKuMA { internal readonly qTlwluMfboqHwpvxffFKximbxSPc[] QjbDrqHEFdfqgIwqHOfKDxSqLzYW; internal readonly int TXfWixCuWroLyxiUbLLWdNBjLIVd; internal aeZYgUGqHdALyefYUuNWSMmNNKuMA(int numBitLevels) { TXfWixCuWroLyxiUbLLWdNBjLIVd = numBitLevels; QjbDrqHEFdfqgIwqHOfKDxSqLzYW = new qTlwluMfboqHwpvxffFKximbxSPc[1 << numBitLevels]; } internal void LMRwAggtQaoUDlOJFtNTHzGhgOCt() { uint num = 1u; while (true) { int num2 = 680586822; while (true) { uint num3; int num4; int num5; switch ((num3 = (uint)num2 ^ 0x41E054EDu) % 6) { case 0u: break; case 3u: if (num >= 1 << TXfWixCuWroLyxiUbLLWdNBjLIVd) { num2 = 2145031692; continue; } num4 = -374205282; num5 = num4; goto IL_0060; case 2u: return; case 4u: goto IL_005b; case 1u: num2 = ((int)num3 * -1281867858) ^ -189907868; continue; default: { num4 = -1683564028; num5 = num4; goto IL_0060; } IL_0083: num2 = 234679837; continue; IL_005b: num4 = -374205282; goto IL_0060; IL_0060: while (true) { uint num6; switch ((num6 = (uint)num4 ^ 0x8B2F2D1Fu) % 5) { case 0u: break; case 4u: goto IL_005b; default: goto IL_0083; case 3u: num++; num4 = ((int)num6 * -1560297630) ^ -1081878625; continue; case 1u: QjbDrqHEFdfqgIwqHOfKDxSqLzYW[num].vktztXwgzHmcejCzUrVqJJFeasLO(); num4 = -1398018459; continue; case 2u: return; } break; } goto case 3u; } break; } } } internal uint HhoRUiWNsRSLUkVpugpJMvDjzcPK(LskAzAdzfpHXVrCiFZhdoulFHvEi rangeDecoder) { uint num = 1u; int num7 = default(int); while (true) { int num2 = 616405176; while (true) { uint num3; int num4; int num5; switch ((num3 = (uint)num2 ^ 0x5D8871D7u) % 5) { case 2u: break; case 3u: num4 = -284188812; goto IL_0031; case 1u: goto IL_005f; default: num4 = -654092185; num5 = num4; goto IL_0031; case 0u: goto IL_00d9; IL_0031: while (true) { uint num6; switch ((num6 = (uint)num4 ^ 0xFF4DFC87u) % 6) { case 2u: break; default: goto IL_0058; case 3u: goto IL_005f; case 0u: num = (num << 1) + QjbDrqHEFdfqgIwqHOfKDxSqLzYW[num].VvRXueeCQWAkOrVODLwRaaIfwXbu(rangeDecoder); num4 = -1857275340; continue; case 5u: num7--; num4 = ((int)num6 * -1992954732) ^ -1850232764; continue; case 1u: num7 = TXfWixCuWroLyxiUbLLWdNBjLIVd; num4 = (int)((num6 * 2086586514) ^ 0x30D98BAE); continue; case 4u: goto IL_00d9; } break; } goto case 3u; IL_00d9: return num - (uint)(1 << TXfWixCuWroLyxiUbLLWdNBjLIVd); IL_005f: if (num7 > 0) { num2 = 680896956; continue; } num4 = -1646971097; num5 = num4; goto IL_0031; IL_0058: num2 = 1802420735; continue; } break; } } } internal uint EyzJubLAQwncIflnOKsgBeeWigbIA(LskAzAdzfpHXVrCiFZhdoulFHvEi rangeDecoder) { uint num = 1u; uint num4 = default(uint); uint num7 = default(uint); uint num8 = default(uint); int num6 = default(int); while (true) { int num2 = -1945311232; while (true) { uint num3; int num5; switch ((num3 = (uint)num2 ^ 0xF478DFC3u) % 5) { case 2u: break; case 1u: num5 = -1032030255; goto IL_0032; case 4u: goto IL_006e; default: num5 = ((int)num4 * -66015095) ^ -692580472; goto IL_0032; case 3u: goto IL_013c; IL_0032: while (true) { switch ((num4 = (uint)num5 ^ 0xFF79777Au) % 9) { case 0u: break; default: goto IL_0067; case 6u: goto IL_006e; case 7u: num7 = QjbDrqHEFdfqgIwqHOfKDxSqLzYW[num].VvRXueeCQWAkOrVODLwRaaIfwXbu(rangeDecoder); num5 = -857460693; continue; case 5u: num5 = ((int)num4 * -52096326) ^ 0xFD623AE; continue; case 8u: num8 |= num7 << num6; num6++; num5 = (int)(num4 * 1857351181) ^ -1023919408; continue; case 4u: goto IL_00ef; case 3u: num <<= 1; num += num7; num5 = ((int)num4 * -1095318498) ^ -1318492008; continue; case 2u: num6 = 0; num5 = (int)((num4 * 1968671239) ^ 0x40AB0BB0); continue; case 1u: goto IL_013c; } break; IL_00ef: int num9; if (num6 < TXfWixCuWroLyxiUbLLWdNBjLIVd) { num5 = -729207895; num9 = num5; } else { num5 = -1950280274; num9 = num5; } } goto case 1u; IL_013c: return num8; IL_006e: num8 = 0u; num2 = -1125313070; continue; IL_0067: num2 = -615863014; continue; } break; } } } internal static uint yoIfSxGBstNfztScIkvzmCpfkbvFb(qTlwluMfboqHwpvxffFKximbxSPc[] Models, uint startIndex, LskAzAdzfpHXVrCiFZhdoulFHvEi rangeDecoder, int NumBitLevels) { uint num = 1u; uint num4 = default(uint); int num8 = default(int); uint num6 = default(uint); uint num7 = default(uint); while (true) { int num2 = 787967614; while (true) { uint num3; int num5; switch ((num3 = (uint)num2 ^ 0x4ABE7F12u) % 5) { case 2u: break; case 3u: num5 = 1020778628; goto IL_0032; case 4u: goto IL_0072; default: num5 = ((int)num4 * -1053909412) ^ 0x732E4EA9; goto IL_0032; case 0u: goto IL_014b; IL_0032: while (true) { switch ((num4 = (uint)num5 ^ 0xC0E86DCu) % 10) { case 3u: break; default: goto IL_006b; case 2u: goto IL_0072; case 1u: num8 = 0; num5 = ((int)num4 * -1545081885) ^ -1716918185; continue; case 7u: num += num6; num5 = ((int)num4 * -1684884324) ^ -1617628985; continue; case 6u: num8++; num5 = ((int)num4 * -740366453) ^ -534425956; continue; case 0u: num <<= 1; num5 = ((int)num4 * -10814778) ^ -970996659; continue; case 4u: goto IL_00fd; case 9u: num7 |= num6 << num8; num5 = ((int)num4 * -864431898) ^ 0x6F60238A; continue; case 5u: num6 = Models[startIndex + num].VvRXueeCQWAkOrVODLwRaaIfwXbu(rangeDecoder); num5 = 939188902; continue; case 8u: goto IL_014b; } break; IL_00fd: int num9; if (num8 < NumBitLevels) { num5 = 308563127; num9 = num5; } else { num5 = 1427232220; num9 = num5; } } goto case 3u; IL_014b: return num7; IL_0072: num7 = 0u; num2 = 1966480166; continue; IL_006b: num2 = 1447978886; continue; } break; } } } } internal class LskAzAdzfpHXVrCiFZhdoulFHvEi { internal uint vmdZTGeNaTHbrJQKyusEODnKrBCHA; internal uint qByCOzHNMtXJiNmLCeiIfYENyrpP; internal Stream qKCirHDjvqqAzktXForAkcOxADfHA; internal void iGVwRXXVxFlqVEaNYEnvmrsYLZMc(Stream stream) { qKCirHDjvqqAzktXForAkcOxADfHA = stream; int num6 = default(int); while (true) { int num = 295222267; while (true) { uint num2; int num3; int num4; switch ((num2 = (uint)num ^ 0x60827D14u) % 5) { case 4u: break; case 1u: num3 = 147649507; goto IL_0036; case 0u: return; case 3u: goto IL_0085; default: { num3 = 1026843991; num4 = num3; goto IL_0036; } IL_0036: while (true) { uint num5; switch ((num5 = (uint)num3 ^ 0x46E91035u) % 9) { case 6u: break; default: goto IL_006a; case 0u: goto IL_0085; case 3u: qByCOzHNMtXJiNmLCeiIfYENyrpP = uint.MaxValue; num3 = (int)((num5 * 446301244) ^ 0x760CB419); continue; case 2u: num6++; num3 = (int)((num5 * 1567455983) ^ 0x2AF8D73E); continue; case 7u: num3 = ((int)num5 * -323655370) ^ -728319075; continue; case 1u: vmdZTGeNaTHbrJQKyusEODnKrBCHA = 0u; num3 = (int)(num5 * 1101625030) ^ -1033415793; continue; case 4u: vmdZTGeNaTHbrJQKyusEODnKrBCHA = (vmdZTGeNaTHbrJQKyusEODnKrBCHA << 8) | (byte)\u200f\u202c\u202a\u202b\u206e\u200e\u202d\u206c\u206f\u206c\u200f\u206f\u206c\u202a\u206b\u200c\u202a\u202a\u206f\u206c\u202c\u200b\u200c\u200e\u202c\u200f\u202d\u200b\u200f\u200e\u206a\u206f\u206d\u200e\u200f\u206d\u206a\u206c\u202a\u202e\u202e(qKCirHDjvqqAzktXForAkcOxADfHA); num3 = 699330394; continue; case 5u: num6 = 0; num3 = ((int)num5 * -1393629602) ^ -1781748578; continue; case 8u: return; } break; } goto case 1u; IL_0085: if (num6 < 5) { num = 267765938; continue; } num3 = 1676417943; num4 = num3; goto IL_0036; IL_006a: num = 269522376; continue; } break; } } } internal void DcRTJUcDTSYWkVuuHNgcxsXFgKEH() { qKCirHDjvqqAzktXForAkcOxADfHA = null; } internal void GxPsvqqvfsbzcgKjEpEdDFrHCByc() { while (true) { int num; int num2; if (qByCOzHNMtXJiNmLCeiIfYENyrpP < 16777216) { num = 17413884; num2 = num; } else { num = 10635519; num2 = num; } while (true) { uint num3; int num4; switch ((num3 = (uint)num ^ 0x3B694475u) % 4) { case 1u: vmdZTGeNaTHbrJQKyusEODnKrBCHA = (vmdZTGeNaTHbrJQKyusEODnKrBCHA << 8) | (byte)\u200f\u202c\u202a\u202b\u206e\u200e\u202d\u206c\u206f\u206c\u200f\u206f\u206c\u202a\u206b\u200c\u202a\u202a\u206f\u206c\u202c\u200b\u200c\u200e\u202c\u200f\u202d\u200b\u200f\u200e\u206a\u206f\u206d\u200e\u200f\u206d\u206a\u206c\u202a\u202e\u202e(qKCirHDjvqqAzktXForAkcOxADfHA); num4 = 545889727; goto IL_000a; case 3u: goto IL_0083; default: num4 = 978280472; goto IL_000a; case 0u: break; case 2u: return; IL_000a: while (true) { uint num5; switch ((num5 = (uint)num4 ^ 0x41BDE0DFu) % 6) { case 2u: num4 = 204274936; continue; case 3u: break; case 5u: return; case 4u: qByCOzHNMtXJiNmLCeiIfYENyrpP <<= 8; num4 = (int)(num5 * 1822957343) ^ -1960978661; continue; case 1u: goto IL_0083; default: goto IL_00b1; } break; } goto case 1u; IL_00b1: num = 765033073; continue; IL_0083: num = 17413884; continue; } break; } } } internal uint VhsZfOFIMiTWUtFEFmoRBvmCpiTG(int numTotalBits) { uint num = qByCOzHNMtXJiNmLCeiIfYENyrpP; uint num4 = default(uint); uint num8 = default(uint); uint num7 = default(uint); int num9 = default(int); uint num6 = default(uint); while (true) { int num2 = -1438293921; while (true) { uint num3; int num5; switch ((num3 = (uint)num2 ^ 0x966B3DB2u) % 5) { case 3u: break; case 1u: num5 = 407812427; goto IL_0037; case 0u: goto IL_009b; default: num5 = (int)((num4 * 500840762) ^ 0x6C26D947); goto IL_0037; case 4u: goto IL_01cb; IL_0037: while (true) { switch ((num4 = (uint)num5 ^ 0x4ACB27A9u) % 13) { case 11u: break; default: goto IL_007c; case 4u: goto IL_009b; case 9u: num8 = (num8 << 1) | (1 - num7); num5 = (int)((num4 * 1008872834) ^ 0x64C269BF); continue; case 8u: num <<= 8; num5 = ((int)num4 * -1286313821) ^ 0x2DD07EAD; continue; case 5u: num9--; num5 = 1251800020; continue; case 2u: num >>= 1; num7 = num6 - num >> 31; num5 = 1005914653; continue; case 7u: { int num10; int num11; if (num < 16777216) { num10 = 535072418; num11 = num10; } else { num10 = 1130621448; num11 = num10; } num5 = num10 ^ ((int)num4 * -1732016422); continue; } case 10u: num6 = vmdZTGeNaTHbrJQKyusEODnKrBCHA; num8 = 0u; num9 = numTotalBits; num5 = (int)((num4 * 452470600) ^ 0x2525EE44); continue; case 6u: goto IL_0159; case 12u: vmdZTGeNaTHbrJQKyusEODnKrBCHA = num6; num5 = (int)((num4 * 795209909) ^ 0x4FAFCFFD); continue; case 0u: num6 -= num & (num7 - 1); num5 = (int)(num4 * 2086322827) ^ -2105184000; continue; case 1u: num6 = (num6 << 8) | (byte)\u200f\u202c\u202a\u202b\u206e\u200e\u202d\u206c\u206f\u206c\u200f\u206f\u206c\u202a\u206b\u200c\u202a\u202a\u206f\u206c\u202c\u200b\u200c\u200e\u202c\u200f\u202d\u200b\u200f\u200e\u206a\u206f\u206d\u200e\u200f\u206d\u206a\u206c\u202a\u202e\u202e(qKCirHDjvqqAzktXForAkcOxADfHA); num5 = (int)(num4 * 1185536819) ^ -1070642305; continue; case 3u: goto IL_01cb; } break; IL_0159: int num12; if (num9 <= 0) { num5 = 1309310855; num12 = num5; } else { num5 = 2083471968; num12 = num5; } } goto case 1u; IL_01cb: return num8; IL_009b: qByCOzHNMtXJiNmLCeiIfYENyrpP = num; num2 = -222681774; continue; IL_007c: num2 = -545258529; continue; } break; } } } internal LskAzAdzfpHXVrCiFZhdoulFHvEi() { } static int \u200f\u202c\u202a\u202b\u206e\u200e\u202d\u206c\u206f\u206c\u200f\u206f\u206c\u202a\u206b\u200c\u202a\u202a\u206f\u206c\u202c\u200b\u200c\u200e\u202c\u200f\u202d\u200b\u200f\u200e\u206a\u206f\u206d\u200e\u200f\u206d\u206a\u206c\u202a\u202e\u202e(Stream P_0) { return P_0.ReadByte(); } } internal class bkGzICCRcqqoumqsNkKmJBmoTtmt { internal class LHVPEMCKmkhCuHFpqVgFqbkswMWbA { internal readonly aeZYgUGqHdALyefYUuNWSMmNNKuMA[] btvQUkXcsDssOKhDBUgqoibrAPRh = new aeZYgUGqHdALyefYUuNWSMmNNKuMA[16]; internal readonly aeZYgUGqHdALyefYUuNWSMmNNKuMA[] RRUEVsXACxCusNTrNdiMYxLdXKcq = new aeZYgUGqHdALyefYUuNWSMmNNKuMA[16]; internal qTlwluMfboqHwpvxffFKximbxSPc dpQahwQAwCAHssYAfOYjUzpbuHAE; internal qTlwluMfboqHwpvxffFKximbxSPc fmMDvdskTJnuLTxmBAFZxRUALrIX; internal aeZYgUGqHdALyefYUuNWSMmNNKuMA wOjaYTLHSgfxCZTyjgJkhLsfnaCdA = new aeZYgUGqHdALyefYUuNWSMmNNKuMA(8); internal uint GYjifYgpxqSKgZIfToJWhcvUgElkA; internal void QIOESSUlRDTiegcZtNvZYQccdphP(uint numPosStates) { uint num = GYjifYgpxqSKgZIfToJWhcvUgElkA; while (true) { IL_007e: int num2; if (num >= numPosStates) { num2 = 959365873; goto IL_000e; } int num3 = -434005193; int num4 = num3; goto IL_0038; IL_0089: num3 = -1553095075; num4 = num3; goto IL_0038; IL_0033: num3 = -434005193; goto IL_0038; IL_0038: while (true) { uint num5; switch ((num5 = (uint)num3 ^ 0xCB312AE5u) % 7) { case 5u: break; default: goto IL_0063; case 2u: goto IL_007e; case 4u: num++; num3 = (int)((num5 * 1896946277) ^ 0x552C94F7); continue; case 3u: GYjifYgpxqSKgZIfToJWhcvUgElkA = numPosStates; num3 = ((int)num5 * -1418458338) ^ 0x4D9A7CEF; continue; case 1u: btvQUkXcsDssOKhDBUgqoibrAPRh[num] = new aeZYgUGqHdALyefYUuNWSMmNNKuMA(3); num3 = -879070258; continue; case 6u: RRUEVsXACxCusNTrNdiMYxLdXKcq[num] = new aeZYgUGqHdALyefYUuNWSMmNNKuMA(3); num3 = (int)((num5 * 1408626185) ^ 0x42A956D9); continue; case 0u: return; } break; } goto IL_0033; IL_0063: num2 = 1031968578; goto IL_000e; IL_000e: while (true) { uint num6; switch ((num6 = (uint)num2 ^ 0x54595517u) % 5) { case 2u: num2 = 497147468; continue; case 1u: break; case 3u: return; case 0u: goto IL_007e; default: goto IL_0089; } break; } goto IL_0033; } } internal void APvXmeXRnRguiaVrGUUYounZHfnp() { dpQahwQAwCAHssYAfOYjUzpbuHAE.vktztXwgzHmcejCzUrVqJJFeasLO(); uint num5 = default(uint); while (true) { int num = -20319066; while (true) { uint num2; int num3; int num6; switch ((num2 = (uint)num ^ 0xA7B64388u) % 7) { case 5u: break; case 1u: num5 = 0u; num = (int)(num2 * 1569519618) ^ -1257067107; continue; case 3u: btvQUkXcsDssOKhDBUgqoibrAPRh[num5].LMRwAggtQaoUDlOJFtNTHzGhgOCt(); RRUEVsXACxCusNTrNdiMYxLdXKcq[num5].LMRwAggtQaoUDlOJFtNTHzGhgOCt(); num5++; num = -676977055; continue; case 0u: goto IL_0095; default: num3 = 2093327006; goto IL_009a; case 6u: goto IL_00e2; case 2u: goto IL_0116; IL_0095: num3 = 1915752894; goto IL_009a; IL_009a: while (true) { uint num4; switch ((num4 = (uint)num3 ^ 0x1057865u) % 5) { case 2u: break; case 0u: goto IL_0095; default: goto IL_00bd; case 1u: goto IL_00e2; case 4u: fmMDvdskTJnuLTxmBAFZxRUALrIX.vktztXwgzHmcejCzUrVqJJFeasLO(); num3 = (int)(num4 * 440005596) ^ -461784788; continue; case 3u: goto IL_0116; } break; } goto case 3u; IL_0116: wOjaYTLHSgfxCZTyjgJkhLsfnaCdA.LMRwAggtQaoUDlOJFtNTHzGhgOCt(); return; IL_00e2: if (num5 >= GYjifYgpxqSKgZIfToJWhcvUgElkA) { num3 = 705125240; num6 = num3; } else { num3 = 1915752894; num6 = num3; } goto IL_009a; IL_00bd: num = -1263917312; continue; } break; } } } internal uint FCRhAPGSvQyerOQfqyRFuOEqxWNt(LskAzAdzfpHXVrCiFZhdoulFHvEi rangeDecoder, uint posState) { if (dpQahwQAwCAHssYAfOYjUzpbuHAE.VvRXueeCQWAkOrVODLwRaaIfwXbu(rangeDecoder) == 0) { goto IL_0011; } goto IL_00d6; IL_00d6: uint num = 8u; int num2 = 2105154437; goto IL_0070; IL_0070: uint num3 = default(uint); while (true) { switch ((num3 = (uint)num2 ^ 0x1E1FE678u) % 8) { case 3u: break; case 7u: goto IL_006b; default: goto IL_009f; case 4u: num += wOjaYTLHSgfxCZTyjgJkhLsfnaCdA.HhoRUiWNsRSLUkVpugpJMvDjzcPK(rangeDecoder); num2 = (int)((num3 * 793082784) ^ 0x1A8FED0E); continue; case 0u: goto IL_00d6; case 1u: return btvQUkXcsDssOKhDBUgqoibrAPRh[posState].HhoRUiWNsRSLUkVpugpJMvDjzcPK(rangeDecoder); case 5u: { int num4; int num5; if (fmMDvdskTJnuLTxmBAFZxRUALrIX.VvRXueeCQWAkOrVODLwRaaIfwXbu(rangeDecoder) != 0) { num4 = 194767119; num5 = num4; } else { num4 = 709119014; num5 = num4; } num2 = num4 ^ ((int)num3 * -620655999); continue; } case 2u: num += 8; num2 = 2015599924; continue; case 6u: goto IL_013c; } break; } goto IL_003b; IL_009f: int num6 = 1875548293; goto IL_0016; IL_00a9: num2 = (int)(num3 * 330447405) ^ -221075799; goto IL_0070; IL_006b: num2 = 1163948169; goto IL_0070; IL_0011: num6 = 111457043; goto IL_0016; IL_013c: return num; IL_0016: uint num7; switch ((num7 = (uint)num6 ^ 0x7A852132u) % 5) { case 2u: break; case 0u: goto IL_003b; case 1u: goto IL_006b; default: goto IL_00a9; case 3u: goto IL_013c; } goto IL_0011; IL_003b: num += RRUEVsXACxCusNTrNdiMYxLdXKcq[posState].HhoRUiWNsRSLUkVpugpJMvDjzcPK(rangeDecoder); num6 = 704187287; goto IL_0016; } internal LHVPEMCKmkhCuHFpqVgFqbkswMWbA() { } } internal class uBMSMyViZIVSbDBaeYnqHecwyRzo { internal struct OsMAipdXggJddvmHbhAyLFrRMfAfb { internal qTlwluMfboqHwpvxffFKximbxSPc[] IzusEYgSbNjDLwNCjckuBLfgYDwbA; internal void QCiTfrtZcSmnhvuQwsXHmljsoumc() { IzusEYgSbNjDLwNCjckuBLfgYDwbA = new qTlwluMfboqHwpvxffFKximbxSPc[768]; } internal void ssewtUVhyqfOurZunUAudUHYTbFM() { int num = 0; uint num5 = default(uint); while (true) { int num2 = -1989998333; while (true) { uint num3; int num4; switch ((num3 = (uint)num2 ^ 0x846919D6u) % 4) { case 0u: break; case 1u: num4 = -1372127267; goto IL_002d; case 3u: return; default: goto IL_0068; IL_002d: while (true) { switch ((num5 = (uint)num4 ^ 0x8B7D8F98u) % 5) { case 4u: break; default: goto IL_0050; case 3u: goto IL_0068; case 0u: IzusEYgSbNjDLwNCjckuBLfgYDwbA[num].vktztXwgzHmcejCzUrVqJJFeasLO(); num++; num4 = -838228340; continue; case 1u: goto IL_0093; case 2u: return; } break; IL_0093: int num6; if (num < 768) { num4 = -570471214; num6 = num4; } else { num4 = -56496089; num6 = num4; } } goto case 1u; IL_0068: num4 = ((int)num5 * -109355476) ^ -463599792; goto IL_002d; } break; IL_0050: num2 = -239626427; } } } internal byte SYZBjSiByPlZiWPPKhTjnUjuMtgjA(LskAzAdzfpHXVrCiFZhdoulFHvEi rangeDecoder) { uint num = 1u; while (true) { int num2 = -1484826956; while (true) { uint num3; int num4; switch ((num3 = (uint)num2 ^ 0xDDAF1E0Eu) % 5) { case 2u: break; case 3u: num4 = -1852513375; goto IL_0031; case 1u: goto IL_0068; default: num4 = -1216933556; goto IL_0031; case 0u: goto IL_00ae; IL_0031: while (true) { uint num5; switch ((num5 = (uint)num4 ^ 0xC5E3E6D3u) % 4) { case 0u: break; default: goto IL_0050; case 2u: goto IL_0068; case 3u: { int num6; int num7; if (num < 256) { num6 = -150471071; num7 = num6; } else { num6 = -119729550; num7 = num6; } num4 = num6 ^ ((int)num5 * -206108096); continue; } case 1u: goto IL_00ae; } break; } goto case 3u; IL_00ae: return (byte)num; IL_0068: num = (num << 1) | IzusEYgSbNjDLwNCjckuBLfgYDwbA[num].VvRXueeCQWAkOrVODLwRaaIfwXbu(rangeDecoder); num2 = -1516497553; continue; IL_0050: num2 = -152207114; continue; } break; } } } internal byte LEGMaHaIkqDFybzxqEiHfzIqctXdA(LskAzAdzfpHXVrCiFZhdoulFHvEi rangeDecoder, byte matchByte) { uint num = 1u; uint num7 = default(uint); uint num6 = default(uint); while (true) { int num2 = -1162327498; while (true) { uint num3; int num4; switch ((num3 = (uint)num2 ^ 0xB0B330CEu) % 5) { case 0u: break; case 1u: num4 = 1943845198; goto IL_0032; case 3u: goto IL_0075; default: num4 = 91165358; goto IL_0032; case 2u: goto IL_0184; IL_0032: while (true) { uint num5; switch ((num5 = (uint)num4 ^ 0x47C87CFBu) % 11) { case 3u: break; default: goto IL_006e; case 2u: goto IL_0075; case 6u: num4 = (int)((num5 * 879059758) ^ 0xB7AD8AB); continue; case 8u: num4 = (int)(num5 * 1566206745) ^ -1397537691; continue; case 10u: goto IL_00c2; case 1u: { num = (num << 1) | num7; int num8; int num9; if (num6 == num7) { num8 = -1011925613; num9 = num8; } else { num8 = -1030302057; num9 = num8; } num4 = num8 ^ (int)(num5 * 1718322505); continue; } case 9u: goto IL_0104; case 4u: matchByte <<= 1; num4 = ((int)num5 * -346561113) ^ -1088639518; continue; case 7u: num7 = IzusEYgSbNjDLwNCjckuBLfgYDwbA[(1 + num6 << 8) + num].VvRXueeCQWAkOrVODLwRaaIfwXbu(rangeDecoder); num4 = ((int)num5 * -1330916065) ^ -571688018; continue; case 5u: num = (num << 1) | IzusEYgSbNjDLwNCjckuBLfgYDwbA[num].VvRXueeCQWAkOrVODLwRaaIfwXbu(rangeDecoder); num4 = 277791305; continue; case 0u: goto IL_0184; } break; IL_0104: int num10; if (num >= 256) { num4 = 2027044101; num10 = num4; } else { num4 = 97249673; num10 = num4; } continue; IL_00c2: int num11; if (num >= 256) { num4 = 818077611; num11 = num4; } else { num4 = 1943845198; num11 = num4; } } goto case 1u; IL_0184: return (byte)num; IL_0075: num6 = (uint)(matchByte >> 7) & 1u; num2 = -1829651372; continue; IL_006e: num2 = -491706375; continue; } break; } } } } internal OsMAipdXggJddvmHbhAyLFrRMfAfb[] NjRMhPcnAVqICLNHqoJWoGFkFlfM; internal int REIaXnrTxCIFEpDxpfiuJjxcDBbd; internal int WbufFKgMzeYHFHEwcbhHnURGaqudb; internal uint zoWtMcuHCserBzgvHFsIkauRLpCRA; internal void inDdpvyRwPaLBKoylBHuibLInUWCc(int numPosBits, int numPrevBits) { if (NjRMhPcnAVqICLNHqoJWoGFkFlfM != null) { goto IL_000b; } goto IL_00c7; IL_00c7: REIaXnrTxCIFEpDxpfiuJjxcDBbd = numPosBits; zoWtMcuHCserBzgvHFsIkauRLpCRA = (uint)((1 << numPosBits) - 1); int num = 1099922862; goto IL_003a; IL_003a: uint num2 = default(uint); uint num5 = default(uint); uint num6 = default(uint); while (true) { switch ((num2 = (uint)num ^ 0x2DEDF92Au) % 12) { case 6u: break; default: goto IL_007a; case 5u: goto IL_0098; case 9u: goto IL_00c7; case 11u: goto IL_00e6; case 2u: num5 = 0u; num = ((int)num2 * -1857867604) ^ 0x7A4DB65D; continue; case 8u: WbufFKgMzeYHFHEwcbhHnURGaqudb = numPrevBits; num = (int)((num2 * 1723217568) ^ 0x1423A6E); continue; case 3u: NjRMhPcnAVqICLNHqoJWoGFkFlfM = new OsMAipdXggJddvmHbhAyLFrRMfAfb[num6]; num = (int)(num2 * 2121735258) ^ -376788070; continue; case 1u: NjRMhPcnAVqICLNHqoJWoGFkFlfM[num5].QCiTfrtZcSmnhvuQwsXHmljsoumc(); num5++; num = 907165717; continue; case 0u: num6 = (uint)(1 << WbufFKgMzeYHFHEwcbhHnURGaqudb + REIaXnrTxCIFEpDxpfiuJjxcDBbd); num = (int)(num2 * 254286741) ^ -328459183; continue; case 10u: { int num3; int num4; if (REIaXnrTxCIFEpDxpfiuJjxcDBbd == numPosBits) { num3 = 1726937446; num4 = num3; } else { num3 = 2024030807; num4 = num3; } num = num3 ^ ((int)num2 * -1072301818); continue; } case 4u: return; case 7u: return; } break; IL_00e6: int num7; if (num5 >= num6) { num = 428023097; num7 = num; } else { num = 1207153219; num7 = num; } } goto IL_0035; IL_007a: int num8 = -1897994822; goto IL_0010; IL_0010: uint num9; switch ((num9 = (uint)num8 ^ 0xD963F468u) % 5) { case 4u: break; case 1u: goto IL_0035; case 3u: return; case 0u: goto IL_0098; default: goto IL_00ab; } goto IL_000b; IL_0035: num = 610772219; goto IL_003a; IL_0098: if (WbufFKgMzeYHFHEwcbhHnURGaqudb != numPrevBits) { num8 = -1813371701; goto IL_0010; } int num10 = -841907256; int num11 = num10; goto IL_00b9; IL_00b9: num = num10 ^ (int)(num2 * 809085488); goto IL_003a; IL_00ab: num10 = -2125935733; num11 = num10; goto IL_00b9; IL_000b: num8 = -962432598; goto IL_0010; } internal void nrjTBtVjAXDErvdyyengxOoXynRB() { uint num = (uint)(1 << WbufFKgMzeYHFHEwcbhHnURGaqudb + REIaXnrTxCIFEpDxpfiuJjxcDBbd); uint num2 = 0u; uint num6 = default(uint); while (true) { int num3 = -1134985276; while (true) { uint num4; int num5; switch ((num4 = (uint)num3 ^ 0xEE439587u) % 4) { case 0u: break; case 3u: num5 = 553479059; goto IL_0040; case 1u: return; default: goto IL_007b; IL_0040: while (true) { switch ((num6 = (uint)num5 ^ 0x5A64u) % 5) { case 2u: break; default: goto IL_0063; case 1u: goto IL_007b; case 3u: NjRMhPcnAVqICLNHqoJWoGFkFlfM[num2].ssewtUVhyqfOurZunUAudUHYTbFM(); num2++; num5 = 1893759619; continue; case 4u: goto IL_00a6; case 0u: return; } break; IL_00a6: int num7; if (num2 >= num) { num5 = 382884592; num7 = num5; } else { num5 = 1227648555; num7 = num5; } } goto case 3u; IL_007b: num5 = (int)(num6 * 1173032383) ^ -1714509622; goto IL_0040; } break; IL_0063: num3 = -1840887758; } } } internal uint MMGAjxPdYHyXHaYcUFCGWCqbhlIh(uint pos, byte prevByte) { return ((pos & zoWtMcuHCserBzgvHFsIkauRLpCRA) << WbufFKgMzeYHFHEwcbhHnURGaqudb) + (uint)(prevByte >> 8 - WbufFKgMzeYHFHEwcbhHnURGaqudb); } internal byte RLlIqySrxkqxxaCsipiDdCWuisxc(LskAzAdzfpHXVrCiFZhdoulFHvEi rangeDecoder, uint pos, byte prevByte) { return NjRMhPcnAVqICLNHqoJWoGFkFlfM[MMGAjxPdYHyXHaYcUFCGWCqbhlIh(pos, prevByte)].SYZBjSiByPlZiWPPKhTjnUjuMtgjA(rangeDecoder); } internal byte ldDkqaNMjAbkcQsrFNUKDdgYrMwE(LskAzAdzfpHXVrCiFZhdoulFHvEi rangeDecoder, uint pos, byte prevByte, byte matchByte) { return NjRMhPcnAVqICLNHqoJWoGFkFlfM[MMGAjxPdYHyXHaYcUFCGWCqbhlIh(pos, prevByte)].LEGMaHaIkqDFybzxqEiHfzIqctXdA(rangeDecoder, matchByte); } internal uBMSMyViZIVSbDBaeYnqHecwyRzo() { } } internal readonly qTlwluMfboqHwpvxffFKximbxSPc[] FrXWQCpFcxWvQEFbPMtsYtuOIpcR = new qTlwluMfboqHwpvxffFKximbxSPc[192]; internal readonly qTlwluMfboqHwpvxffFKximbxSPc[] IjHbqaHpYTXImVtJHVcwHXRhNqSmA = new qTlwluMfboqHwpvxffFKximbxSPc[192]; internal readonly qTlwluMfboqHwpvxffFKximbxSPc[] ucibpXLYTtbprAPLUgoLaCGYQKUiA = new qTlwluMfboqHwpvxffFKximbxSPc[12]; internal readonly qTlwluMfboqHwpvxffFKximbxSPc[] ePlCNdhbUYVmJSyLdmlNSyTOVkxUA = new qTlwluMfboqHwpvxffFKximbxSPc[12]; internal readonly qTlwluMfboqHwpvxffFKximbxSPc[] QqtDLmidnrKpRQvydLZCEcINPIyQ = new qTlwluMfboqHwpvxffFKximbxSPc[12]; internal readonly qTlwluMfboqHwpvxffFKximbxSPc[] QuIrjSREJBGjOwAWVEhDhWEUaWkG = new qTlwluMfboqHwpvxffFKximbxSPc[12]; internal readonly LHVPEMCKmkhCuHFpqVgFqbkswMWbA PzFEDaZuiTwBUHqjmFwkmjeDbklt = new LHVPEMCKmkhCuHFpqVgFqbkswMWbA(); internal readonly uBMSMyViZIVSbDBaeYnqHecwyRzo KGSPcQIGtVAdaMzSCMWjklmLpTZn = new uBMSMyViZIVSbDBaeYnqHecwyRzo(); internal readonly sUAaGpCXBuAtVBhaOpVOjsyjqiNN nwAMjajrHVNYcLVjltvwPHhmRXms = new sUAaGpCXBuAtVBhaOpVOjsyjqiNN(); internal readonly qTlwluMfboqHwpvxffFKximbxSPc[] VIegCQDoDIuHUCOAWxtwiVlcHiIdb = new qTlwluMfboqHwpvxffFKximbxSPc[114]; internal readonly aeZYgUGqHdALyefYUuNWSMmNNKuMA[] uJGuOVVQlEbEUxveDzKyPjBxMTnf = new aeZYgUGqHdALyefYUuNWSMmNNKuMA[4]; internal readonly LskAzAdzfpHXVrCiFZhdoulFHvEi PQlYSWYsAymrlpWtxNhGZLoVjcMJ = new LskAzAdzfpHXVrCiFZhdoulFHvEi(); internal readonly LHVPEMCKmkhCuHFpqVgFqbkswMWbA AegLcgTULgUZEsyukUezzmMCurfo = new LHVPEMCKmkhCuHFpqVgFqbkswMWbA(); internal bool vHNuGyTKrAyzUDcuEduOhmbYBmEjb; internal uint kMXqXmPZKQIwwVPOKVOkxGKaqFqB; internal uint iaxMEHOpntjzjEARkCMhqCJPnKRfA; internal aeZYgUGqHdALyefYUuNWSMmNNKuMA ISNPGwsLwjqSMhDJZVEEYacTJuGF = new aeZYgUGqHdALyefYUuNWSMmNNKuMA(4); internal uint cJlczwZnZFIuGLdyKSFTXNegICNK; internal bkGzICCRcqqoumqsNkKmJBmoTtmt() { int num5 = default(int); uint num3 = default(uint); while (true) { int num = 1248529767; while (true) { uint num2; int num4; switch ((num2 = (uint)num ^ 0x677F4498u) % 6) { case 2u: break; case 5u: num5 = 0; num = ((int)num2 * -547214059) ^ -252825505; continue; case 0u: return; case 1u: kMXqXmPZKQIwwVPOKVOkxGKaqFqB = uint.MaxValue; num = 743315333; continue; case 3u: goto IL_0117; default: { num4 = ((int)num3 * -2037721338) ^ 0x61324BB7; goto IL_011c; } IL_0117: num4 = 46693179; goto IL_011c; IL_011c: while (true) { switch ((num3 = (uint)num4 ^ 0x7D9E6ED2u) % 6) { case 5u: break; case 3u: goto IL_0117; default: goto IL_0143; case 1u: num4 = (int)((num3 * 2086661088) ^ 0xF3967FC); continue; case 4u: uJGuOVVQlEbEUxveDzKyPjBxMTnf[num5] = new aeZYgUGqHdALyefYUuNWSMmNNKuMA(6); num5++; num4 = 1595328092; continue; case 0u: goto IL_0188; case 2u: return; } break; IL_0188: int num6; if ((long)num5 >= 4L) { num4 = 1565509700; num6 = num4; } else { num4 = 1301688910; num6 = num4; } } goto case 1u; IL_0143: num = 1977320480; continue; } break; } } } internal void gVgjqIHzsgrlyiPTRxZKveWhKMV(uint dictionarySize) { if (kMXqXmPZKQIwwVPOKVOkxGKaqFqB == dictionarySize) { return; } uint num3 = default(uint); uint windowSize = default(uint); while (true) { int num = -24681760; while (true) { uint num2; int num4; switch ((num2 = (uint)num ^ 0x9F96E5B0u) % 5) { case 0u: break; case 4u: num4 = -1961396035; goto IL_003b; case 2u: return; case 1u: goto IL_0076; default: { iaxMEHOpntjzjEARkCMhqCJPnKRfA = \u200d\u202c\u202b\u200c\u200d\u206b\u206f\u202e\u206b\u200c\u200f\u206f\u200d\u200e\u200f\u200b\u206e\u202d\u200d\u200f\u200b\u206d\u206d\u200b\u206c\u206f\u206d\u200b\u202a\u206f\u206e\u202d\u202b\u202a\u200d\u202c\u202c\u202c\u206f\u202e(kMXqXmPZKQIwwVPOKVOkxGKaqFqB, 1u); num4 = (int)((num3 * 205434607) ^ 0x1DC6C416); goto IL_003b; } IL_003b: while (true) { switch ((num3 = (uint)num4 ^ 0xD7C73C54u) % 5) { case 2u: break; default: goto IL_005e; case 1u: goto IL_0076; case 3u: nwAMjajrHVNYcLVjltvwPHhmRXms.MZXSiPWMMSgHHLQawjCmvKPBgqCX(windowSize); num4 = (int)(num3 * 1602548842) ^ -934007751; continue; case 0u: windowSize = \u200d\u202c\u202b\u200c\u200d\u206b\u206f\u202e\u206b\u200c\u200f\u206f\u200d\u200e\u200f\u200b\u206e\u202d\u200d\u200f\u200b\u206d\u206d\u200b\u206c\u206f\u206d\u200b\u202a\u206f\u206e\u202d\u202b\u202a\u200d\u202c\u202c\u202c\u206f\u202e(iaxMEHOpntjzjEARkCMhqCJPnKRfA, 4096u); num4 = (int)(num3 * 1814085712) ^ -1449319669; continue; case 4u: return; } break; } goto case 4u; IL_0076: kMXqXmPZKQIwwVPOKVOkxGKaqFqB = dictionarySize; num = -866494347; continue; IL_005e: num = -598521942; continue; } break; } } } internal void ApxeDbzvBJSLOoiCzUrbpacVlpmM(int lp, int lc) { KGSPcQIGtVAdaMzSCMWjklmLpTZn.inDdpvyRwPaLBKoylBHuibLInUWCc(lp, lc); } internal void OAdUyLgJXrAZhKIMaAKNKCImenON(int pb) { uint num = (uint)(1 << pb); uint num4 = default(uint); while (true) { int num2 = -1850097478; while (true) { uint num3; int num5; switch ((num3 = (uint)num2 ^ 0xF7A56A9Au) % 5) { case 4u: break; case 2u: num5 = 334502037; goto IL_0036; case 3u: return; case 1u: goto IL_0069; default: { AegLcgTULgUZEsyukUezzmMCurfo.QIOESSUlRDTiegcZtNvZYQccdphP(num); cJlczwZnZFIuGLdyKSFTXNegICNK = num - 1; num5 = ((int)num4 * -1863001218) ^ -736047100; goto IL_0036; } IL_0036: switch ((num4 = (uint)num5 ^ 0xF4E74CAu) % 3) { case 2u: break; default: goto IL_0051; case 1u: goto IL_0069; case 0u: return; } goto case 2u; IL_0069: PzFEDaZuiTwBUHqjmFwkmjeDbklt.QIOESSUlRDTiegcZtNvZYQccdphP(num); num2 = -1188985279; continue; IL_0051: num2 = -1095425160; continue; } break; } } } internal void OXVmaAhiEONCawLFmOCotVaJAKbr(Stream inStream, Stream outStream) { PQlYSWYsAymrlpWtxNhGZLoVjcMJ.iGVwRXXVxFlqVEaNYEnvmrsYLZMc(inStream); uint num4 = default(uint); uint num6 = default(uint); while (true) { int num = 1768673781; while (true) { uint num2; int num3; switch ((num2 = (uint)num ^ 0x14592147u) % 6) { case 3u: break; case 2u: num3 = 622746397; goto IL_0043; case 0u: goto IL_00bd; case 5u: return; case 1u: num4++; num = (int)(num2 * 1322456198) ^ -1842652349; continue; default: { num3 = 31849432; goto IL_0043; } IL_0043: while (true) { uint num5; switch ((num5 = (uint)num3 ^ 0x453B7032u) % 24) { case 22u: break; default: goto IL_00b3; case 2u: goto IL_00bd; case 19u: goto IL_0111; case 23u: KGSPcQIGtVAdaMzSCMWjklmLpTZn.nrjTBtVjAXDErvdyyengxOoXynRB(); num3 = (int)(num5 * 644152158) ^ -1183708520; continue; case 18u: goto IL_0147; case 3u: ePlCNdhbUYVmJSyLdmlNSyTOVkxUA[num4].vktztXwgzHmcejCzUrVqJJFeasLO(); num3 = (int)((num5 * 1748439317) ^ 0x4D8B3FC5); continue; case 0u: num4 = 0u; num3 = ((int)num5 * -1239921328) ^ 0x5A4F2C5B; continue; case 16u: QqtDLmidnrKpRQvydLZCEcINPIyQ[num4].vktztXwgzHmcejCzUrVqJJFeasLO(); num3 = (int)((num5 * 27502551) ^ 0x3D29AF34); continue; case 9u: num3 = ((int)num5 * -1932028029) ^ 0x3DF1380D; continue; case 14u: num4++; num3 = ((int)num5 * -1034322571) ^ -1080678305; continue; case 6u: QuIrjSREJBGjOwAWVEhDhWEUaWkG[num4].vktztXwgzHmcejCzUrVqJJFeasLO(); num3 = ((int)num5 * -1478233838) ^ 0x7B83C288; continue; case 12u: PzFEDaZuiTwBUHqjmFwkmjeDbklt.APvXmeXRnRguiaVrGUUYounZHfnp(); num3 = (int)(num5 * 828580559) ^ -1724370439; continue; case 21u: num6 = 0u; num3 = 1438946339; continue; case 15u: AegLcgTULgUZEsyukUezzmMCurfo.APvXmeXRnRguiaVrGUUYounZHfnp(); num3 = ((int)num5 * -391922386) ^ -1357373268; continue; case 1u: goto IL_024b; case 5u: ucibpXLYTtbprAPLUgoLaCGYQKUiA[num4].vktztXwgzHmcejCzUrVqJJFeasLO(); num3 = ((int)num5 * -524256934) ^ 0x7B174A33; continue; case 20u: ISNPGwsLwjqSMhDJZVEEYacTJuGF.LMRwAggtQaoUDlOJFtNTHzGhgOCt(); num3 = ((int)num5 * -435310705) ^ -787543403; continue; case 17u: uJGuOVVQlEbEUxveDzKyPjBxMTnf[num4].LMRwAggtQaoUDlOJFtNTHzGhgOCt(); num4++; num3 = 187212763; continue; case 8u: num6++; num3 = ((int)num5 * -1072764673) ^ 0x40AB676; continue; case 13u: num4 = 0u; num3 = (int)((num5 * 695068560) ^ 0x1D01B408); continue; case 10u: { uint num7 = (num4 << 4) + num6; FrXWQCpFcxWvQEFbPMtsYtuOIpcR[num7].vktztXwgzHmcejCzUrVqJJFeasLO(); IjHbqaHpYTXImVtJHVcwHXRhNqSmA[num7].vktztXwgzHmcejCzUrVqJJFeasLO(); num3 = 1890890250; continue; } case 7u: nwAMjajrHVNYcLVjltvwPHhmRXms.ZtLrsBwRCKVWeNGWWHJGfmloouLc(outStream, vHNuGyTKrAyzUDcuEduOhmbYBmEjb); num4 = 0u; num3 = (int)(num5 * 403872962) ^ -927040577; continue; case 4u: goto IL_0344; case 11u: return; } break; IL_0344: int num8; if (num6 <= cJlczwZnZFIuGLdyKSFTXNegICNK) { num3 = 879559464; num8 = num3; } else { num3 = 484334207; num8 = num3; } continue; IL_0147: int num9; if (num4 >= 114) { num3 = 1972141118; num9 = num3; } else { num3 = 1250937992; num9 = num3; } continue; IL_0111: int num10; if (num4 < 12) { num3 = 1517900303; num10 = num3; } else { num3 = 1759129285; num10 = num3; } continue; IL_024b: int num11; if (num4 < 4) { num3 = 1312078979; num11 = num3; } else { num3 = 2008078743; num11 = num3; } } goto case 2u; IL_00bd: VIegCQDoDIuHUCOAWxtwiVlcHiIdb[num4].vktztXwgzHmcejCzUrVqJJFeasLO(); num = 1392319000; continue; IL_00b3: num = 487086584; continue; } break; } } } internal void ofPNXvAascREHKbhTnQjdbIUqEcT(Stream inStream, Stream outStream, long inSize, long outSize) { OXVmaAhiEONCawLFmOCotVaJAKbr(inStream, outStream); uint num13 = default(uint); uint num10 = default(uint); uint num6 = default(uint); uint num7 = default(uint); akNiKMcNwEsbWpNdwLKhcFSjqsvo akNiKMcNwEsbWpNdwLKhcFSjqsvo = default(akNiKMcNwEsbWpNdwLKhcFSjqsvo); uint num27 = default(uint); uint num18 = default(uint); uint num22 = default(uint); byte b = default(byte); ulong num17 = default(ulong); byte prevByte = default(byte); int num14 = default(int); uint num5 = default(uint); ulong num19 = default(ulong); while (true) { int num = 429690165; while (true) { uint num2; int num3; switch ((num2 = (uint)num ^ 0x4E3DB5A3u) % 5) { case 2u: break; case 1u: num5 = num13; num = 1409257516; continue; case 4u: goto IL_0055; default: num3 = -1513768276; goto IL_005a; case 0u: goto IL_07cc; IL_0055: num3 = -1060579034; goto IL_005a; IL_005a: while (true) { uint num4; switch ((num4 = (uint)num3 ^ 0x99FD795Au) % 52) { case 50u: break; case 31u: goto IL_0055; default: goto IL_013b; case 46u: num10 = num5; num6 = 2 + PzFEDaZuiTwBUHqjmFwkmjeDbklt.FCRhAPGSvQyerOQfqyRFuOEqxWNt(PQlYSWYsAymrlpWtxNhGZLoVjcMJ, num7); num3 = (int)(num4 * 710013593) ^ -1408046540; continue; case 44u: akNiKMcNwEsbWpNdwLKhcFSjqsvo = default(akNiKMcNwEsbWpNdwLKhcFSjqsvo); akNiKMcNwEsbWpNdwLKhcFSjqsvo.iQfyNkvlJMLNvBNbtxnhkjPhiEdGA(); num3 = (int)((num4 * 496509341) ^ 0x2B61E686); continue; case 45u: { int num11; int num12; if (num5 >= iaxMEHOpntjzjEARkCMhqCJPnKRfA) { num11 = 1316756494; num12 = num11; } else { num11 = 824182316; num12 = num11; } num3 = num11 ^ (int)(num4 * 509602394); continue; } case 21u: nwAMjajrHVNYcLVjltvwPHhmRXms.xjAaaybMFekGvQVQIcJTHdFAALju(); num3 = -1223209860; continue; case 27u: num10 = num5; num5 = num27; num3 = -34846049; continue; case 47u: num3 = ((int)num4 * -1731278843) ^ -502740529; continue; case 51u: num3 = ((int)num4 * -39252959) ^ 0x331E0A89; continue; case 14u: num3 = ((int)num4 * -103682596) ^ -1618275391; continue; case 19u: num18 = num10; num3 = -1296288775; continue; case 38u: goto IL_022c; case 35u: num22 = num18; num3 = -330522245; continue; case 15u: nwAMjajrHVNYcLVjltvwPHhmRXms.VIGxQLixukhMOXtyIBKZVzQYhQwm(b); num3 = -419021006; continue; case 30u: goto IL_0268; case 11u: num17++; num3 = ((int)num4 * -657198040) ^ 0x1A456E7E; continue; case 49u: b = KGSPcQIGtVAdaMzSCMWjklmLpTZn.ldDkqaNMjAbkcQsrFNUKDdgYrMwE(PQlYSWYsAymrlpWtxNhGZLoVjcMJ, (uint)num17, prevByte, nwAMjajrHVNYcLVjltvwPHhmRXms.ebEIfjksQvqDnQKFRugAniAQfmhKA(num5)); num3 = (int)(num4 * 472737944) ^ -449560351; continue; case 43u: num3 = ((int)num4 * -391746446) ^ 0x54A4F542; continue; case 25u: num18 = num10; num3 = (int)(num4 * 1719614491) ^ -185210393; continue; case 8u: { int num28; int num29; if (ePlCNdhbUYVmJSyLdmlNSyTOVkxUA[akNiKMcNwEsbWpNdwLKhcFSjqsvo.woIMJJDYgcJkGVzZntXNvwEfFZUj].VvRXueeCQWAkOrVODLwRaaIfwXbu(PQlYSWYsAymrlpWtxNhGZLoVjcMJ) != 0) { num28 = 966293060; num29 = num28; } else { num28 = 1928982114; num29 = num28; } num3 = num28 ^ (int)(num4 * 1978106279); continue; } case 20u: goto IL_034f; case 41u: num17 += num6; num3 = (int)(num4 * 786357278) ^ -61193032; continue; case 33u: num27 = num10; num3 = (int)(num4 * 1490076989) ^ -763783199; continue; case 18u: nwAMjajrHVNYcLVjltvwPHhmRXms.VIGxQLixukhMOXtyIBKZVzQYhQwm(nwAMjajrHVNYcLVjltvwPHhmRXms.ebEIfjksQvqDnQKFRugAniAQfmhKA(num5)); num17++; num3 = (int)(num4 * 1457139993) ^ -297888065; continue; case 37u: num13 = uJGuOVVQlEbEUxveDzKyPjBxMTnf[uWmMkODCRqmywZTvccNDkKuGDPWp(num6)].HhoRUiWNsRSLUkVpugpJMvDjzcPK(PQlYSWYsAymrlpWtxNhGZLoVjcMJ); num3 = (int)((num4 * 1367246933) ^ 0x63B7F678); continue; case 5u: FrXWQCpFcxWvQEFbPMtsYtuOIpcR[akNiKMcNwEsbWpNdwLKhcFSjqsvo.woIMJJDYgcJkGVzZntXNvwEfFZUj << 4].VvRXueeCQWAkOrVODLwRaaIfwXbu(PQlYSWYsAymrlpWtxNhGZLoVjcMJ); num3 = ((int)num4 * -1248717244) ^ 0x706BD2AA; continue; case 0u: num27 = num18; num3 = (int)((num4 * 1899108172) ^ 0x55701CCD); continue; case 10u: num5 += aeZYgUGqHdALyefYUuNWSMmNNKuMA.yoIfSxGBstNfztScIkvzmCpfkbvFb(VIegCQDoDIuHUCOAWxtwiVlcHiIdb, num5 - num13 - 1, PQlYSWYsAymrlpWtxNhGZLoVjcMJ, num14); num3 = (int)((num4 * 1876602266) ^ 0x8174BE9); continue; case 42u: goto IL_0474; case 28u: akNiKMcNwEsbWpNdwLKhcFSjqsvo.cMaGXlpBVASkVqPeYRhYMlndHnGq(); num3 = (int)((num4 * 583596279) ^ 0x484E06AF); continue; case 6u: goto IL_04c0; case 7u: num27 = num22; num3 = -56964515; continue; case 17u: num5 += PQlYSWYsAymrlpWtxNhGZLoVjcMJ.VhsZfOFIMiTWUtFEFmoRBvmCpiTG(num14 - 4) << 4; num5 += ISNPGwsLwjqSMhDJZVEEYacTJuGF.EyzJubLAQwncIflnOKsgBeeWigbIA(PQlYSWYsAymrlpWtxNhGZLoVjcMJ); num3 = -1513768276; continue; case 22u: goto IL_051a; case 13u: akNiKMcNwEsbWpNdwLKhcFSjqsvo.SxECzafGaAaYHaQzJZuIokCaQNmoA(); num3 = ((int)num4 * -1895417604) ^ 0x2DDF1BF1; continue; case 4u: { prevByte = nwAMjajrHVNYcLVjltvwPHhmRXms.ebEIfjksQvqDnQKFRugAniAQfmhKA(0u); int num25; int num26; if (!akNiKMcNwEsbWpNdwLKhcFSjqsvo.ulHFLqDCxAhNLijFebfgrHRtGVnXB()) { num25 = -383370777; num26 = num25; } else { num25 = -328348948; num26 = num25; } num3 = num25 ^ ((int)num4 * -1611531198); continue; } case 26u: { int num23; int num24; if (num13 >= 14) { num23 = 912705389; num24 = num23; } else { num23 = 87782890; num24 = num23; } num3 = num23 ^ (int)(num4 * 11514595); continue; } case 40u: akNiKMcNwEsbWpNdwLKhcFSjqsvo.EIMJtiwGfQtKSXWTyWHGNRQlsUub(); num3 = ((int)num4 * -1580687524) ^ -49975383; continue; case 23u: num10 = 0u; num18 = 0u; num22 = 0u; num17 = 0uL; num19 = (ulong)outSize; num3 = ((int)num4 * -140882973) ^ 0x5DE675B2; continue; case 16u: { akNiKMcNwEsbWpNdwLKhcFSjqsvo.EIMJtiwGfQtKSXWTyWHGNRQlsUub(); byte b2 = KGSPcQIGtVAdaMzSCMWjklmLpTZn.RLlIqySrxkqxxaCsipiDdCWuisxc(PQlYSWYsAymrlpWtxNhGZLoVjcMJ, 0u, 0); nwAMjajrHVNYcLVjltvwPHhmRXms.VIGxQLixukhMOXtyIBKZVzQYhQwm(b2); num17++; num3 = ((int)num4 * -1476986491) ^ 0x630588E2; continue; } case 34u: b = KGSPcQIGtVAdaMzSCMWjklmLpTZn.RLlIqySrxkqxxaCsipiDdCWuisxc(PQlYSWYsAymrlpWtxNhGZLoVjcMJ, (uint)num17, prevByte); num3 = -270682151; continue; case 39u: num22 = num18; num3 = (int)(num4 * 1029989960) ^ -1689397195; continue; case 48u: goto IL_0685; case 32u: akNiKMcNwEsbWpNdwLKhcFSjqsvo.XdIzNJeTRdkWucHUkWDhbHzssbHg(); num3 = ((int)num4 * -16579916) ^ 0x79C77940; continue; case 29u: { int num20; int num21; if (num17 >= num19) { num20 = -75413291; num21 = num20; } else { num20 = -2038183328; num21 = num20; } num3 = num20 ^ (int)(num4 * 1928029903); continue; } case 3u: { int num15; int num16; if (num13 >= 4) { num15 = -804269301; num16 = num15; } else { num15 = -1073336784; num16 = num15; } num3 = num15 ^ ((int)num4 * -1974920920); continue; } case 1u: num6 = AegLcgTULgUZEsyukUezzmMCurfo.FCRhAPGSvQyerOQfqyRFuOEqxWNt(PQlYSWYsAymrlpWtxNhGZLoVjcMJ, num7) + 2; num3 = -1841804705; continue; case 24u: num5 = 0u; num3 = ((int)num4 * -1184262388) ^ -1195202947; continue; case 9u: num14 = (int)((num13 >> 1) - 1); num5 = (2 | (num13 & 1)) << num14; num3 = (int)((num4 * 410189886) ^ 0x46EE526); continue; case 36u: { int num8; int num9; if (IjHbqaHpYTXImVtJHVcwHXRhNqSmA[(akNiKMcNwEsbWpNdwLKhcFSjqsvo.woIMJJDYgcJkGVzZntXNvwEfFZUj << 4) + num7].VvRXueeCQWAkOrVODLwRaaIfwXbu(PQlYSWYsAymrlpWtxNhGZLoVjcMJ) != 0) { num8 = -1227140565; num9 = num8; } else { num8 = -120307074; num9 = num8; } num3 = num8 ^ ((int)num4 * -1222090359); continue; } case 12u: nwAMjajrHVNYcLVjltvwPHhmRXms.kuVFsXtKRpzHQVkyNMIDObogpDeQ(num5, num6); num3 = -286186069; continue; case 2u: goto IL_07cc; } break; IL_0685: int num30; if (QuIrjSREJBGjOwAWVEhDhWEUaWkG[akNiKMcNwEsbWpNdwLKhcFSjqsvo.woIMJJDYgcJkGVzZntXNvwEfFZUj].VvRXueeCQWAkOrVODLwRaaIfwXbu(PQlYSWYsAymrlpWtxNhGZLoVjcMJ) != 0) { num3 = -1325998647; num30 = num3; } else { num3 = -1983381990; num30 = num3; } continue; IL_022c: int num31; if (num5 != uint.MaxValue) { num3 = -702724418; num31 = num3; } else { num3 = -1269392881; num31 = num3; } continue; IL_034f: int num32; if (num17 >= num19) { num3 = -1269392881; num32 = num3; } else { num3 = -1343820188; num32 = num3; } continue; IL_051a: num7 = (uint)(int)num17 & cJlczwZnZFIuGLdyKSFTXNegICNK; int num33; if (FrXWQCpFcxWvQEFbPMtsYtuOIpcR[(akNiKMcNwEsbWpNdwLKhcFSjqsvo.woIMJJDYgcJkGVzZntXNvwEfFZUj << 4) + num7].VvRXueeCQWAkOrVODLwRaaIfwXbu(PQlYSWYsAymrlpWtxNhGZLoVjcMJ) == 0) { num3 = -438198870; num33 = num3; } else { num3 = -11041660; num33 = num3; } continue; IL_0474: int num34; if (QqtDLmidnrKpRQvydLZCEcINPIyQ[akNiKMcNwEsbWpNdwLKhcFSjqsvo.woIMJJDYgcJkGVzZntXNvwEfFZUj].VvRXueeCQWAkOrVODLwRaaIfwXbu(PQlYSWYsAymrlpWtxNhGZLoVjcMJ) != 0) { num3 = -196124794; num34 = num3; } else { num3 = -1913868521; num34 = num3; } continue; IL_0268: int num35; if (ucibpXLYTtbprAPLUgoLaCGYQKUiA[akNiKMcNwEsbWpNdwLKhcFSjqsvo.woIMJJDYgcJkGVzZntXNvwEfFZUj].VvRXueeCQWAkOrVODLwRaaIfwXbu(PQlYSWYsAymrlpWtxNhGZLoVjcMJ) != 1) { num3 = -997151787; num35 = num3; } else { num3 = -2123448402; num35 = num3; } continue; IL_04c0: int num36; if (num5 >= num17) { num3 = -1455334244; num36 = num3; } else { num3 = -1767933865; num36 = num3; } } goto case 1u; IL_07cc: nwAMjajrHVNYcLVjltvwPHhmRXms.lzmZXZFSltFGoCondEiLIWEdpUbCA(); PQlYSWYsAymrlpWtxNhGZLoVjcMJ.DcRTJUcDTSYWkVuuHNgcxsXFgKEH(); return; IL_013b: num = 1303802273; continue; } break; } } } internal void pQiJUyaqOUrOVfCufHxBlZEZJBOL(byte[] properties) { int lc = properties[0] % 9; int lp = default(int); int pb = default(int); uint num4 = default(uint); uint num6 = default(uint); int num5 = default(int); while (true) { int num = 1075905287; while (true) { uint num2; int num3; switch ((num2 = (uint)num ^ 0x64FE948u) % 5) { case 2u: break; case 3u: { int num8 = properties[0] / 9; lp = num8 % 5; pb = num8 / 5; num = ((int)num2 * -1871002565) ^ 0x5D5AE9C2; continue; } case 0u: num3 = 14545419; goto IL_0054; default: goto IL_00a3; case 1u: goto IL_0137; IL_0054: while (true) { switch ((num4 = (uint)num3 ^ 0x2E86847Du) % 8) { case 3u: break; default: goto IL_0084; case 6u: goto IL_00a3; case 2u: num6 += (uint)(properties[1 + num5] << num5 * 8); num3 = 2019845681; continue; case 0u: num5 = 0; num3 = (int)((num4 * 822324661) ^ 0x6267E4BA); continue; case 1u: gVgjqIHzsgrlyiPTRxZKveWhKMV(num6); ApxeDbzvBJSLOoiCzUrbpacVlpmM(lp, lc); num3 = (int)((num4 * 1703761095) ^ 0x7AE1467); continue; case 7u: goto IL_0105; case 4u: num5++; num3 = ((int)num4 * -1908909833) ^ 0x537A2D6; continue; case 5u: goto IL_0137; } break; IL_0105: int num7; if (num5 < 4) { num3 = 1587957847; num7 = num3; } else { num3 = 242992908; num7 = num3; } } goto case 0u; IL_0137: OAdUyLgJXrAZhKIMaAKNKCImenON(pb); return; IL_00a3: num6 = 0u; num3 = ((int)num4 * -1486720328) ^ 0x4DF65BF5; goto IL_0054; IL_0084: num = 956586559; continue; } break; } } } internal static uint uWmMkODCRqmywZTvccNDkKuGDPWp(uint len) { len -= 2; uint num6 = default(uint); while (true) { int num = -795336022; while (true) { uint num2; int num3; int num4; int num5; switch ((num2 = (uint)num ^ 0xE7AEE236u) % 5) { case 0u: break; case 4u: if (len >= 4) { num = -1260499527; continue; } num3 = 925226333; num4 = num3; goto IL_0084; case 2u: goto IL_004b; default: num3 = 727701503; num4 = num3; goto IL_0084; case 1u: goto IL_00a0; IL_006f: num = -1843187945; continue; IL_004b: num5 = 1738495744; goto IL_0050; IL_0084: num5 = num3 ^ (int)(num6 * 153930983); goto IL_0050; IL_0050: switch ((num6 = (uint)num5 ^ 0x21088BEu) % 4) { case 2u: break; case 0u: goto IL_004b; default: goto IL_006f; case 1u: return len; case 3u: goto IL_00a0; } goto case 4u; IL_00a0: return 3u; } break; } } } static uint \u200d\u202c\u202b\u200c\u200d\u206b\u206f\u202e\u206b\u200c\u200f\u206f\u200d\u200e\u200f\u200b\u206e\u202d\u200d\u200f\u200b\u206d\u206d\u200b\u206c\u206f\u206d\u200b\u202a\u206f\u206e\u202d\u202b\u202a\u200d\u202c\u202c\u202c\u206f\u202e(uint P_0, uint P_1) { return Math.Max(P_0, P_1); } } internal class sUAaGpCXBuAtVBhaOpVOjsyjqiNN { internal byte[] rwaxSbAAAGhXujHHviUVEwqeYQCx; internal uint WuysAFAFyndHNTenmGaQiHeurKMvA; internal Stream ZuzEwbEYasHSrhcCWDIecrhynUMIA; internal uint uNkyYKVpiprppilxarVvmnhNjVaEA; internal uint JoXUsegGpHOhpFRmpINqATQsJhr; internal void MZXSiPWMMSgHHLQawjCmvKPBgqCX(uint windowSize) { if (JoXUsegGpHOhpFRmpINqATQsJhr != windowSize) { goto IL_0009; } goto IL_0086; IL_0086: JoXUsegGpHOhpFRmpINqATQsJhr = windowSize; int num = 351604008; goto IL_0034; IL_0034: uint num2 = default(uint); switch ((num2 = (uint)num ^ 0x134166A5u) % 4) { case 0u: break; default: goto IL_0053; case 2u: goto IL_006b; case 3u: goto IL_0086; case 1u: goto IL_0094; } goto IL_002f; IL_0053: int num3 = 980918761; goto IL_000e; IL_000e: uint num4; switch ((num4 = (uint)num3 ^ 0x77E0E53Du) % 4) { case 2u: break; case 3u: goto IL_002f; default: goto IL_006b; case 0u: goto IL_0094; } goto IL_0009; IL_0009: num3 = 807716418; goto IL_000e; IL_006b: rwaxSbAAAGhXujHHviUVEwqeYQCx = new byte[windowSize]; num = (int)(num2 * 695398804) ^ -828659642; goto IL_0034; IL_0094: WuysAFAFyndHNTenmGaQiHeurKMvA = 0u; uNkyYKVpiprppilxarVvmnhNjVaEA = 0u; return; IL_002f: num = 956117847; goto IL_0034; } internal void ZtLrsBwRCKVWeNGWWHJGfmloouLc(Stream stream, bool solid) { lzmZXZFSltFGoCondEiLIWEdpUbCA(); ZuzEwbEYasHSrhcCWDIecrhynUMIA = stream; uint num6 = default(uint); while (true) { int num = -165094752; while (true) { uint num2; int num5; int num3; int num4; switch ((num2 = (uint)num ^ 0xA371DCEFu) % 5) { case 3u: break; case 4u: num5 = 980611253; goto IL_003c; case 0u: return; case 2u: goto IL_0073; default: { num3 = 1789200375; num4 = num3; goto IL_008b; } IL_003c: while (true) { switch ((num6 = (uint)num5 ^ 0x73AE7A1Au) % 4) { case 0u: break; default: goto IL_005b; case 3u: goto IL_0073; case 2u: uNkyYKVpiprppilxarVvmnhNjVaEA = 0u; WuysAFAFyndHNTenmGaQiHeurKMvA = 0u; num5 = ((int)num6 * -1876855682) ^ 0x479D2533; continue; case 1u: return; } break; } goto case 4u; IL_0073: if (!solid) { num = -313176595; continue; } num3 = 1687003936; num4 = num3; goto IL_008b; IL_008b: num5 = num3 ^ (int)(num6 * 1260774849); goto IL_003c; IL_005b: num = -999239822; continue; } break; } } } internal void lzmZXZFSltFGoCondEiLIWEdpUbCA() { xjAaaybMFekGvQVQIcJTHdFAALju(); uint num3 = default(uint); while (true) { int num = -1446372484; while (true) { uint num2; int num4; switch ((num2 = (uint)num ^ 0xF4EC9436u) % 5) { case 4u: break; case 3u: num4 = 1458914019; goto IL_0035; case 1u: goto IL_0057; case 2u: return; default: { num4 = ((int)num3 * -2089154035) ^ 0x59C2D37A; goto IL_0035; } IL_0035: switch ((num3 = (uint)num4 ^ 0x55B7F0FDu) % 3) { case 2u: break; default: goto IL_0050; case 1u: goto IL_0057; case 0u: return; } goto case 3u; IL_0057: ZuzEwbEYasHSrhcCWDIecrhynUMIA = null; \u202b\u200f\u200c\u206f\u202e\u200f\u202d\u202b\u202c\u200b\u206d\u202a\u200e\u200c\u206b\u202c\u200f\u202b\u202c\u206b\u202d\u200e\u206f\u206b\u200c\u206c\u206c\u206c\u202e\u206a\u202b\u206b\u200d\u202d\u200c\u200b\u200e\u200b\u206b\u202a\u202e((Array)new byte[rwaxSbAAAGhXujHHviUVEwqeYQCx.Length], 0, (Array)rwaxSbAAAGhXujHHviUVEwqeYQCx, 0, rwaxSbAAAGhXujHHviUVEwqeYQCx.Length); num = -428597286; continue; IL_0050: num = -1601592657; continue; } break; } } } internal void xjAaaybMFekGvQVQIcJTHdFAALju() { uint num = WuysAFAFyndHNTenmGaQiHeurKMvA - uNkyYKVpiprppilxarVvmnhNjVaEA; while (true) { int num2 = -757690465; while (true) { uint num3; int num4; switch ((num3 = (uint)num2 ^ 0xCE89B3E4u) % 4) { case 0u: break; case 3u: num4 = 1667685355; goto IL_0039; case 2u: return; default: goto IL_0083; IL_0039: while (true) { uint num5; switch ((num5 = (uint)num4 ^ 0x1DC62E1Au) % 8) { case 5u: break; default: goto IL_0068; case 4u: goto IL_0083; case 0u: WuysAFAFyndHNTenmGaQiHeurKMvA = 0u; num4 = (int)(num5 * 988935982) ^ -1433297970; continue; case 6u: { int num8; int num9; if (WuysAFAFyndHNTenmGaQiHeurKMvA >= JoXUsegGpHOhpFRmpINqATQsJhr) { num8 = 1052851994; num9 = num8; } else { num8 = 1788458206; num9 = num8; } num4 = num8 ^ ((int)num5 * -644724664); continue; } case 3u: return; case 2u: \u202d\u200c\u200e\u200d\u202e\u200b\u200d\u206a\u206d\u202b\u200c\u200e\u206c\u202c\u202d\u202a\u202a\u206a\u202b\u206a\u206a\u202b\u206f\u202e\u206f\u200b\u206e\u202d\u200d\u206e\u202b\u202c\u206e\u206a\u202a\u200e\u202b\u200d\u206d\u202a\u202e(ZuzEwbEYasHSrhcCWDIecrhynUMIA, rwaxSbAAAGhXujHHviUVEwqeYQCx, (int)uNkyYKVpiprppilxarVvmnhNjVaEA, (int)num); num4 = 1296293052; continue; case 1u: { int num6; int num7; if (num == 0) { num6 = -1329980114; num7 = num6; } else { num6 = -1249920633; num7 = num6; } num4 = num6 ^ (int)(num5 * 715766407); continue; } case 7u: return; } break; } goto case 3u; IL_0083: uNkyYKVpiprppilxarVvmnhNjVaEA = WuysAFAFyndHNTenmGaQiHeurKMvA; num4 = 1807575485; goto IL_0039; } break; IL_0068: num2 = -945224634; } } } internal void kuVFsXtKRpzHQVkyNMIDObogpDeQ(uint distance, uint len) { uint num = WuysAFAFyndHNTenmGaQiHeurKMvA - distance - 1; while (true) { int num2 = 350474742; while (true) { uint num3; int num4; switch ((num3 = (uint)num2 ^ 0x5390824u) % 4) { case 0u: break; case 2u: num4 = 238151809; goto IL_0036; case 3u: return; default: goto IL_008d; IL_0036: while (true) { uint num5; switch ((num5 = (uint)num4 ^ 0x6A8178A2u) % 11) { case 3u: break; default: goto IL_0072; case 6u: goto IL_008d; case 1u: num += JoXUsegGpHOhpFRmpINqATQsJhr; num4 = ((int)num5 * -2036753663) ^ 0x1952EC64; continue; case 2u: rwaxSbAAAGhXujHHviUVEwqeYQCx[WuysAFAFyndHNTenmGaQiHeurKMvA++] = rwaxSbAAAGhXujHHviUVEwqeYQCx[num++]; num4 = 1513445208; continue; case 7u: { int num8; int num9; if (WuysAFAFyndHNTenmGaQiHeurKMvA < JoXUsegGpHOhpFRmpINqATQsJhr) { num8 = -916743612; num9 = num8; } else { num8 = -166025687; num9 = num8; } num4 = num8 ^ ((int)num5 * -433353474); continue; } case 4u: goto IL_0109; case 10u: { int num6; int num7; if (num >= JoXUsegGpHOhpFRmpINqATQsJhr) { num6 = -582262914; num7 = num6; } else { num6 = -1234368072; num7 = num6; } num4 = num6 ^ ((int)num5 * -692936574); continue; } case 9u: num = 0u; num4 = ((int)num5 * -1603820342) ^ -2104654705; continue; case 8u: xjAaaybMFekGvQVQIcJTHdFAALju(); num4 = (int)((num5 * 88894517) ^ 0x277EC3BB); continue; case 0u: goto IL_0177; case 5u: return; } break; IL_0177: int num10; if (len == 0) { num4 = 1054424152; num10 = num4; } else { num4 = 796627050; num10 = num4; } continue; IL_0109: int num11; if (num < JoXUsegGpHOhpFRmpINqATQsJhr) { num4 = 1231146455; num11 = num4; } else { num4 = 1466223006; num11 = num4; } } goto case 2u; IL_008d: len--; num4 = 1081612414; goto IL_0036; } break; IL_0072: num2 = 176497071; } } } internal void VIGxQLixukhMOXtyIBKZVzQYhQwm(byte b) { rwaxSbAAAGhXujHHviUVEwqeYQCx[WuysAFAFyndHNTenmGaQiHeurKMvA++] = b; uint num4 = default(uint); while (true) { int num = 891903656; while (true) { uint num2; int num3; switch ((num2 = (uint)num ^ 0x680F9975u) % 5) { case 2u: break; case 4u: return; case 0u: num3 = 177498075; goto IL_0059; case 1u: if (WuysAFAFyndHNTenmGaQiHeurKMvA >= JoXUsegGpHOhpFRmpINqATQsJhr) { num = (int)(num2 * 2143545206) ^ -1831519535; continue; } return; default: goto IL_0098; IL_0074: num = 440855904; continue; IL_0059: switch ((num4 = (uint)num3 ^ 0x1AF875D6u) % 3) { case 0u: break; default: goto IL_0074; case 2u: goto IL_0098; case 1u: return; } goto case 0u; IL_0098: xjAaaybMFekGvQVQIcJTHdFAALju(); num3 = (int)(num4 * 79550414) ^ -101937564; goto IL_0059; } break; } } } internal byte ebEIfjksQvqDnQKFRugAniAQfmhKA(uint distance) { uint num = WuysAFAFyndHNTenmGaQiHeurKMvA - distance - 1; uint num7 = default(uint); while (true) { int num2 = -1649898595; while (true) { uint num3; int num4; int num5; int num6; switch ((num3 = (uint)num2 ^ 0x922C041Cu) % 5) { case 3u: break; case 0u: if (num >= JoXUsegGpHOhpFRmpINqATQsJhr) { num2 = -1737974275; continue; } num4 = -346167595; num5 = num4; goto IL_008f; case 4u: goto IL_0056; default: num4 = -359851453; num5 = num4; goto IL_008f; case 2u: goto IL_00b2; IL_007a: num2 = -1917733823; continue; IL_0056: num6 = -1606366231; goto IL_005b; IL_008f: num6 = num4 ^ (int)(num7 * 1955801153); goto IL_005b; IL_005b: while (true) { switch ((num7 = (uint)num6 ^ 0x8E64BC70u) % 4) { case 1u: break; case 3u: goto IL_0056; default: goto IL_007a; case 2u: num += JoXUsegGpHOhpFRmpINqATQsJhr; num6 = (int)((num7 * 1056828556) ^ 0x291AF8F4); continue; case 0u: goto IL_00b2; } break; } goto case 0u; IL_00b2: return rwaxSbAAAGhXujHHviUVEwqeYQCx[num]; } break; } } } internal sUAaGpCXBuAtVBhaOpVOjsyjqiNN() { } static void \u202b\u200f\u200c\u206f\u202e\u200f\u202d\u202b\u202c\u200b\u206d\u202a\u200e\u200c\u206b\u202c\u200f\u202b\u202c\u206b\u202d\u200e\u206f\u206b\u200c\u206c\u206c\u206c\u202e\u206a\u202b\u206b\u200d\u202d\u200c\u200b\u200e\u200b\u206b\u202a\u202e(Array P_0, int P_1, Array P_2, int P_3, int P_4) { Buffer.BlockCopy(P_0, P_1, P_2, P_3, P_4); } static void \u202d\u200c\u200e\u200d\u202e\u200b\u200d\u206a\u206d\u202b\u200c\u200e\u206c\u202c\u202d\u202a\u202a\u206a\u202b\u206a\u206a\u202b\u206f\u202e\u206f\u200b\u206e\u202d\u200d\u206e\u202b\u202c\u206e\u206a\u202a\u200e\u202b\u200d\u206d\u202a\u202e(Stream P_0, byte[] P_1, int P_2, int P_3) { P_0.Write(P_1, P_2, P_3); } } internal struct akNiKMcNwEsbWpNdwLKhcFSjqsvo { internal uint woIMJJDYgcJkGVzZntXNvwEfFZUj; internal void iQfyNkvlJMLNvBNbtxnhkjPhiEdGA() { woIMJJDYgcJkGVzZntXNvwEfFZUj = 0u; } internal void EIMJtiwGfQtKSXWTyWHGNRQlsUub() { if (woIMJJDYgcJkGVzZntXNvwEfFZUj < 4) { goto IL_000c; } goto IL_00fd; IL_00fd: int num; int num2; if (woIMJJDYgcJkGVzZntXNvwEfFZUj < 10) { num = 1017461239; num2 = num; } else { num = 201582985; num2 = num; } goto IL_003b; IL_000c: int num3 = 1956201074; goto IL_0011; IL_0036: num = 892265003; goto IL_003b; IL_003b: uint num4 = default(uint); while (true) { switch ((num4 = (uint)num ^ 0x6A94280Cu) % 8) { case 6u: break; default: goto IL_006a; case 4u: return; case 3u: woIMJJDYgcJkGVzZntXNvwEfFZUj -= 3u; num = (int)((num4 * 995837593) ^ 0x7039DA13); continue; case 7u: woIMJJDYgcJkGVzZntXNvwEfFZUj = 0u; num = (int)((num4 * 613449107) ^ 0x855A3B8); continue; case 1u: return; case 5u: woIMJJDYgcJkGVzZntXNvwEfFZUj -= 6u; num = 1621063750; continue; case 0u: goto IL_00fd; case 2u: return; } break; } goto IL_0036; IL_006a: num3 = 1303902550; goto IL_0011; IL_0011: uint num5; switch ((num5 = (uint)num3 ^ 0x4C3A8388u) % 5) { case 0u: break; case 2u: goto IL_0036; case 3u: return; case 1u: return; default: goto IL_008d; } goto IL_000c; IL_008d: num = ((int)num4 * -1147772673) ^ 0x4A48E16D; goto IL_003b; } internal void cMaGXlpBVASkVqPeYRhYMlndHnGq() { woIMJJDYgcJkGVzZntXNvwEfFZUj = ((woIMJJDYgcJkGVzZntXNvwEfFZUj < 7) ? 7u : 10u); } internal void SxECzafGaAaYHaQzJZuIokCaQNmoA() { woIMJJDYgcJkGVzZntXNvwEfFZUj = ((woIMJJDYgcJkGVzZntXNvwEfFZUj < 7) ? 8u : 11u); } internal void XdIzNJeTRdkWucHUkWDhbHzssbHg() { woIMJJDYgcJkGVzZntXNvwEfFZUj = ((woIMJJDYgcJkGVzZntXNvwEfFZUj < 7) ? 9u : 11u); } internal bool ulHFLqDCxAhNLijFebfgrHRtGVnXB() { return woIMJJDYgcJkGVzZntXNvwEfFZUj < 7; } } [StructLayout(LayoutKind.Explicit, Size = 896)] internal struct ZjIULecakWsuNZqBrqRwHffnktBs { } [StructLayout(LayoutKind.Explicit, Pack = 1, Size = 448)] internal struct UetIqogHaESWIsMMUdJCoMpqJkiSA { } internal struct \u206f\u206e\u202b\u202b\u202b\u206d\u202a\u206f\u206b\u202d\u200d\u200c\u206a\u202d\u206a\u206b\u202b\u200d\u206d\u202b\u202b\u206e\u206f\u200d\u200d\u200d\u202c\u202a\u206f\u200d\u206c\u206a\u202a\u200e\u200c\u206d\u206a\u200f\u202c\u200c\u202e { internal uint \u206b\u200d\u202b\u202c\u202b\u206e\u206f\u200c\u202e\u206e\u200e\u200c\u202b\u206e\u206e\u200d\u206b\u200e\u206f\u206b\u202c\u206f\u200f\u206e\u202a\u202c\u202b\u206d\u200d\u200f\u206d\u202a\u202a\u202d\u206e\u200d\u202a\u202e\u206f\u202b\u202e; internal void \u206d\u200b\u202a\u202c\u200c\u206f\u206f\u206d\u202c\u202c\u206d\u200b\u202c\u200e\u200b\u206d\u200e\u202b\u200f\u206a\u206c\u200e\u202b\u200b\u200f\u206e\u206e\u206c\u206a\u206d\u202a\u202d\u202c\u202d\u206a\u200d\u200c\u206e\u202e\u200f\u202e() { \u206b\u200d\u202b\u202c\u202b\u206e\u206f\u200c\u202e\u206e\u200e\u200c\u202b\u206e\u206e\u200d\u206b\u200e\u206f\u206b\u202c\u206f\u200f\u206e\u202a\u202c\u202b\u206d\u200d\u200f\u206d\u202a\u202a\u202d\u206e\u200d\u202a\u202e\u206f\u202b\u202e = 1024u; } internal uint \u206a\u202a\u200c\u206d\u200c\u206f\u206e\u200d\u200e\u206e\u202a\u202d\u206a\u202e\u206e\u202d\u206f\u206b\u206f\u200e\u206f\u206e\u206a\u200d\u200e\u202e\u202a\u200c\u206d\u206d\u206f\u200c\u202a\u206c\u200c\u202e\u206c\u206d\u200d\u202b\u202e(\u202a\u206f\u200c\u200c\u206b\u206d\u200f\u200b\u206e\u202b\u206d\u202c\u206a\u202e\u206b\u202a\u206b\u206a\u202b\u200f\u200d\u202a\u202e\u202d\u202d\u202b\u206f\u206c\u202c\u200e\u202b\u202b\u200f\u202c\u206c\u200c\u200d\u202a\u200c\u206f\u202e rangeDecoder) { uint num = (rangeDecoder.\u206b\u202b\u202b\u200c\u200d\u206d\u206c\u206e\u202d\u206a\u206e\u200e\u202a\u200c\u200f\u206e\u202c\u200d\u206c\u206f\u202e\u202d\u200b\u202c\u202a\u206a\u200c\u200f\u202d\u206e\u206f\u200f\u202d\u200e\u202e\u206c\u200d\u206e\u206c\u202e\u202e >> 11) * \u206b\u200d\u202b\u202c\u202b\u206e\u206f\u200c\u202e\u206e\u200e\u200c\u202b\u206e\u206e\u200d\u206b\u200e\u206f\u206b\u202c\u206f\u200f\u206e\u202a\u202c\u202b\u206d\u200d\u200f\u206d\u202a\u202a\u202d\u206e\u200d\u202a\u202e\u206f\u202b\u202e; if (rangeDecoder.\u202b\u206d\u206d\u206b\u200f\u206c\u200f\u200f\u206f\u206a\u202e\u206a\u200c\u206c\u202d\u200e\u202c\u200b\u200e\u200c\u206c\u206b\u206d\u202e\u202b\u200d\u200f\u200c\u206b\u206e\u206e\u200f\u206e\u200b\u206f\u202c\u206c\u200f\u200b\u206a\u202e < num) { goto IL_001d; } goto IL_010a; IL_010a: rangeDecoder.\u206b\u202b\u202b\u200c\u200d\u206d\u206c\u206e\u202d\u206a\u206e\u200e\u202a\u200c\u200f\u206e\u202c\u200d\u206c\u206f\u202e\u202d\u200b\u202c\u202a\u206a\u200c\u200f\u202d\u206e\u206f\u200f\u202d\u200e\u202e\u206c\u200d\u206e\u206c\u202e\u202e -= num; int num2 = 1955152031; goto IL_0022; IL_0022: while (true) { uint num3; switch ((num3 = (uint)num2 ^ 0x30B13D02u) % 11) { case 0u: break; case 6u: rangeDecoder.\u202b\u206d\u206d\u206b\u200f\u206c\u200f\u200f\u206f\u206a\u202e\u206a\u200c\u206c\u202d\u200e\u202c\u200b\u200e\u200c\u206c\u206b\u206d\u202e\u202b\u200d\u200f\u200c\u206b\u206e\u206e\u200f\u206e\u200b\u206f\u202c\u206c\u200f\u200b\u206a\u202e = (rangeDecoder.\u202b\u206d\u206d\u206b\u200f\u206c\u200f\u200f\u206f\u206a\u202e\u206a\u200c\u206c\u202d\u200e\u202c\u200b\u200e\u200c\u206c\u206b\u206d\u202e\u202b\u200d\u200f\u200c\u206b\u206e\u206e\u200f\u206e\u200b\u206f\u202c\u206c\u200f\u200b\u206a\u202e << 8) | (byte)rangeDecoder.\u206e\u206b\u206a\u200d\u202a\u200b\u200f\u206c\u202e\u200c\u202e\u202d\u202c\u206e\u200d\u202c\u202b\u202b\u200d\u200f\u202d\u202c\u206c\u200c\u202e\u206e\u206d\u200f\u206e\u206c\u206b\u206d\u206b\u206c\u206f\u206c\u202b\u200b\u200e\u202a\u202e.ReadByte(); num2 = (int)((num3 * 1531147075) ^ 0x6C674A35); continue; case 2u: { int num6; int num7; if (rangeDecoder.\u206b\u202b\u202b\u200c\u200d\u206d\u206c\u206e\u202d\u206a\u206e\u200e\u202a\u200c\u200f\u206e\u202c\u200d\u206c\u206f\u202e\u202d\u200b\u202c\u202a\u206a\u200c\u200f\u202d\u206e\u206f\u200f\u202d\u200e\u202e\u206c\u200d\u206e\u206c\u202e\u202e < 16777216) { num6 = 17128310; num7 = num6; } else { num6 = 1622474659; num7 = num6; } num2 = num6 ^ ((int)num3 * -1720452713); continue; } case 4u: rangeDecoder.\u202b\u206d\u206d\u206b\u200f\u206c\u200f\u200f\u206f\u206a\u202e\u206a\u200c\u206c\u202d\u200e\u202c\u200b\u200e\u200c\u206c\u206b\u206d\u202e\u202b\u200d\u200f\u200c\u206b\u206e\u206e\u200f\u206e\u200b\u206f\u202c\u206c\u200f\u200b\u206a\u202e = (rangeDecoder.\u202b\u206d\u206d\u206b\u200f\u206c\u200f\u200f\u206f\u206a\u202e\u206a\u200c\u206c\u202d\u200e\u202c\u200b\u200e\u200c\u206c\u206b\u206d\u202e\u202b\u200d\u200f\u200c\u206b\u206e\u206e\u200f\u206e\u200b\u206f\u202c\u206c\u200f\u200b\u206a\u202e << 8) | (byte)rangeDecoder.\u206e\u206b\u206a\u200d\u202a\u200b\u200f\u206c\u202e\u200c\u202e\u202d\u202c\u206e\u200d\u202c\u202b\u202b\u200d\u200f\u202d\u202c\u206c\u200c\u202e\u206e\u206d\u200f\u206e\u206c\u206b\u206d\u206b\u206c\u206f\u206c\u202b\u200b\u200e\u202a\u202e.ReadByte(); rangeDecoder.\u206b\u202b\u202b\u200c\u200d\u206d\u206c\u206e\u202d\u206a\u206e\u200e\u202a\u200c\u200f\u206e\u202c\u200d\u206c\u206f\u202e\u202d\u200b\u202c\u202a\u206a\u200c\u200f\u202d\u206e\u206f\u200f\u202d\u200e\u202e\u206c\u200d\u206e\u206c\u202e\u202e <<= 8; num2 = ((int)num3 * -1425102440) ^ -1322301873; continue; case 8u: rangeDecoder.\u206b\u202b\u202b\u200c\u200d\u206d\u206c\u206e\u202d\u206a\u206e\u200e\u202a\u200c\u200f\u206e\u202c\u200d\u206c\u206f\u202e\u202d\u200b\u202c\u202a\u206a\u200c\u200f\u202d\u206e\u206f\u200f\u202d\u200e\u202e\u206c\u200d\u206e\u206c\u202e\u202e = num; num2 = (int)(num3 * 820725195) ^ -74418921; continue; case 5u: goto IL_010a; case 9u: \u206b\u200d\u202b\u202c\u202b\u206e\u206f\u200c\u202e\u206e\u200e\u200c\u202b\u206e\u206e\u200d\u206b\u200e\u206f\u206b\u202c\u206f\u200f\u206e\u202a\u202c\u202b\u206d\u200d\u200f\u206d\u202a\u202a\u202d\u206e\u200d\u202a\u202e\u206f\u202b\u202e += 2048 - \u206b\u200d\u202b\u202c\u202b\u206e\u206f\u200c\u202e\u206e\u200e\u200c\u202b\u206e\u206e\u200d\u206b\u200e\u206f\u206b\u202c\u206f\u200f\u206e\u202a\u202c\u202b\u206d\u200d\u200f\u206d\u202a\u202a\u202d\u206e\u200d\u202a\u202e\u206f\u202b\u202e >> 5; num2 = (int)(num3 * 595372476) ^ -1482347828; continue; case 7u: return 0u; case 3u: rangeDecoder.\u206b\u202b\u202b\u200c\u200d\u206d\u206c\u206e\u202d\u206a\u206e\u200e\u202a\u200c\u200f\u206e\u202c\u200d\u206c\u206f\u202e\u202d\u200b\u202c\u202a\u206a\u200c\u200f\u202d\u206e\u206f\u200f\u202d\u200e\u202e\u206c\u200d\u206e\u206c\u202e\u202e <<= 8; num2 = (int)(num3 * 469007138) ^ -1366958513; continue; case 1u: { rangeDecoder.\u202b\u206d\u206d\u206b\u200f\u206c\u200f\u200f\u206f\u206a\u202e\u206a\u200c\u206c\u202d\u200e\u202c\u200b\u200e\u200c\u206c\u206b\u206d\u202e\u202b\u200d\u200f\u200c\u206b\u206e\u206e\u200f\u206e\u200b\u206f\u202c\u206c\u200f\u200b\u206a\u202e -= num; \u206b\u200d\u202b\u202c\u202b\u206e\u206f\u200c\u202e\u206e\u200e\u200c\u202b\u206e\u206e\u200d\u206b\u200e\u206f\u206b\u202c\u206f\u200f\u206e\u202a\u202c\u202b\u206d\u200d\u200f\u206d\u202a\u202a\u202d\u206e\u200d\u202a\u202e\u206f\u202b\u202e -= \u206b\u200d\u202b\u202c\u202b\u206e\u206f\u200c\u202e\u206e\u200e\u200c\u202b\u206e\u206e\u200d\u206b\u200e\u206f\u206b\u202c\u206f\u200f\u206e\u202a\u202c\u202b\u206d\u200d\u200f\u206d\u202a\u202a\u202d\u206e\u200d\u202a\u202e\u206f\u202b\u202e >> 5; int num4; int num5; if (rangeDecoder.\u206b\u202b\u202b\u200c\u200d\u206d\u206c\u206e\u202d\u206a\u206e\u200e\u202a\u200c\u200f\u206e\u202c\u200d\u206c\u206f\u202e\u202d\u200b\u202c\u202a\u206a\u200c\u200f\u202d\u206e\u206f\u200f\u202d\u200e\u202e\u206c\u200d\u206e\u206c\u202e\u202e >= 16777216) { num4 = -37682221; num5 = num4; } else { num4 = -2049925458; num5 = num4; } num2 = num4 ^ (int)(num3 * 1946199244); continue; } default: return 1u; } break; } goto IL_001d; IL_001d: num2 = 1689631190; goto IL_0022; } } internal struct \u200d\u206b\u200c\u200d\u206d\u206b\u206e\u202b\u206b\u206d\u202b\u206c\u206a\u200c\u206d\u202d\u200b\u200f\u202e\u206c\u202b\u200e\u206a\u200c\u206b\u206c\u200e\u202a\u202c\u206f\u202e\u202e\u202e\u200b\u206c\u206e\u206a\u206f\u206a\u202a\u202e { internal readonly \u206f\u206e\u202b\u202b\u202b\u206d\u202a\u206f\u206b\u202d\u200d\u200c\u206a\u202d\u206a\u206b\u202b\u200d\u206d\u202b\u202b\u206e\u206f\u200d\u200d\u200d\u202c\u202a\u206f\u200d\u206c\u206a\u202a\u200e\u200c\u206d\u206a\u200f\u202c\u200c\u202e[] \u202b\u202e\u200b\u206e\u206f\u202d\u202e\u206c\u206a\u202e\u206a\u202b\u200d\u202b\u206d\u202d\u206c\u206c\u206f\u206a\u206d\u200b\u206d\u206e\u200c\u200c\u200c\u206e\u200f\u202c\u200d\u206b\u206f\u202a\u200b\u206c\u206c\u202c\u206b\u206f\u202e; internal readonly int \u202c\u206b\u200e\u206f\u206a\u200f\u206b\u206b\u200e\u206a\u202b\u206a\u206b\u200c\u200c\u200c\u202d\u202c\u206e\u206e\u206c\u206c\u200c\u200c\u200e\u206c\u206f\u200c\u206a\u206e\u200e\u202e\u202c\u200b\u200e\u206d\u202a\u200b\u206d\u200e\u202e; internal \u200d\u206b\u200c\u200d\u206d\u206b\u206e\u202b\u206b\u206d\u202b\u206c\u206a\u200c\u206d\u202d\u200b\u200f\u202e\u206c\u202b\u200e\u206a\u200c\u206b\u206c\u200e\u202a\u202c\u206f\u202e\u202e\u202e\u200b\u206c\u206e\u206a\u206f\u206a\u202a\u202e(int numBitLevels) { \u202c\u206b\u200e\u206f\u206a\u200f\u206b\u206b\u200e\u206a\u202b\u206a\u206b\u200c\u200c\u200c\u202d\u202c\u206e\u206e\u206c\u206c\u200c\u200c\u200e\u206c\u206f\u200c\u206a\u206e\u200e\u202e\u202c\u200b\u200e\u206d\u202a\u200b\u206d\u200e\u202e = numBitLevels; \u202b\u202e\u200b\u206e\u206f\u202d\u202e\u206c\u206a\u202e\u206a\u202b\u200d\u202b\u206d\u202d\u206c\u206c\u206f\u206a\u206d\u200b\u206d\u206e\u200c\u200c\u200c\u206e\u200f\u202c\u200d\u206b\u206f\u202a\u200b\u206c\u206c\u202c\u206b\u206f\u202e = new \u206f\u206e\u202b\u202b\u202b\u206d\u202a\u206f\u206b\u202d\u200d\u200c\u206a\u202d\u206a\u206b\u202b\u200d\u206d\u202b\u202b\u206e\u206f\u200d\u200d\u200d\u202c\u202a\u206f\u200d\u206c\u206a\u202a\u200e\u200c\u206d\u206a\u200f\u202c\u200c\u202e[1 << numBitLevels]; } internal void \u206e\u206d\u202c\u202c\u206c\u202a\u202b\u206b\u200c\u200d\u200b\u206c\u202b\u202a\u206a\u200c\u202d\u206c\u202e\u206b\u206a\u206b\u200c\u202b\u206c\u206e\u202a\u202b\u202a\u202b\u202d\u200c\u200c\u200b\u202b\u200f\u206a\u200b\u202c\u200d\u202e() { uint num = 1u; while (true) { int num2 = 1148697418; while (true) { uint num3; switch ((num3 = (uint)num2 ^ 0x54785848u) % 6) { case 4u: break; default: return; case 2u: num2 = (int)(num3 * 802797451) ^ -292544060; continue; case 1u: \u202b\u202e\u200b\u206e\u206f\u202d\u202e\u206c\u206a\u202e\u206a\u202b\u200d\u202b\u206d\u202d\u206c\u206c\u206f\u206a\u206d\u200b\u206d\u206e\u200c\u200c\u200c\u206e\u200f\u202c\u200d\u206b\u206f\u202a\u200b\u206c\u206c\u202c\u206b\u206f\u202e[num].\u206d\u200b\u202a\u202c\u200c\u206f\u206f\u206d\u202c\u202c\u206d\u200b\u202c\u200e\u200b\u206d\u200e\u202b\u200f\u206a\u206c\u200e\u202b\u200b\u200f\u206e\u206e\u206c\u206a\u206d\u202a\u202d\u202c\u202d\u206a\u200d\u200c\u206e\u202e\u200f\u202e(); num2 = 11651175; continue; case 5u: num++; num2 = ((int)num3 * -655130517) ^ -1929686409; continue; case 0u: { int num4; if (num >= 1 << \u202c\u206b\u200e\u206f\u206a\u200f\u206b\u206b\u200e\u206a\u202b\u206a\u206b\u200c\u200c\u200c\u202d\u202c\u206e\u206e\u206c\u206c\u200c\u200c\u200e\u206c\u206f\u200c\u206a\u206e\u200e\u202e\u202c\u200b\u200e\u206d\u202a\u200b\u206d\u200e\u202e) { num2 = 444792407; num4 = num2; } else { num2 = 932348835; num4 = num2; } continue; } case 3u: return; } break; } } } internal uint \u200d\u200c\u200c\u202b\u206e\u206b\u200b\u206b\u206b\u202a\u202d\u202c\u206d\u200e\u200e\u206b\u206d\u206c\u202c\u206b\u202e\u202a\u200b\u206a\u206d\u200b\u202c\u206e\u200b\u200d\u206a\u200e\u206e\u202b\u202a\u200b\u206f\u200f\u202a\u206e\u202e(\u202a\u206f\u200c\u200c\u206b\u206d\u200f\u200b\u206e\u202b\u206d\u202c\u206a\u202e\u206b\u202a\u206b\u206a\u202b\u200f\u200d\u202a\u202e\u202d\u202d\u202b\u206f\u206c\u202c\u200e\u202b\u202b\u200f\u202c\u206c\u200c\u200d\u202a\u200c\u206f\u202e rangeDecoder) { uint num = 1u; int num2 = \u202c\u206b\u200e\u206f\u206a\u200f\u206b\u206b\u200e\u206a\u202b\u206a\u206b\u200c\u200c\u200c\u202d\u202c\u206e\u206e\u206c\u206c\u200c\u200c\u200e\u206c\u206f\u200c\u206a\u206e\u200e\u202e\u202c\u200b\u200e\u206d\u202a\u200b\u206d\u200e\u202e; while (true) { int num3 = -799898486; while (true) { uint num4; switch ((num4 = (uint)num3 ^ 0xA72C0335u) % 6) { case 5u: break; case 4u: num2--; num3 = (int)((num4 * 196016862) ^ 0x20D549C2); continue; case 2u: num = (num << 1) + \u202b\u202e\u200b\u206e\u206f\u202d\u202e\u206c\u206a\u202e\u206a\u202b\u200d\u202b\u206d\u202d\u206c\u206c\u206f\u206a\u206d\u200b\u206d\u206e\u200c\u200c\u200c\u206e\u200f\u202c\u200d\u206b\u206f\u202a\u200b\u206c\u206c\u202c\u206b\u206f\u202e[num].\u206a\u202a\u200c\u206d\u200c\u206f\u206e\u200d\u200e\u206e\u202a\u202d\u206a\u202e\u206e\u202d\u206f\u206b\u206f\u200e\u206f\u206e\u206a\u200d\u200e\u202e\u202a\u200c\u206d\u206d\u206f\u200c\u202a\u206c\u200c\u202e\u206c\u206d\u200d\u202b\u202e(rangeDecoder); num3 = -574193545; continue; case 1u: num3 = (int)((num4 * 1029617757) ^ 0x3D17969D); continue; case 3u: { int num5; if (num2 > 0) { num3 = -947401433; num5 = num3; } else { num3 = -83073731; num5 = num3; } continue; } default: return num - (uint)(1 << \u202c\u206b\u200e\u206f\u206a\u200f\u206b\u206b\u200e\u206a\u202b\u206a\u206b\u200c\u200c\u200c\u202d\u202c\u206e\u206e\u206c\u206c\u200c\u200c\u200e\u206c\u206f\u200c\u206a\u206e\u200e\u202e\u202c\u200b\u200e\u206d\u202a\u200b\u206d\u200e\u202e); } break; } } } internal uint \u206d\u206b\u200b\u200b\u206b\u206e\u200e\u206c\u202e\u206d\u200f\u206b\u200f\u206b\u206a\u200c\u202e\u206b\u200d\u206b\u206a\u206b\u200b\u200c\u206c\u206e\u200f\u206b\u200b\u200f\u200f\u206b\u202a\u202e\u206c\u202e\u200f\u206c\u206f\u206a\u202e(\u202a\u206f\u200c\u200c\u206b\u206d\u200f\u200b\u206e\u202b\u206d\u202c\u206a\u202e\u206b\u202a\u206b\u206a\u202b\u200f\u200d\u202a\u202e\u202d\u202d\u202b\u206f\u206c\u202c\u200e\u202b\u202b\u200f\u202c\u206c\u200c\u200d\u202a\u200c\u206f\u202e rangeDecoder) { uint num = 1u; uint num2 = 0u; int num3 = 0; uint num7 = default(uint); while (true) { int num4; int num5; if (num3 >= \u202c\u206b\u200e\u206f\u206a\u200f\u206b\u206b\u200e\u206a\u202b\u206a\u206b\u200c\u200c\u200c\u202d\u202c\u206e\u206e\u206c\u206c\u200c\u200c\u200e\u206c\u206f\u200c\u206a\u206e\u200e\u202e\u202c\u200b\u200e\u206d\u202a\u200b\u206d\u200e\u202e) { num4 = 1798447133; num5 = num4; } else { num4 = 1605049562; num5 = num4; } while (true) { uint num6; switch ((num6 = (uint)num4 ^ 0x6636785Bu) % 7) { case 6u: num4 = 1605049562; continue; case 4u: num7 = \u202b\u202e\u200b\u206e\u206f\u202d\u202e\u206c\u206a\u202e\u206a\u202b\u200d\u202b\u206d\u202d\u206c\u206c\u206f\u206a\u206d\u200b\u206d\u206e\u200c\u200c\u200c\u206e\u200f\u202c\u200d\u206b\u206f\u202a\u200b\u206c\u206c\u202c\u206b\u206f\u202e[num].\u206a\u202a\u200c\u206d\u200c\u206f\u206e\u200d\u200e\u206e\u202a\u202d\u206a\u202e\u206e\u202d\u206f\u206b\u206f\u200e\u206f\u206e\u206a\u200d\u200e\u202e\u202a\u200c\u206d\u206d\u206f\u200c\u202a\u206c\u200c\u202e\u206c\u206d\u200d\u202b\u202e(rangeDecoder); num4 = 1963571730; continue; case 0u: num <<= 1; num4 = (int)(num6 * 2003168912) ^ -1109194736; continue; case 1u: break; case 3u: num += num7; num4 = ((int)num6 * -2054465127) ^ 0x6143D398; continue; case 5u: num2 |= num7 << num3; num3++; num4 = ((int)num6 * -448775580) ^ -1960614950; continue; default: return num2; } break; } } } internal static uint \u200b\u206f\u200c\u202b\u206b\u200b\u200f\u206a\u200f\u206b\u206f\u206f\u202b\u200e\u200f\u202a\u202a\u202e\u206b\u206a\u206b\u202a\u202c\u206a\u206e\u206d\u202d\u206e\u200d\u202b\u202e\u206e\u202a\u206c\u200f\u206f\u200b\u200d\u206a\u206f\u202e(\u206f\u206e\u202b\u202b\u202b\u206d\u202a\u206f\u206b\u202d\u200d\u200c\u206a\u202d\u206a\u206b\u202b\u200d\u206d\u202b\u202b\u206e\u206f\u200d\u200d\u200d\u202c\u202a\u206f\u200d\u206c\u206a\u202a\u200e\u200c\u206d\u206a\u200f\u202c\u200c\u202e[] Models, uint startIndex, \u202a\u206f\u200c\u200c\u206b\u206d\u200f\u200b\u206e\u202b\u206d\u202c\u206a\u202e\u206b\u202a\u206b\u206a\u202b\u200f\u200d\u202a\u202e\u202d\u202d\u202b\u206f\u206c\u202c\u200e\u202b\u202b\u200f\u202c\u206c\u200c\u200d\u202a\u200c\u206f\u202e rangeDecoder, int NumBitLevels) { uint num = 1u; uint num4 = default(uint); int num6 = default(int); uint num5 = default(uint); while (true) { int num2 = 1546229012; while (true) { uint num3; switch ((num3 = (uint)num2 ^ 0x5AC8911Eu) % 8) { case 0u: break; case 1u: num <<= 1; num2 = (int)((num3 * 123542015) ^ 0x664FA93D); continue; case 6u: num2 = (int)((num3 * 1854963595) ^ 0x37EFEED7); continue; case 2u: num4 = 0u; num6 = 0; num2 = (int)((num3 * 189511088) ^ 0x77B85AD8); continue; case 5u: num5 = Models[startIndex + num].\u206a\u202a\u200c\u206d\u200c\u206f\u206e\u200d\u200e\u206e\u202a\u202d\u206a\u202e\u206e\u202d\u206f\u206b\u206f\u200e\u206f\u206e\u206a\u200d\u200e\u202e\u202a\u200c\u206d\u206d\u206f\u200c\u202a\u206c\u200c\u202e\u206c\u206d\u200d\u202b\u202e(rangeDecoder); num2 = 977663695; continue; case 3u: { int num7; if (num6 >= NumBitLevels) { num2 = 337182457; num7 = num2; } else { num2 = 2571827; num7 = num2; } continue; } case 4u: num += num5; num4 |= num5 << num6; num6++; num2 = ((int)num3 * -69356941) ^ -646665711; continue; default: return num4; } break; } } } } internal class \u202a\u206f\u200c\u200c\u206b\u206d\u200f\u200b\u206e\u202b\u206d\u202c\u206a\u202e\u206b\u202a\u206b\u206a\u202b\u200f\u200d\u202a\u202e\u202d\u202d\u202b\u206f\u206c\u202c\u200e\u202b\u202b\u200f\u202c\u206c\u200c\u200d\u202a\u200c\u206f\u202e { internal uint \u202b\u206d\u206d\u206b\u200f\u206c\u200f\u200f\u206f\u206a\u202e\u206a\u200c\u206c\u202d\u200e\u202c\u200b\u200e\u200c\u206c\u206b\u206d\u202e\u202b\u200d\u200f\u200c\u206b\u206e\u206e\u200f\u206e\u200b\u206f\u202c\u206c\u200f\u200b\u206a\u202e; internal uint \u206b\u202b\u202b\u200c\u200d\u206d\u206c\u206e\u202d\u206a\u206e\u200e\u202a\u200c\u200f\u206e\u202c\u200d\u206c\u206f\u202e\u202d\u200b\u202c\u202a\u206a\u200c\u200f\u202d\u206e\u206f\u200f\u202d\u200e\u202e\u206c\u200d\u206e\u206c\u202e\u202e; internal Stream \u206e\u206b\u206a\u200d\u202a\u200b\u200f\u206c\u202e\u200c\u202e\u202d\u202c\u206e\u200d\u202c\u202b\u202b\u200d\u200f\u202d\u202c\u206c\u200c\u202e\u206e\u206d\u200f\u206e\u206c\u206b\u206d\u206b\u206c\u206f\u206c\u202b\u200b\u200e\u202a\u202e; internal void \u200c\u206e\u200f\u200f\u200d\u202a\u202c\u200c\u206f\u200c\u206a\u206d\u206e\u202d\u202c\u206d\u206c\u202e\u200d\u200b\u206a\u200b\u202d\u202c\u206f\u206c\u206e\u206a\u202a\u206a\u200b\u200c\u200f\u202d\u200b\u200d\u202d\u200b\u200b\u202d\u202e(Stream stream) { \u206e\u206b\u206a\u200d\u202a\u200b\u200f\u206c\u202e\u200c\u202e\u202d\u202c\u206e\u200d\u202c\u202b\u202b\u200d\u200f\u202d\u202c\u206c\u200c\u202e\u206e\u206d\u200f\u206e\u206c\u206b\u206d\u206b\u206c\u206f\u206c\u202b\u200b\u200e\u202a\u202e = stream; int num3 = default(int); while (true) { int num = 1479619301; while (true) { uint num2; switch ((num2 = (uint)num ^ 0x79A1BDBCu) % 8) { case 7u: break; default: return; case 1u: \u202b\u206d\u206d\u206b\u200f\u206c\u200f\u200f\u206f\u206a\u202e\u206a\u200c\u206c\u202d\u200e\u202c\u200b\u200e\u200c\u206c\u206b\u206d\u202e\u202b\u200d\u200f\u200c\u206b\u206e\u206e\u200f\u206e\u200b\u206f\u202c\u206c\u200f\u200b\u206a\u202e = 0u; num = ((int)num2 * -1038668083) ^ 0x2AA65D14; continue; case 3u: num3++; num = ((int)num2 * -1449411612)
plugins/IronDad-CustomMagicalMounts/MagicalMounts.dll
Decompiled 6 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.IO.Compression; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security; using System.Security.Cryptography; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using System.Threading; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using CreatureManager; using HarmonyLib; using IhvJoiNTPh9JvULZUA; using ItemManager; using JetBrains.Annotations; using MagicalMounts; using MagicalMounts.Patches; using MagicalMounts.Utils; using Microsoft.CodeAnalysis; using MountManager; using PieceManager; using ServerSync; using UnityEngine; using UnityEngine.Audio; using UnityEngine.UI; using sZnGYNh0aPguc4dKmU; [assembly: AssemblyTrademark("")] [assembly: AssemblyCopyright("Copyright © 2022")] [assembly: AssemblyTitle("MagicalMounts")] [assembly: ComVisible(false)] [assembly: AssemblyDescription("")] [assembly: AssemblyProduct("MagicalMounts")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: CompilationRelaxations(8)] [assembly: Guid("E0E2F92E-557C-4A05-9D89-AA92A0BD75C4")] [assembly: AssemblyFileVersion("1.7.3")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("CookieMilk")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.7.3.0")] [module: RefSafetyRules(11)] [module: UnverifiableCode] internal class <Module> { private static bool f8DC2C003C160C1F; internal static global::<Module> SearchRecord; internal static void m8DC2C003C160C1F() { int num = 6; int num2 = num; TimeSpan timeSpan = default(TimeSpan); while (true) { switch (num2) { case 3: timeSpan = DateTime.Now - new DateTime(2024, 2, 12); num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_e3d1ec81a16c4e85b81013edf6c19dce == 0) { num2 = 0; } continue; case 4: return; case 6: if (f8DC2C003C160C1F) { num2 = 5; continue; } goto case 1; case 1: f8DC2C003C160C1F = true; num2 = 3; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_25d7dfa94d9747c0a61cf0be093fccb5 == 0) { num2 = 1; } continue; case 5: return; default: if (Math.Sign(timeSpan.Days) < 14) { num2 = 4; continue; } break; case 2: break; } break; } throw new Exception("This assembly is protected by an unregistered version of Eziriz's \".NET Reactor\"! This assembly won't further work."); } static <Module>() { m8DC2C003C160C1F(); } internal static bool CalculateRecord() { return SearchRecord == null; } internal static global::<Module> VerifyRecord() { return SearchRecord; } } namespace Microsoft.CodeAnalysis { [<b690cb4a-a875-44b1-8271-ad97197eada7>Embedded] [CompilerGenerated] internal sealed class <b690cb4a-a875-44b1-8271-ad97197eada7>EmbeddedAttribute : Attribute { private static <b690cb4a-a875-44b1-8271-ad97197eada7>EmbeddedAttribute ReadRecord; public <b690cb4a-a875-44b1-8271-ad97197eada7>EmbeddedAttribute() { CodeValueDispatcher.CompareConfig(); base..ctor(); int num = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_40202358f9234c0992507e451be92acb != 0) { num = 0; } switch (num) { case 0: break; } } internal static bool CustomizeRecord() { return ReadRecord == null; } internal static <b690cb4a-a875-44b1-8271-ad97197eada7>EmbeddedAttribute PopRecord() { return ReadRecord; } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] [<b690cb4a-a875-44b1-8271-ad97197eada7>Embedded] [CompilerGenerated] internal sealed class <0636da5b-9fe8-42d0-8b4e-7336202d8a87>NullableAttribute : Attribute { public readonly byte[] NullableFlags; private static <0636da5b-9fe8-42d0-8b4e-7336202d8a87>NullableAttribute SetupRecord; public <0636da5b-9fe8-42d0-8b4e-7336202d8a87>NullableAttribute(byte P_0) { CodeValueDispatcher.CompareConfig(); base..ctor(); int num = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_5bbba08c17a141a9a1a5e7d28e60b68d == 0) { num = 0; } while (true) { switch (num) { case 1: return; } NullableFlags = new byte[1] { P_0 }; num = 1; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_fe840162cf56463ba913107e412574f8 == 0) { num = 1; } } } public <0636da5b-9fe8-42d0-8b4e-7336202d8a87>NullableAttribute(byte[] P_0) { CodeValueDispatcher.CompareConfig(); base..ctor(); int num = 1; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_5211b6ac5e2a45fdb528dd42861fab6d != 0) { num = 1; } while (true) { switch (num) { default: return; case 0: return; case 1: NullableFlags = P_0; num = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0669df8032c94431a7764f08856908bf == 0) { num = 0; } break; } } } internal static bool CollectRecord() { return SetupRecord == null; } internal static <0636da5b-9fe8-42d0-8b4e-7336202d8a87>NullableAttribute ComputeRecord() { return SetupRecord; } } [CompilerGenerated] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] [<b690cb4a-a875-44b1-8271-ad97197eada7>Embedded] internal sealed class <38803967-c4af-4b81-a896-b031642616a6>NullableContextAttribute : Attribute { public readonly byte Flag; internal static <38803967-c4af-4b81-a896-b031642616a6>NullableContextAttribute InterruptRecord; public <38803967-c4af-4b81-a896-b031642616a6>NullableContextAttribute(byte P_0) { CodeValueDispatcher.CompareConfig(); base..ctor(); int num = 1; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_bd69a92a348743ca91e70acf3ff2103d == 0) { num = 1; } while (true) { switch (num) { default: return; case 0: return; case 1: Flag = P_0; num = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_45d4ee4c58424598aa466a649c3fb5e2 == 0) { num = 0; } break; } } } internal static bool LogoutRecord() { return InterruptRecord == null; } internal static <38803967-c4af-4b81-a896-b031642616a6>NullableContextAttribute DestroyRecord() { return InterruptRecord; } } [CompilerGenerated] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] [<b690cb4a-a875-44b1-8271-ad97197eada7>Embedded] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; internal static RefSafetyRulesAttribute StopRecord; public RefSafetyRulesAttribute(int P_0) { CodeValueDispatcher.CompareConfig(); base..ctor(); int num = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_041d49d2e947412e985d9c0598f32bd2 == 0) { num = 0; } while (true) { switch (num) { case 1: return; } Version = P_0; num = 1; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_f5816364cbd64043beb2f9e33bdd5823 == 0) { num = 0; } } } internal static bool CountRecord() { return StopRecord == null; } internal static RefSafetyRulesAttribute CalcRecord() { return StopRecord; } } } public class MysticLightFlicker : MonoBehaviour { [<0636da5b-9fe8-42d0-8b4e-7336202d8a87>Nullable(1)] public string waveFunction; public float startValue; public float amplitude; public float phase; public float frequency; private Color m_Specification; internal static MysticLightFlicker VisitRecord; private void Start() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) int num = 1; int num2 = num; while (true) { switch (num2) { default: return; case 0: return; case 1: m_Specification = ((Component)this).GetComponent<Light>().color; num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_b0fb67a39d814a3da397fbd3bef5bf89 != 0) { num2 = 0; } break; } } } private void Update() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) int num = 1; int num2 = num; Light component = default(Light); while (true) { switch (num2) { default: component.color = m_Specification * PushSpecification(); num2 = 2; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_91517bfd8c4a444caec6dadd6e1ad8ba == 0) { num2 = 0; } break; case 1: component = ((Component)this).GetComponent<Light>(); num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_2eb6ee419c7f42f38518eb08164648ef != 0) { num2 = 0; } break; case 2: return; } } } private float PushSpecification() { int num = 37; float num4 = default(float); float num3 = default(float); bool flag4 = default(bool); bool flag5 = default(bool); bool flag2 = default(bool); bool flag8 = default(bool); float result = default(float); bool flag6 = default(bool); bool flag7 = default(bool); bool flag = default(bool); bool flag3 = default(bool); while (true) { int num2 = num; while (true) { switch (num2) { case 1: num4 = Mathf.Sin(num3 * 2f * (float)Math.PI); num2 = 16; continue; case 6: flag4 = waveFunction == DispatcherAttribute.FindPolicy(0x3EBCC9C3 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_c0f07c067a9e4b5ca85cc257f8899e97); num2 = 33; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_78da9b7e4d88437fa4999dd5e441ae83 != 0) { num2 = 39; } continue; case 40: flag5 = num3 < 0.5f; num2 = 6; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_af7c050cfc8e4373a7ab6502ea6b613c == 0) { num2 = 18; } continue; case 24: case 27: flag2 = waveFunction == DispatcherAttribute.FindPolicy(0x129B80A1 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_ce7ee0869c0041bbb3058182d7dbdb53); num2 = 21; continue; default: num4 = 1f - num3; num2 = 10; continue; case 4: num4 = 1f - Random.value * 2f; num2 = 2; continue; case 37: num3 = (Time.time + phase) * frequency; num2 = 36; continue; case 34: num4 = 1f; num2 = 10; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_1a237a99af9c4040ac0e8b7840ca45bd == 0) { num2 = 23; } continue; case 14: num4 = num3; num2 = 3; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_324f108a40ce4cc9a9764826ebd836e6 == 0) { num2 = 5; } continue; case 21: if (flag2) { num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_40202358f9234c0992507e451be92acb != 0) { num2 = 0; } continue; } goto case 28; case 35: if (flag8) { num2 = 41; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_584bf895cb18482eb2892a7894b07612 != 0) { num2 = 15; } continue; } goto case 6; case 2: case 5: case 10: case 16: case 19: case 23: case 26: case 29: case 30: result = num4 * amplitude + startValue; num2 = 25; continue; case 11: num4 = 4f * num3 - 1f; num = 26; break; case 36: num3 -= Mathf.Floor(num3); num2 = 12; continue; case 12: flag6 = waveFunction == DispatcherAttribute.FindPolicy(0xC2D0C4 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_91517bfd8c4a444caec6dadd6e1ad8ba); num2 = 31; continue; case 15: num4 = 1f; num2 = 25; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3cf415bbfa134625a4e4b4281bdf2293 != 0) { num2 = 30; } continue; case 32: if (flag7) { num2 = 2; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_55031563d1eb487ea786df66da9867a3 == 0) { num2 = 4; } continue; } goto case 15; case 7: flag8 = waveFunction == DispatcherAttribute.FindPolicy(--357002894 ^ 0x28CEEE85 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_88fd7915297b434f9d0ad753baad3ff0); num2 = 35; continue; case 41: flag = num3 < 0.5f; num2 = 22; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0e3d801b3d68430eaab4e129e6c6213d == 0) { num2 = 13; } continue; case 8: case 38: num4 = -1f; num2 = 19; continue; case 13: case 25: return result; case 20: if (flag3) { num2 = 40; continue; } goto case 7; case 31: if (!flag6) { num2 = 17; continue; } goto case 1; case 18: if (!flag5) { num = 9; break; } goto case 11; case 39: if (!flag4) { num2 = 27; continue; } goto case 14; case 3: case 17: flag3 = waveFunction == DispatcherAttribute.FindPolicy(--357002894 ^ 0x684ED4B9 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_5211b6ac5e2a45fdb528dd42861fab6d); num2 = 20; continue; case 28: flag7 = waveFunction == DispatcherAttribute.FindPolicy(--874498345 ^ 0x228BF055 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_eef1032244ce418e932c5a6e3e165989); num2 = 32; continue; case 9: case 33: num4 = -4f * num3 + 3f; num = 29; break; case 22: if (!flag) { num = 8; break; } goto case 34; } break; } } } public MysticLightFlicker() { CodeValueDispatcher.CompareConfig(); waveFunction = DispatcherAttribute.FindPolicy(0x122AC4F7 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_5a8afde03e314f5b97a31b8c35c748eb); startValue = 0f; amplitude = 1f; phase = 0f; frequency = 0.5f; ((MonoBehaviour)this)..ctor(); int num = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_fbd453176d2e4470844e85c214dd8536 != 0) { num = 0; } switch (num) { case 0: break; } } internal static bool ListRecord() { return VisitRecord == null; } internal static MysticLightFlicker GetRecord() { return VisitRecord; } } namespace MysticArsenal { public class MysticLightFade : MonoBehaviour { [Header("Seconds to dim the light")] public float life; public bool killAfterLife; [<0636da5b-9fe8-42d0-8b4e-7336202d8a87>Nullable(1)] private Light m_Exporter; private float m_Reponse; private static MysticLightFade LoginRecord; private void Start() { int num = 1; int num2 = num; bool flag = default(bool); while (true) { switch (num2) { case 6: m_Exporter = ((Component)this).gameObject.GetComponent<Light>(); num2 = 3; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_d6d3d1b370cb46e9b9904c3ed19eaeba == 0) { num2 = 0; } continue; case 1: flag = Object.op_Implicit((Object)(object)((Component)this).gameObject.GetComponent<Light>()); num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_365efb503b4a4ce59f7e9b2c9a0236ab != 0) { num2 = 0; } continue; default: if (flag) { num2 = 6; continue; } break; case 3: m_Reponse = m_Exporter.intensity; num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_4cb1365fc50242aa9faf40d0f98b842e != 0) { num2 = 4; } continue; case 4: return; case 5: return; case 2: break; } MonoBehaviour.print((object)(DispatcherAttribute.FindPolicy(0x79B148D1 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3ae4a4e226f3425abf4b272f1181e9eb) + ((Object)((Component)this).gameObject).name)); num2 = 5; } } private void Update() { int num = 1; int num2 = num; bool flag = default(bool); bool flag2 = default(bool); while (true) { int num3; switch (num2) { case 3: return; case 7: return; case 8: return; case 5: Object.Destroy((Object)(object)((Component)this).gameObject); num2 = 1; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_4ade0fcf58b2452fa9087b7e7e7b075f == 0) { num2 = 7; } continue; case 4: num3 = ((m_Exporter.intensity <= 0f) ? 1 : 0); break; case 1: flag = Object.op_Implicit((Object)(object)((Component)this).gameObject.GetComponent<Light>()); num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_da45b7f9705d4954823c7fe6c90a08d1 == 0) { num2 = 0; } continue; case 10: if (!killAfterLife) { num2 = 6; continue; } goto case 4; case 2: if (!flag2) { num2 = 8; continue; } goto case 5; default: if (!flag) { num2 = 3; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_5bbba08c17a141a9a1a5e7d28e60b68d == 0) { num2 = 3; } continue; } goto case 9; case 9: { Light exporter = m_Exporter; exporter.intensity -= m_Reponse * (Time.deltaTime / life); num2 = 10; continue; } case 6: num3 = 0; break; } flag2 = (byte)num3 != 0; num2 = 2; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_fbd453176d2e4470844e85c214dd8536 != 0) { num2 = 0; } } } public MysticLightFade() { CodeValueDispatcher.CompareConfig(); life = 0.2f; killAfterLife = true; ((MonoBehaviour)this)..ctor(); int num = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_fe840162cf56463ba913107e412574f8 == 0) { num = 0; } switch (num) { case 0: break; } } internal static bool MoveRecord() { return LoginRecord == null; } internal static MysticLightFade StartRecord() { return LoginRecord; } } public class MysticRotation : MonoBehaviour { public enum spaceEnum { Local, World } [Header("Rotate axises by degrees per second")] public Vector3 rotateVector; public spaceEnum rotateSpace; internal static MysticRotation ReflectRecord; private void Start() { } private void Update() { //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) int num = 3; bool flag2 = default(bool); bool flag = default(bool); while (true) { int num2 = num; while (true) { switch (num2) { default: return; case 5: ((Component)this).transform.Rotate(rotateVector * Time.deltaTime); num2 = 7; continue; case 1: ((Component)this).transform.Rotate(rotateVector * Time.deltaTime, (Space)0); num2 = 6; continue; case 2: if (flag2) { num2 = 2; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3ae4a4e226f3425abf4b272f1181e9eb != 0) { num2 = 5; } continue; } break; case 0: return; case 4: if (!flag) { num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_053660a133ca41ba9267828b70ed239f == 0) { num2 = 0; } continue; } goto case 1; case 3: goto end_IL_0012; case 6: return; case 7: break; } flag = rotateSpace == spaceEnum.World; num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_556e62c286944880b401eda22aec28af == 0) { num2 = 4; } continue; end_IL_0012: break; } flag2 = rotateSpace == spaceEnum.Local; num = 2; } } public MysticRotation() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) CodeValueDispatcher.CompareConfig(); rotateVector = Vector3.zero; ((MonoBehaviour)this)..ctor(); int num = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_2de628c6a6784c60a3824b6b8578aec7 != 0) { num = 0; } switch (num) { case 0: break; } } internal static bool DeleteRecord() { return ReflectRecord == null; } internal static MysticRotation MapRecord() { return ReflectRecord; } } } namespace MagicalMounts { [<38803967-c4af-4b81-a896-b031642616a6>NullableContext(1)] [BepInPlugin("CookieMilk.MagicalMounts", "MagicalMounts", "1.7.3")] [<0636da5b-9fe8-42d0-8b4e-7336202d8a87>Nullable(0)] public class MagicalMountsPlugin : BaseUnityPlugin { [<38803967-c4af-4b81-a896-b031642616a6>NullableContext(0)] [HarmonyPatch(typeof(AudioMan), "Awake")] private static class StateMapperConfig { private static StateMapperConfig ResetRecord; [UsedImplicitly] [<38803967-c4af-4b81-a896-b031642616a6>NullableContext(1)] private static void Postfix(AudioMan __instance) { int num = 12; int num2 = num; int num3 = default(int); AudioSource[] componentsInChildren = default(AudioSource[]); AudioMixerGroup outputAudioMixerGroup = default(AudioMixerGroup); GameObject val2 = default(GameObject); AudioSource val = default(AudioSource); GameObject[] array = default(GameObject[]); int num4 = default(int); while (true) { switch (num2) { case 5: case 7: if (num3 >= componentsInChildren.Length) { num2 = 9; continue; } goto case 14; case 12: outputAudioMixerGroup = __instance.m_masterMixer.FindMatchingGroups(DispatcherAttribute.FindPolicy(0x5D24D275 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_842e23724394457b8513670a46e87025))[0]; num2 = 10; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_844c90fc396f4bd3a73fa2bc9d5dd2d6 == 0) { num2 = 11; } continue; case 1: num3 = 0; num2 = 5; continue; default: num3++; num2 = 7; continue; case 2: componentsInChildren = val2.GetComponentsInChildren<AudioSource>(true); num2 = 1; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_4ade0fcf58b2452fa9087b7e7e7b075f == 0) { num2 = 1; } continue; case 14: val = componentsInChildren[num3]; num2 = 9; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_e70f853d404649e29b5f5ffc72c969b9 == 0) { num2 = 13; } continue; case 11: array = ItemManager.PrefabManager.RegisterAssetBundle(DispatcherAttribute.FindPolicy(0x702AED51 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0c97cddc268040e8a7bafa5f31d22b07), DispatcherAttribute.FindPolicy(0x212B257F ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_96f4d9c8a227412c91dc55f2d7bb6411)).LoadAllAssets<GameObject>(); num2 = 3; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_40202358f9234c0992507e451be92acb != 0) { num2 = 4; } continue; case 9: num4++; num2 = 8; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_af7c050cfc8e4373a7ab6502ea6b613c != 0) { num2 = 4; } continue; case 4: num4 = 0; num2 = 4; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3012601d73b74dceb9f8ed8bdd6a146f == 0) { num2 = 6; } continue; case 3: return; case 6: case 8: if (num4 >= array.Length) { num2 = 3; continue; } break; case 13: val.outputAudioMixerGroup = outputAudioMixerGroup; num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_4ade0fcf58b2452fa9087b7e7e7b075f == 0) { num2 = 0; } continue; case 10: break; } val2 = array[num4]; num2 = 2; } } internal static bool InitRecord() { return ResetRecord == null; } internal static StateMapperConfig EnableRecord() { return ResetRecord; } } [<0636da5b-9fe8-42d0-8b4e-7336202d8a87>Nullable(0)] [HarmonyPatch(typeof(FootStep), "OnFoot", new Type[] { typeof(Transform) })] private static class StatusAttributeRecord { private static ConfigEntry<bool> m_ManagerReponse; private static readonly List<string> refReponse; internal static StatusAttributeRecord OrderRecord; private static void DeleteSpecification() { int num = 1; int num2 = num; bool flag = default(bool); while (true) { switch (num2) { default: if (flag) { num2 = 3; break; } goto case 4; case 3: return; case 4: m_ManagerReponse = ((BaseUnityPlugin)m_Map).Config.Bind<bool>(DispatcherAttribute.FindPolicy(0x234C0901 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_a60c73647c724d968f20adc20f420b1c), DispatcherAttribute.FindPolicy(0x50BA1425 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_b72c275b483a4b5d909c1a1d3078c8b5), true, DispatcherAttribute.FindPolicy(0x702A9535 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0c97cddc268040e8a7bafa5f31d22b07)); num2 = 2; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_c6bf54114cb84ed7963166bd5d9ed69b != 0) { num2 = 2; } break; case 2: return; case 1: flag = m_ManagerReponse != null; num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_4dd05441108e4f249ef9bf10e9ec4d7d == 0) { num2 = 0; } break; } } } [UsedImplicitly] private static bool Prefix(FootStep __instance) { int num = 4; int num2 = num; bool result = default(bool); while (true) { int num3; switch (num2) { case 3: if (m_ManagerReponse.Value) { num2 = 5; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_d9a81f7a25af47b4bdad7171ad11bec4 != 0) { num2 = 1; } continue; } goto default; case 1: case 2: return result; case 4: DeleteSpecification(); num2 = 3; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_46c5f7f62cf443fda94ac0d2dc532be6 == 0) { num2 = 0; } continue; default: num3 = ((!refReponse.Contains(Utils.GetPrefabName(((Component)__instance).gameObject))) ? 1 : 0); break; case 5: num3 = 1; break; } result = (byte)num3 != 0; num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_843fa0efeeae401ebc3dd97b3f6cc8d9 != 0) { num2 = 1; } } } static StatusAttributeRecord() { int num = 1; int num2 = num; while (true) { switch (num2) { case 2: return; case 1: CodeValueDispatcher.CompareConfig(); num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_13771591b5124a74aee28639b0531a1f != 0) { num2 = 0; } continue; } refReponse = new List<string> { DispatcherAttribute.FindPolicy(0x6DDB7441 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_95b0c2611f9f4043bc2e7b7c6697f375), DispatcherAttribute.FindPolicy(0x58F845CE ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3ade89368242461abb3afba08ed0eb91), DispatcherAttribute.FindPolicy(0x100C78A ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_cc32bf2eb613467ebe1a71dfff81afc7), DispatcherAttribute.FindPolicy(0x418971A8 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_bb42c305d9cf4402aa8a06025c265c0e), DispatcherAttribute.FindPolicy(0xF2790D8 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_e2ac7e83334f4ee2b4faae63f322f1fc), DispatcherAttribute.FindPolicy(0x66FC4E84 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3cf415bbfa134625a4e4b4281bdf2293), DispatcherAttribute.FindPolicy(0x6D92FA74 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3357146a1a98443694a5a2344b022aad), DispatcherAttribute.FindPolicy(0x55FAC327 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_5cf61c1d67934a4dad4771ce8c63ee39), DispatcherAttribute.FindPolicy(0x212B2043 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_96f4d9c8a227412c91dc55f2d7bb6411), DispatcherAttribute.FindPolicy(0x750B3251 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_45d4ee4c58424598aa466a649c3fb5e2), DispatcherAttribute.FindPolicy(0x7D120258 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_b48c14fc84664bb2a93e4301283fe316), DispatcherAttribute.FindPolicy(0x35B6889A ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_6300c63db0404ebe8918b884e0d91520), DispatcherAttribute.FindPolicy(0x7FAE3154 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_4cb1365fc50242aa9faf40d0f98b842e), DispatcherAttribute.FindPolicy(0x7BD67605 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_25d7dfa94d9747c0a61cf0be093fccb5), DispatcherAttribute.FindPolicy(0x58F842BE ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3ade89368242461abb3afba08ed0eb91), DispatcherAttribute.FindPolicy(0x234C0C99 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_a60c73647c724d968f20adc20f420b1c), DispatcherAttribute.FindPolicy(0x6D92FFE8 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3357146a1a98443694a5a2344b022aad), DispatcherAttribute.FindPolicy(0x750B3067 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_45d4ee4c58424598aa466a649c3fb5e2), DispatcherAttribute.FindPolicy(0x67B2F7F5 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_9162fee099e444a8ad0c8f1f78137a13), DispatcherAttribute.FindPolicy(0x58F82DCA ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3ade89368242461abb3afba08ed0eb91), DispatcherAttribute.FindPolicy(0x750B30D7 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_45d4ee4c58424598aa466a649c3fb5e2), DispatcherAttribute.FindPolicy(0x1285BDED ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_843fa0efeeae401ebc3dd97b3f6cc8d9), DispatcherAttribute.FindPolicy(0x3D89EB1B ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_88fd7915297b434f9d0ad753baad3ff0), DispatcherAttribute.FindPolicy(0x750B5D6B ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_45d4ee4c58424598aa466a649c3fb5e2), DispatcherAttribute.FindPolicy(0x750B5D07 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_45d4ee4c58424598aa466a649c3fb5e2), DispatcherAttribute.FindPolicy(0x1285BCB5 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_843fa0efeeae401ebc3dd97b3f6cc8d9), DispatcherAttribute.FindPolicy(0x33C3D0CC ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_a6649aab9e8e425fb99253d098e3543e), DispatcherAttribute.FindPolicy(0x702A8609 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0c97cddc268040e8a7bafa5f31d22b07), DispatcherAttribute.FindPolicy(0x66FC21B0 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3cf415bbfa134625a4e4b4281bdf2293), DispatcherAttribute.FindPolicy(0x27765291 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_11b8f870b8ca4b23856a9fb4b96d249c), DispatcherAttribute.FindPolicy(0x7208A990 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_da45b7f9705d4954823c7fe6c90a08d1), DispatcherAttribute.FindPolicy(0x24714694 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_2eb6ee419c7f42f38518eb08164648ef), DispatcherAttribute.FindPolicy(0x35FEACB4 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0e3d801b3d68430eaab4e129e6c6213d), DispatcherAttribute.FindPolicy(0x8B1BD8D ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_40202358f9234c0992507e451be92acb), DispatcherAttribute.FindPolicy(0x3ADC1E03 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_e3d1ec81a16c4e85b81013edf6c19dce), DispatcherAttribute.FindPolicy(0x418903DA ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_bb42c305d9cf4402aa8a06025c265c0e), DispatcherAttribute.FindPolicy(0x35FEB04C ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0e3d801b3d68430eaab4e129e6c6213d), DispatcherAttribute.FindPolicy(0x6DDB7CF9 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_95b0c2611f9f4043bc2e7b7c6697f375), DispatcherAttribute.FindPolicy(0x703A15C2 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_ee678aac982749129c2277a56f69ad27), DispatcherAttribute.FindPolicy(0x8B1A0D1 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_40202358f9234c0992507e451be92acb), DispatcherAttribute.FindPolicy(0x1285B9F5 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_843fa0efeeae401ebc3dd97b3f6cc8d9), DispatcherAttribute.FindPolicy(0x3ADC01A9 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_e3d1ec81a16c4e85b81013edf6c19dce), DispatcherAttribute.FindPolicy(0x5C2DA88F ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_44006f309c684731a5089f116f102982), DispatcherAttribute.FindPolicy(0x5F5D839D ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3c3ee68579674204bcf7f8d60605c8aa), DispatcherAttribute.FindPolicy(0x78F6AB6F ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_d6d3d1b370cb46e9b9904c3ed19eaeba), DispatcherAttribute.FindPolicy(0x100B51E ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_cc32bf2eb613467ebe1a71dfff81afc7), DispatcherAttribute.FindPolicy(0x41890236 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_bb42c305d9cf4402aa8a06025c265c0e), DispatcherAttribute.FindPolicy(0x212B51AB ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_96f4d9c8a227412c91dc55f2d7bb6411), DispatcherAttribute.FindPolicy(0x5D24D883 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_842e23724394457b8513670a46e87025), DispatcherAttribute.FindPolicy(0x647DBF35 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_85dda70593694491979763aae742abf0), DispatcherAttribute.FindPolicy(0x7BD60181 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_25d7dfa94d9747c0a61cf0be093fccb5), DispatcherAttribute.FindPolicy(0x5D24D94B ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_842e23724394457b8513670a46e87025), DispatcherAttribute.FindPolicy(0x5D24DEFF ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_842e23724394457b8513670a46e87025), DispatcherAttribute.FindPolicy(0xD9A9BE1 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_bd69a92a348743ca91e70acf3ff2103d), DispatcherAttribute.FindPolicy(0x3D89F51D ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_88fd7915297b434f9d0ad753baad3ff0), DispatcherAttribute.FindPolicy(0x3ADC1A63 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_e3d1ec81a16c4e85b81013edf6c19dce), DispatcherAttribute.FindPolicy(0x24715ED4 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_2eb6ee419c7f42f38518eb08164648ef) }; num2 = 2; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_fbd453176d2e4470844e85c214dd8536 != 0) { num2 = 1; } } } internal static bool ManageRecord() { return OrderRecord == null; } internal static StatusAttributeRecord AddRecord() { return OrderRecord; } } [HarmonyPatch(typeof(Character), "ApplySlide")] [<38803967-c4af-4b81-a896-b031642616a6>NullableContext(0)] private static class RulesReponse { private static RulesReponse ChangeRecord; [UsedImplicitly] private static void Prefix(ref Vector3 currentVel, out Vector3 __state) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) int num = 1; int num2 = num; while (true) { switch (num2) { default: return; case 0: return; case 1: __state = currentVel; num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_2de628c6a6784c60a3824b6b8578aec7 == 0) { num2 = 0; } break; } } } [<38803967-c4af-4b81-a896-b031642616a6>NullableContext(1)] [UsedImplicitly] private static void Postfix(Character __instance, ref Vector3 currentVel, Vector3 __state) { //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) int num = 7; bool flag = default(bool); while (true) { int num2 = num; while (true) { switch (num2) { default: return; case 6: if (!flag) { num2 = 5; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_95b0c2611f9f4043bc2e7b7c6697f375 == 0) { num2 = 0; } continue; } return; case 4: case 5: __instance.m_slippage = 0f; num2 = 1; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_1cfb1f1ff51b45969cc068ddfe8757d3 != 0) { num2 = 0; } continue; case 8: __instance.m_sliding = false; num2 = 2; continue; case 3: return; case 1: __instance.m_wallRunning = true; num2 = 8; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_96f4d9c8a227412c91dc55f2d7bb6411 == 0) { num2 = 0; } continue; case 2: currentVel = __state; num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0669df8032c94431a7764f08856908bf == 0) { num2 = 0; } continue; case 7: break; case 0: return; } break; } flag = !__instance.IsTamed(); num = 6; } } internal static bool FillRecord() { return ChangeRecord == null; } internal static RulesReponse SortRecord() { return ChangeRecord; } } [<38803967-c4af-4b81-a896-b031642616a6>NullableContext(0)] [HarmonyPatch(typeof(Character), "CanWallRun")] private static class InvocationErrorComp { private static InvocationErrorComp TestRecord; [UsedImplicitly] [<38803967-c4af-4b81-a896-b031642616a6>NullableContext(1)] private static void Postfix(Character __instance, ref bool __result) { int num = 1; int num2 = num; while (true) { switch (num2) { default: return; case 0: return; case 1: __result |= __instance.IsTamed(); num2 = 0; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_c0bcc41541a34781bb174adc1f1021ad != 0) { num2 = 0; } break; } } } internal static bool RestartRecord() { return TestRecord == null; } internal static InvocationErrorComp DefineRecord() { return TestRecord; } } private static readonly string m_Attribute; private static readonly string m_Mapper; internal static string thread; private readonly Harmony m_Policy; internal static MagicalMountsPlugin m_Map; public static readonly ManualLogSource MagicalMountsLogger; private static readonly ConfigSync m_Error; private static AssetBundle _Token; private static ConfigEntry<KeyCode> adapter; public static ConfigEntry<KeyCode> Key_SummonMount; public static ConfigEntry<int> _cookieHealAmount; public static ConfigEntry<int> _cookieHealCooldown; public static ConfigEntry<int> _cookieDurabilityCost; public static List<string> _creatureList; [<0636da5b-9fe8-42d0-8b4e-7336202d8a87>Nullable(2)] private static ConfigEntry<bool> m_Producer; internal static ConfigEntry<int> param; internal static ConfigEntry<float> system; internal static ConfigEntry<int> _Interpreter; internal static ConfigEntry<float> prototype; internal static ConfigEntry<float> _Getter; internal static ConfigEntry<int> m_Indexer; internal static ConfigEntry<int> _Utils; internal static ConfigEntry<int> bridge; internal static ConfigEntry<float> m_Factory; internal static ConfigEntry<int> decorator; internal static ConfigEntry<float> m_Page; internal static ConfigEntry<float> _Configuration; internal static ConfigEntry<int> m_Account; internal static ConfigEntry<int> _Method; internal static ConfigEntry<int> _Comparator; internal static ConfigEntry<float> m_Proxy; internal static ConfigEntry<int> _Status; internal static ConfigEntry<float> m_Wrapper; internal static ConfigEntry<float> m_Attr; internal static ConfigEntry<int> m_Model; internal static ConfigEntry<int> m_Listener; internal static ConfigEntry<int> service; internal static ConfigEntry<float> parameter; internal static ConfigEntry<int> m_Predicate; internal static ConfigEntry<float> _Mapping; internal static ConfigEntry<float> database; internal static ConfigEntry<int> strategy; internal static ConfigEntry<int> task; internal static ConfigEntry<int> rule; internal static ConfigEntry<float> _Base; internal static ConfigEntry<int> _Role; internal static ConfigEntry<float> m_Visitor; internal static ConfigEntry<float> dic; internal static ConfigEntry<int> descriptor; internal static ConfigEntry<int> _Client; internal static ConfigEntry<int> instance; internal static ConfigEntry<float> _Tests; internal static ConfigEntry<int> _Merchant; internal static ConfigEntry<float> interceptor; internal static ConfigEntry<float> _Initializer; internal static ConfigEntry<int> _Processor; internal static ConfigEntry<int> _Property; internal static ConfigEntry<int> _Authentication; internal static ConfigEntry<float> _Reg; internal static ConfigEntry<int> creator; internal static ConfigEntry<float> writer; internal static ConfigEntry<int> m_Tokenizer; internal static ConfigEntry<float> _Process; internal static ConfigEntry<int> m_Parser; internal static ConfigEntry<float> _Struct; internal static ConfigEntry<int> _Val; internal static ConfigEntry<float> definition; internal static ConfigEntry<int> _Invocation; internal static ConfigEntry<float> message; internal static ConfigEntry<int> m_Importer; internal static ConfigEntry<float> _Field; internal static ConfigEntry<int> _Repository; internal static ConfigEntry<float> _Order; internal static ConfigEntry<int> m_Serializer; internal static ConfigEntry<float> m_Advisor; internal static ConfigEntry<int> code; internal static ConfigEntry<float> expression; internal static ConfigEntry<int> resolver; internal static ConfigEntry<float> m_Event; internal static ConfigEntry<int> m_Registry; internal static ConfigEntry<float> _Consumer; internal static ConfigEntry<int> m_Facade; internal static ConfigEntry<float> m_List; internal static ConfigEntry<int> template; internal static ConfigEntry<float> _Connection; internal static ConfigEntry<float> pool; internal static ConfigEntry<int> m_Tag; internal static ConfigEntry<int> callback; internal static ConfigEntry<int> observer; internal static ConfigEntry<float> _Printer; internal static ConfigEntry<int> _Setter; internal static ConfigEntry<float> _State; internal static ConfigEntry<float> mock; internal static ConfigEntry<int> request; internal static ConfigEntry<int> worker; internal static ConfigEntry<int> server; internal static ConfigEntry<float> m_Singleton; internal static ConfigEntry<int> _Params; internal static ConfigEntry<float> info; internal static ConfigEntry<float> composer; internal static ConfigEntry<int> issuer; internal static ConfigEntry<int> _Manager; internal static ConfigEntry<int> m_Ref; internal static ConfigEntry<float> _Rules; internal static ConfigEntry<int> _Dispatcher; internal static ConfigEntry<float> _Broadcaster; internal static ConfigEntry<float> m_Stub; internal static ConfigEntry<int> _Reader; internal static ConfigEntry<int> _Collection; internal static ConfigEntry<int> m_Queue; internal static ConfigEntry<float> m_Filter; internal static ConfigEntry<int> m_Watcher; internal static ConfigEntry<float> m_Schema; internal static ConfigEntry<float> iterator; internal static ConfigEntry<int> publisher; internal static ConfigEntry<int> m_Global; internal static ConfigEntry<int> product; internal static ConfigEntry<float> _Proc; internal static ConfigEntry<int> specificationExporter; internal static ConfigEntry<float> _ExporterExporter; internal static ConfigEntry<float> m_ReponseExporter; internal static ConfigEntry<int> _AttributeExporter; internal static ConfigEntry<int> _MapperExporter; internal static ConfigEntry<int> threadExporter; internal static ConfigEntry<float> _PolicyExporter; internal static ConfigEntry<int> _MapExporter; internal static ConfigEntry<float> errorExporter; internal static ConfigEntry<float> m_TokenExporter; internal static ConfigEntry<int> m_AdapterExporter; internal static ConfigEntry<int> valueExporter; internal static ConfigEntry<int> m_ProducerExporter; internal static ConfigEntry<float> paramExporter; internal static ConfigEntry<int> _SystemExporter; internal static ConfigEntry<float> _ContainerExporter; internal static ConfigEntry<float> interpreterExporter; internal static ConfigEntry<int> _PrototypeExporter; internal static ConfigEntry<int> getterExporter; internal static ConfigEntry<int> _IndexerExporter; internal static ConfigEntry<float> utilsExporter; internal static ConfigEntry<int> bridgeExporter; internal static ConfigEntry<float> itemExporter; internal static ConfigEntry<int> customerExporter; internal static ConfigEntry<float> factoryExporter; internal static ConfigEntry<int> decoratorExporter; internal static ConfigEntry<float> pageExporter; internal static ConfigEntry<int> m_ConfigurationExporter; internal static ConfigEntry<float> _AccountExporter; internal static ConfigEntry<int> _MethodExporter; internal static ConfigEntry<float> comparatorExporter; internal static ConfigEntry<int> proxyExporter; internal static ConfigEntry<float> _StatusExporter; internal static ConfigEntry<int> _WrapperExporter; internal static ConfigEntry<float> m_AttrExporter; internal static ConfigEntry<int> _ModelExporter; internal static ConfigEntry<float> algoExporter; internal static ConfigEntry<int> m_ListenerExporter; internal static ConfigEntry<float> serviceExporter; internal static ConfigEntry<int> m_TestExporter; internal static ConfigEntry<float> _ParameterExporter; internal static ConfigEntry<int> predicateExporter; internal static ConfigEntry<float> _MappingExporter; internal static ConfigEntry<int> m_DatabaseExporter; internal static ConfigEntry<float> candidateExporter; internal static ConfigEntry<int> _ConfigExporter; internal static ConfigEntry<float> _StrategyExporter; internal static ConfigEntry<int> _TaskExporter; internal static ConfigEntry<float> m_RuleExporter; internal static ConfigEntry<int> _BaseExporter; internal static ConfigEntry<float> _RoleExporter; internal static ConfigEntry<int> visitorExporter; internal static ConfigEntry<float> _DicExporter; internal static ConfigEntry<int> m_DescriptorExporter; internal static ConfigEntry<float> m_IdentifierExporter; internal static ConfigEntry<float> clientExporter; internal static ConfigEntry<int> m_InstanceExporter; internal static ConfigEntry<int> _TestsExporter; internal static ConfigEntry<int> _MerchantExporter; internal static ConfigEntry<float> interceptorExporter; internal static ConfigEntry<int> initializerExporter; internal static ConfigEntry<float> m_ProcessorExporter; internal static ConfigEntry<float> propertyExporter; internal static ConfigEntry<int> _AuthenticationExporter; internal static ConfigEntry<int> _ExceptionExporter; internal static ConfigEntry<int> _RegExporter; internal static ConfigEntry<float> helperExporter; internal static ConfigEntry<int> creatorExporter; internal static ConfigEntry<float> m_WriterExporter; internal static ConfigEntry<float> _ObjectExporter; internal static ConfigEntry<int> m_TokenizerExporter; internal static ConfigEntry<int> _ProcessExporter; internal static ConfigEntry<int> parserExporter; internal static ConfigEntry<float> structExporter; internal static ConfigEntry<int> m_ValExporter; internal static ConfigEntry<float> contextExporter; internal static ConfigEntry<float> definitionExporter; internal static ConfigEntry<int> invocationExporter; internal static ConfigEntry<int> _MessageExporter; internal static ConfigEntry<int> importerExporter; internal static ConfigEntry<float> m_FieldExporter; internal static ConfigEntry<int> _RepositoryExporter; internal static ConfigEntry<float> _OrderExporter; internal static ConfigEntry<float> serializerExporter; internal static ConfigEntry<int> m_AdvisorExporter; internal static ConfigEntry<int> _CodeExporter; internal static ConfigEntry<int> _ExpressionExporter; internal static ConfigEntry<float> _ResolverExporter; internal static ConfigEntry<int> _EventExporter; internal static ConfigEntry<float> _RegistryExporter; internal static ConfigEntry<float> consumerExporter; internal static ConfigEntry<int> m_FacadeExporter; internal static ConfigEntry<int> listExporter; internal static ConfigEntry<int> templateExporter; internal static ConfigEntry<float> connectionExporter; internal static ConfigEntry<int> m_PoolExporter; internal static ConfigEntry<float> _TagExporter; internal static ConfigEntry<int> m_CallbackExporter; internal static ConfigEntry<float> _ObserverExporter; internal static ConfigEntry<int> m_PrinterExporter; internal static ConfigEntry<float> m_SetterExporter; internal static ConfigEntry<int> _StateExporter; internal static ConfigEntry<float> m_MockExporter; internal static ConfigEntry<int> m_RequestExporter; internal static ConfigEntry<float> m_WorkerExporter; internal static ConfigEntry<int> _ServerExporter; internal static ConfigEntry<float> _SingletonExporter; internal static ConfigEntry<int> paramsExporter; internal static ConfigEntry<float> _InfoExporter; internal static ConfigEntry<int> _ComposerExporter; internal static ConfigEntry<float> classExporter; internal static ConfigEntry<int> m_RecordExporter; internal static ConfigEntry<float> m_IssuerExporter; internal static ConfigEntry<int> _ManagerExporter; internal static ConfigEntry<float> m_RefExporter; internal static ConfigEntry<int> _RulesExporter; internal static ConfigEntry<float> m_DispatcherExporter; internal static ConfigEntry<int> _BroadcasterExporter; internal static ConfigEntry<float> m_StubExporter; internal static ConfigEntry<int> readerExporter; internal static ConfigEntry<int> m_CollectionExporter; internal static ConfigEntry<int> queueExporter; internal static ConfigEntry<float> m_AnnotationExporter; internal static ConfigEntry<int> filterExporter; internal static ConfigEntry<int> m_WatcherExporter; internal static ConfigEntry<int> schemaExporter; internal static ConfigEntry<float> _IteratorExporter; internal static ConfigEntry<int> _PublisherExporter; internal static ConfigEntry<int> _GlobalExporter; internal static ConfigEntry<int> m_ProductExporter; internal static ConfigEntry<float> m_ProcExporter; internal static ConfigEntry<int> specificationReponse; internal static ConfigEntry<int> _ExporterReponse; internal static ConfigEntry<int> reponseReponse; internal static ConfigEntry<float> attributeReponse; internal static ConfigEntry<int> m_MapperReponse; internal static ConfigEntry<int> m_ThreadReponse; internal static ConfigEntry<int> _PolicyReponse; internal static ConfigEntry<float> mapReponse; internal static ConfigEntry<int> _ErrorReponse; internal static ConfigEntry<int> _TokenReponse; internal static ConfigEntry<int> adapterReponse; internal static ConfigEntry<int> _ValueReponse; internal static ConfigEntry<float> m_ProducerReponse; internal static ConfigEntry<int> _ParamReponse; internal static ConfigEntry<int> m_SystemReponse; internal static ConfigEntry<float> m_ContainerReponse; internal static ConfigEntry<int> _InterpreterReponse; internal static ConfigEntry<int> m_PrototypeReponse; internal static ConfigEntry<float> _GetterReponse; internal static ConfigEntry<int> _IndexerReponse; internal static ConfigEntry<int> m_UtilsReponse; internal static ConfigEntry<float> m_BridgeReponse; internal static ConfigEntry<int> m_ItemReponse; internal static ConfigEntry<int> customerReponse; internal static ConfigEntry<float> factoryReponse; internal static ConfigEntry<int> _DecoratorReponse; internal static ConfigEntry<int> pageReponse; internal static ConfigEntry<float> m_ConfigurationReponse; internal static ConfigEntry<int> _AccountReponse; internal static ConfigEntry<float> m_MethodReponse; internal static ConfigEntry<int> _ComparatorReponse; internal static ConfigEntry<float> _ProxyReponse; internal static ConfigEntry<float> m_StatusReponse; internal static ConfigEntry<int> _WrapperReponse; internal static ConfigEntry<int> attrReponse; internal static ConfigEntry<int> modelReponse; internal static ConfigEntry<float> algoReponse; internal static ConfigEntry<int> listenerReponse; internal static ConfigEntry<float> _ServiceReponse; internal static ConfigEntry<float> _TestReponse; internal static ConfigEntry<int> _ParameterReponse; internal static ConfigEntry<int> predicateReponse; internal static ConfigEntry<int> mappingReponse; internal static ConfigEntry<float> m_DatabaseReponse; internal static ConfigEntry<int> m_CandidateReponse; internal static ConfigEntry<float> configReponse; internal static ConfigEntry<float> m_StrategyReponse; internal static ConfigEntry<int> _TaskReponse; internal static ConfigEntry<int> _RuleReponse; internal static ConfigEntry<int> baseReponse; internal static ConfigEntry<float> _RoleReponse; internal static ConfigEntry<int> _VisitorReponse; internal static ConfigEntry<float> _DicReponse; internal static ConfigEntry<float> descriptorReponse; internal static ConfigEntry<int> m_IdentifierReponse; internal static ConfigEntry<int> clientReponse; internal static ConfigEntry<int> _InstanceReponse; internal static ConfigEntry<float> testsReponse; internal static ConfigEntry<int> m_MerchantReponse; internal static ConfigEntry<float> _InterceptorReponse; internal static ConfigEntry<float> m_InitializerReponse; internal static ConfigEntry<int> _ProcessorReponse; internal static ConfigEntry<int> propertyReponse; internal static ConfigEntry<int> m_AuthenticationReponse; internal static ConfigEntry<float> m_ExceptionReponse; internal static ConfigEntry<int> regReponse; internal static ConfigEntry<float> _HelperReponse; internal static ConfigEntry<float> m_CreatorReponse; internal static ConfigEntry<int> _WriterReponse; internal static ConfigEntry<int> _ObjectReponse; internal static ConfigEntry<int> tokenizerReponse; internal static ConfigEntry<float> processReponse; internal static ConfigEntry<int> m_ParserReponse; internal static ConfigEntry<float> structReponse; internal static ConfigEntry<float> _ValReponse; internal static ConfigEntry<int> m_ContextReponse; internal static ConfigEntry<int> _DefinitionReponse; internal static ConfigEntry<int> invocationReponse; internal static ConfigEntry<float> messageReponse; internal static ConfigEntry<int> importerReponse; internal static ConfigEntry<float> m_FieldReponse; internal static ConfigEntry<float> m_RepositoryReponse; internal static ConfigEntry<int> orderReponse; internal static ConfigEntry<int> _SerializerReponse; internal static ConfigEntry<int> _AdvisorReponse; internal static ConfigEntry<float> codeReponse; internal static ConfigEntry<int> m_ExpressionReponse; internal static ConfigEntry<float> m_ResolverReponse; internal static ConfigEntry<float> m_EventReponse; internal static ConfigEntry<int> _RegistryReponse; internal static ConfigEntry<int> _ConsumerReponse; internal static ConfigEntry<int> facadeReponse; internal static ConfigEntry<float> listReponse; internal static ConfigEntry<int> templateReponse; internal static ConfigEntry<float> connectionReponse; internal static ConfigEntry<float> _PoolReponse; internal static ConfigEntry<int> m_TagReponse; internal static ConfigEntry<int> _CallbackReponse; internal static ConfigEntry<int> _ObserverReponse; internal static ConfigEntry<int> m_PrinterReponse; internal static ConfigEntry<float> setterReponse; internal static ConfigEntry<int> _StateReponse; internal static ConfigEntry<int> _MockReponse; internal static ConfigEntry<float> requestReponse; internal static ConfigEntry<int> workerReponse; internal static ConfigEntry<int> m_ServerReponse; internal static ConfigEntry<float> _SingletonReponse; internal static ConfigEntry<int> m_ParamsReponse; internal static ConfigEntry<int> m_InfoReponse; internal static ConfigEntry<float> composerReponse; internal static ConfigEntry<int> _ClassReponse; internal static ConfigEntry<int> m_RecordReponse; internal static ConfigEntry<float> m_IssuerReponse; internal static MagicalMountsPlugin ResolveRecord; private Mount QuerySpecification(AssetBundle asset, MountType type, string prefab, GameObject itemToSpawn, GameObject itemForBook, GameObject explosion, string attach, string name, string description, float multiplierIcon, string category) { int num = 2; int num2 = num; Mount result = default(Mount); while (true) { switch (num2) { case 2: result = new Mount(asset, prefab, name, description, multiplierIcon, category, ((Object)itemForBook).name) { Type = type, SummonItem = ((Object)itemToSpawn).name, AddToBookItem = ((Object)itemForBook).name, ExplosionEffect = explosion, AttachmentPoint = attach }; num2 = 1; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_894b6c8c7a7d46ae956f42f0efa48223 != 0) { num2 = 1; } break; default: return result; } } } public void Awake() { //IL_2f22: Unknown result type (might be due to invalid IL or missing references) //IL_2f88: Unknown result type (might be due to invalid IL or missing references) //IL_422b: Unknown result type (might be due to invalid IL or missing references) //IL_4291: Unknown result type (might be due to invalid IL or missing references) //IL_aac4: Unknown result type (might be due to invalid IL or missing references) //IL_ab2a: Unknown result type (might be due to invalid IL or missing references) //IL_7259: Unknown result type (might be due to invalid IL or missing references) //IL_72ba: Unknown result type (might be due to invalid IL or missing references) //IL_690a: Unknown result type (might be due to invalid IL or missing references) //IL_696a: Unknown result type (might be due to invalid IL or missing references) //IL_8122: Unknown result type (might be due to invalid IL or missing references) //IL_8188: Unknown result type (might be due to invalid IL or missing references) //IL_f79f: Unknown result type (might be due to invalid IL or missing references) //IL_f805: Unknown result type (might be due to invalid IL or missing references) //IL_136e2: Unknown result type (might be due to invalid IL or missing references) //IL_13743: Unknown result type (might be due to invalid IL or missing references) //IL_2c22: Unknown result type (might be due to invalid IL or missing references) //IL_2c88: Unknown result type (might be due to invalid IL or missing references) //IL_1bb9: Unknown result type (might be due to invalid IL or missing references) //IL_1c19: Unknown result type (might be due to invalid IL or missing references) //IL_cb38: Unknown result type (might be due to invalid IL or missing references) //IL_cb9e: Unknown result type (might be due to invalid IL or missing references) //IL_972b: Unknown result type (might be due to invalid IL or missing references) //IL_9791: Unknown result type (might be due to invalid IL or missing references) //IL_e695: Unknown result type (might be due to invalid IL or missing references) //IL_e6f5: Unknown result type (might be due to invalid IL or missing references) //IL_b409: Unknown result type (might be due to invalid IL or missing references) //IL_b46f: Unknown result type (might be due to invalid IL or missing references) //IL_11f1d: Unknown result type (might be due to invalid IL or missing references) //IL_11f83: Unknown result type (might be due to invalid IL or missing references) //IL_4bb9: Unknown result type (might be due to invalid IL or missing references) //IL_4c19: Unknown result type (might be due to invalid IL or missing references) //IL_3d38: Unknown result type (might be due to invalid IL or missing references) //IL_3d99: Unknown result type (might be due to invalid IL or missing references) //IL_30f8: Unknown result type (might be due to invalid IL or missing references) //IL_315e: Unknown result type (might be due to invalid IL or missing references) //IL_a5fd: Unknown result type (might be due to invalid IL or missing references) //IL_a65d: Unknown result type (might be due to invalid IL or missing references) //IL_110c4: Unknown result type (might be due to invalid IL or missing references) //IL_11124: Unknown result type (might be due to invalid IL or missing references) //IL_ed5b: Unknown result type (might be due to invalid IL or missing references) //IL_edc1: Unknown result type (might be due to invalid IL or missing references) //IL_4f97: Unknown result type (might be due to invalid IL or missing references) //IL_4ff7: Unknown result type (might be due to invalid IL or missing references) //IL_624e: Unknown result type (might be due to invalid IL or missing references) //IL_62b4: Unknown result type (might be due to invalid IL or missing references) //IL_d9e2: Unknown result type (might be due to invalid IL or missing references) //IL_da43: Unknown result type (might be due to invalid IL or missing references) //IL_ea01: Unknown result type (might be due to invalid IL or missing references) //IL_ea61: Unknown result type (might be due to invalid IL or missing references) //IL_16616: Unknown result type (might be due to invalid IL or missing references) //IL_1667c: Unknown result type (might be due to invalid IL or missing references) //IL_f093: Unknown result type (might be due to invalid IL or missing references) //IL_f0f9: Unknown result type (might be due to invalid IL or missing references) //IL_10f05: Unknown result type (might be due to invalid IL or missing references) //IL_10f65: Unknown result type (might be due to invalid IL or missing references) //IL_7de1: Unknown result type (might be due to invalid IL or missing references) //IL_7e41: Unknown result type (might be due to invalid IL or missing references) //IL_331f: Unknown result type (might be due to invalid IL or missing references) //IL_337f: Unknown result type (might be due to invalid IL or missing references) //IL_13056: Unknown result type (might be due to invalid IL or missing references) //IL_130b6: Unknown result type (might be due to invalid IL or missing references) int num = 860; Item item44 = default(Item); Item item93 = default(Item); BuildPiece buildPiece11 = default(BuildPiece); Item item3 = default(Item); Item item112 = default(Item); Item item45 = default(Item); BuildPiece buildPiece27 = default(BuildPiece); Item item77 = default(Item); BuildPiece buildPiece40 = default(BuildPiece); Item item9 = default(Item); Creature creature49 = default(Creature); Item item28 = default(Item); Item item12 = default(Item); BuildPiece buildPiece32 = default(BuildPiece); Item item110 = default(Item); Item item117 = default(Item); Creature creature48 = default(Creature); Item item57 = default(Item); Creature creature15 = default(Creature); Item item64 = default(Item); Item item90 = default(Item); Item item17 = default(Item); Item item24 = default(Item); Item item62 = default(Item); Item item38 = default(Item); Creature creature51 = default(Creature); BuildPiece buildPiece4 = default(BuildPiece); Creature creature29 = default(Creature); Item item81 = default(Item); Item item75 = default(Item); Creature creature62 = default(Creature); Item item36 = default(Item); Mount creature60 = default(Mount); Creature creature54 = default(Creature); Item item92 = default(Item); Item item46 = default(Item); Creature creature33 = default(Creature); Item item100 = default(Item); Item item68 = default(Item); Item item88 = default(Item); Item item = default(Item); Item item51 = default(Item); BuildPiece buildPiece16 = default(BuildPiece); Item item86 = default(Item); Mount creature63 = default(Mount); Item item87 = default(Item); Item item13 = default(Item); GameObject explosion3 = default(GameObject); Item item65 = default(Item); Item item35 = default(Item); Item item14 = default(Item); Item item98 = default(Item); BuildPiece buildPiece = default(BuildPiece); BuildPiece buildPiece30 = default(BuildPiece); Item item116 = default(Item); Item item37 = default(Item); Creature creature50 = default(Creature); Item item18 = default(Item); Item item8 = default(Item); Item item78 = default(Item); BuildPiece buildPiece21 = default(BuildPiece); Item item76 = default(Item); Item item99 = default(Item); Item item106 = default(Item); Item item89 = default(Item); Mount creature42 = default(Mount); Item item72 = default(Item); Item item2 = default(Item); GameObject explosion5 = default(GameObject); Item item103 = default(Item); Item item74 = default(Item); Creature creature39 = default(Creature); Mount creature32 = default(Mount); BuildPiece buildPiece14 = default(BuildPiece); Mount creature25 = default(Mount); Item item21 = default(Item); Item item71 = default(Item); Item item53 = default(Item); Item item7 = default(Item); BuildPiece buildPiece6 = default(BuildPiece); Item item39 = default(Item); Mount creature7 = default(Mount); Creature creature5 = default(Creature); Item item19 = default(Item); Creature creature2 = default(Creature); BuildPiece buildPiece2 = default(BuildPiece); Item item91 = default(Item); BuildPiece buildPiece13 = default(BuildPiece); Item item82 = default(Item); Item item118 = default(Item); Creature creature9 = default(Creature); Mount creature64 = default(Mount); Item item47 = default(Item); GameObject explosion4 = default(GameObject); Creature creature44 = default(Creature); Item item20 = default(Item); Item item63 = default(Item); BuildPiece buildPiece37 = default(BuildPiece); Item item25 = default(Item); BuildPiece buildPiece38 = default(BuildPiece); Item item96 = default(Item); Item item11 = default(Item); Item item94 = default(Item); Mount creature52 = default(Mount); GameObject explosion2 = default(GameObject); Mount creature22 = default(Mount); Item item107 = default(Item); GameObject explosion = default(GameObject); BuildPiece buildPiece8 = default(BuildPiece); Item item32 = default(Item); Item item31 = default(Item); Item item70 = default(Item); Item item115 = default(Item); Assembly executingAssembly = default(Assembly); Item item60 = default(Item); Item item66 = default(Item); Item item40 = default(Item); Item item105 = default(Item); Item item97 = default(Item); BuildPiece buildPiece20 = default(BuildPiece); BuildPiece buildPiece39 = default(BuildPiece); Item item54 = default(Item); Creature creature56 = default(Creature); Creature creature43 = default(Creature); Item item84 = default(Item); Item item61 = default(Item); Creature creature34 = default(Creature); Item item102 = default(Item); Item item73 = default(Item); Mount creature16 = default(Mount); Item item26 = default(Item); Creature creature38 = default(Creature); Item item108 = default(Item); BuildPiece buildPiece15 = default(BuildPiece); Creature creature12 = default(Creature); Item item79 = default(Item); Item item113 = default(Item); Item item42 = default(Item); BuildPiece buildPiece41 = default(BuildPiece); BuildPiece buildPiece29 = default(BuildPiece); Item item15 = default(Item); Creature creature58 = default(Creature); BuildPiece buildPiece25 = default(BuildPiece); Mount creature59 = default(Mount); Creature creature13 = default(Creature); Item item67 = default(Item); BuildPiece buildPiece7 = default(BuildPiece); BuildPiece buildPiece28 = default(BuildPiece); BuildPiece buildPiece33 = default(BuildPiece); Mount creature57 = default(Mount); Item item80 = default(Item); Item item10 = default(Item); BuildPiece buildPiece5 = default(BuildPiece); Item item111 = default(Item); Item item104 = default(Item); Item item101 = default(Item); Item item69 = default(Item); Item item83 = default(Item); Item item109 = default(Item); Mount creature45 = default(Mount); Creature creature20 = default(Creature); BuildPiece buildPiece34 = default(BuildPiece); Item item22 = default(Item); BuildPiece buildPiece26 = default(BuildPiece); BuildPiece buildPiece10 = default(BuildPiece); Creature creature28 = default(Creature); BuildPiece buildPiece18 = default(BuildPiece); Creature creature18 = default(Creature); Item item23 = default(Item); Item item27 = default(Item); Item item41 = default(Item); BuildPiece buildPiece35 = default(BuildPiece); BuildPiece buildPiece22 = default(BuildPiece); Item item34 = default(Item); Item item59 = default(Item); Creature creature = default(Creature); BuildPiece buildPiece23 = default(BuildPiece); Creature creature31 = default(Creature); BuildPiece buildPiece31 = default(BuildPiece); Mount creature30 = default(Mount); BuildPiece buildPiece19 = default(BuildPiece); Mount creature21 = default(Mount); Mount creature14 = default(Mount); Item item56 = default(Item); Item item52 = default(Item); Creature creature10 = default(Creature); Item item50 = default(Item); Mount creature8 = default(Mount); BuildPiece buildPiece3 = default(BuildPiece); Item item6 = default(Item); Item item30 = default(Item); Item item16 = default(Item); Item item4 = default(Item); BuildPiece buildPiece17 = default(BuildPiece); Item item95 = default(Item); Mount creature61 = default(Mount); Item item48 = default(Item); BuildPiece buildPiece42 = default(BuildPiece); Item item43 = default(Item); Creature creature19 = default(Creature); Item item33 = default(Item); Mount creature67 = default(Mount); BuildPiece buildPiece12 = default(BuildPiece); Item item58 = default(Item); Creature creature35 = default(Creature); Mount creature26 = default(Mount); Item item114 = default(Item); Creature creature24 = default(Creature); Item item55 = default(Item); Item item29 = default(Item); Item item5 = default(Item); Mount creature66 = default(Mount); Item item85 = default(Item); Mount creature65 = default(Mount); Mount creature55 = default(Mount); BuildPiece buildPiece36 = default(BuildPiece); BuildPiece buildPiece9 = default(BuildPiece); Mount creature36 = default(Mount); Mount creature4 = default(Mount); Creature creature6 = default(Creature); Mount creature46 = default(Mount); Mount creature40 = default(Mount); BuildPiece buildPiece24 = default(BuildPiece); Mount creature53 = default(Mount); Item item49 = default(Item); GameObject explosion6 = default(GameObject); Mount creature11 = default(Mount); Mount creature47 = default(Mount); Mount creature27 = default(Mount); Mount creature41 = default(Mount); Mount creature37 = default(Mount); Mount creature3 = default(Mount); Mount creature23 = default(Mount); Mount creature17 = default(Mount); while (true) { int num2 = num; while (true) { switch (num2) { case 651: item44.Crafting.Add(ItemManager.CraftingTable.Workbench, 4); num = 432; break; case 241: item93.Crafting.Add(ItemManager.CraftingTable.Workbench, 4); num2 = 694; continue; case 574: buildPiece11.Description.English(DispatcherAttribute.FindPolicy(0x647DDFEB ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_85dda70593694491979763aae742abf0)); num2 = 491; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0bc51dfcd4ea492abf4467f58efc1259 != 0) { num2 = 718; } continue; case 986: item3.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x212B01C7 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_96f4d9c8a227412c91dc55f2d7bb6411), 10); num2 = 698; continue; case 1100: item112 = new Item(DispatcherAttribute.FindPolicy(0xF27935A ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_e2ac7e83334f4ee2b4faae63f322f1fc), DispatcherAttribute.FindPolicy(0x1285B3B9 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_843fa0efeeae401ebc3dd97b3f6cc8d9), DispatcherAttribute.FindPolicy(0x4189747C ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_bb42c305d9cf4402aa8a06025c265c0e)); num2 = 705; continue; case 527: item45.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x1A7D8EB5 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_c0bcc41541a34781bb174adc1f1021ad), 250); num2 = 71; continue; case 455: buildPiece27.RequiredItems.Add(DispatcherAttribute.FindPolicy(-1789260723 ^ -1703045145 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_e2ac7e83334f4ee2b4faae63f322f1fc), 5, recover: true); num2 = 178; continue; case 878: item77.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x67B2EEFF ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_9162fee099e444a8ad0c8f1f78137a13), 250); num2 = 635; continue; case 838: buildPiece40.Description.English(DispatcherAttribute.FindPolicy(--357002894 ^ 0xF3AF337 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_c0bcc41541a34781bb174adc1f1021ad)); num2 = 599; continue; case 656: item77 = new Item(DispatcherAttribute.FindPolicy(0x10736F3D ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_8fdde41cd8d042c99f0b49148c654606), DispatcherAttribute.FindPolicy(0x3EBCE0E7 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_c0f07c067a9e4b5ca85cc257f8899e97), DispatcherAttribute.FindPolicy(0x7BD67461 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_25d7dfa94d9747c0a61cf0be093fccb5)); num2 = 683; continue; case 195: item9.RequiredItems.Add(DispatcherAttribute.FindPolicy(0xF278C86 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_e2ac7e83334f4ee2b4faae63f322f1fc), 900); num2 = 1145; continue; case 395: creature49.Drops[DispatcherAttribute.FindPolicy(0x1285BD9D ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_843fa0efeeae401ebc3dd97b3f6cc8d9)].DropChance = 0f; num = 263; break; case 864: item28.Description.English(DispatcherAttribute.FindPolicy(0x27765FF9 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_11b8f870b8ca4b23856a9fb4b96d249c)); num2 = 1149; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_5cf61c1d67934a4dad4771ce8c63ee39 == 0) { num2 = 245; } continue; case 503: item12.Crafting.Add(ItemManager.CraftingTable.Workbench, 4); num2 = 205; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3cf415bbfa134625a4e4b4281bdf2293 == 0) { num2 = 65; } continue; case 1048: buildPiece32.Category.Add(DispatcherAttribute.FindPolicy(0x2776360F ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_11b8f870b8ca4b23856a9fb4b96d249c)); num2 = 1191; continue; case 68: item110.Name.English(DispatcherAttribute.FindPolicy(0x647DF73D ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_85dda70593694491979763aae742abf0)); num2 = 514; continue; case 733: item117.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x58F85822 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3ade89368242461abb3afba08ed0eb91), 300); num2 = 792; continue; case 469: creature48.Drops[DispatcherAttribute.FindPolicy(0x6D929358 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3357146a1a98443694a5a2344b022aad)].DropChance = 0f; num2 = 375; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_b197bad9f19647eeadb393352dc5456b != 0) { num2 = 380; } continue; case 777: Key_SummonMount = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(DispatcherAttribute.FindPolicy(-1789260723 ^ -1350147114 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_e3d1ec81a16c4e85b81013edf6c19dce), DispatcherAttribute.FindPolicy(0x750B377B ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_45d4ee4c58424598aa466a649c3fb5e2), (KeyCode)291, DispatcherAttribute.FindPolicy(0x27763F67 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_11b8f870b8ca4b23856a9fb4b96d249c)); num2 = 895; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3c3ee68579674204bcf7f8d60605c8aa == 0) { num2 = 348; } continue; case 414: item57.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x702AF2BB ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0c97cddc268040e8a7bafa5f31d22b07), 500); num = 1060; break; case 1199: ConfigGeneration.FillSpecification(creature15); num2 = 600; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_c0f07c067a9e4b5ca85cc257f8899e97 == 0) { num2 = 426; } continue; case 121: item64.Name.English(DispatcherAttribute.FindPolicy(0x703A4A24 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_ee678aac982749129c2277a56f69ad27)); num2 = 978; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_6658a2be25f8490588ea6ff67c0b13d2 == 0) { num2 = 964; } continue; case 284: item90.Description.English(DispatcherAttribute.FindPolicy(0x647DE4F7 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_85dda70593694491979763aae742abf0)); num2 = 128; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_d1e4362b12ba43758ced8aa2ce18b191 == 0) { num2 = 506; } continue; case 1091: item17.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x442DA708 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0669df8032c94431a7764f08856908bf), 500); num2 = 417; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_844c90fc396f4bd3a73fa2bc9d5dd2d6 == 0) { num2 = 1004; } continue; case 516: item24.Name.English(DispatcherAttribute.FindPolicy(0x234C36E3 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_a60c73647c724d968f20adc20f420b1c)); num2 = 709; continue; case 1076: item62.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x247134D2 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_2eb6ee419c7f42f38518eb08164648ef), 400); num2 = 279; continue; case 317: item38.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x58F85822 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3ade89368242461abb3afba08ed0eb91), 500); num2 = 463; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_1a237a99af9c4040ac0e8b7840ca45bd == 0) { num2 = 725; } continue; case 871: creature51.Drops[DispatcherAttribute.FindPolicy(0x1285BD9D ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_843fa0efeeae401ebc3dd97b3f6cc8d9)].Amount = new CreatureManager.Range(1f, 2f); num2 = 225; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_041d49d2e947412e985d9c0598f32bd2 == 0) { num2 = 607; } continue; case 823: buildPiece4 = new BuildPiece(DispatcherAttribute.FindPolicy(0x29D8E023 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_b197bad9f19647eeadb393352dc5456b), DispatcherAttribute.FindPolicy(0x24713B46 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_2eb6ee419c7f42f38518eb08164648ef), DispatcherAttribute.FindPolicy(0x50D0A421 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_78da9b7e4d88437fa4999dd5e441ae83)); num2 = 946; continue; case 341: creature29.Drops[DispatcherAttribute.FindPolicy(0x7208AFC4 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_da45b7f9705d4954823c7fe6c90a08d1)].DropChance = 0f; num2 = 40; continue; case 924: item81.Crafting.Add(ItemManager.CraftingTable.Workbench, 2); num2 = 1135; continue; case 496: item75 = new Item(DispatcherAttribute.FindPolicy(0x57565D5E ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_6658a2be25f8490588ea6ff67c0b13d2), DispatcherAttribute.FindPolicy(0x5C2D9617 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_44006f309c684731a5089f116f102982), DispatcherAttribute.FindPolicy(--874498345 ^ 0x228BF6BB ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_eef1032244ce418e932c5a6e3e165989)); num2 = 889; continue; case 327: creature62 = new Creature(DispatcherAttribute.FindPolicy(0x66FC4D6C ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3cf415bbfa134625a4e4b4281bdf2293), DispatcherAttribute.FindPolicy(0x7C1EEA32 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_46c5f7f62cf443fda94ac0d2dc532be6), DispatcherAttribute.FindPolicy(0x57565B30 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_6658a2be25f8490588ea6ff67c0b13d2)) { ConfigurationEnabled = true, CanSpawn = false, CanBeTamed = true, Faction = (Faction)0, FoodItems = DispatcherAttribute.FindPolicy(0x24710BE2 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_2eb6ee419c7f42f38518eb08164648ef), SpecificSpawnTime = SpawnTime.Always, RequiredAltitude = new CreatureManager.Range(5f, 1000f), RequiredOceanDepth = new CreatureManager.Range(0f, 0f), RequiredGlobalKey = GlobalKey.None, Biome = (Biome)1, SpecificSpawnArea = SpawnArea.Everywhere, GroupSize = new CreatureManager.Range(1f, 2f), CheckSpawnInterval = 600, SpawnChance = 100f, ForestSpawn = Forest.Both, RequiredWeather = Weather.ClearSkies, SpawnAltitude = 10f, CanHaveStars = false, AttackImmediately = false, Maximum = 2 }; num2 = 358; continue; case 431: item36.Crafting.Add(ItemManager.CraftingTable.Workbench, 4); num2 = 67; continue; case 984: ConfigGeneration.PatchSpecification(creature60); num2 = 282; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_b197bad9f19647eeadb393352dc5456b == 0) { num2 = 192; } continue; case 650: creature54.Drops[DispatcherAttribute.FindPolicy(0x129BEA2F ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_ce7ee0869c0041bbb3058182d7dbdb53)].DropChance = 0f; num2 = 994; continue; case 843: item92.Crafting.Add(ItemManager.CraftingTable.Workbench, 4); num2 = 201; continue; case 934: item62.Name.English(DispatcherAttribute.FindPolicy(0x3D89ADED ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_88fd7915297b434f9d0ad753baad3ff0)); num2 = 598; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_e3d1ec81a16c4e85b81013edf6c19dce != 0) { num2 = 619; } continue; case 1015: item46.Name.English(DispatcherAttribute.FindPolicy(0x24714934 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_2eb6ee419c7f42f38518eb08164648ef)); num2 = 120; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_eef1032244ce418e932c5a6e3e165989 == 0) { num2 = 50; } continue; case 144: creature33.Drops[DispatcherAttribute.FindPolicy(0x234C63D1 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_a60c73647c724d968f20adc20f420b1c)].Amount = new CreatureManager.Range(1f, 2f); num2 = 247; continue; case 825: item100.Name.English(DispatcherAttribute.FindPolicy(0x1AF4CD36 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_945735f627df4d318bb89a4434056a65)); num2 = 990; continue; case 1193: item68.Description.English(DispatcherAttribute.FindPolicy(0xC284EA ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_91517bfd8c4a444caec6dadd6e1ad8ba)); num2 = 724; continue; case 1028: item88.Crafting.Add(ItemManager.CraftingTable.Workbench, 4); num2 = 1079; continue; case 826: item.Name.English(DispatcherAttribute.FindPolicy(0x10732BB1 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_8fdde41cd8d042c99f0b49148c654606)); num2 = 64; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_13af386c102742daab17547737a24a29 != 0) { num2 = 12; } continue; case 326: item51.Description.English(DispatcherAttribute.FindPolicy(0x78F6F205 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_d6d3d1b370cb46e9b9904c3ed19eaeba)); num = 1202; break; case 289: buildPiece16 = new BuildPiece(DispatcherAttribute.FindPolicy(0x1AF4F1D0 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_945735f627df4d318bb89a4434056a65), DispatcherAttribute.FindPolicy(0x79B158C5 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3ae4a4e226f3425abf4b272f1181e9eb), DispatcherAttribute.FindPolicy(0x703A7E60 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_ee678aac982749129c2277a56f69ad27)); num2 = 254; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0e3d801b3d68430eaab4e129e6c6213d == 0) { num2 = 85; } continue; case 311: item86.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x107370D7 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_8fdde41cd8d042c99f0b49148c654606), 500); num2 = 113; continue; case 415: InventorySystem.PrepareThread(DispatcherAttribute.FindPolicy(0x6D92FFE8 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3357146a1a98443694a5a2344b022aad)); num2 = 373; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_2de628c6a6784c60a3824b6b8578aec7 == 0) { num2 = 692; } continue; case 756: creature63 = QuerySpecification(_Token, MountType.Flying, DispatcherAttribute.FindPolicy(0x79B13C09 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3ae4a4e226f3425abf4b272f1181e9eb), item87.Prefab, item13.Prefab, explosion3, DispatcherAttribute.FindPolicy(0x58F82B6C ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3ade89368242461abb3afba08ed0eb91), DispatcherAttribute.FindPolicy(0x66FC782E ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3cf415bbfa134625a4e4b4281bdf2293), DispatcherAttribute.FindPolicy(0x1AF4C774 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_945735f627df4d318bb89a4434056a65), 1f, DispatcherAttribute.FindPolicy(0x3DF9825A ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0bc51dfcd4ea492abf4467f58efc1259)); num2 = 493; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_94da802681184abf9c6d7baa14f7d61e == 0) { num2 = 529; } continue; case 852: InventorySystem.PrepareThread(DispatcherAttribute.FindPolicy(0x29D8E505 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_b197bad9f19647eeadb393352dc5456b)); num = 292; break; case 599: buildPiece40.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x7D120E2E ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_b48c14fc84664bb2a93e4301283fe316), 5, recover: true); num = 30; break; case 648: item65.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x27762101 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_11b8f870b8ca4b23856a9fb4b96d249c), 550); num2 = 251; continue; case 485: InventorySystem.PrepareThread(DispatcherAttribute.FindPolicy(0x204B5058 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_9b03a95e6bb24c67b44167314739f95e)); num2 = 500; continue; case 591: item35.Description.English(DispatcherAttribute.FindPolicy(0x57561FA0 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_6658a2be25f8490588ea6ff67c0b13d2)); num2 = 263; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_13771591b5124a74aee28639b0531a1f == 0) { num2 = 676; } continue; case 1035: item14.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x27761C1F ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_11b8f870b8ca4b23856a9fb4b96d249c), 10); num2 = 995; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_b197bad9f19647eeadb393352dc5456b == 0) { num2 = 289; } continue; case 985: item98.RequiredItems.Add(DispatcherAttribute.FindPolicy(0xD9AF017 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_bd69a92a348743ca91e70acf3ff2103d), 400); num2 = 976; continue; case 905: buildPiece.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x35B684BA ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_6300c63db0404ebe8918b884e0d91520), 5, recover: true); num2 = 58; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_4dbf15c5f7d742b1a907fc7a4aee18df == 0) { num2 = 176; } continue; case 761: buildPiece30.Name.English(DispatcherAttribute.FindPolicy(0x277639B5 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_11b8f870b8ca4b23856a9fb4b96d249c)); num = 457; break; case 88: item116.Description.English(DispatcherAttribute.FindPolicy(0x55FA9741 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_5cf61c1d67934a4dad4771ce8c63ee39)); num2 = 822; continue; case 595: item77.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x703A67E4 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_ee678aac982749129c2277a56f69ad27), 250); num2 = 878; continue; case 890: item37.RequiredUpgradeItems.Add(DispatcherAttribute.FindPolicy(0x75F56392 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_b0fb67a39d814a3da397fbd3bef5bf89), 100); num2 = 207; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_44006f309c684731a5089f116f102982 == 0) { num2 = 1; } continue; case 430: creature50.Drops[DispatcherAttribute.FindPolicy(0x277654FF ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_11b8f870b8ca4b23856a9fb4b96d249c)].Amount = new CreatureManager.Range(1f, 2f); num2 = 778; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_017c2aeacc81426185f47c157299999a == 0) { num2 = 1154; } continue; case 953: item18.Name.English(DispatcherAttribute.FindPolicy(0x79B10D7F ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_3ae4a4e226f3425abf4b272f1181e9eb)); num2 = 663; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_0669df8032c94431a7764f08856908bf != 0) { num2 = 678; } continue; case 355: item8 = new Item(DispatcherAttribute.FindPolicy(0x10736F3D ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_8fdde41cd8d042c99f0b49148c654606), DispatcherAttribute.FindPolicy(0x3EBC9595 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_c0f07c067a9e4b5ca85cc257f8899e97), DispatcherAttribute.FindPolicy(0x5C2DC109 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_44006f309c684731a5089f116f102982)); num2 = 30; if (<Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_7a86ad3f644341d5b87cd0324bfaf511 == 0) { num2 = 215; } continue; case 401: item78.RequiredItems.Add(DispatcherAttribute.FindPolicy(0x50BA73D9 ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9e0cff3.m_b72c275b483a4b5d909c1a1d3078c8b5), 250); num2 = 1072; continue; case 287: buildPiece21 = new BuildPiece(DispatcherAttribute.FindPolicy(0x78F6C42B ^ <Module>{f8272082-7aee-48aa-994a-a99924b1abc3}.m_2a844d7e90f8400cb59e720ef9
plugins/IronDad-CustomSoulcatcher/IronDad_CustomSoulcatcher.dll
Decompiled 6 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Dynamic; using System.Globalization; using System.IO; using System.IO.Compression; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security; using System.Security.Cryptography; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Xml.Serialization; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using ExtendedItemDataFramework; using HarmonyLib; using ItemManager; using JetBrains.Annotations; using Jewelcrafting; using LocalizationManager; using Microsoft.CodeAnalysis; using MonoMod.Utils; using ServerSync; using SkillManager; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.UI; using YamlDotNet.Core; using YamlDotNet.Core.Events; using YamlDotNet.Core.Tokens; using YamlDotNet.Helpers; using YamlDotNet.Serialization; using YamlDotNet.Serialization.BufferedDeserialization; using YamlDotNet.Serialization.BufferedDeserialization.TypeDiscriminators; using YamlDotNet.Serialization.Callbacks; using YamlDotNet.Serialization.Converters; using YamlDotNet.Serialization.EventEmitters; using YamlDotNet.Serialization.NamingConventions; using YamlDotNet.Serialization.NodeDeserializers; using YamlDotNet.Serialization.NodeTypeResolvers; using YamlDotNet.Serialization.ObjectFactories; using YamlDotNet.Serialization.ObjectGraphTraversalStrategies; using YamlDotNet.Serialization.ObjectGraphVisitors; using YamlDotNet.Serialization.Schemas; using YamlDotNet.Serialization.TypeInspectors; using YamlDotNet.Serialization.TypeResolvers; using YamlDotNet.Serialization.Utilities; using YamlDotNet.Serialization.ValueDeserializers; using fastJSON; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("Soulcatcher_KG_JC_Additions")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Soulcatcher_KG_JC_Additions")] [assembly: AssemblyCopyright("Copyright © 2022")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("2ED4D3E3-D23D-4E36-92E6-C2303E7843E8")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace SkillManager { [PublicAPI] public class Skill { public static class LocalizationCache { private static readonly Dictionary<string, Localization> localizations = new Dictionary<string, Localization>(); internal static void LocalizationPostfix(Localization __instance, string language) { string key = localizations.FirstOrDefault((KeyValuePair<string, Localization> l) => l.Value == __instance).Key; if (key != null) { localizations.Remove(key); } if (!localizations.ContainsKey(language)) { localizations.Add(language, __instance); } } public static Localization ForLanguage(string? language = null) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown if (localizations.TryGetValue(language ?? PlayerPrefs.GetString("language", "English"), out var value)) { return value; } value = new Localization(); if (language != null) { value.SetupLanguage(language); } return value; } } [PublicAPI] public class LocalizeKey { private static readonly List<LocalizeKey> keys = new List<LocalizeKey>(); public readonly string Key; public readonly Dictionary<string, string> Localizations = new Dictionary<string, string>(); public LocalizeKey(string key) { Key = key.Replace("$", ""); keys.Add(this); } public void Alias(string alias) { Localizations.Clear(); if (!alias.Contains("$")) { alias = "$" + alias; } Localizations["alias"] = alias; Localization.instance.AddWord(Key, Localization.instance.Localize(alias)); } public LocalizeKey English(string key) { return addForLang("English", key); } public LocalizeKey Swedish(string key) { return addForLang("Swedish", key); } public LocalizeKey French(string key) { return addForLang("French", key); } public LocalizeKey Italian(string key) { return addForLang("Italian", key); } public LocalizeKey German(string key) { return addForLang("German", key); } public LocalizeKey Spanish(string key) { return addForLang("Spanish", key); } public LocalizeKey Russian(string key) { return addForLang("Russian", key); } public LocalizeKey Romanian(string key) { return addForLang("Romanian", key); } public LocalizeKey Bulgarian(string key) { return addForLang("Bulgarian", key); } public LocalizeKey Macedonian(string key) { return addForLang("Macedonian", key); } public LocalizeKey Finnish(string key) { return addForLang("Finnish", key); } public LocalizeKey Danish(string key) { return addForLang("Danish", key); } public LocalizeKey Norwegian(string key) { return addForLang("Norwegian", key); } public LocalizeKey Icelandic(string key) { return addForLang("Icelandic", key); } public LocalizeKey Turkish(string key) { return addForLang("Turkish", key); } public LocalizeKey Lithuanian(string key) { return addForLang("Lithuanian", key); } public LocalizeKey Czech(string key) { return addForLang("Czech", key); } public LocalizeKey Hungarian(string key) { return addForLang("Hungarian", key); } public LocalizeKey Slovak(string key) { return addForLang("Slovak", key); } public LocalizeKey Polish(string key) { return addForLang("Polish", key); } public LocalizeKey Dutch(string key) { return addForLang("Dutch", key); } public LocalizeKey Portuguese_European(string key) { return addForLang("Portuguese_European", key); } public LocalizeKey Portuguese_Brazilian(string key) { return addForLang("Portuguese_Brazilian", key); } public LocalizeKey Chinese(string key) { return addForLang("Chinese", key); } public LocalizeKey Japanese(string key) { return addForLang("Japanese", key); } public LocalizeKey Korean(string key) { return addForLang("Korean", key); } public LocalizeKey Hindi(string key) { return addForLang("Hindi", key); } public LocalizeKey Thai(string key) { return addForLang("Thai", key); } public LocalizeKey Abenaki(string key) { return addForLang("Abenaki", key); } public LocalizeKey Croatian(string key) { return addForLang("Croatian", key); } public LocalizeKey Georgian(string key) { return addForLang("Georgian", key); } public LocalizeKey Greek(string key) { return addForLang("Greek", key); } public LocalizeKey Serbian(string key) { return addForLang("Serbian", key); } public LocalizeKey Ukrainian(string key) { return addForLang("Ukrainian", key); } private LocalizeKey addForLang(string lang, string value) { Localizations[lang] = value; if (Localization.instance.GetSelectedLanguage() == lang) { Localization.instance.AddWord(Key, value); } else if (lang == "English" && !Localization.instance.m_translations.ContainsKey(Key)) { Localization.instance.AddWord(Key, value); } return this; } [HarmonyPriority(300)] internal static void AddLocalizedKeys(Localization __instance, string language) { foreach (LocalizeKey key in keys) { string value2; if (key.Localizations.TryGetValue(language, out var value) || key.Localizations.TryGetValue("English", out value)) { __instance.AddWord(key.Key, value); } else if (key.Localizations.TryGetValue("alias", out value2)) { __instance.AddWord(key.Key, Localization.instance.Localize(value2)); } } } } private class ConfigurationManagerAttributes { [UsedImplicitly] public string? Category; } [HarmonyPatch(typeof(Skills), "IsSkillValid")] private static class Patch_Skills_IsSkillValid { private static void Postfix(SkillType type, ref bool __result) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) if (!__result && skills.ContainsKey(type)) { __result = true; } } } private static readonly Dictionary<SkillType, Skill> skills; internal static readonly Dictionary<string, Skill> skillByName; private readonly string skillName; private readonly string internalSkillName; private readonly SkillDef skillDef; public readonly LocalizeKey Name; public readonly LocalizeKey Description; private float skillEffectFactor = 1f; private int skillLoss = 5; public bool Configurable; private static bool InitializedTerminal; private static Localization? _english; private static BaseUnityPlugin? _plugin; private static bool hasConfigSync; private static object? _configSync; public float SkillGainFactor { get { return skillDef.m_increseStep; } set { skillDef.m_increseStep = value; this.SkillGainFactorChanged?.Invoke(value); } } public float SkillEffectFactor { get { return skillEffectFactor; } set { skillEffectFactor = value; this.SkillEffectFactorChanged?.Invoke(value); } } public int SkillLoss { get { return skillLoss; } set { skillLoss = value; this.SkillLossChanged?.Invoke(value); } } private static Localization english => _english ?? (_english = LocalizationCache.ForLanguage("English")); private static BaseUnityPlugin plugin { get { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Expected O, but got Unknown object obj = _plugin; if (obj == null) { BaseUnityPlugin val = (BaseUnityPlugin)Chainloader.ManagerObject.GetComponent((Type)Assembly.GetExecutingAssembly().DefinedTypes.First((TypeInfo t) => t.IsClass && typeof(BaseUnityPlugin).IsAssignableFrom(t))); _plugin = val; obj = (object)val; } return (BaseUnityPlugin)obj; } } private static object? configSync { get { if (_configSync == null && hasConfigSync) { Type type = Assembly.GetExecutingAssembly().GetType("ServerSync.ConfigSync"); if ((object)type != null) { _configSync = Activator.CreateInstance(type, plugin.Info.Metadata.GUID + " SkillManager"); type.GetField("CurrentVersion").SetValue(_configSync, plugin.Info.Metadata.Version.ToString()); type.GetProperty("IsLocked").SetValue(_configSync, true); } else { hasConfigSync = false; } } return _configSync; } } public event Action<float>? SkillGainFactorChanged; public event Action<float>? SkillEffectFactorChanged; public event Action<float>? SkillLossChanged; public Skill(string englishName, string icon) : this(englishName, loadSprite(icon, 64, 64)) { } public Skill(string englishName, Sprite icon) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Expected O, but got Unknown SkillType val = fromName(englishName); string text = new Regex("[^a-zA-Z]").Replace(englishName, "_"); skills[val] = this; skillByName[englishName] = this; skillDef = new SkillDef { m_description = "$skilldesc_" + text, m_icon = icon, m_increseStep = 1f, m_skill = val }; internalSkillName = text; skillName = englishName; Name = new LocalizeKey("skill_" + ((object)(SkillType)(ref val)).ToString()).English(englishName); Description = new LocalizeKey("skilldesc_" + text); } public static SkillType fromName(string englishName) { return (SkillType)Math.Abs(StringExtensionMethods.GetStableHashCode(englishName)); } static Skill() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Expected O, but got Unknown //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Expected O, but got Unknown //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Expected O, but got Unknown //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Expected O, but got Unknown //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Expected O, but got Unknown //IL_01ab: Expected O, but got Unknown //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Expected O, but got Unknown //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_023c: Expected O, but got Unknown //IL_023c: Expected O, but got Unknown skills = new Dictionary<SkillType, Skill>(); skillByName = new Dictionary<string, Skill>(); InitializedTerminal = false; hasConfigSync = true; Harmony val = new Harmony("org.bepinex.helpers.skillmanager"); val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(FejdStartup), "Awake", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(Skill), "Patch_FejdStartup", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(Skills), "GetSkillDef", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(Skill), "Patch_Skills_GetSkillDef", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(Skills), "CheatRaiseSkill", (Type[])null, (Type[])null), new HarmonyMethod(AccessTools.DeclaredMethod(typeof(Skill), "Patch_Skills_CheatRaiseskill", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(Skills), "CheatResetSkill", (Type[])null, (Type[])null), new HarmonyMethod(AccessTools.DeclaredMethod(typeof(Skill), "Patch_Skills_CheatResetSkill", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(Localization), "LoadCSV", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(LocalizeKey), "AddLocalizedKeys", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(Terminal), "InitTerminal", (Type[])null, (Type[])null), new HarmonyMethod(AccessTools.DeclaredMethod(typeof(Skill), "Patch_Terminal_InitTerminal_Prefix", (Type[])null, (Type[])null)), new HarmonyMethod(AccessTools.DeclaredMethod(typeof(Skill), "Patch_Terminal_InitTerminal", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(Localization), "SetupLanguage", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(LocalizationCache), "LocalizationPostfix", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); val.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(Skills), "OnDeath", (Type[])null, (Type[])null), new HarmonyMethod(AccessTools.DeclaredMethod(typeof(Skill), "Patch_Skills_OnDeath_Prefix", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(Skill), "Patch_Skills_OnDeath_Finalizer", (Type[])null, (Type[])null)), (HarmonyMethod)null); } private static void Patch_FejdStartup() { //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Expected O, but got Unknown //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Expected O, but got Unknown //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Expected O, but got Unknown foreach (Skill skill in skills.Values) { if (skill.Configurable) { string key = skill.Name.Key; string group = new Regex("['[\"\\]]").Replace(english.Localize(key), "").Trim(); string category = Localization.instance.Localize(key).Trim(); ConfigEntry<float> skillGain = config(group, "Skill gain factor", skill.SkillGainFactor, new ConfigDescription("The rate at which you gain experience for the skill.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.01f, 5f), new object[1] { new ConfigurationManagerAttributes { Category = category } })); skill.SkillGainFactor = skillGain.Value; skillGain.SettingChanged += delegate { skill.SkillGainFactor = skillGain.Value; }; ConfigEntry<float> skillEffect = config(group, "Skill effect factor", skill.SkillEffectFactor, new ConfigDescription("The power of the skill, based on the default power.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.01f, 5f), new object[1] { new ConfigurationManagerAttributes { Category = category } })); skill.SkillEffectFactor = skillEffect.Value; skillEffect.SettingChanged += delegate { skill.SkillEffectFactor = skillEffect.Value; }; ConfigEntry<int> skillLoss = config(group, "Skill loss", skill.skillLoss, new ConfigDescription("How much experience to lose on death.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 100), new object[1] { new ConfigurationManagerAttributes { Category = category } })); skill.skillLoss = skillLoss.Value; skillLoss.SettingChanged += delegate { skill.skillLoss = skillLoss.Value; }; } } } private static void Patch_Skills_GetSkillDef(ref SkillDef? __result, List<SkillDef> ___m_skills, SkillType type) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) if (__result == null) { SkillDef val = GetSkillDef(type); if (val != null) { ___m_skills.Add(val); __result = val; } } } private static bool Patch_Skills_CheatRaiseskill(Skills __instance, string name, float value, Player ___m_player) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) foreach (SkillType key in skills.Keys) { SkillType current = key; Skill skill = skills[current]; if (string.Equals(skill.internalSkillName, name, StringComparison.CurrentCultureIgnoreCase)) { Skill skill2 = __instance.GetSkill(current); skill2.m_level += value; skill2.m_level = Mathf.Clamp(skill2.m_level, 0f, 100f); ((Character)___m_player).Message((MessageType)1, "Skill increased " + Localization.instance.Localize("$skill_" + ((object)(SkillType)(ref current)).ToString()) + ": " + (int)skill2.m_level, 0, skill2.m_info.m_icon); Console.instance.Print("Skill " + skill.internalSkillName + " = " + skill2.m_level); return false; } } return true; } private static bool Patch_Skills_CheatResetSkill(Skills __instance, string name) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) foreach (SkillType key in skills.Keys) { Skill skill = skills[key]; if (string.Equals(skill.internalSkillName, name, StringComparison.CurrentCultureIgnoreCase)) { __instance.ResetSkill(key); Console.instance.Print("Skill " + skill.internalSkillName + " reset"); return false; } } return true; } private static void Patch_Skills_OnDeath_Prefix(Skills __instance, ref Dictionary<SkillType, Skill>? __state) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) if (__state == null) { __state = new Dictionary<SkillType, Skill>(); } foreach (KeyValuePair<SkillType, Skill> skill in skills) { if (__instance.m_skillData.TryGetValue(skill.Key, out var value)) { __state[skill.Key] = value; if (skill.Value.skillLoss > 0) { Skill obj = value; obj.m_level -= value.m_level * (float)skill.Value.SkillLoss / 100f; value.m_accumulator = 0f; } __instance.m_skillData.Remove(skill.Key); } } } private static void Patch_Skills_OnDeath_Finalizer(Skills __instance, ref Dictionary<SkillType, Skill>? __state) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) if (__state == null) { return; } foreach (KeyValuePair<SkillType, Skill> item in __state) { __instance.m_skillData[item.Key] = item.Value; } __state = null; } private static void Patch_Terminal_InitTerminal_Prefix() { InitializedTerminal = Terminal.m_terminalInitialized; } private static void Patch_Terminal_InitTerminal() { if (!InitializedTerminal) { AddSkill(Terminal.commands["raiseskill"]); AddSkill(Terminal.commands["resetskill"]); } static void AddSkill(ConsoleCommand command) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown ConsoleOptionsFetcher fetcher = command.m_tabOptionsFetcher; command.m_tabOptionsFetcher = (ConsoleOptionsFetcher)delegate { List<string> list = fetcher.Invoke(); list.AddRange(skills.Values.Select((Skill skill) => skill.internalSkillName)); return list; }; } } private static SkillDef? GetSkillDef(SkillType skillType) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) if (!skills.ContainsKey(skillType)) { return null; } return skills[skillType].skillDef; } private static byte[] ReadEmbeddedFileBytes(string name) { using MemoryStream memoryStream = new MemoryStream(); Assembly.GetExecutingAssembly().GetManifestResourceStream(Assembly.GetExecutingAssembly().GetName().Name + "." + name).CopyTo(memoryStream); return memoryStream.ToArray(); } private static Texture2D loadTexture(string name) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown //IL_001f: Expected O, but got Unknown Texture2D val = new Texture2D(0, 0); ImageConversion.LoadImage(val, ReadEmbeddedFileBytes("icons." + name)); return val; } private static Sprite loadSprite(string name, int width, int height) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) return Sprite.Create(loadTexture(name), new Rect(0f, 0f, (float)width, (float)height), Vector2.zero); } private static ConfigEntry<T> config<T>(string group, string name, T value, ConfigDescription description) { ConfigEntry<T> val = plugin.Config.Bind<T>(group, name, value, description); configSync?.GetType().GetMethod("AddConfigEntry").MakeGenericMethod(typeof(T)) .Invoke(configSync, new object[1] { val }); return val; } private static ConfigEntry<T> config<T>(string group, string name, T value, string description) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown return config(group, name, value, new ConfigDescription(description, (AcceptableValueBase)null, Array.Empty<object>())); } } [PublicAPI] public static class SkillExtensions { public static float GetSkillFactor(this Character character, string name) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return character.GetSkillFactor(Skill.fromName(name)) * Skill.skillByName[name].SkillEffectFactor; } public static float GetSkillFactor(this Skills skills, string name) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return skills.GetSkillFactor(Skill.fromName(name)) * Skill.skillByName[name].SkillEffectFactor; } public static void RaiseSkill(this Character character, string name, float value = 1f) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) character.RaiseSkill(Skill.fromName(name), value); } public static void RaiseSkill(this Skills skill, string name, float value = 1f) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) skill.RaiseSkill(Skill.fromName(name), value); } public static void LowerSkill(this Character character, string name, float factor = 1f) { character.GetSkills().LowerSkill(name, factor); } public static void LowerSkill(this Skills skills, string name, float factor) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) if (factor > 0f && skills.m_skillData.TryGetValue(Skill.fromName(name), out var value)) { Skill obj = value; obj.m_level -= value.m_level * factor; value.m_accumulator = 0f; } } } } namespace ServerSync { [PublicAPI] public abstract class OwnConfigEntryBase { public object? LocalBaseValue; public bool SynchronizedConfig = true; public abstract ConfigEntryBase BaseConfig { get; } } [PublicAPI] public class SyncedConfigEntry<T> : OwnConfigEntryBase { public readonly ConfigEntry<T> SourceConfig; public override ConfigEntryBase BaseConfig => (ConfigEntryBase)(object)SourceConfig; public T Value { get { return SourceConfig.Value; } set { SourceConfig.Value = value; } } public SyncedConfigEntry(ConfigEntry<T> sourceConfig) { SourceConfig = sourceConfig; } public void AssignLocalValue(T value) { if (LocalBaseValue == null) { Value = value; } else { LocalBaseValue = value; } } } public abstract class CustomSyncedValueBase { public object? LocalBaseValue; public readonly string Identifier; public readonly Type Type; private object? boxedValue; protected bool localIsOwner; public readonly int Priority; public object? BoxedValue { get { return boxedValue; } set { boxedValue = value; this.ValueChanged?.Invoke(); } } public event Action? ValueChanged; protected CustomSyncedValueBase(ConfigSync configSync, string identifier, Type type, int priority) { Priority = priority; Identifier = identifier; Type = type; configSync.AddCustomValue(this); localIsOwner = configSync.IsSourceOfTruth; configSync.SourceOfTruthChanged += delegate(bool truth) { localIsOwner = truth; }; } } [PublicAPI] public sealed class CustomSyncedValue<T> : CustomSyncedValueBase { public T Value { get { return (T)base.BoxedValue; } set { base.BoxedValue = value; } } public CustomSyncedValue(ConfigSync configSync, string identifier, T value = default(T), int priority = 0) : base(configSync, identifier, typeof(T), priority) { Value = value; } public void AssignLocalValue(T value) { if (localIsOwner) { Value = value; } else { LocalBaseValue = value; } } } internal class ConfigurationManagerAttributes { [UsedImplicitly] public bool? ReadOnly = false; } [PublicAPI] public class ConfigSync { [HarmonyPatch(typeof(ZRpc), "HandlePackage")] private static class SnatchCurrentlyHandlingRPC { public static ZRpc? currentRpc; [HarmonyPrefix] private static void Prefix(ZRpc __instance) { currentRpc = __instance; } } [HarmonyPatch(typeof(ZNet), "Awake")] internal static class RegisterRPCPatch { [HarmonyPostfix] private static void Postfix(ZNet __instance) { isServer = __instance.IsServer(); foreach (ConfigSync configSync2 in configSyncs) { ZRoutedRpc.instance.Register<ZPackage>(configSync2.Name + " ConfigSync", (Action<long, ZPackage>)configSync2.RPC_FromOtherClientConfigSync); if (isServer) { configSync2.InitialSyncDone = true; Debug.Log((object)("Registered '" + configSync2.Name + " ConfigSync' RPC - waiting for incoming connections")); } } if (isServer) { ((MonoBehaviour)__instance).StartCoroutine(WatchAdminListChanges()); } static void SendAdmin(List<ZNetPeer> peers, bool isAdmin) { ZPackage package = ConfigsToPackage(null, null, new PackageEntry[1] { new PackageEntry { section = "Internal", key = "lockexempt", type = typeof(bool), value = isAdmin } }); ConfigSync configSync = configSyncs.First(); if (configSync != null) { ((MonoBehaviour)ZNet.instance).StartCoroutine(configSync.sendZPackage(peers, package)); } } static IEnumerator WatchAdminListChanges() { MethodInfo listContainsId = AccessTools.DeclaredMethod(typeof(ZNet), "ListContainsId", (Type[])null, (Type[])null); SyncedList adminList = (SyncedList)AccessTools.DeclaredField(typeof(ZNet), "m_adminList").GetValue(ZNet.instance); List<string> CurrentList = new List<string>(adminList.GetList()); while (true) { yield return (object)new WaitForSeconds(30f); if (!adminList.GetList().SequenceEqual(CurrentList)) { CurrentList = new List<string>(adminList.GetList()); List<ZNetPeer> list = ZNet.instance.GetPeers().Where(delegate(ZNetPeer p) { string hostName = p.m_rpc.GetSocket().GetHostName(); return ((object)listContainsId != null) ? ((bool)listContainsId.Invoke(ZNet.instance, new object[2] { adminList, hostName })) : adminList.Contains(hostName); }).ToList(); SendAdmin(ZNet.instance.GetPeers().Except(list).ToList(), isAdmin: false); SendAdmin(list, isAdmin: true); } } } } } [HarmonyPatch(typeof(ZNet), "OnNewConnection")] private static class RegisterClientRPCPatch { [HarmonyPostfix] private static void Postfix(ZNet __instance, ZNetPeer peer) { if (__instance.IsServer()) { return; } foreach (ConfigSync configSync in configSyncs) { peer.m_rpc.Register<ZPackage>(configSync.Name + " ConfigSync", (Action<ZRpc, ZPackage>)configSync.RPC_FromServerConfigSync); } } } private class ParsedConfigs { public readonly Dictionary<OwnConfigEntryBase, object?> configValues = new Dictionary<OwnConfigEntryBase, object>(); public readonly Dictionary<CustomSyncedValueBase, object?> customValues = new Dictionary<CustomSyncedValueBase, object>(); } [HarmonyPatch(typeof(ZNet), "Shutdown")] private class ResetConfigsOnShutdown { [HarmonyPostfix] private static void Postfix() { ProcessingServerUpdate = true; foreach (ConfigSync configSync in configSyncs) { configSync.resetConfigsFromServer(); configSync.IsSourceOfTruth = true; configSync.InitialSyncDone = false; } ProcessingServerUpdate = false; } } [HarmonyPatch(typeof(ZNet), "RPC_PeerInfo")] private class SendConfigsAfterLogin { private class BufferingSocket : ISocket { public volatile bool finished; public volatile int versionMatchQueued = -1; public readonly List<ZPackage> Package = new List<ZPackage>(); public readonly ISocket Original; public BufferingSocket(ISocket original) { Original = original; } public bool IsConnected() { return Original.IsConnected(); } public ZPackage Recv() { return Original.Recv(); } public int GetSendQueueSize() { return Original.GetSendQueueSize(); } public int GetCurrentSendRate() { return Original.GetCurrentSendRate(); } public bool IsHost() { return Original.IsHost(); } public void Dispose() { Original.Dispose(); } public bool GotNewData() { return Original.GotNewData(); } public void Close() { Original.Close(); } public string GetEndPointString() { return Original.GetEndPointString(); } public void GetAndResetStats(out int totalSent, out int totalRecv) { Original.GetAndResetStats(ref totalSent, ref totalRecv); } public void GetConnectionQuality(out float localQuality, out float remoteQuality, out int ping, out float outByteSec, out float inByteSec) { Original.GetConnectionQuality(ref localQuality, ref remoteQuality, ref ping, ref outByteSec, ref inByteSec); } public ISocket Accept() { return Original.Accept(); } public int GetHostPort() { return Original.GetHostPort(); } public bool Flush() { return Original.Flush(); } public string GetHostName() { return Original.GetHostName(); } public void VersionMatch() { if (finished) { Original.VersionMatch(); } else { versionMatchQueued = Package.Count; } } public void Send(ZPackage pkg) { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown int pos = pkg.GetPos(); pkg.SetPos(0); int num = pkg.ReadInt(); if ((num == StringExtensionMethods.GetStableHashCode("PeerInfo") || num == StringExtensionMethods.GetStableHashCode("RoutedRPC") || num == StringExtensionMethods.GetStableHashCode("ZDOData")) && !finished) { ZPackage val = new ZPackage(pkg.GetArray()); val.SetPos(pos); Package.Add(val); } else { pkg.SetPos(pos); Original.Send(pkg); } } } [HarmonyPriority(800)] [HarmonyPrefix] private static void Prefix(ref Dictionary<Assembly, BufferingSocket>? __state, ZNet __instance, ZRpc rpc) { //IL_0073: Unknown result type (might be due to invalid IL or missing references) if (__instance.IsServer()) { BufferingSocket value = new BufferingSocket(rpc.GetSocket()); AccessTools.DeclaredField(typeof(ZRpc), "m_socket").SetValue(rpc, value); object? obj = AccessTools.DeclaredMethod(typeof(ZNet), "GetPeer", new Type[1] { typeof(ZRpc) }, (Type[])null).Invoke(__instance, new object[1] { rpc }); ZNetPeer val = (ZNetPeer)((obj is ZNetPeer) ? obj : null); if (val != null && (int)ZNet.m_onlineBackend != 0) { AccessTools.DeclaredField(typeof(ZNetPeer), "m_socket").SetValue(val, value); } if (__state == null) { __state = new Dictionary<Assembly, BufferingSocket>(); } __state[Assembly.GetExecutingAssembly()] = value; } } [HarmonyPostfix] private static void Postfix(Dictionary<Assembly, BufferingSocket> __state, ZNet __instance, ZRpc rpc) { ZNetPeer peer; if (__instance.IsServer()) { object obj = AccessTools.DeclaredMethod(typeof(ZNet), "GetPeer", new Type[1] { typeof(ZRpc) }, (Type[])null).Invoke(__instance, new object[1] { rpc }); peer = (ZNetPeer)((obj is ZNetPeer) ? obj : null); if (peer == null) { SendBufferedData(); } else { ((MonoBehaviour)__instance).StartCoroutine(sendAsync()); } } void SendBufferedData() { if (rpc.GetSocket() is BufferingSocket bufferingSocket) { AccessTools.DeclaredField(typeof(ZRpc), "m_socket").SetValue(rpc, bufferingSocket.Original); object? obj2 = AccessTools.DeclaredMethod(typeof(ZNet), "GetPeer", new Type[1] { typeof(ZRpc) }, (Type[])null).Invoke(__instance, new object[1] { rpc }); ZNetPeer val2 = (ZNetPeer)((obj2 is ZNetPeer) ? obj2 : null); if (val2 != null) { AccessTools.DeclaredField(typeof(ZNetPeer), "m_socket").SetValue(val2, bufferingSocket.Original); } } BufferingSocket bufferingSocket2 = __state[Assembly.GetExecutingAssembly()]; bufferingSocket2.finished = true; for (int i = 0; i < bufferingSocket2.Package.Count; i++) { if (i == bufferingSocket2.versionMatchQueued) { bufferingSocket2.Original.VersionMatch(); } bufferingSocket2.Original.Send(bufferingSocket2.Package[i]); } if (bufferingSocket2.Package.Count == bufferingSocket2.versionMatchQueued) { bufferingSocket2.Original.VersionMatch(); } } IEnumerator sendAsync() { foreach (ConfigSync configSync in configSyncs) { List<PackageEntry> list = new List<PackageEntry>(); if (configSync.CurrentVersion != null) { list.Add(new PackageEntry { section = "Internal", key = "serverversion", type = typeof(string), value = configSync.CurrentVersion }); } MethodInfo methodInfo = AccessTools.DeclaredMethod(typeof(ZNet), "ListContainsId", (Type[])null, (Type[])null); SyncedList val = (SyncedList)AccessTools.DeclaredField(typeof(ZNet), "m_adminList").GetValue(ZNet.instance); list.Add(new PackageEntry { section = "Internal", key = "lockexempt", type = typeof(bool), value = (((object)methodInfo == null) ? ((object)val.Contains(rpc.GetSocket().GetHostName())) : methodInfo.Invoke(ZNet.instance, new object[2] { val, rpc.GetSocket().GetHostName() })) }); ZPackage package = ConfigsToPackage(configSync.allConfigs.Select((OwnConfigEntryBase c) => c.BaseConfig), configSync.allCustomValues, list, partial: false); yield return ((MonoBehaviour)__instance).StartCoroutine(configSync.sendZPackage(new List<ZNetPeer> { peer }, package)); } SendBufferedData(); } } } private class PackageEntry { public string section; public string key; public Type type; public object? value; } [HarmonyPatch(typeof(ConfigEntryBase), "GetSerializedValue")] private static class PreventSavingServerInfo { [HarmonyPrefix] private static bool Prefix(ConfigEntryBase __instance, ref string __result) { OwnConfigEntryBase ownConfigEntryBase = configData(__instance); if (ownConfigEntryBase == null || isWritableConfig(ownConfigEntryBase)) { return true; } __result = TomlTypeConverter.ConvertToString(ownConfigEntryBase.LocalBaseValue, __instance.SettingType); return false; } } [HarmonyPatch(typeof(ConfigEntryBase), "SetSerializedValue")] private static class PreventConfigRereadChangingValues { [HarmonyPrefix] private static bool Prefix(ConfigEntryBase __instance, string value) { OwnConfigEntryBase ownConfigEntryBase = configData(__instance); if (ownConfigEntryBase == null || ownConfigEntryBase.LocalBaseValue == null) { return true; } try { ownConfigEntryBase.LocalBaseValue = TomlTypeConverter.ConvertToValue(value, __instance.SettingType); } catch (Exception ex) { Debug.LogWarning((object)$"Config value of setting \"{__instance.Definition}\" could not be parsed and will be ignored. Reason: {ex.Message}; Value: {value}"); } return false; } } private class InvalidDeserializationTypeException : Exception { public string expected; public string received; public string field = ""; } public static bool ProcessingServerUpdate; public readonly string Name; public string? DisplayName; public string? CurrentVersion; public string? MinimumRequiredVersion; public bool ModRequired; private bool? forceConfigLocking; private bool isSourceOfTruth = true; private static readonly HashSet<ConfigSync> configSyncs; private readonly HashSet<OwnConfigEntryBase> allConfigs = new HashSet<OwnConfigEntryBase>(); private HashSet<CustomSyncedValueBase> allCustomValues = new HashSet<CustomSyncedValueBase>(); private static bool isServer; private static bool lockExempt; private OwnConfigEntryBase? lockedConfig; private const byte PARTIAL_CONFIGS = 1; private const byte FRAGMENTED_CONFIG = 2; private const byte COMPRESSED_CONFIG = 4; private readonly Dictionary<string, SortedDictionary<int, byte[]>> configValueCache = new Dictionary<string, SortedDictionary<int, byte[]>>(); private readonly List<KeyValuePair<long, string>> cacheExpirations = new List<KeyValuePair<long, string>>(); private static long packageCounter; public bool IsLocked { get { bool? flag = forceConfigLocking; bool num; if (!flag.HasValue) { if (lockedConfig == null) { goto IL_0051; } num = ((IConvertible)lockedConfig.BaseConfig.BoxedValue).ToInt32(CultureInfo.InvariantCulture) != 0; } else { num = flag.GetValueOrDefault(); } if (num) { return !lockExempt; } goto IL_0051; IL_0051: return false; } set { forceConfigLocking = value; } } public bool IsAdmin { get { if (!lockExempt) { return isSourceOfTruth; } return true; } } public bool IsSourceOfTruth { get { return isSourceOfTruth; } private set { if (value != isSourceOfTruth) { isSourceOfTruth = value; this.SourceOfTruthChanged?.Invoke(value); } } } public bool InitialSyncDone { get; private set; } public event Action<bool>? SourceOfTruthChanged; private event Action? lockedConfigChanged; static ConfigSync() { ProcessingServerUpdate = false; configSyncs = new HashSet<ConfigSync>(); lockExempt = false; packageCounter = 0L; RuntimeHelpers.RunClassConstructor(typeof(VersionCheck).TypeHandle); } public ConfigSync(string name) { Name = name; configSyncs.Add(this); new VersionCheck(this); } public SyncedConfigEntry<T> AddConfigEntry<T>(ConfigEntry<T> configEntry) { OwnConfigEntryBase ownConfigEntryBase = configData((ConfigEntryBase)(object)configEntry); SyncedConfigEntry<T> syncedEntry = ownConfigEntryBase as SyncedConfigEntry<T>; if (syncedEntry == null) { syncedEntry = new SyncedConfigEntry<T>(configEntry); AccessTools.DeclaredField(typeof(ConfigDescription), "<Tags>k__BackingField").SetValue(((ConfigEntryBase)configEntry).Description, new object[1] { new ConfigurationManagerAttributes() }.Concat(((ConfigEntryBase)configEntry).Description.Tags ?? Array.Empty<object>()).Concat(new SyncedConfigEntry<T>[1] { syncedEntry }).ToArray()); configEntry.SettingChanged += delegate { if (!ProcessingServerUpdate && syncedEntry.SynchronizedConfig) { Broadcast(ZRoutedRpc.Everybody, (ConfigEntryBase)configEntry); } }; allConfigs.Add(syncedEntry); } return syncedEntry; } public SyncedConfigEntry<T> AddLockingConfigEntry<T>(ConfigEntry<T> lockingConfig) where T : IConvertible { if (lockedConfig != null) { throw new Exception("Cannot initialize locking ConfigEntry twice"); } lockedConfig = AddConfigEntry<T>(lockingConfig); lockingConfig.SettingChanged += delegate { this.lockedConfigChanged?.Invoke(); }; return (SyncedConfigEntry<T>)lockedConfig; } internal void AddCustomValue(CustomSyncedValueBase customValue) { if (allCustomValues.Select((CustomSyncedValueBase v) => v.Identifier).Concat(new string[1] { "serverversion" }).Contains(customValue.Identifier)) { throw new Exception("Cannot have multiple settings with the same name or with a reserved name (serverversion)"); } allCustomValues.Add(customValue); allCustomValues = new HashSet<CustomSyncedValueBase>(allCustomValues.OrderByDescending((CustomSyncedValueBase v) => v.Priority)); customValue.ValueChanged += delegate { if (!ProcessingServerUpdate) { Broadcast(ZRoutedRpc.Everybody, customValue); } }; } private void RPC_FromServerConfigSync(ZRpc rpc, ZPackage package) { lockedConfigChanged += serverLockedSettingChanged; IsSourceOfTruth = false; if (HandleConfigSyncRPC(0L, package, clientUpdate: false)) { InitialSyncDone = true; } } private void RPC_FromOtherClientConfigSync(long sender, ZPackage package) { HandleConfigSyncRPC(sender, package, clientUpdate: true); } private bool HandleConfigSyncRPC(long sender, ZPackage package, bool clientUpdate) { //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Expected O, but got Unknown //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Expected O, but got Unknown //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Expected O, but got Unknown try { if (isServer && IsLocked) { ZRpc? currentRpc = SnatchCurrentlyHandlingRPC.currentRpc; object obj; if (currentRpc == null) { obj = null; } else { ISocket socket = currentRpc.GetSocket(); obj = ((socket != null) ? socket.GetHostName() : null); } string text = (string)obj; if (text != null) { MethodInfo methodInfo = AccessTools.DeclaredMethod(typeof(ZNet), "ListContainsId", (Type[])null, (Type[])null); SyncedList val = (SyncedList)AccessTools.DeclaredField(typeof(ZNet), "m_adminList").GetValue(ZNet.instance); if (!(((object)methodInfo == null) ? val.Contains(text) : ((bool)methodInfo.Invoke(ZNet.instance, new object[2] { val, text })))) { return false; } } } cacheExpirations.RemoveAll(delegate(KeyValuePair<long, string> kv) { if (kv.Key < DateTimeOffset.Now.Ticks) { configValueCache.Remove(kv.Value); return true; } return false; }); byte b = package.ReadByte(); if ((b & 2u) != 0) { long num = package.ReadLong(); string text2 = sender.ToString() + num; if (!configValueCache.TryGetValue(text2, out var value)) { value = new SortedDictionary<int, byte[]>(); configValueCache[text2] = value; cacheExpirations.Add(new KeyValuePair<long, string>(DateTimeOffset.Now.AddSeconds(60.0).Ticks, text2)); } int key = package.ReadInt(); int num2 = package.ReadInt(); value.Add(key, package.ReadByteArray()); if (value.Count < num2) { return false; } configValueCache.Remove(text2); package = new ZPackage(value.Values.SelectMany((byte[] a) => a).ToArray()); b = package.ReadByte(); } ProcessingServerUpdate = true; if ((b & 4u) != 0) { MemoryStream stream = new MemoryStream(package.ReadByteArray()); MemoryStream memoryStream = new MemoryStream(); using (DeflateStream deflateStream = new DeflateStream(stream, CompressionMode.Decompress)) { deflateStream.CopyTo(memoryStream); } package = new ZPackage(memoryStream.ToArray()); b = package.ReadByte(); } if ((b & 1) == 0) { resetConfigsFromServer(); } ParsedConfigs parsedConfigs = ReadConfigsFromPackage(package); ConfigFile val2 = null; bool saveOnConfigSet = false; foreach (KeyValuePair<OwnConfigEntryBase, object> configValue in parsedConfigs.configValues) { if (!isServer && configValue.Key.LocalBaseValue == null) { configValue.Key.LocalBaseValue = configValue.Key.BaseConfig.BoxedValue; } if (val2 == null) { val2 = configValue.Key.BaseConfig.ConfigFile; saveOnConfigSet = val2.SaveOnConfigSet; val2.SaveOnConfigSet = false; } configValue.Key.BaseConfig.BoxedValue = configValue.Value; } if (val2 != null) { val2.SaveOnConfigSet = saveOnConfigSet; } foreach (KeyValuePair<CustomSyncedValueBase, object> customValue in parsedConfigs.customValues) { if (!isServer) { CustomSyncedValueBase key2 = customValue.Key; if (key2.LocalBaseValue == null) { key2.LocalBaseValue = customValue.Key.BoxedValue; } } customValue.Key.BoxedValue = customValue.Value; } Debug.Log((object)string.Format("Received {0} configs and {1} custom values from {2} for mod {3}", parsedConfigs.configValues.Count, parsedConfigs.customValues.Count, (isServer || clientUpdate) ? $"client {sender}" : "the server", DisplayName ?? Name)); if (!isServer) { serverLockedSettingChanged(); } return true; } finally { ProcessingServerUpdate = false; } } private ParsedConfigs ReadConfigsFromPackage(ZPackage package) { ParsedConfigs parsedConfigs = new ParsedConfigs(); Dictionary<string, OwnConfigEntryBase> dictionary = allConfigs.Where((OwnConfigEntryBase c) => c.SynchronizedConfig).ToDictionary((OwnConfigEntryBase c) => c.BaseConfig.Definition.Section + "_" + c.BaseConfig.Definition.Key, (OwnConfigEntryBase c) => c); Dictionary<string, CustomSyncedValueBase> dictionary2 = allCustomValues.ToDictionary((CustomSyncedValueBase c) => c.Identifier, (CustomSyncedValueBase c) => c); int num = package.ReadInt(); for (int i = 0; i < num; i++) { string text = package.ReadString(); string text2 = package.ReadString(); string text3 = package.ReadString(); Type type = Type.GetType(text3); if (text3 == "" || type != null) { object obj; try { obj = ((text3 == "") ? null : ReadValueWithTypeFromZPackage(package, type)); } catch (InvalidDeserializationTypeException ex) { Debug.LogWarning((object)("Got unexpected struct internal type " + ex.received + " for field " + ex.field + " struct " + text3 + " for " + text2 + " in section " + text + " for mod " + (DisplayName ?? Name) + ", expecting " + ex.expected)); continue; } OwnConfigEntryBase value2; if (text == "Internal") { CustomSyncedValueBase value; if (text2 == "serverversion") { if (obj?.ToString() != CurrentVersion) { Debug.LogWarning((object)("Received server version is not equal: server version = " + (obj?.ToString() ?? "null") + "; local version = " + (CurrentVersion ?? "unknown"))); } } else if (text2 == "lockexempt") { if (obj is bool flag) { lockExempt = flag; } } else if (dictionary2.TryGetValue(text2, out value)) { if ((text3 == "" && (!value.Type.IsValueType || Nullable.GetUnderlyingType(value.Type) != null)) || GetZPackageTypeString(value.Type) == text3) { parsedConfigs.customValues[value] = obj; continue; } Debug.LogWarning((object)("Got unexpected type " + text3 + " for internal value " + text2 + " for mod " + (DisplayName ?? Name) + ", expecting " + value.Type.AssemblyQualifiedName)); } } else if (dictionary.TryGetValue(text + "_" + text2, out value2)) { Type type2 = configType(value2.BaseConfig); if ((text3 == "" && (!type2.IsValueType || Nullable.GetUnderlyingType(type2) != null)) || GetZPackageTypeString(type2) == text3) { parsedConfigs.configValues[value2] = obj; continue; } Debug.LogWarning((object)("Got unexpected type " + text3 + " for " + text2 + " in section " + text + " for mod " + (DisplayName ?? Name) + ", expecting " + type2.AssemblyQualifiedName)); } else { Debug.LogWarning((object)("Received unknown config entry " + text2 + " in section " + text + " for mod " + (DisplayName ?? Name) + ". This may happen if client and server versions of the mod do not match.")); } continue; } Debug.LogWarning((object)("Got invalid type " + text3 + ", abort reading of received configs")); return new ParsedConfigs(); } return parsedConfigs; } private static bool isWritableConfig(OwnConfigEntryBase config) { ConfigSync configSync = configSyncs.FirstOrDefault((ConfigSync cs) => cs.allConfigs.Contains(config)); if (configSync == null) { return true; } if (!configSync.IsSourceOfTruth && config.SynchronizedConfig && config.LocalBaseValue != null) { if (!configSync.IsLocked) { if (config == configSync.lockedConfig) { return lockExempt; } return true; } return false; } return true; } private void serverLockedSettingChanged() { foreach (OwnConfigEntryBase allConfig in allConfigs) { configAttribute<ConfigurationManagerAttributes>(allConfig.BaseConfig).ReadOnly = !isWritableConfig(allConfig); } } private void resetConfigsFromServer() { ConfigFile val = null; bool saveOnConfigSet = false; foreach (OwnConfigEntryBase item in allConfigs.Where((OwnConfigEntryBase config) => config.LocalBaseValue != null)) { if (val == null) { val = item.BaseConfig.ConfigFile; saveOnConfigSet = val.SaveOnConfigSet; val.SaveOnConfigSet = false; } item.BaseConfig.BoxedValue = item.LocalBaseValue; item.LocalBaseValue = null; } if (val != null) { val.SaveOnConfigSet = saveOnConfigSet; } foreach (CustomSyncedValueBase item2 in allCustomValues.Where((CustomSyncedValueBase config) => config.LocalBaseValue != null)) { item2.BoxedValue = item2.LocalBaseValue; item2.LocalBaseValue = null; } lockedConfigChanged -= serverLockedSettingChanged; serverLockedSettingChanged(); } private IEnumerator<bool> distributeConfigToPeers(ZNetPeer peer, ZPackage package) { ZRoutedRpc rpc = ZRoutedRpc.instance; if (rpc == null) { yield break; } byte[] data = package.GetArray(); if (data != null && data.LongLength > 250000) { int fragments = (int)(1 + (data.LongLength - 1) / 250000); long packageIdentifier = ++packageCounter; int fragment = 0; while (fragment < fragments) { foreach (bool item in waitForQueue()) { yield return item; } if (peer.m_socket.IsConnected()) { ZPackage val = new ZPackage(); val.Write((byte)2); val.Write(packageIdentifier); val.Write(fragment); val.Write(fragments); val.Write(data.Skip(250000 * fragment).Take(250000).ToArray()); SendPackage(val); if (fragment != fragments - 1) { yield return true; } int num = fragment + 1; fragment = num; continue; } break; } yield break; } foreach (bool item2 in waitForQueue()) { yield return item2; } SendPackage(package); void SendPackage(ZPackage pkg) { string text = Name + " ConfigSync"; if (isServer) { peer.m_rpc.Invoke(text, new object[1] { pkg }); } else { rpc.InvokeRoutedRPC(peer.m_server ? 0 : peer.m_uid, text, new object[1] { pkg }); } } IEnumerable<bool> waitForQueue() { float timeout = Time.time + 30f; while (peer.m_socket.GetSendQueueSize() > 20000) { if (Time.time > timeout) { Debug.Log((object)$"Disconnecting {peer.m_uid} after 30 seconds config sending timeout"); peer.m_rpc.Invoke("Error", new object[1] { (object)(ConnectionStatus)5 }); ZNet.instance.Disconnect(peer); break; } yield return false; } } } private IEnumerator sendZPackage(long target, ZPackage package) { if (!Object.op_Implicit((Object)(object)ZNet.instance)) { return Enumerable.Empty<object>().GetEnumerator(); } List<ZNetPeer> list = (List<ZNetPeer>)AccessTools.DeclaredField(typeof(ZRoutedRpc), "m_peers").GetValue(ZRoutedRpc.instance); if (target != ZRoutedRpc.Everybody) { list = list.Where((ZNetPeer p) => p.m_uid == target).ToList(); } return sendZPackage(list, package); } private IEnumerator sendZPackage(List<ZNetPeer> peers, ZPackage package) { if (!Object.op_Implicit((Object)(object)ZNet.instance)) { yield break; } byte[] array = package.GetArray(); if (array != null && array.LongLength > 10000) { ZPackage val = new ZPackage(); val.Write((byte)4); MemoryStream memoryStream = new MemoryStream(); using (DeflateStream deflateStream = new DeflateStream(memoryStream, CompressionLevel.Optimal)) { deflateStream.Write(array, 0, array.Length); } val.Write(memoryStream.ToArray()); package = val; } List<IEnumerator<bool>> writers = (from peer in peers where peer.IsReady() select peer into p select distributeConfigToPeers(p, package)).ToList(); writers.RemoveAll((IEnumerator<bool> writer) => !writer.MoveNext()); while (writers.Count > 0) { yield return null; writers.RemoveAll((IEnumerator<bool> writer) => !writer.MoveNext()); } } private void Broadcast(long target, params ConfigEntryBase[] configs) { if (!IsLocked || isServer) { ZPackage package = ConfigsToPackage(configs); ZNet instance = ZNet.instance; if (instance != null) { ((MonoBehaviour)instance).StartCoroutine(sendZPackage(target, package)); } } } private void Broadcast(long target, params CustomSyncedValueBase[] customValues) { if (!IsLocked || isServer) { ZPackage package = ConfigsToPackage(null, customValues); ZNet instance = ZNet.instance; if (instance != null) { ((MonoBehaviour)instance).StartCoroutine(sendZPackage(target, package)); } } } private static OwnConfigEntryBase? configData(ConfigEntryBase config) { return config.Description.Tags?.OfType<OwnConfigEntryBase>().SingleOrDefault(); } public static SyncedConfigEntry<T>? ConfigData<T>(ConfigEntry<T> config) { return ((ConfigEntryBase)config).Description.Tags?.OfType<SyncedConfigEntry<T>>().SingleOrDefault(); } private static T configAttribute<T>(ConfigEntryBase config) { return config.Description.Tags.OfType<T>().First(); } private static Type configType(ConfigEntryBase config) { return configType(config.SettingType); } private static Type configType(Type type) { if (!type.IsEnum) { return type; } return Enum.GetUnderlyingType(type); } private static ZPackage ConfigsToPackage(IEnumerable<ConfigEntryBase>? configs = null, IEnumerable<CustomSyncedValueBase>? customValues = null, IEnumerable<PackageEntry>? packageEntries = null, bool partial = true) { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Expected O, but got Unknown List<ConfigEntryBase> list = configs?.Where((ConfigEntryBase config) => configData(config).SynchronizedConfig).ToList() ?? new List<ConfigEntryBase>(); List<CustomSyncedValueBase> list2 = customValues?.ToList() ?? new List<CustomSyncedValueBase>(); ZPackage val = new ZPackage(); val.Write(partial ? ((byte)1) : ((byte)0)); val.Write(list.Count + list2.Count + (packageEntries?.Count() ?? 0)); foreach (PackageEntry item in packageEntries ?? Array.Empty<PackageEntry>()) { AddEntryToPackage(val, item); } foreach (CustomSyncedValueBase item2 in list2) { AddEntryToPackage(val, new PackageEntry { section = "Internal", key = item2.Identifier, type = item2.Type, value = item2.BoxedValue }); } foreach (ConfigEntryBase item3 in list) { AddEntryToPackage(val, new PackageEntry { section = item3.Definition.Section, key = item3.Definition.Key, type = configType(item3), value = item3.BoxedValue }); } return val; } private static void AddEntryToPackage(ZPackage package, PackageEntry entry) { package.Write(entry.section); package.Write(entry.key); package.Write((entry.value == null) ? "" : GetZPackageTypeString(entry.type)); AddValueToZPackage(package, entry.value); } private static string GetZPackageTypeString(Type type) { return type.AssemblyQualifiedName; } private static void AddValueToZPackage(ZPackage package, object? value) { Type type = value?.GetType(); if (value is Enum) { value = ((IConvertible)value).ToType(Enum.GetUnderlyingType(value.GetType()), CultureInfo.InvariantCulture); } else { if (value is ICollection collection) { package.Write(collection.Count); { foreach (object item in collection) { AddValueToZPackage(package, item); } return; } } if ((object)type != null && type.IsValueType && !type.IsPrimitive) { FieldInfo[] fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); package.Write(fields.Length); FieldInfo[] array = fields; foreach (FieldInfo fieldInfo in array) { package.Write(GetZPackageTypeString(fieldInfo.FieldType)); AddValueToZPackage(package, fieldInfo.GetValue(value)); } return; } } ZRpc.Serialize(new object[1] { value }, ref package); } private static object ReadValueWithTypeFromZPackage(ZPackage package, Type type) { if ((object)type != null && type.IsValueType && !type.IsPrimitive && !type.IsEnum) { FieldInfo[] fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); int num = package.ReadInt(); if (num != fields.Length) { throw new InvalidDeserializationTypeException { received = $"(field count: {num})", expected = $"(field count: {fields.Length})" }; } object uninitializedObject = FormatterServices.GetUninitializedObject(type); FieldInfo[] array = fields; foreach (FieldInfo fieldInfo in array) { string text = package.ReadString(); if (text != GetZPackageTypeString(fieldInfo.FieldType)) { throw new InvalidDeserializationTypeException { received = text, expected = GetZPackageTypeString(fieldInfo.FieldType), field = fieldInfo.Name }; } fieldInfo.SetValue(uninitializedObject, ReadValueWithTypeFromZPackage(package, fieldInfo.FieldType)); } return uninitializedObject; } if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Dictionary<, >)) { int num2 = package.ReadInt(); IDictionary dictionary = (IDictionary)Activator.CreateInstance(type); Type type2 = typeof(KeyValuePair<, >).MakeGenericType(type.GenericTypeArguments); FieldInfo field = type2.GetField("key", BindingFlags.Instance | BindingFlags.NonPublic); FieldInfo field2 = type2.GetField("value", BindingFlags.Instance | BindingFlags.NonPublic); for (int j = 0; j < num2; j++) { object obj = ReadValueWithTypeFromZPackage(package, type2); dictionary.Add(field.GetValue(obj), field2.GetValue(obj)); } return dictionary; } if (type != typeof(List<string>) && type.IsGenericType) { Type type3 = typeof(ICollection<>).MakeGenericType(type.GenericTypeArguments[0]); if ((object)type3 != null && type3.IsAssignableFrom(type)) { int num3 = package.ReadInt(); object obj2 = Activator.CreateInstance(type); MethodInfo method = type3.GetMethod("Add"); for (int k = 0; k < num3; k++) { method.Invoke(obj2, new object[1] { ReadValueWithTypeFromZPackage(package, type.GenericTypeArguments[0]) }); } return obj2; } } ParameterInfo parameterInfo = (ParameterInfo)FormatterServices.GetUninitializedObject(typeof(ParameterInfo)); AccessTools.DeclaredField(typeof(ParameterInfo), "ClassImpl").SetValue(parameterInfo, type); List<object> source = new List<object>(); ZRpc.Deserialize(new ParameterInfo[2] { null, parameterInfo }, package, ref source); return source.First(); } } [PublicAPI] [HarmonyPatch] public class VersionCheck { private static readonly HashSet<VersionCheck> versionChecks; private static readonly Dictionary<string, string> notProcessedNames; public string Name; private string? displayName; private string? currentVersion; private string? minimumRequiredVersion; public bool ModRequired = true; private string? ReceivedCurrentVersion; private string? ReceivedMinimumRequiredVersion; private readonly List<ZRpc> ValidatedClients = new List<ZRpc>(); private ConfigSync? ConfigSync; public string DisplayName { get { return displayName ?? Name; } set { displayName = value; } } public string CurrentVersion { get { return currentVersion ?? "0.0.0"; } set { currentVersion = value; } } public string MinimumRequiredVersion { get { string text = minimumRequiredVersion; if (text == null) { if (!ModRequired) { return "0.0.0"; } text = CurrentVersion; } return text; } set { minimumRequiredVersion = value; } } private static void PatchServerSync() { //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Expected O, but got Unknown Patches patchInfo = PatchProcessor.GetPatchInfo((MethodBase)AccessTools.DeclaredMethod(typeof(ZNet), "Awake", (Type[])null, (Type[])null)); if (patchInfo != null && patchInfo.Postfixes.Count((Patch p) => p.PatchMethod.DeclaringType == typeof(ConfigSync.RegisterRPCPatch)) > 0) { return; } Harmony val = new Harmony("org.bepinex.helpers.ServerSync"); foreach (Type item in from t in typeof(ConfigSync).GetNestedTypes(BindingFlags.NonPublic).Concat(new Type[1] { typeof(VersionCheck) }) where t.IsClass select t) { val.PatchAll(item); } } static VersionCheck() { versionChecks = new HashSet<VersionCheck>(); notProcessedNames = new Dictionary<string, string>(); typeof(ThreadingHelper).GetMethod("StartSyncInvoke").Invoke(ThreadingHelper.Instance, new object[1] { new Action(PatchServerSync) }); } public VersionCheck(string name) { Name = name; ModRequired = true; versionChecks.Add(this); } public VersionCheck(ConfigSync configSync) { ConfigSync = configSync; Name = ConfigSync.Name; versionChecks.Add(this); } public void Initialize() { ReceivedCurrentVersion = null; ReceivedMinimumRequiredVersion = null; if (ConfigSync != null) { Name = ConfigSync.Name; DisplayName = ConfigSync.DisplayName; CurrentVersion = ConfigSync.CurrentVersion; MinimumRequiredVersion = ConfigSync.MinimumRequiredVersion; ModRequired = ConfigSync.ModRequired; } } private bool IsVersionOk() { if (ReceivedMinimumRequiredVersion == null || ReceivedCurrentVersion == null) { return !ModRequired; } bool num = new System.Version(CurrentVersion) >= new System.Version(ReceivedMinimumRequiredVersion); bool flag = new System.Version(ReceivedCurrentVersion) >= new System.Version(MinimumRequiredVersion); return num && flag; } private string ErrorClient() { if (ReceivedMinimumRequiredVersion == null) { return DisplayName + " is not installed on the server."; } if (!(new System.Version(CurrentVersion) >= new System.Version(ReceivedMinimumRequiredVersion))) { return DisplayName + " needs to be at least version " + ReceivedMinimumRequiredVersion + ". You have version " + CurrentVersion + "."; } return DisplayName + " may not be higher than version " + ReceivedCurrentVersion + ". You have version " + CurrentVersion + "."; } private string ErrorServer(ZRpc rpc) { return "Disconnect: The client (" + rpc.GetSocket().GetHostName() + ") doesn't have the correct " + DisplayName + " version " + MinimumRequiredVersion; } private string Error(ZRpc? rpc = null) { if (rpc != null) { return ErrorServer(rpc); } return ErrorClient(); } private static VersionCheck[] GetFailedClient() { return versionChecks.Where((VersionCheck check) => !check.IsVersionOk()).ToArray(); } private static VersionCheck[] GetFailedServer(ZRpc rpc) { return versionChecks.Where((VersionCheck check) => check.ModRequired && !check.ValidatedClients.Contains(rpc)).ToArray(); } private static void Logout() { Game.instance.Logout(); AccessTools.DeclaredField(typeof(ZNet), "m_connectionStatus").SetValue(null, (object)(ConnectionStatus)3); } private static void DisconnectClient(ZRpc rpc) { rpc.Invoke("Error", new object[1] { 3 }); } private static void CheckVersion(ZRpc rpc, ZPackage pkg) { CheckVersion(rpc, pkg, null); } private static void CheckVersion(ZRpc rpc, ZPackage pkg, Action<ZRpc, ZPackage>? original) { string text = pkg.ReadString(); string text2 = pkg.ReadString(); string text3 = pkg.ReadString(); bool flag = false; foreach (VersionCheck versionCheck in versionChecks) { if (!(text != versionCheck.Name)) { Debug.Log((object)("Received " + versionCheck.DisplayName + " version " + text3 + " and minimum version " + text2 + " from the " + (ZNet.instance.IsServer() ? "client" : "server") + ".")); versionCheck.ReceivedMinimumRequiredVersion = text2; versionCheck.ReceivedCurrentVersion = text3; if (ZNet.instance.IsServer() && versionCheck.IsVersionOk()) { versionCheck.ValidatedClients.Add(rpc); } flag = true; } } if (flag) { return; } pkg.SetPos(0); if (original != null) { original(rpc, pkg); if (pkg.GetPos() == 0) { notProcessedNames.Add(text, text3); } } } [HarmonyPatch(typeof(ZNet), "RPC_PeerInfo")] [HarmonyPrefix] private static bool RPC_PeerInfo(ZRpc rpc, ZNet __instance) { VersionCheck[] array = (__instance.IsServer() ? GetFailedServer(rpc) : GetFailedClient()); if (array.Length == 0) { return true; } VersionCheck[] array2 = array; for (int i = 0; i < array2.Length; i++) { Debug.LogWarning((object)array2[i].Error(rpc)); } if (__instance.IsServer()) { DisconnectClient(rpc); } else { Logout(); } return false; } [HarmonyPatch(typeof(ZNet), "OnNewConnection")] [HarmonyPrefix] private static void RegisterAndCheckVersion(ZNetPeer peer, ZNet __instance) { //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Expected O, but got Unknown notProcessedNames.Clear(); IDictionary dictionary = (IDictionary)typeof(ZRpc).GetField("m_functions", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(peer.m_rpc); if (dictionary.Contains(StringExtensionMethods.GetStableHashCode("ServerSync VersionCheck"))) { object obj = dictionary[StringExtensionMethods.GetStableHashCode("ServerSync VersionCheck")]; Action<ZRpc, ZPackage> action = (Action<ZRpc, ZPackage>)obj.GetType().GetField("m_action", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(obj); peer.m_rpc.Register<ZPackage>("ServerSync VersionCheck", (Action<ZRpc, ZPackage>)delegate(ZRpc rpc, ZPackage pkg) { CheckVersion(rpc, pkg, action); }); } else { peer.m_rpc.Register<ZPackage>("ServerSync VersionCheck", (Action<ZRpc, ZPackage>)CheckVersion); } foreach (VersionCheck versionCheck in versionChecks) { versionCheck.Initialize(); if (versionCheck.ModRequired || __instance.IsServer()) { Debug.Log((object)("Sending " + versionCheck.DisplayName + " version " + versionCheck.CurrentVersion + " and minimum version " + versionCheck.MinimumRequiredVersion + " to the " + (__instance.IsServer() ? "client" : "server") + ".")); ZPackage val = new ZPackage(); val.Write(versionCheck.Name); val.Write(versionCheck.MinimumRequiredVersion); val.Write(versionCheck.CurrentVersion); peer.m_rpc.Invoke("ServerSync VersionCheck", new object[1] { val }); } } } [HarmonyPatch(typeof(ZNet), "Disconnect")] [HarmonyPrefix] private static void RemoveDisconnected(ZNetPeer peer, ZNet __instance) { if (!__instance.IsServer()) { return; } foreach (VersionCheck versionCheck in versionChecks) { versionCheck.ValidatedClients.Remove(peer.m_rpc); } } [HarmonyPatch(typeof(FejdStartup), "ShowConnectError")] [HarmonyPostfix] private static void ShowConnectionError(FejdStartup __instance) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Invalid comparison between Unknown and I4 //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) if (!__instance.m_connectionFailedPanel.activeSelf || (int)ZNet.GetConnectionStatus() != 3) { return; } bool flag = false; VersionCheck[] failedClient = GetFailedClient(); if (failedClient.Length != 0) { string text = string.Join("\n", failedClient.Select((VersionCheck check) => check.Error())); Text connectionFailedError = __instance.m_connectionFailedError; connectionFailedError.text = connectionFailedError.text + "\n" + text; flag = true; } foreach (KeyValuePair<string, string> item in notProcessedNames.OrderBy((KeyValuePair<string, string> kv) => kv.Key)) { if (!__instance.m_connectionFailedError.text.Contains(item.Key)) { Text connectionFailedError2 = __instance.m_connectionFailedError; connectionFailedError2.text = connectionFailedError2.text + "\nServer expects you to have " + item.Key + " (Version: " + item.Value + ") installed."; flag = true; } } if (flag) { RectTransform component = ((Component)__instance.m_connectionFailedPanel.transform.Find("Image")).GetComponent<RectTransform>(); Vector2 sizeDelta = component.sizeDelta; sizeDelta.x = 675f; component.sizeDelta = sizeDelta; float num = 105f; RectTransform component2 = ((Component)((Component)component).transform.Find("ButtonOk")).GetComponent<RectTransform>(); component2.anchoredPosition = new Vector2(component2.anchoredPosition.x, component2.anchoredPosition.y - (num - component.sizeDelta.y) / 2f); sizeDelta = component.sizeDelta; sizeDelta.y = num; component.sizeDelta = sizeDelta; } } } } namespace LocalizationManager { [PublicAPI] public class Localizer { private static readonly Dictionary<string, Dictionary<string, Func<string>>> PlaceholderProcessors; private static readonly Dictionary<string, Dictionary<string, string>> loadedTexts; private static readonly ConditionalWeakTable<Localization, string> localizationLanguage; private static readonly List<WeakReference<Localization>> localizationObjects; private static BaseUnityPlugin? _plugin; private static readonly List<string> fileExtensions; private static BaseUnityPlugin plugin { get { //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Expected O, but got Unknown if (_plugin == null) { IEnumerable<TypeInfo> source; try { source = Assembly.GetExecutingAssembly().DefinedTypes.ToList(); } catch (ReflectionTypeLoadException ex) { source = from t in ex.Types where t != null select t.GetTypeInfo(); } _plugin = (BaseUnityPlugin)Chainloader.ManagerObject.GetComponent((Type)source.First((TypeInfo t) => t.IsClass && typeof(BaseUnityPlugin).IsAssignableFrom(t))); } return _plugin; } } private static void UpdatePlaceholderText(Localization localization, string key) { localizationLanguage.TryGetValue(localization, out var value); string text = loadedTexts[value][key]; if (PlaceholderProcessors.TryGetValue(key, out var value2)) { text = value2.Aggregate(text, (string current, KeyValuePair<string, Func<string>> kv) => current.Replace("{" + kv.Key + "}", kv.Value())); } localization.AddWord(key, text); } public static void AddPlaceholder<T>(string key, string placeholder, ConfigEntry<T> config, Func<T, string>? convertConfigValue = null) where T : notnull { Func<T, string> convertConfigValue2 = convertConfigValue; if (convertConfigValue2 == null) { convertConfigValue2 = (T val) => val.ToString(); } if (!PlaceholderProcessors.ContainsKey(key)) { PlaceholderProcessors[key] = new Dictionary<string, Func<string>>(); } config.SettingChanged += delegate { UpdatePlaceholder(); }; if (loadedTexts.ContainsKey(Localization.instance.GetSelectedLanguage())) { UpdatePlaceholder(); } void UpdatePlaceholder() { PlaceholderProcessors[key][placeholder] = () => convertConfigValue2(config.Value); UpdatePlaceholderText(Localization.instance, key); } } public static void AddText(string key, string text) { List<WeakReference<Localization>> list = new List<WeakReference<Localization>>(); foreach (WeakReference<Localization> localizationObject in localizationObjects) { if (localizationObject.TryGetTarget(out var target)) { Dictionary<string, string> dictionary = loadedTexts[localizationLanguage.GetOrCreateValue(target)]; if (!target.m_translations.ContainsKey(key)) { dictionary[key] = text; target.AddWord(key, text); } } else { list.Add(localizationObject); } } foreach (WeakReference<Localization> item in list) { localizationObjects.Remove(item); } } public static void Load() { LoadLocalization(Localization.instance, Localization.instance.GetSelectedLanguage()); } private static void LoadLocalization(Localization __instance, string language) { if (!localizationLanguage.Remove(__instance)) { localizationObjects.Add(new WeakReference<Localization>(__instance)); } localizationLanguage.Add(__instance, language); Dictionary<string, string> dictionary = new Dictionary<string, string>(); foreach (string item in from f in Directory.GetFiles(Path.GetDirectoryName(Paths.PluginPath), plugin.Info.Metadata.Name + ".*", SearchOption.AllDirectories) where fileExtensions.IndexOf(Path.GetExtension(f)) >= 0 select f) { string text = Path.GetFileNameWithoutExtension(item).Split(new char[1] { '.' })[1]; if (dictionary.ContainsKey(text)) { Debug.LogWarning((object)("Duplicate key " + text + " found for " + plugin.Info.Metadata.Name + ". The duplicate file found at " + item + " will be skipped.")); } else { dictionary[text] = item; } } byte[] array = LoadTranslationFromAssembly("English"); if (array == null) { throw new Exception("Found no English localizations in mod " + plugin.Info.Metadata.Name + ". Expected an embedded resource translations/English.json or translations/English.yml."); } Dictionary<string, string> dictionary2 = new DeserializerBuilder().IgnoreFields().Build().Deserialize<Dictionary<string, string>>(Encoding.UTF8.GetString(array)); if (dictionary2 == null) { throw new Exception("Localization for mod " + plugin.Info.Metadata.Name + " failed: Localization file was empty."); } string text2 = null; if (language != "English") { if (dictionary.ContainsKey(language)) { text2 = File.ReadAllText(dictionary[language]); } else { byte[] array2 = LoadTranslationFromAssembly(language); if (array2 != null) { text2 = Encoding.UTF8.GetString(array2); } } } if (text2 == null && dictionary.ContainsKey("English")) { text2 = File.ReadAllText(dictionary["English"]); } if (text2 != null) { foreach (KeyValuePair<string, string> item2 in new DeserializerBuilder().IgnoreFields().Build().Deserialize<Dictionary<string, string>>(text2) ?? new Dictionary<string, string>()) { dictionary2[item2.Key] = item2.Value; } } loadedTexts[language] = dictionary2; foreach (KeyValuePair<string, string> item3 in dictionary2) { UpdatePlaceholderText(__instance, item3.Key); } } static Localizer() { //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Expected O, but got Unknown PlaceholderProcessors = new Dictionary<string, Dictionary<string, Func<string>>>(); loadedTexts = new Dictionary<string, Dictionary<string, string>>(); localizationLanguage = new ConditionalWeakTable<Localization, string>(); localizationObjects = new List<WeakReference<Localization>>(); fileExtensions = new List<string> { ".json", ".yml" }; new Harmony("org.bepinex.helpers.LocalizationManager").Patch((MethodBase)AccessTools.DeclaredMethod(typeof(Localization), "LoadCSV", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(Localizer), "LoadLocalization", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); } private static byte[]? LoadTranslationFromAssembly(string language) { foreach (string fileExtension in fileExtensions) { byte[] array = ReadEmbeddedFileBytes("translations." + language + fileExtension); if (array != null) { return array; } } return null; } public static byte[]? ReadEmbeddedFileBytes(string resourceFileName, Assembly? containingAssembly = null) { using MemoryStream memoryStream = new MemoryStream(); if ((object)containingAssembly == null) { containingAssembly = Assembly.GetCallingAssembly(); } string text = containingAssembly.GetManifestResourceNames().FirstOrDefault((string str) => str.EndsWith(resourceFileName, StringComparison.Ordinal)); if (text != null) { containingAssembly.GetManifestResourceStream(text)?.CopyTo(memoryStream); } return (memoryStream.Length == 0L) ? null : memoryStream.ToArray(); } } } namespace ItemManager { [PublicAPI] public enum CraftingTable { Disabled, Inventory, [InternalName("piece_workbench")] Workbench, [InternalName("piece_cauldron")] Cauldron, [InternalName("forge")] Forge, [InternalName("piece_artisanstation")] ArtisanTable, [InternalName("piece_stonecutter")] StoneCutter, [InternalName("piece_magetable")] MageTable, [InternalName("blackforge")] BlackForge, Custom } [PublicAPI] public enum ConversionPiece { Disabled, [InternalName("smelter")] Smelter, [InternalName("charcoal_kiln")] CharcoalKiln, [InternalName("blastfurnace")] BlastFurnace, [InternalName("windmill")] Windmill, [InternalName("piece_spinningwheel")] SpinningWheel, [InternalName("eitrrefinery")] EitrRefinery, Custom } public class InternalName : Attribute { public readonly string internalName; public InternalName(string internalName) { this.internalName = internalName; } } [PublicAPI] public class RequiredResourceList { public readonly List<Requirement> Requirements = new List<Requirement>(); public bool Free; public void Add(string itemName, int amount, int quality = 0) { Requirements.Add(new Requirement { itemName = itemName, amount = amount, quality = quality }); } public void Add(string itemName, ConfigEntry<int> amountConfig, int quality = 0) { Requirements.Add(new Requirement { itemName = itemName, amountConfig = amountConfig, quality = quality }); } } [PublicAPI] public class CraftingStationList { public readonly List<CraftingStationConfig> Stations = new List<CraftingStationConfig>(); public void Add(CraftingTable table, int level) { Stations.Add(new CraftingStationConfig { Table = table, level = level }); } public void Add(string customTable, int level) { Stations.Add(new CraftingStationConfig { Table = CraftingTable.Custom, level = level, custom = customTable }); } } [PublicAPI] public class ItemRecipe { public readonly RequiredResourceList RequiredItems = new RequiredResourceList(); public readonly RequiredResourceList RequiredUpgradeItems = new RequiredResourceList(); public readonly CraftingStationList Crafting = new CraftingStationList(); public int CraftAmount = 1; public bool RequireOnlyOneIngredient; public float QualityResultAmountMultiplier = 1f; public ConfigEntryBase? RecipeIsActive; } [PublicAPI] public class Trade { public Trader Trader; public uint Price; public uint Stack = 1u; public string? RequiredGlobalKey; } [PublicAPI] [Flags] public enum Trader { None = 0, Haldor = 1, Hildir = 2 } public struct Requirement { public string itemName; public int amount; public ConfigEntry<int>? amountConfig; [Description("Set to a non-zero value to apply the requirement only for a specific quality")] public int quality; } public struct CraftingStationConfig { public CraftingTable Table; public int level; public string? custom; } [Flags] public enum Configurability { Disabled = 0, Recipe = 1, Stats = 2, Drop = 4, Trader = 8, Full = 0xF } [PublicAPI] public class DropTargets { public readonly List<DropTarget> Drops = new List<DropTarget>(); public void Add(string creatureName, float chance, int min = 1, int? max = null, bool levelMultiplier = true) { Drops.Add(new DropTarget { creature = creatureName, chance = chance, min = min, max = (max ?? min), levelMultiplier = levelMultiplier }); } } public struct DropTarget { public string creature; public int min; public int max; public float chance; public bool levelMultiplier; } public enum Toggle { On = 1, Off = 0 } [PublicAPI] public class Item { private class ItemConfig { public ConfigEntry<string>? craft; public ConfigEntry<string>? upgrade; public ConfigEntry<CraftingTable> table; public ConfigEntry<int> tableLevel; public ConfigEntry<string> customTable; public ConfigEntry<int>? maximumTableLevel; public ConfigEntry<Toggle> requireOneIngredient; public ConfigEntry<float> qualityResultAmountMultiplier; } private class TraderConfig { public ConfigEntry<Trader> trader; public ConfigEntry<uint> price; public ConfigEntry<uint> stack; public ConfigEntry<string> requiredGlobalKey; } private class RequirementQuality { public int quality; } private class ConfigurationManagerAttributes { [UsedImplicitly] public int? Order; [UsedImplicitly] public bool? Browsable; [UsedImplicitly] public string? Category; [UsedImplicitly] public Action<ConfigEntryBase>? CustomDrawer; public Func<bool>? browsability; } [PublicAPI] public enum DamageModifier { Normal, Resistant, Weak, Immune, Ignore, VeryResistant, VeryWeak, None } private delegate void setDmgFunc(ref DamageTypes dmg, float value); private class SerializedRequirements { public readonly List<Requirement> Reqs; public SerializedRequirements(List<Requirement> reqs) { Reqs = reqs; } public SerializedRequirements(string reqs) : this(reqs.Split(new char[1] { ',' }).Select(delegate(string r) { string[] array = r.Split(new char[1] { ':' }); Requirement result = default(Requirement); result.itemName = array[0]; result.amount = ((array.Length <= 1 || !int.TryParse(array[1], out var result2)) ? 1 : result2); result.quality = ((array.Length > 2 && int.TryParse(array[2], out var result3)) ? result3 : 0); return result; }).ToList()) { } public override string ToString() { return string.Join(",", Reqs.Select((Requirement r) => $"{r.itemName}:{r.amount}" + ((r.quality > 0) ? $":{r.quality}" : ""))); } public static ItemDrop? fetchByName(ObjectDB objectDB, string name) { GameObject itemPrefab = objectDB.GetItemPrefab(name); ItemDrop obj = ((itemPrefab != null) ? itemPrefab.GetComponent<ItemDrop>() : null); if ((Object)(object)obj == (Object)null) { Debug.LogWarning((object)("The required item '" + name + "' does not exist.")); } return obj; } public static Requirement[] toPieceReqs(ObjectDB objectDB, SerializedRequirements craft, SerializedRequirements upgrade) { //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Expected O, but got Unknown //IL_0194: Expected O, but got Unknown //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Expected O, but got Unknown Dictionary<string, Requirement> dictionary = craft.Reqs.Where((Requirement r) => r.itemName != "").ToDictionary((Func<Requirement, string>)((Requirement r) => r.itemName), (Func<Requirement, Requirement>)delegate(Requirement r) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown ItemDrop val6 = ResItem(r); return (val6 != null) ? new Requirement { m_amount = (r.amountConfig?.Value ?? r.amount), m_resItem = val6, m_amountPerLevel = 0 } : ((Requirement)null); }); List<Requirement> list = dictionary.Values.Where((Requirement v) => v != null).ToList(); foreach (Requirement item in upgrade.Reqs.Where((Requirement r) => r.itemName != "")) { if (item.quality > 0) { ItemDrop val = ResItem(item); if (val != null) { Requirement val2 = new Requirement { m_resItem = val, m_amountPerLevel = (item.amountConfig?.Value ?? item.amount), m_amount = 0 }; list.Add(val2); requirementQuality.Add(val2, new RequirementQuality { quality = item.quality }); } continue; } if (!dictionary.TryGetValue(item.itemName, out var value) || value == null) { ItemDrop val3 = ResItem(item); if (val3 != null) { string itemName = item.itemName; Requirement val4 = new Requirement { m_resItem = val3, m_amount = 0 }; Requirement val5 = val4; dictionary[itemName] = val4; value = val5; list.Add(value); } } if (value != null) { value.m_amountPerLevel = item.amountConfig?.Value ?? item.amount; } } return list.ToArray(); ItemDrop? ResItem(Requirement r) { return fetchByName(objectDB, r.itemName); } } } private class SerializedDrop { public readonly List<DropTarget> Drops; public SerializedDrop(List<DropTarget> drops) { Drops = drops; } public SerializedDrop(string drops) { Drops = ((drops == "") ? ((IEnumerable<string>)Array.Empty<string>()) : ((IEnumerable<string>)drops.Split(new char[1] { ',' }))).Select(delegate(string r) { string[] array = r.Split(new char[1] { ':' }); if (array.Length <= 2 || !int.TryParse(array[2], out var result)) { result = 1; } if (array.Length <= 3 || !int.TryParse(array[3], out var result2)) { result2 = result; } bool levelMultiplier = array.Length <= 4 || array[4] != "0"; DropTarget result3 = default(DropTarget); result3.creature = array[0]; result3.chance = ((array.Length > 1 && float.TryParse(array[1], out var result4)) ? result4 : 1f); result3.min = result; result3.max = result2; result3.levelMultiplier = levelMultiplier; return result3; }).ToList(); } public override string ToString() { return string.Join(",", Drops.Select((DropTarget r) => $"{r.creature}:{r.chance.ToString(CultureInfo.InvariantCulture)}:{r.min}:" + ((r.min == r.max) ? "" : $"{r.max}") + (r.levelMultiplier ? "" : ":0"))); } private static Character? fetchByName(ZNetScene netScene, string name) { GameObject prefab = netScene.GetPrefab(name); Character obj = ((prefab != null) ? prefab.GetComponent<Character>() : null); if ((Object)(object)obj == (Object)null) { Debug.LogWarning((object)("The drop target character '" + name + "' does not exist.")); } return obj; } public Dictionary<Character, Drop> toCharacterDrops(ZNetScene netScene, GameObject item) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Expected O, but got Unknown Dictionary<Character, Drop> dictionary = new Dictionary<Character, Drop>(); foreach (DropTarget drop in Drops) { Character val = fetchByName(netScene, drop.creature); if (val != null) { dictionary[val] = new Drop { m_prefab = item, m_amountMin = drop.min, m_amountMax = drop.max, m_chance = drop.chance, m_levelMultiplier = drop.levelMultiplier }; } } return dictionary; } } private static readonly List<Item> registeredItems = new List<Item>(); private static readonly Dictionary<ItemDrop, Item> itemDropMap = new Dictionary<ItemDrop, Item>(); private static Dictionary<Item, Dictionary<string, List<Recipe>>> activeRecipes = new Dictionary<Item, Dictionary<string, List<Recipe>>>(); private static Dictionary<Recipe, ConfigEntryBase?> hiddenCraftRecipes = new Dictionary<Recipe, ConfigEntryBase>(); private static Dictionary<Recipe, ConfigEntryBase?> hiddenUpgradeRecipes = new Dictionary<Recipe, ConfigEntryBase>(); private static Dictionary<Item, Dictionary<string, ItemConfig>> itemCraftConfigs = new Dictionary<Item, Dictionary<string, ItemConfig>>(); private static Dictionary<Item, ConfigEntry<string>> itemDropConfigs = new Dictionary<Item, ConfigEntry<string>>(); private Dictionary<CharacterDrop, Drop> characterDrops = new Dictionary<CharacterDrop, Drop>(); private readonly Dictionary<ConfigEntryBase, Action> statsConfigs = new Dictionary<ConfigEntryBase, Action>(); private static readonly ConditionalWeakTable<Requirement, RequirementQuality> requirementQuality = new ConditionalWeakTable<Requirement, RequirementQuality>(); public static Configurability DefaultConfigurability = Configurability.Full; public Configurability? Configurable; private Configurability configurationVisible = Configurability.Full; private TraderConfig? traderConfig; public readonly GameObject Prefab; [Description("Specifies the maximum required crafting station level to upgrade and repair the item.\nDefault is calculated from crafting station level and maximum quality.")] public int MaximumRequiredStationLevel = int.MaxValue; [Description("Assigns the item as a drop item to a creature.\nUses a creature name, a drop chance and a minimum and maximum amount.")] public readonly DropTargets DropsFrom = new DropTargets(); [Description("Configures whether the item can be bought at the trader.\nDon't forget to set cost to something above 0 or the item will be sold for free.")] public readonly Trade Trade = new Trade(); internal List<Conversion> Conversions = new List<Conversion>(); internal List<ItemConversion> conversions = new List<ItemConversion>(); public Dictionary<string, ItemRecipe> Recipes = new Dictionary<string, ItemRecipe>(); private LocalizeKey? _name; private LocalizeKey? _description; private static object? configManager; private static Localization? _english; private static BaseUnityPlugin? _plugin; private static bool hasConfigSync = true; private static object? _configSync;