Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Frosttys Modpack v2 v1.1.0
plugins/2018-Brutal_Company/BrutalCompany.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using BrutalCompany.Component; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using Project1.Data; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = ".NET Framework 4.6")] [assembly: AssemblyCompany("BrutalCompany")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("BrutalCompany")] [assembly: AssemblyTitle("BrutalCompany")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Project1 { public static class MyPluginInfo { public const string PLUGIN_GUID = "BrutalCompany"; public const string PLUGIN_NAME = "BrutalCompany"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace Project1.Data { internal enum EventEnum { None, Turret, Landmine, Hoarding, Lasso, Unfair, OopsAllSnareFlea, BrackenAndCoil, Chaos, GoToRend, All, Delivery, ReplaceItems, Schizophrenia, SupriseLandmines, ResetHeat, SpawnTurret } } namespace BrutalCompany { [BepInPlugin("BrutalCompany", "BrutalCompany", "1.0.0")] public class Plugin : BaseUnityPlugin { public static bool loaded; private Harmony _harmony = new Harmony("BrutalCompany"); public static List<SelectableLevel> levelsModified = new List<SelectableLevel>(); public static Dictionary<SelectableLevel, float> levelHeatVal; public static Dictionary<SelectableLevel, List<SpawnableEnemyWithRarity>> levelEnemySpawns; public static Dictionary<SpawnableEnemyWithRarity, int> enemyRaritys; public static Dictionary<SpawnableEnemyWithRarity, AnimationCurve> enemyPropCurves; public static ManualLogSource mls; private void Awake() { mls = Logger.CreateLogSource("BrutalCompany"); mls.LogInfo((object)"Loaded Brutal Company and applying patches."); _harmony.PatchAll(typeof(Plugin)); mls = ((BaseUnityPlugin)this).Logger; levelHeatVal = new Dictionary<SelectableLevel, float>(); enemyRaritys = new Dictionary<SpawnableEnemyWithRarity, int>(); levelEnemySpawns = new Dictionary<SelectableLevel, List<SpawnableEnemyWithRarity>>(); enemyPropCurves = new Dictionary<SpawnableEnemyWithRarity, AnimationCurve>(); } public void OnDestroy() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown if (!loaded) { GameObject val = new GameObject("QuotaChanger"); Object.DontDestroyOnLoad((Object)val); val.AddComponent<QuotaAjuster>(); loaded = true; } } [HarmonyPatch(typeof(RoundManager), "LoadNewLevel")] [HarmonyPrefix] private static bool ModifyLevel(ref SelectableLevel newLevel) { //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Expected O, but got Unknown //IL_052c: Unknown result type (might be due to invalid IL or missing references) //IL_0531: Unknown result type (might be due to invalid IL or missing references) //IL_0536: Unknown result type (might be due to invalid IL or missing references) //IL_0540: Expected O, but got Unknown //IL_059a: Unknown result type (might be due to invalid IL or missing references) //IL_059f: Unknown result type (might be due to invalid IL or missing references) //IL_05a4: Unknown result type (might be due to invalid IL or missing references) //IL_05ae: Expected O, but got Unknown //IL_0a4a: Unknown result type (might be due to invalid IL or missing references) //IL_0a4f: Unknown result type (might be due to invalid IL or missing references) //IL_0a60: Unknown result type (might be due to invalid IL or missing references) //IL_0a65: Unknown result type (might be due to invalid IL or missing references) //IL_0a6a: Unknown result type (might be due to invalid IL or missing references) //IL_0a74: Expected O, but got Unknown //IL_0a07: Unknown result type (might be due to invalid IL or missing references) //IL_0a0c: Unknown result type (might be due to invalid IL or missing references) //IL_0a1d: Unknown result type (might be due to invalid IL or missing references) //IL_0a22: Unknown result type (might be due to invalid IL or missing references) //IL_0a27: Unknown result type (might be due to invalid IL or missing references) //IL_0a31: Expected O, but got Unknown //IL_0afc: Unknown result type (might be due to invalid IL or missing references) //IL_0b01: Unknown result type (might be due to invalid IL or missing references) //IL_0b12: Unknown result type (might be due to invalid IL or missing references) //IL_0b17: Unknown result type (might be due to invalid IL or missing references) //IL_0b1c: Unknown result type (might be due to invalid IL or missing references) //IL_0b26: Expected O, but got Unknown //IL_0abc: Unknown result type (might be due to invalid IL or missing references) //IL_0ac1: Unknown result type (might be due to invalid IL or missing references) //IL_0ad2: Unknown result type (might be due to invalid IL or missing references) //IL_0ad7: Unknown result type (might be due to invalid IL or missing references) //IL_0adc: Unknown result type (might be due to invalid IL or missing references) //IL_0ae6: Expected O, but got Unknown //IL_0ced: Unknown result type (might be due to invalid IL or missing references) //IL_0cf2: Unknown result type (might be due to invalid IL or missing references) //IL_0d05: Unknown result type (might be due to invalid IL or missing references) //IL_0d0a: Unknown result type (might be due to invalid IL or missing references) //IL_0d0f: Unknown result type (might be due to invalid IL or missing references) //IL_0d19: Expected O, but got Unknown //IL_0d2e: Unknown result type (might be due to invalid IL or missing references) //IL_0d33: Unknown result type (might be due to invalid IL or missing references) //IL_0d46: Unknown result type (might be due to invalid IL or missing references) //IL_0d4b: Unknown result type (might be due to invalid IL or missing references) //IL_0d5e: Unknown result type (might be due to invalid IL or missing references) //IL_0d63: Unknown result type (might be due to invalid IL or missing references) //IL_0d68: Unknown result type (might be due to invalid IL or missing references) //IL_0d72: Expected O, but got Unknown //IL_0c78: Unknown result type (might be due to invalid IL or missing references) //IL_0c7d: Unknown result type (might be due to invalid IL or missing references) //IL_0c8e: Unknown result type (might be due to invalid IL or missing references) //IL_0c93: Unknown result type (might be due to invalid IL or missing references) //IL_0c98: Unknown result type (might be due to invalid IL or missing references) //IL_0ca2: Expected O, but got Unknown //IL_0d93: Unknown result type (might be due to invalid IL or missing references) //IL_0d98: Unknown result type (might be due to invalid IL or missing references) //IL_0dab: Unknown result type (might be due to invalid IL or missing references) //IL_0db0: Unknown result type (might be due to invalid IL or missing references) //IL_0dc3: Unknown result type (might be due to invalid IL or missing references) //IL_0dc8: Unknown result type (might be due to invalid IL or missing references) //IL_0dcd: Unknown result type (might be due to invalid IL or missing references) //IL_0dd7: Expected O, but got Unknown //IL_0df8: Unknown result type (might be due to invalid IL or missing references) //IL_0dfd: Unknown result type (might be due to invalid IL or missing references) //IL_0e02: Unknown result type (might be due to invalid IL or missing references) //IL_0e0c: Expected O, but got Unknown //IL_0e2d: Unknown result type (might be due to invalid IL or missing references) //IL_0e32: Unknown result type (might be due to invalid IL or missing references) //IL_0e37: Unknown result type (might be due to invalid IL or missing references) //IL_0e41: Expected O, but got Unknown if (((NetworkBehaviour)RoundManager.Instance).IsHost) { QuotaAjuster.CleanupAllSpawns(); EventEnum eventEnum = (EventEnum)Mathf.Clamp(Random.Range(-1, 17), 0, 99); if (!levelHeatVal.ContainsKey(newLevel)) { levelHeatVal.Add(newLevel, 0f); } if (!levelEnemySpawns.ContainsKey(newLevel)) { List<SpawnableEnemyWithRarity> list = new List<SpawnableEnemyWithRarity>(); foreach (SpawnableEnemyWithRarity enemy in newLevel.Enemies) { list.Add(enemy); } levelEnemySpawns.Add(newLevel, list); } levelEnemySpawns.TryGetValue(newLevel, out var value); newLevel.Enemies = value; foreach (SelectableLevel item3 in levelHeatVal.Keys.ToList()) { levelHeatVal.TryGetValue(item3, out var value2); levelHeatVal[item3] = Mathf.Clamp(value2 - 5f, 0f, 100f); if (eventEnum == EventEnum.ResetHeat || eventEnum == EventEnum.All) { levelHeatVal[item3] = 0f; } } levelHeatVal.TryGetValue(newLevel, out var value3); foreach (SpawnableEnemyWithRarity enemy2 in newLevel.Enemies) { if (!enemyRaritys.ContainsKey(enemy2)) { enemyRaritys.Add(enemy2, enemy2.rarity); } int value4 = 0; enemyRaritys.TryGetValue(enemy2, out value4); enemy2.rarity = value4; } foreach (SpawnableEnemyWithRarity enemy3 in newLevel.Enemies) { if (!enemyPropCurves.ContainsKey(enemy3)) { enemyPropCurves.Add(enemy3, enemy3.enemyType.probabilityCurve); } AnimationCurve value5 = new AnimationCurve(); enemyPropCurves.TryGetValue(enemy3, out value5); enemy3.enemyType.probabilityCurve = value5; } HUDManager.Instance.AddTextToChatOnServer("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", -1); HUDManager.Instance.AddTextToChatOnServer("<color=orange>MOON IS AT " + value3 + "% HEAT</color>", -1); if (value3 > 49f) { HUDManager.Instance.AddTextToChatOnServer("<color=red>HEAT LEVEL IS DANGEROUSLY HIGH. <color=white>\nVISIT OTHER MOONS TO LOWER HEAT LEVEL.</color>", -1); } Random.Range(-5, 3); Random.Range(-5, 3); if (newLevel.sceneName == "CompanyBuilding") { eventEnum = EventEnum.None; } switch (eventEnum) { default: HUDManager.Instance.AddTextToChatOnServer("<color=green>Level event: NONE</color>", -1); break; case EventEnum.None: HUDManager.Instance.AddTextToChatOnServer("<color=green>Level event: NONE</color>", -1); break; case EventEnum.Turret: HUDManager.Instance.AddTextToChatOnServer("<color=red>Level event: TURRET HELL</color>", -1); break; case EventEnum.Landmine: HUDManager.Instance.AddTextToChatOnServer("<color=red>Level event: LANDMINE HELL</color>", -1); break; case EventEnum.Hoarding: HUDManager.Instance.AddTextToChatOnServer("<color=red>Level event: HOARDER TOWN</color>", -1); foreach (SpawnableEnemyWithRarity enemy4 in newLevel.Enemies) { if ((Object)(object)enemy4.enemyType.enemyPrefab.GetComponent<HoarderBugAI>() != (Object)null) { enemy4.rarity = 999; } } break; case EventEnum.Lasso: HUDManager.Instance.AddTextToChatOnServer("<color=red>Level event: LASSO MAN IS REAL</color>", -1); AddLassomanToLevel(newLevel); break; case EventEnum.Unfair: HUDManager.Instance.AddTextToChatOnServer("<color=red>Level event: UNFAIR COMPANY</color>", -1); break; case EventEnum.OopsAllSnareFlea: HUDManager.Instance.AddTextToChatOnServer("<color=red>Level event: OOPS, ALL SNARE FLEAS!</color>", -1); foreach (SpawnableEnemyWithRarity enemy5 in newLevel.Enemies) { enemy5.rarity = 0; if ((Object)(object)enemy5.enemyType.enemyPrefab.GetComponent<CentipedeAI>() != (Object)null) { enemy5.rarity = 999; } } break; case EventEnum.BrackenAndCoil: HUDManager.Instance.AddTextToChatOnServer("<color=red>Level event: THE WORST COMBO OF ALL TIME</color>", -1); foreach (SpawnableEnemyWithRarity enemy6 in newLevel.Enemies) { enemy6.rarity = 0; if ((Object)(object)enemy6.enemyType.enemyPrefab.GetComponent<FlowermanAI>() != (Object)null) { enemy6.rarity = 999; } if ((Object)(object)enemy6.enemyType.enemyPrefab.GetComponent<SpringManAI>() != (Object)null) { enemy6.rarity = 999; } } break; case EventEnum.Chaos: HUDManager.Instance.AddTextToChatOnServer("<color=red>Level event: CHAOS COMPANY</color>", -1); foreach (SpawnableEnemyWithRarity enemy7 in newLevel.Enemies) { enemy7.enemyType.probabilityCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[1] { new Keyframe(0f, 1000f) }); } break; case EventEnum.All: { HUDManager.Instance.AddTextToChatOnServer("<color=red>Level event: ALL</color>", -1); foreach (SpawnableEnemyWithRarity enemy8 in newLevel.Enemies) { enemy8.enemyType.probabilityCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[1] { new Keyframe(0f, 1000f) }); } foreach (SpawnableEnemyWithRarity enemy9 in newLevel.Enemies) { enemy9.rarity = 0; if ((Object)(object)enemy9.enemyType.enemyPrefab.GetComponent<FlowermanAI>() != (Object)null) { enemy9.rarity = 999; } if ((Object)(object)enemy9.enemyType.enemyPrefab.GetComponent<SpringManAI>() != (Object)null) { enemy9.rarity = 999; } } foreach (SpawnableEnemyWithRarity enemy10 in newLevel.Enemies) { if ((Object)(object)enemy10.enemyType.enemyPrefab.GetComponent<CentipedeAI>() != (Object)null) { enemy10.rarity = 999; } } AddLassomanToLevel(newLevel); foreach (SpawnableEnemyWithRarity enemy11 in newLevel.Enemies) { if ((Object)(object)enemy11.enemyType.enemyPrefab.GetComponent<LassoManAI>() != (Object)null) { enemy11.rarity = 999; } } foreach (SpawnableEnemyWithRarity enemy12 in newLevel.Enemies) { if ((Object)(object)enemy12.enemyType.enemyPrefab.GetComponent<HoarderBugAI>() != (Object)null) { enemy12.rarity = 999; } } foreach (SpawnableEnemyWithRarity enemy13 in newLevel.Enemies) { if ((Object)(object)enemy13.enemyType.enemyPrefab.GetComponent<DressGirlAI>() != (Object)null) { enemy13.rarity = 9999; } } int num3 = Random.Range(2, 9); for (int k = 0; k < num3; k++) { int item2 = Random.Range(0, 3); Object.FindObjectOfType<Terminal>().orderedItemsFromTerminal.Add(item2); } Terminal val2 = Object.FindObjectOfType<Terminal>(); int count = val2.orderedItemsFromTerminal.Count; val2.orderedItemsFromTerminal.Clear(); for (int l = 0; l < count; l++) { val2.orderedItemsFromTerminal.Add(0); } QuotaAjuster.slSpawnTimer = -10f; QuotaAjuster.surpriseLandmines += 120; break; } case EventEnum.Delivery: { HUDManager.Instance.AddTextToChatOnServer("<color=green>Level event: DELIVERY!</color>", -1); int num2 = Random.Range(2, 9); for (int j = 0; j < num2; j++) { int item = Random.Range(0, 6); Object.FindObjectOfType<Terminal>().orderedItemsFromTerminal.Add(item); } break; } case EventEnum.ReplaceItems: { HUDManager.Instance.AddTextToChatOnServer("<color=red>Level event: YOU BOUGHT WALKIES, RIGHT?</color>", -1); Terminal val = Object.FindObjectOfType<Terminal>(); int num = val.orderedItemsFromTerminal.Count; if (num == 0) { num = 1; } val.orderedItemsFromTerminal.Clear(); for (int i = 0; i < num; i++) { val.orderedItemsFromTerminal.Add(0); } break; } case EventEnum.Schizophrenia: HUDManager.Instance.AddTextToChatOnServer("<color=red>Level event: SCHIZOPHRENIA</color>", -1); foreach (SpawnableEnemyWithRarity enemy14 in newLevel.Enemies) { if ((Object)(object)enemy14.enemyType.enemyPrefab.GetComponent<DressGirlAI>() != (Object)null) { enemy14.rarity = 9999; } } break; case EventEnum.SupriseLandmines: HUDManager.Instance.AddTextToChatOnServer("<color=red>Level event: SPONTANEOUS COMBUSTION</color>", -1); QuotaAjuster.slSpawnTimer = -10f; QuotaAjuster.surpriseLandmines += 120; break; case EventEnum.ResetHeat: HUDManager.Instance.AddTextToChatOnServer("<color=green>Level event: RESET ALL HEAT</color>", -1); break; case EventEnum.SpawnTurret: HUDManager.Instance.AddTextToChatOnServer("<color=red>Level event: THE COMPANIES AUTOMATED DEFENSE SYSTEM</color>", -1); QuotaAjuster.shouldSpawnTurret = true; break; } SelectableLevel val3 = newLevel; mls.LogWarning((object)"Map Objects"); SpawnableMapObject[] spawnableMapObjects = val3.spawnableMapObjects; foreach (SpawnableMapObject val4 in spawnableMapObjects) { if ((Object)(object)val4.prefabToSpawn.GetComponentInChildren<Turret>() != (Object)null) { QuotaAjuster.turret = val4.prefabToSpawn; if (eventEnum == EventEnum.Turret || eventEnum == EventEnum.All) { val4.numberToSpawn = new AnimationCurve((Keyframe[])(object)new Keyframe[2] { new Keyframe(0f, 200f), new Keyframe(1f, 25f) }); } else { val4.numberToSpawn = new AnimationCurve((Keyframe[])(object)new Keyframe[2] { new Keyframe(0f, 0f), new Keyframe(1f, 10f) }); } } else if ((Object)(object)val4.prefabToSpawn.GetComponentInChildren<Landmine>() != (Object)null) { QuotaAjuster.landmine = val4.prefabToSpawn; if (eventEnum == EventEnum.Landmine || eventEnum == EventEnum.All) { val4.numberToSpawn = new AnimationCurve((Keyframe[])(object)new Keyframe[2] { new Keyframe(0f, 300f), new Keyframe(1f, 170f) }); } else { val4.numberToSpawn = new AnimationCurve((Keyframe[])(object)new Keyframe[2] { new Keyframe(0f, 0f), new Keyframe(1f, 70f) }); } } mls.LogInfo((object)((object)val4.prefabToSpawn).ToString()); } mls.LogWarning((object)"Enemies"); foreach (SpawnableEnemyWithRarity enemy15 in val3.Enemies) { mls.LogInfo((object)(enemy15.enemyType.enemyName + "--rarity = " + enemy15.rarity)); } mls.LogWarning((object)"Daytime Enemies"); foreach (SpawnableEnemyWithRarity daytimeEnemy in val3.DaytimeEnemies) { mls.LogInfo((object)daytimeEnemy.enemyType.enemyName); } if (!levelsModified.Contains(newLevel)) { levelsModified.Add(newLevel); val3.minScrap = val3.minScrap; val3.maxScrap += 45; val3.minTotalScrapValue = val3.minTotalScrapValue; val3.maxTotalScrapValue += 800; val3.daytimeEnemySpawnChanceThroughDay = new AnimationCurve((Keyframe[])(object)new Keyframe[2] { new Keyframe(0f, 7f), new Keyframe(0.5f, 7f) }); val3.maxEnemyPowerCount += 2000; val3.maxOutsideEnemyPowerCount += 20; val3.maxDaytimeEnemyPowerCount += 200; newLevel = val3; } val3.enemySpawnChanceThroughoutDay = new AnimationCurve((Keyframe[])(object)new Keyframe[2] { new Keyframe(0f, 0.1f + value3), new Keyframe(0.5f, 500f + value3) }); val3.outsideEnemySpawnChanceThroughDay = new AnimationCurve((Keyframe[])(object)new Keyframe[3] { new Keyframe(0f, -30f + value3), new Keyframe(20f, -30f + value3), new Keyframe(21f, 10f + value3) }); if (eventEnum == EventEnum.Unfair || eventEnum == EventEnum.All) { val3.outsideEnemySpawnChanceThroughDay = new AnimationCurve((Keyframe[])(object)new Keyframe[3] { new Keyframe(0f, 10f + value3), new Keyframe(20f, 10f + value3), new Keyframe(21f, 10f + value3) }); } if (eventEnum == EventEnum.Hoarding || eventEnum == EventEnum.All) { val3.enemySpawnChanceThroughoutDay = new AnimationCurve((Keyframe[])(object)new Keyframe[1] { new Keyframe(0f, 500f + value3) }); } if (eventEnum == EventEnum.Chaos || eventEnum == EventEnum.All) { val3.enemySpawnChanceThroughoutDay = new AnimationCurve((Keyframe[])(object)new Keyframe[1] { new Keyframe(0f, 500f + value3) }); } levelHeatVal.TryGetValue(newLevel, out value3); levelHeatVal[newLevel] = Mathf.Clamp(value3 + 20f, 0f, 100f); Terminal val5 = Object.FindObjectOfType<Terminal>(); val5.groupCredits += 120; val5.SyncGroupCreditsServerRpc(val5.groupCredits, val5.numberOfItemsInDropship); if (val5.groupCredits > 250) { HUDManager.Instance.AddTextToChatOnServer("<color=green>(You get free money every time you land, spend it!)</color>", -1); } } return true; } private static void AddLassomanToLevel(SelectableLevel newLevel) { //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Expected O, but got Unknown bool flag = false; bool flag2 = false; foreach (SpawnableEnemyWithRarity enemy in newLevel.Enemies) { if ((Object)(object)enemy.enemyType.enemyPrefab.GetComponent<LassoManAI>() != (Object)null) { flag = true; } } if (!flag) { SelectableLevel[] levels = StartOfRound.Instance.levels; for (int i = 0; i < levels.Length; i++) { foreach (SpawnableEnemyWithRarity enemy2 in levels[i].Enemies) { if ((Object)(object)enemy2.enemyType.enemyPrefab.GetComponent<LassoManAI>() != (Object)null && !flag2) { flag2 = true; newLevel.Enemies.Add(enemy2); } } } } foreach (SpawnableEnemyWithRarity enemy3 in newLevel.Enemies) { if ((Object)(object)enemy3.enemyType.enemyPrefab.GetComponent<LassoManAI>() != (Object)null) { enemy3.rarity = 999; enemy3.enemyType.probabilityCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[1] { new Keyframe(0f, 10000f) }); } } } } } namespace BrutalCompany.ManualPatches { [HarmonyPatch(typeof(TimeOfDay), "Start")] internal class Patch_QuotaAjuster { private static void Prefix(TimeOfDay __instance) { Plugin.mls.LogWarning((object)"Changing quota variables in patch!"); __instance.quotaVariables.startingQuota = 1000; __instance.quotaVariables.startingCredits = 250; __instance.quotaVariables.baseIncrease = 500f; __instance.quotaVariables.randomizerMultiplier = 0f; __instance.quotaVariables.deadlineDaysAmount = 10; } } } namespace BrutalCompany.Component { internal class QuotaAjuster : MonoBehaviour { public TimeOfDay TOD; public float messageTimer = 58f; public static int surpriseLandmines; public static GameObject landmine; public static GameObject turret; public static List<GameObject> objectsToCleanUp = new List<GameObject>(); public static float slSpawnTimer; public static bool shouldSpawnTurret; public void Awake() { Plugin.mls.LogWarning((object)"Changing quota variables"); } public void Update() { //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)TOD == (Object)null) { TOD = Object.FindFirstObjectByType<TimeOfDay>(); } else { TOD.quotaVariables.baseIncrease = 275f; } if ((Object)(object)StartOfRound.Instance != (Object)null && StartOfRound.Instance.shipIsLeaving) { surpriseLandmines = -1; } if (surpriseLandmines > 0) { if (slSpawnTimer > 0f) { slSpawnTimer = Random.Range(-4, -1); PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; PlayerControllerB val = allPlayerScripts[Random.Range(0, allPlayerScripts.Length)]; if ((Object)(object)val != (Object)null) { if (Vector3.Distance(((Component)val).transform.position, new Vector3(9.33f, 5.2f, 1021f)) < 1f) { slSpawnTimer = 1f; return; } GameObject val2 = Object.Instantiate<GameObject>(landmine, ((Component)val).transform.position, Quaternion.identity); val2.transform.position = ((Component)val).transform.position; Plugin.mls.LogWarning((object)((Component)val).transform.position); val2.GetComponent<NetworkObject>().Spawn(true); objectsToCleanUp.Add(val2); } } else { slSpawnTimer += Time.deltaTime; } } if (shouldSpawnTurret & ((Object)(object)turret != (Object)null)) { shouldSpawnTurret = false; GameObject val3 = Object.Instantiate<GameObject>(turret, new Vector3(3.87f, 0.84f, -14.23f), Quaternion.identity); val3.transform.position = new Vector3(3.87f, 0.84f, -14.23f); val3.transform.forward = new Vector3(1f, 0f, 0f); val3.GetComponent<NetworkObject>().Spawn(true); objectsToCleanUp.Add(val3); } } public static void CleanupAllSpawns() { foreach (GameObject item in objectsToCleanUp) { if ((Object)(object)item != (Object)null) { item.GetComponent<NetworkObject>().Despawn(true); } } objectsToCleanUp.Clear(); } } }
plugins/2018-LC_API/LC_API.dll
Decompiled 2 years agousing System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using LC_API.BundleAPI; using LC_API.Comp; using LC_API.Data; using LC_API.GameInterfaceAPI; using LC_API.ManualPatches; using LC_API.ServerAPI; using Microsoft.CodeAnalysis; using Steamworks; using Steamworks.Data; using TMPro; using UnityEngine; using UnityEngine.InputSystem; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = ".NET Framework 4.6")] [assembly: AssemblyCompany("LC_API")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Utilities for plugin devs")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("LC_API")] [assembly: AssemblyTitle("LC_API")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace LC_API { public class CheatDatabase { private static Dictionary<string, PluginInfo> PluginsLoaded = new Dictionary<string, PluginInfo>(); public static void RunLocalCheatDetector() { PluginsLoaded = Chainloader.PluginInfos; foreach (PluginInfo value in PluginsLoaded.Values) { if (value.Metadata.GUID == "mikes.lethalcompany.mikestweaks") { ModdedServer.SetServerModdedOnly(); } if (value.Metadata.GUID == "mom.llama.enhancer") { ModdedServer.SetServerModdedOnly(); } if (value.Metadata.GUID == "Posiedon.GameMaster") { ModdedServer.SetServerModdedOnly(); } if (value.Metadata.GUID == "LethalCompanyScalingMaster") { ModdedServer.SetServerModdedOnly(); } } } public static void OtherPlayerCheatDetector() { Plugin.Log.LogWarning((object)"Asking all other players for their mod list.."); TextMeshProUGUI chatText = HUDManager.Instance.chatText; ((TMP_Text)chatText).text = ((TMP_Text)chatText).text + "\n<color=white>Grabbing all connected users mod list\nCheck the log for results!!</color>"; Networking.Broadcast("LC_API_CD_Broadcast", "LC_API_ReqGUID"); } internal static void RequestModList(string data, string signature) { if ((data == "LC_API_CD_Broadcast") & (signature == "LC_API_ReqGUID")) { string text = ""; foreach (PluginInfo value in PluginsLoaded.Values) { text = text + "\n" + value.Metadata.GUID; } Networking.Broadcast(GameNetworkManager.Instance.localPlayerController.playerUsername + " responded with these mods:" + text, "LC_APISendMods"); } if (signature == "LC_APISendMods") { Plugin.Log.LogWarning((object)data); } } } [BepInPlugin("LC_API", "LC_API", "1.0.0")] public class Plugin : BaseUnityPlugin { public static ManualLogSource Log; private ConfigEntry<bool> configOverrideModServer; private void Awake() { //IL_0063: 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_010e: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Expected O, but got Unknown //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Expected O, but got Unknown //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Expected O, but got Unknown configOverrideModServer = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Force modded server browser", false, "Should the API force you into the modded server browser?"); Log = ((BaseUnityPlugin)this).Logger; ((BaseUnityPlugin)this).Logger.LogWarning((object)"\n.____ _________ _____ __________ .___ \r\n| | \\_ ___ \\ / _ \\ \\______ \\| | \r\n| | / \\ \\/ / /_\\ \\ | ___/| | \r\n| |___\\ \\____ / | \\| | | | \r\n|_______ \\\\______ /______\\____|__ /|____| |___| \r\n \\/ \\//_____/ \\/ \r\n "); ((BaseUnityPlugin)this).Logger.LogInfo((object)"LC_API Starting up.."); if (configOverrideModServer.Value) { ModdedServer.SetServerModdedOnly(); } Harmony val = new Harmony("ModAPI"); MethodInfo methodInfo = AccessTools.Method(typeof(GameNetworkManager), "SteamMatchmaking_OnLobbyCreated", (Type[])null, (Type[])null); AccessTools.Method(typeof(GameNetworkManager), "LobbyDataIsJoinable", (Type[])null, (Type[])null); MethodInfo methodInfo2 = AccessTools.Method(typeof(ServerPatch), "OnLobbyCreate", (Type[])null, (Type[])null); MethodInfo methodInfo3 = AccessTools.Method(typeof(MenuManager), "Awake", (Type[])null, (Type[])null); MethodInfo methodInfo4 = AccessTools.Method(typeof(ServerPatch), "Vers", (Type[])null, (Type[])null); MethodInfo methodInfo5 = AccessTools.Method(typeof(HUDManager), "AddChatMessage", (Type[])null, (Type[])null); MethodInfo methodInfo6 = AccessTools.Method(typeof(ServerPatch), "ChatInterpreter", (Type[])null, (Type[])null); val.Patch((MethodBase)methodInfo3, new HarmonyMethod(methodInfo4), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); val.Patch((MethodBase)methodInfo5, new HarmonyMethod(methodInfo6), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); val.Patch((MethodBase)methodInfo, new HarmonyMethod(methodInfo2), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); Networking.GetString = (Networking.GotStringEventDelegate)Delegate.Combine(Networking.GetString, new Networking.GotStringEventDelegate(CheatDatabase.RequestModList)); } private void OnDestroy() { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown BundleLoader.Load(); GameObject val = new GameObject("API"); Object.DontDestroyOnLoad((Object)val); val.AddComponent<SVAPI>(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"LC_API Started!"); CheatDatabase.RunLocalCheatDetector(); } private static void PatchMethodManual(MethodInfo method, MethodInfo patch, Harmony harmony) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown harmony.Patch((MethodBase)method, new HarmonyMethod(patch), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "LC_API"; public const string PLUGIN_NAME = "LC_API"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace LC_API.ServerAPI { public class ModdedServer { private static bool moddedOnly; public static bool setModdedOnly; public static bool ModdedOnly => moddedOnly; public static void SetServerModdedOnly() { moddedOnly = true; Plugin.Log.LogMessage((object)"A plugin has set your game to only allow you to play with other people who have mods!"); } public static void OnSceneLoaded() { if (Object.op_Implicit((Object)(object)GameNetworkManager.Instance) && ModdedOnly) { GameNetworkManager instance = GameNetworkManager.Instance; instance.gameVersionNum += 16440; setModdedOnly = true; } } } public class Networking { public delegate void GotStringEventDelegate(string data, string signature); public delegate void GotIntEventDelegate(int data, string signature); public delegate void GotFloatEventDelegate(float data, string signature); public delegate void GotVector3EventDelegate(Vector3 data, string signature); public static GotStringEventDelegate GetString = GotString; public static GotIntEventDelegate GetInt = GotInt; public static GotFloatEventDelegate GetFloat = GotFloat; public static GotVector3EventDelegate GetVector3 = GotVector3; public static void Broadcast(string data, string signature) { if (data.Contains("/")) { Plugin.Log.LogError((object)"Invalid character in broadcasted string event! ( / )"); return; } HUDManager.Instance.AddTextToChatOnServer("<size=0>NWE/" + data + "/" + signature + "/" + NetworkBroadcastDataType.BDstring.ToString() + "/" + GameNetworkManager.Instance.localPlayerController.playerClientId + "/</size>", -1); } public static void Broadcast(int data, string signature) { HUDManager.Instance.AddTextToChatOnServer("<size=0>NWE/" + data + "/" + signature + "/" + NetworkBroadcastDataType.BDint.ToString() + "/" + GameNetworkManager.Instance.localPlayerController.playerClientId + "/</size>", -1); } public static void Broadcast(float data, string signature) { HUDManager.Instance.AddTextToChatOnServer("<size=0>NWE/" + data + "/" + signature + "/" + NetworkBroadcastDataType.BDfloat.ToString() + "/" + GameNetworkManager.Instance.localPlayerController.playerClientId + "/</size>", -1); } public static void Broadcast(Vector3 data, string signature) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) HUDManager instance = HUDManager.Instance; string[] obj = new string[9] { "<size=0>NWE/", null, null, null, null, null, null, null, null }; Vector3 val = data; obj[1] = ((object)(Vector3)(ref val)).ToString(); obj[2] = "/"; obj[3] = signature; obj[4] = "/"; obj[5] = NetworkBroadcastDataType.BDvector3.ToString(); obj[6] = "/"; obj[7] = GameNetworkManager.Instance.localPlayerController.playerClientId.ToString(); obj[8] = "/</size>"; instance.AddTextToChatOnServer(string.Concat(obj), -1); } private static void GotString(string data, string signature) { } private static void GotInt(int data, string signature) { } private static void GotFloat(float data, string signature) { } private static void GotVector3(Vector3 data, string signature) { } } } namespace LC_API.ManualPatches { internal class ServerPatch { private static bool OnLobbyCreate(GameNetworkManager __instance, Result result, Lobby lobby) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Invalid comparison between Unknown and I4 //IL_0009: Unknown result type (might be due to invalid IL or missing references) if ((int)result != 1) { Debug.LogError((object)$"Lobby could not be created! {result}", (Object)(object)__instance); } __instance.lobbyHostSettings.lobbyName = "[MODDED]" + __instance.lobbyHostSettings.lobbyName.ToString(); Plugin.Log.LogMessage((object)"server pre-setup success"); return true; } private static bool Vers(MenuManager __instance) { SVAPI.MenuManager = __instance; return true; } private static bool ChatInterpreter(HUDManager __instance, string chatMessage) { //IL_0119: 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) if (chatMessage.Contains("NWE") & chatMessage.Contains("<size=0>")) { string[] array = chatMessage.Split(new char[1] { '/' }); if (array.Length >= 3) { if (!int.TryParse(array[4], out var result)) { Plugin.Log.LogWarning((object)"Failed to parse player ID!!"); return false; } if ((result == (int)GameNetworkManager.Instance.localPlayerController.playerClientId) & !SVAPI.netTester) { return false; } NetworkBroadcastDataType result2 = NetworkBroadcastDataType.BDint; Enum.TryParse<NetworkBroadcastDataType>(array[3], out result2); switch (result2) { case NetworkBroadcastDataType.BDstring: Networking.GetString(array[1], array[2]); break; case NetworkBroadcastDataType.BDint: Networking.GetInt(int.Parse(array[1]), array[2]); break; case NetworkBroadcastDataType.BDfloat: Networking.GetFloat(float.Parse(array[1]), array[2]); break; case NetworkBroadcastDataType.BDvector3: { string[] array2 = array[1].Replace("(", "").Replace(")", "").Split(new char[1] { ',' }); Vector3 data = default(Vector3); if (array2.Length == 3) { if (float.TryParse(array2[0], out var result3) && float.TryParse(array2[1], out var result4) && float.TryParse(array2[2], out var result5)) { data.x = result3; data.y = result4; data.z = result5; } else { Plugin.Log.LogError((object)"Vector3 Network receive fail. This is a failure of the API, and it should be reported as a bug."); } } else { Plugin.Log.LogError((object)"Vector3 Network receive fail. This is a failure of the API, and it should be reported as a bug."); } Networking.GetVector3(data, array[2]); break; } } _ = SVAPI.netTester; return false; } Plugin.Log.LogError((object)"Generic Network receive fail. This is a failure of the API, and it should be reported as a bug."); } return true; } private static bool ChatCommands(HUDManager __instance, CallbackContext context) { if (__instance.chatTextField.text.ToLower().Contains("/modcheck")) { CheatDatabase.OtherPlayerCheatDetector(); return false; } return true; } } } namespace LC_API.GameInterfaceAPI { public class GameState { public delegate void GenericGameEventDelegate(); public static int AlivePlayerCount; public static ShipStateEnum ShipState; public static GenericGameEventDelegate PlayerDied = GSPlayerDied; public static GenericGameEventDelegate LandOnMoon = GSLandOnMood; public static GenericGameEventDelegate WentIntoOrbit = GSGoIntoOrbit; public static GenericGameEventDelegate ShipStartedLeaving = GSStartLeavingMoon; public static void GSUpdate() { if ((Object)(object)StartOfRound.Instance != (Object)null) { if (StartOfRound.Instance.shipHasLanded && ShipState != ShipStateEnum.OnMoon) { ShipState = ShipStateEnum.OnMoon; LandOnMoon(); } if (StartOfRound.Instance.inShipPhase && ShipState != 0) { ShipState = ShipStateEnum.InOrbit; WentIntoOrbit(); } if (StartOfRound.Instance.shipIsLeaving && ShipState != ShipStateEnum.LeavingMoon) { ShipState = ShipStateEnum.LeavingMoon; ShipStartedLeaving(); } if (AlivePlayerCount < StartOfRound.Instance.livingPlayers) { PlayerDied(); } AlivePlayerCount = StartOfRound.Instance.livingPlayers; } } private static void GSPlayerDied() { } private static void GSLandOnMood() { } private static void GSGoIntoOrbit() { } private static void GSStartLeavingMoon() { } } } namespace LC_API.Data { public enum NetworkBroadcastDataType { BDint, BDfloat, BDvector3, BDstring } public enum ShipStateEnum { InOrbit, OnMoon, LeavingMoon } } namespace LC_API.Comp { internal class SVAPI : MonoBehaviour { public static MenuManager MenuManager; public static bool netTester; private static int playerCount; private static bool wanttoCheckMods; private static float lobbychecktimer; public void Update() { GameState.GSUpdate(); if ((((Object)(object)HUDManager.Instance != (Object)null) & netTester) && (Object)(object)GameNetworkManager.Instance.localPlayerController != (Object)null) { Networking.Broadcast("testerData", "testerSignature"); } if (!ModdedServer.setModdedOnly) { ModdedServer.OnSceneLoaded(); } else if (ModdedServer.ModdedOnly && (Object)(object)MenuManager != (Object)null && Object.op_Implicit((Object)(object)MenuManager.versionNumberText)) { ((TMP_Text)MenuManager.versionNumberText).text = $"v{GameNetworkManager.Instance.gameVersionNum - 16440}\nMOD"; } if ((Object)(object)GameNetworkManager.Instance != (Object)null) { if (playerCount < GameNetworkManager.Instance.connectedPlayers) { lobbychecktimer = -8f; wanttoCheckMods = true; } playerCount = GameNetworkManager.Instance.connectedPlayers; } if (lobbychecktimer < 0f) { lobbychecktimer += Time.deltaTime; } else if (wanttoCheckMods) { wanttoCheckMods = false; CD(); } } private void CD() { CheatDatabase.OtherPlayerCheatDetector(); } } } namespace LC_API.BundleAPI { public class BundleLoader { public delegate void OnLoadedAssetsDelegate(); public static ConcurrentDictionary<string, Object> assets; public static OnLoadedAssetsDelegate OnLoadedAssets; public static void Load() { assets = new ConcurrentDictionary<string, Object>(); Plugin.Log.LogMessage((object)"BundleAPI will now load all asset bundles..."); string path = Path.Combine(Paths.BepInExRootPath, "Bundles"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); Plugin.Log.LogMessage((object)"BundleAPI Created bundle directory in BepInEx/Bundles"); } string[] array = (from x in Directory.GetFiles(path, "*", SearchOption.AllDirectories) where !x.EndsWith(".manifest", StringComparison.CurrentCultureIgnoreCase) select x).ToArray(); if (array.Length == 0) { Plugin.Log.LogMessage((object)"BundleAPI got no assets to load, stopping loading!"); return; } Plugin.Log.LogMessage((object)("BundleAPI got " + array.Length + " AssetBundles to load!")); for (int i = 0; i < array.Length; i++) { try { SaveAsset(array[i]); } catch (Exception) { Plugin.Log.LogError((object)("Failed to load an assetbundle! Path: " + array[i])); } } OnLoadedAssets = (OnLoadedAssetsDelegate)Delegate.Combine(OnLoadedAssets, new OnLoadedAssetsDelegate(LoadAssetsCompleted)); OnLoadedAssets(); } public static void SaveAsset(string path) { AssetBundle val = AssetBundle.LoadFromFile(path); string[] allAssetNames = val.GetAllAssetNames(); foreach (string text in allAssetNames) { Plugin.Log.LogMessage((object)("Got asset for load: " + text)); Object val2 = val.LoadAsset(text); if (val2 != (Object)null) { string key = text.ToUpper(); if (assets.ContainsKey(key)) { Plugin.Log.LogError((object)"BundleAPI got duplicate asset!"); break; } assets.TryAdd(key, val2); Plugin.Log.LogMessage((object)("Loaded asset: " + val2.name)); } else { Plugin.Log.LogWarning((object)"Skipped loading an asset"); } } } public static AssetType GetLoadedAsset<AssetType>(string itemPath) where AssetType : Object { assets.TryGetValue(itemPath.ToUpper(), out var value); return (AssetType)(object)value; } private static void LoadAssetsCompleted() { Plugin.Log.LogMessage((object)"BundleAPI finished loading all assets."); } private void Awake() { } } }
plugins/2018-Movement_Company/MovementCompany.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using LC_API.ServerAPI; using Microsoft.CodeAnalysis; using MovementCompany.Component; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = ".NET Framework 4.6")] [assembly: AssemblyCompany("MovementCompany")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Source moment")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("MovementCompany")] [assembly: AssemblyTitle("MovementCompany")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace MovementCompany { [BepInPlugin("MovementCompany", "MovementCompany", "1.0.0")] public class Plugin : BaseUnityPlugin { private Harmony _harmony = new Harmony("MovementCompany"); public static ManualLogSource Log; private void Awake() { Log = ((BaseUnityPlugin)this).Logger; ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin MovementCompany is loaded!"); _harmony.PatchAll(); } public void OnDestroy() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown GameObject val = new GameObject("MovementAdder"); Object.DontDestroyOnLoad((Object)val); val.AddComponent<MovementAdder>(); ModdedServer.SetServerModdedOnly(); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "MovementCompany"; public const string PLUGIN_NAME = "MovementCompany"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace MovementCompany.Component { internal class MovementAdder : MonoBehaviour { public void Update() { PlayerControllerB[] array = Object.FindObjectsOfType<PlayerControllerB>(); foreach (PlayerControllerB val in array) { if ((Object)(object)val != (Object)null && (Object)(object)((Component)val).gameObject.GetComponentInChildren<MovementScript>() == (Object)null && ((NetworkBehaviour)val).IsOwner && val.isPlayerControlled) { ((Component)val).gameObject.AddComponent<MovementScript>().myPlayer = val; Plugin.Log.LogMessage((object)"Gave player the movement script"); } } } } internal class MovementScript : MonoBehaviour { public PlayerControllerB myPlayer; private bool inAir; public static Vector3 wantedVelToAdd; public float jumpTime; private Vector3 previousForward; public void Update() { //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0175: 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_018a: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0106: 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_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) if (myPlayer.playerBodyAnimator.GetBool("Jumping") && jumpTime < 0.1f) { myPlayer.fallValue = myPlayer.jumpForce; jumpTime += Time.deltaTime * 10f; } myPlayer.sprintMeter = 100f; if (!myPlayer.thisController.isGrounded && !myPlayer.isClimbingLadder) { if (!inAir) { inAir = true; Vector3 velocity = myPlayer.thisController.velocity; velocity.y = 0f; wantedVelToAdd += 0.006f * velocity; } wantedVelToAdd.y = 0f; myPlayer.thisController.Move(((Component)myPlayer).gameObject.transform.forward * ((Vector3)(ref wantedVelToAdd)).magnitude); Vector3 forward = ((Component)myPlayer).gameObject.transform.forward; Vector3 val = forward - previousForward; float num = 0.01f; if (((Vector3)(ref val)).magnitude > num) { wantedVelToAdd += new Vector3(0.0005f, 0.0005f, 0.0005f); } previousForward = forward; } else { wantedVelToAdd = Vector3.Lerp(wantedVelToAdd, Vector3.zero, Time.deltaTime * 4.2f); inAir = false; jumpTime = 0f; } _ = myPlayer.thisController.isGrounded; } } }
plugins/alexanderjoe-BiggeryBattery/BiggerBattery.dll
Decompiled 2 years agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using HarmonyLib; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("BiggerBattery")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("BiggerBattery")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("1BFEAD94-08B6-4FCB-88CA-11E8762E4A12")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace BiggerBattery { public static class ConfigSettings { public static ConfigEntry<float> FlashlightBatteryUsage; public static ConfigEntry<float> ProFlashlightBatteryUsage; public static ConfigEntry<float> LaserPointerBatteryUsage; public static ConfigEntry<float> WalkieTalkieBatteryUsage; public static ConfigEntry<float> JetpackBatteryUsage; public static ConfigEntry<float> PatcherToolBatteryUsage; public static ConfigEntry<float> BoomboxItemBatteryUsage; public static void Init() { FlashlightBatteryUsage = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>("BiggerBattery", "FlashlightBatteryUsage", 300f, "The battery usage per update. The lower the value, the shorter the battery life. (Game Default: 140)"); ProFlashlightBatteryUsage = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>("BiggerBattery", "ProFlashlightBatteryUsage", 600f, "The battery usage per update. The lower the value, the shorter the battery life. (Game Default: 300)"); LaserPointerBatteryUsage = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>("BiggerBattery", "LaserPointerBatteryUsage", 450f, "The battery usage per update. The lower the value, the shorter the battery life. (Game Default: 300)"); WalkieTalkieBatteryUsage = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>("BiggerBattery", "WalkieTalkieBatteryUsage", 1500f, "The battery usage per update. The lower the value, the shorter the battery life. (Game Default: 820)"); JetpackBatteryUsage = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>("BiggerBattery", "JetpackBatteryUsage", 140f, "The battery usage per update. The lower the value, the shorter the battery life. (Game Default: 60)"); PatcherToolBatteryUsage = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>("BiggerBattery", "PatcherToolBatteryUsage", 66f, "The battery usage per update. The lower the value, the shorter the battery life. (Game Default: 22)"); BoomboxItemBatteryUsage = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>("BiggerBattery", "BoomboxItemBatteryUsage", 600f, "The battery usage per update. The lower the value, the shorter the battery life. (Game Default: 350)"); } } public enum FlashlightType { Flashlight, ProFlashlight, LaserPointer } [BepInPlugin("dev.alexanderdiaz.biggerbattery", "Bigger Battery", "1.0.1")] public class Plugin : BaseUnityPlugin { private const string ModGuid = "dev.alexanderdiaz.biggerbattery"; private const string ModName = "Bigger Battery"; private const string ModVersion = "1.0.1"; private readonly Harmony _harmony = new Harmony("dev.alexanderdiaz.biggerbattery"); public static Plugin Instance; private void Awake() { Instance = this; _harmony.PatchAll(); ConfigSettings.Init(); Log("Plugin Bigger Battery-1.0.1 loaded!"); } public static void Log(string message) { ((BaseUnityPlugin)Instance).Logger.LogInfo((object)message); } } public class PluginInfo { public const string PLUGIN_GUID = "dev.alexanderdiaz.biggerbattery"; public const string PLUGIN_NAME = "Bigger Battery"; public const string PLUGIN_VERSION = "1.0.1"; } } namespace BiggerBattery.Patches { [HarmonyPatch(typeof(FlashlightItem))] internal class FlashlightItemPatch { [HarmonyPatch("ItemActivate")] [HarmonyPrefix] private static void ModifyFlashlightBatteryUsage(ref FlashlightItem __instance) { FlashlightType flashlightTypeID = (FlashlightType)__instance.flashlightTypeID; switch (flashlightTypeID) { case FlashlightType.Flashlight: ((GrabbableObject)__instance).itemProperties.batteryUsage = ConfigSettings.FlashlightBatteryUsage.Value; break; case FlashlightType.ProFlashlight: ((GrabbableObject)__instance).itemProperties.batteryUsage = ConfigSettings.ProFlashlightBatteryUsage.Value; break; case FlashlightType.LaserPointer: ((GrabbableObject)__instance).itemProperties.batteryUsage = ConfigSettings.LaserPointerBatteryUsage.Value; break; default: Plugin.Log($"Unknown FlashlightType: {flashlightTypeID}"); break; } } } [HarmonyPatch(typeof(JetpackItem))] internal class JetpackItemPatch { [HarmonyPatch("ItemActivate")] [HarmonyPrefix] private static void ModifyJetpackBatteryUsage(ref JetpackItem __instance) { ((GrabbableObject)__instance).itemProperties.batteryUsage = ConfigSettings.JetpackBatteryUsage.Value; } } [HarmonyPatch(typeof(PatcherTool))] internal class PatcherToolPatch { [HarmonyPatch("ItemActivate")] [HarmonyPrefix] private static void ModifyPatcherToolBatteryUsage(ref PatcherTool __instance) { ((GrabbableObject)__instance).itemProperties.batteryUsage = ConfigSettings.PatcherToolBatteryUsage.Value; } } [HarmonyPatch(typeof(BoomboxItem))] internal class BoomboxItemPatch { [HarmonyPatch("ItemActivate")] [HarmonyPrefix] private static void ModifyBoomboxItemBatteryUsage(ref BoomboxItem __instance) { ((GrabbableObject)__instance).itemProperties.batteryUsage = ConfigSettings.BoomboxItemBatteryUsage.Value; } } [HarmonyPatch(typeof(WalkieTalkie))] internal class WalkieTalkieItemPatch { [HarmonyPatch("ItemActivate")] [HarmonyPostfix] private static void ModifyWalkieTalkieBatteryUsage(ref WalkieTalkie __instance) { ((GrabbableObject)__instance).itemProperties.batteryUsage = ConfigSettings.WalkieTalkieBatteryUsage.Value; } } }
plugins/AllToasters-SpectateEnemies/SpectateEnemy.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using TMPro; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("SpectateEnemy")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.3.0.0")] [assembly: AssemblyInformationalVersion("1.3.0+7904f0b2b5b1b7b06ac7cb8f9ab6fa3d2d5f98dc")] [assembly: AssemblyProduct("SpectateEnemy")] [assembly: AssemblyTitle("SpectateEnemy")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.3.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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace SpectateEnemy { [BepInPlugin("SpectateEnemy", "SpectateEnemy", "1.3.0")] public class Plugin : BaseUnityPlugin { public static int spectatedEnemyIndex = -1; public static bool spectatingEnemies = false; public static MethodInfo raycastSpectate = null; private ConfigEntry<bool> spectateTurrets; private ConfigEntry<bool> spectateLandmines; private ConfigEntry<bool> spectatePassives; public static bool doSpectateTurrets; public static bool doSpectateLandmines; public static bool doSpectatePassives; private Harmony harmony; private void Awake() { //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Expected O, but got Unknown spectateTurrets = ((BaseUnityPlugin)this).Config.Bind<bool>("Config", "Spectate Turrets", false, "Enables spectating turrets."); doSpectateTurrets = spectateTurrets.Value; spectateLandmines = ((BaseUnityPlugin)this).Config.Bind<bool>("Config", "Spectate Landmines", false, "Enables spectating landmines."); doSpectateLandmines = spectateLandmines.Value; spectatePassives = ((BaseUnityPlugin)this).Config.Bind<bool>("Config", "Spectate Passives", false, "Enables spectating passive enemies, such as Docile Locust Bees and Manticoils."); doSpectatePassives = spectatePassives.Value; harmony = new Harmony("SpectateEnemy"); harmony.PatchAll(); raycastSpectate = AccessTools.Method(typeof(PlayerControllerB), "RaycastSpectateCameraAroundPivot", (Type[])null, (Type[])null); ((BaseUnityPlugin)this).Logger.LogInfo((object)"SpectateEnemy loaded!"); } } public class Spectatable : MonoBehaviour { public SpectatableType type = SpectatableType.Enemy; public string enemyName = "Enemy"; } public enum SpectatableType { Enemy, Turret, Landmine } public static class MyPluginInfo { public const string PLUGIN_GUID = "SpectateEnemy"; public const string PLUGIN_NAME = "SpectateEnemy"; public const string PLUGIN_VERSION = "1.3.0"; } } namespace SpectateEnemy.Patches { [HarmonyPatch(typeof(EnemyAI), "Start")] public class EnemyAI_Patches { private static void Postfix(EnemyAI __instance) { if (Plugin.doSpectatePassives || (!(__instance.enemyType.enemyName == "Docile Locust Bees") && !(__instance.enemyType.enemyName == "Manticoil"))) { Spectatable spectatable = ((Component)__instance).gameObject.AddComponent<Spectatable>(); spectatable.enemyName = __instance.enemyType.enemyName; } } } [HarmonyPatch(typeof(GameNetworkManager), "Disconnect")] public class GameNetworkManager_Patches { private static void Postfix() { Plugin.spectatedEnemyIndex = -1; Plugin.spectatingEnemies = false; } } [HarmonyPatch(typeof(HUDManager), "Update")] public class HUDManager_Patches { private static void Postfix(HUDManager __instance) { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) if (!GameNetworkManager.Instance.localPlayerController.isPlayerDead || TimeOfDay.Instance.shipLeavingAlertCalled) { return; } TextMeshProUGUI holdButtonToEndGameEarlyText = __instance.holdButtonToEndGameEarlyText; ((TMP_Text)holdButtonToEndGameEarlyText).text = ((TMP_Text)holdButtonToEndGameEarlyText).text + "\n\n\n\n\nSwitch to " + (Plugin.spectatingEnemies ? "Players" : "Enemies") + ": [E]\nToggle Flashlight : [RMB] (Click)"; MovementActions movement = __instance.playerActions.Movement; if (((MovementActions)(ref movement)).PingScan.WasReleasedThisFrame()) { Light component = ((Component)__instance.playersManager.spectateCamera).GetComponent<Light>(); if ((Object)(object)component != (Object)null) { ((Behaviour)component).enabled = !((Behaviour)component).enabled; } } } } [HarmonyPatch(typeof(Landmine), "Start")] public class Landmine_Patches { private static void Postfix(Landmine __instance) { if (Plugin.doSpectateLandmines) { Spectatable spectatable = ((Component)__instance).gameObject.AddComponent<Spectatable>(); spectatable.type = SpectatableType.Landmine; ((Object)spectatable).name = "Landmine"; } } } internal class Handler { public static Spectatable[] spectatorList; public static bool Spectate() { if (Plugin.spectatingEnemies) { if (spectatorList.Length == 0) { Plugin.spectatingEnemies = false; return true; } Plugin.spectatedEnemyIndex++; if (Plugin.spectatedEnemyIndex >= spectatorList.Length) { Plugin.spectatedEnemyIndex = 0; } return false; } return true; } } [HarmonyPatch(typeof(PlayerControllerB), "Interact_performed")] public class PlayerControllerB_Interact { private static bool Prefix(PlayerControllerB __instance) { if (((NetworkBehaviour)__instance).IsOwner && __instance.isPlayerDead && (!((NetworkBehaviour)__instance).IsServer || __instance.isHostPlayerObject)) { Plugin.spectatingEnemies = !Plugin.spectatingEnemies; if (Plugin.spectatingEnemies) { Handler.spectatorList = Object.FindObjectsByType<Spectatable>((FindObjectsSortMode)0); if (Handler.spectatorList.Length == 0) { Plugin.spectatingEnemies = false; return true; } if (Plugin.spectatedEnemyIndex == -1 || Plugin.spectatedEnemyIndex >= Handler.spectatorList.Length) { Plugin.spectatedEnemyIndex = 0; } __instance.spectatedPlayerScript = null; } else { __instance.spectatedPlayerScript = ((IEnumerable<PlayerControllerB>)__instance.playersManager.allPlayerScripts).FirstOrDefault((Func<PlayerControllerB, bool>)((PlayerControllerB x) => !x.isPlayerDead)); } } return true; } } [HarmonyPatch(typeof(PlayerControllerB), "Use_performed")] public class PlayerControllerB_Use { private static bool Prefix(PlayerControllerB __instance) { if (((NetworkBehaviour)__instance).IsOwner && __instance.isPlayerDead && (!((NetworkBehaviour)__instance).IsServer || __instance.isHostPlayerObject)) { return Handler.Spectate(); } return true; } } [HarmonyPatch(typeof(PlayerControllerB), "LateUpdate")] public class PlayerControllerB_LateUpdate { private static void Postfix(PlayerControllerB __instance) { //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) if (!Plugin.spectatingEnemies) { return; } if (Handler.spectatorList.Length == 0) { Plugin.spectatingEnemies = false; return; } if (Plugin.spectatedEnemyIndex >= Handler.spectatorList.Length) { Plugin.spectatedEnemyIndex = 0; } Spectatable obj = Handler.spectatorList[Plugin.spectatedEnemyIndex]; if ((Object)(object)obj == (Object)null) { Plugin.spectatedEnemyIndex++; if (Plugin.spectatedEnemyIndex >= Handler.spectatorList.Length) { Plugin.spectatedEnemyIndex = 0; } return; } Vector3? spectatePosition = GetSpectatePosition(obj); if (!spectatePosition.HasValue) { Plugin.spectatedEnemyIndex++; if (Plugin.spectatedEnemyIndex >= Handler.spectatorList.Length) { Plugin.spectatedEnemyIndex = 0; } return; } if (obj.enemyName == "Enemy") { TryFixName(ref obj); } __instance.spectateCameraPivot.position = spectatePosition.Value + GetZoomDistance(obj); ((TMP_Text)HUDManager.Instance.spectatingPlayerText).text = "(Spectating: " + obj.enemyName + ")"; Plugin.raycastSpectate.Invoke(__instance, Array.Empty<object>()); } private static void TryFixName(ref Spectatable obj) { EnemyAI val = default(EnemyAI); Turret val2 = default(Turret); Landmine val3 = default(Landmine); if (((Component)obj).gameObject.TryGetComponent<EnemyAI>(ref val)) { obj.enemyName = val.enemyType.enemyName; } else if (((Component)obj).gameObject.TryGetComponent<Turret>(ref val2)) { obj.enemyName = "Turret"; } else if (((Component)obj).gameObject.TryGetComponent<Landmine>(ref val3)) { obj.enemyName = "Landmine"; } } private static Vector3 GetZoomDistance(Spectatable obj) { //IL_0015: 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_0024: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) if (obj.enemyName == "ForestGiant") { return Vector3.up * 3f; } if (obj.enemyName == "MouthDog" || obj.enemyName == "Jester") { return Vector3.up * 2f; } return Vector3.up; } private static Vector3? GetSpectatePosition(Spectatable obj) { //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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_0036: Unknown result type (might be due to invalid IL or missing references) if (obj.type == SpectatableType.Enemy) { EnemyAI component = ((Component)obj).GetComponent<EnemyAI>(); if ((Object)(object)component != (Object)null) { return ((Object)(object)component.eye == (Object)null) ? ((Component)component).transform.position : component.eye.position; } } else if (obj.type == SpectatableType.Turret) { Turret component2 = ((Component)obj).GetComponent<Turret>(); if ((Object)(object)component2 != (Object)null) { return ((Component)component2.centerPoint).transform.position; } } else { if (obj.type == SpectatableType.Landmine) { return ((Component)obj).transform.position; } Debug.LogError((object)("[SpectateEnemy]: Error when spectating: no handler for SpectatableType " + obj.type)); } return null; } } [HarmonyPatch(typeof(PlayerControllerB), "SpectateNextPlayer")] public class PlayerControllerB_SpectateNext { private static bool Prefix() { return !Plugin.spectatingEnemies; } } [HarmonyPatch(typeof(StartOfRound), "ShipLeave")] public class StartOfRound_Patches { private static void Postfix() { Plugin.spectatedEnemyIndex = -1; Plugin.spectatingEnemies = false; } } [HarmonyPatch(typeof(Turret), "Start")] public class Turret_Patches { private static void Postfix(Turret __instance) { if (Plugin.doSpectateTurrets) { Spectatable spectatable = ((Component)__instance).gameObject.AddComponent<Spectatable>(); spectatable.type = SpectatableType.Turret; spectatable.enemyName = "Turret"; } } } }
plugins/anormaltwig-LateCompany/LateCompanyV1.0.1.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = ".NET Framework 4.6")] [assembly: AssemblyCompany("Plugin")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Plugin")] [assembly: AssemblyTitle("Plugin")] [assembly: AssemblyVersion("1.0.0.0")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace LateCompany { public static class PluginInfo { public const string GUID = "twig.latecompany"; public const string PrintName = "Late Company"; public const string Version = "1.0.1"; } [BepInPlugin("twig.latecompany", "Late Company", "1.0.1")] internal class Plugin : BaseUnityPlugin { public void Awake() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown Harmony val = new Harmony("twig.latecompany"); val.PatchAll(typeof(Plugin).Assembly); ((BaseUnityPlugin)this).Logger.Log((LogLevel)16, (object)"Late Company loaded!"); } } } namespace LateCompany.Patches { [HarmonyPatch(typeof(GameNetworkManager), "LeaveLobbyAtGameStart")] [HarmonyWrapSafe] internal static class LeaveLobbyAtGameStart_Patch { [HarmonyPrefix] private static bool Prefix() { return false; } } [HarmonyPatch(typeof(GameNetworkManager), "ConnectionApproval")] [HarmonyWrapSafe] internal static class ConnectionApproval_Patch { [HarmonyPostfix] private static void Postfix(ConnectionApprovalRequest request, ConnectionApprovalResponse response) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if (request.ClientNetworkId != NetworkManager.Singleton.LocalClientId && response.Reason.Contains("Game has already started") && GameNetworkManager.Instance.gameHasStarted) { Debug.Log((object)"Uhh, no i do actually want this one to connect."); response.Reason = ""; response.CreatePlayerObject = false; response.Approved = true; response.Pending = false; } } } [HarmonyPatch(typeof(StartOfRound), "OnClientConnect")] [HarmonyWrapSafe] internal class OnClientConnect_Patch { [HarmonyPostfix] private static void Postfix(ulong clientId) { //IL_005a: 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_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) StartOfRound instance = StartOfRound.Instance; if (((NetworkBehaviour)instance).IsServer && !instance.inShipPhase) { RoundManager instance2 = RoundManager.Instance; MethodInfo method = typeof(RoundManager).GetMethod("__beginSendClientRpc", BindingFlags.Instance | BindingFlags.NonPublic); MethodInfo method2 = typeof(RoundManager).GetMethod("__endSendClientRpc", BindingFlags.Instance | BindingFlags.NonPublic); ClientRpcParams val = default(ClientRpcParams); val.Send = new ClientRpcSendParams { TargetClientIds = new List<ulong> { clientId } }; ClientRpcParams val2 = val; FastBufferWriter val3 = (FastBufferWriter)method.Invoke(instance2, new object[3] { 1193916134u, val2, 0 }); BytePacker.WriteValueBitPacked(val3, StartOfRound.Instance.randomMapSeed); BytePacker.WriteValueBitPacked(val3, StartOfRound.Instance.currentLevelID); method2.Invoke(instance2, new object[4] { val3, 1193916134u, val2, 0 }); FastBufferWriter val4 = (FastBufferWriter)method.Invoke(instance2, new object[3] { 2729232387u, val2, 0 }); method2.Invoke(instance2, new object[4] { val4, 2729232387u, val2, 0 }); } } } }
plugins/anormaltwig-LateCompany/LateCompanyV1.0.4.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using Unity.Netcode; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = ".NET Framework 4.6")] [assembly: AssemblyCompany("LateCompany")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("LateCompany")] [assembly: AssemblyTitle("LateCompany")] [assembly: AssemblyVersion("1.0.0.0")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace LateCompany { public static class PluginInfo { public const string GUID = "twig.latecompany"; public const string PrintName = "Late Company"; public const string Version = "1.0.4"; } [BepInPlugin("twig.latecompany", "Late Company", "1.0.4")] internal class Plugin : BaseUnityPlugin { private ConfigEntry<bool> configLateJoinOrbitOnly; public static bool OnlyLateJoinInOrbit; public void Awake() { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown configLateJoinOrbitOnly = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Late join orbit only", true, "Don't allow joining while the ship is not in orbit."); OnlyLateJoinInOrbit = configLateJoinOrbitOnly.Value; Harmony val = new Harmony("twig.latecompany"); val.PatchAll(typeof(Plugin).Assembly); ((BaseUnityPlugin)this).Logger.Log((LogLevel)16, (object)"Late Company loaded!"); } } } namespace LateCompany.Patches { [HarmonyPatch(typeof(GameNetworkManager), "LeaveLobbyAtGameStart")] [HarmonyWrapSafe] internal static class LeaveLobbyAtGameStart_Patch { [HarmonyPrefix] private static bool Prefix() { return false; } } [HarmonyPatch(typeof(GameNetworkManager), "ConnectionApproval")] [HarmonyWrapSafe] internal static class ConnectionApproval_Patch { [HarmonyPostfix] private static void Postfix(ConnectionApprovalRequest request, ConnectionApprovalResponse response) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if (request.ClientNetworkId != NetworkManager.Singleton.LocalClientId && response.Reason.Contains("Game has already started") && GameNetworkManager.Instance.gameHasStarted && (StartOfRound.Instance.inShipPhase || !Plugin.OnlyLateJoinInOrbit)) { response.Reason = ""; response.CreatePlayerObject = false; response.Approved = true; response.Pending = false; } } } [HarmonyPatch(typeof(StartOfRound), "OnPlayerConnectedClientRpc")] [HarmonyWrapSafe] internal class OnPlayerConnectedClientRpc_Patch { public static MethodInfo BeginSendClientRpc = typeof(RoundManager).GetMethod("__beginSendClientRpc", BindingFlags.Instance | BindingFlags.NonPublic); public static MethodInfo EndSendClientRpc = typeof(RoundManager).GetMethod("__endSendClientRpc", BindingFlags.Instance | BindingFlags.NonPublic); [HarmonyPostfix] private static void Postfix(ulong clientId, int connectedPlayers, ulong[] connectedPlayerIdsOrdered, int assignedPlayerObjectId, int serverMoneyAmount, int levelID, int profitQuota, int timeUntilDeadline, int quotaFulfilled, int randomSeed) { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_008f: 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) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_011e: 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_0169: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) StartOfRound instance = StartOfRound.Instance; PlayerControllerB val = instance.allPlayerScripts[assignedPlayerObjectId]; if (instance.connectedPlayersAmount + 1 >= instance.allPlayerScripts.Length) { GameNetworkManager.Instance.SetLobbyJoinable(false); } val.DisablePlayerModel(instance.allPlayerObjects[assignedPlayerObjectId], true, true); if (((NetworkBehaviour)instance).IsServer && !instance.inShipPhase) { RoundManager instance2 = RoundManager.Instance; ClientRpcParams val2 = default(ClientRpcParams); val2.Send = new ClientRpcSendParams { TargetClientIds = new List<ulong> { clientId } }; ClientRpcParams val3 = val2; FastBufferWriter val4 = (FastBufferWriter)BeginSendClientRpc.Invoke(instance2, new object[3] { 1193916134u, val3, 0 }); BytePacker.WriteValueBitPacked(val4, StartOfRound.Instance.randomMapSeed); BytePacker.WriteValueBitPacked(val4, StartOfRound.Instance.currentLevelID); EndSendClientRpc.Invoke(instance2, new object[4] { val4, 1193916134u, val3, 0 }); FastBufferWriter val5 = (FastBufferWriter)BeginSendClientRpc.Invoke(instance2, new object[3] { 2729232387u, val3, 0 }); EndSendClientRpc.Invoke(instance2, new object[4] { val5, 2729232387u, val3, 0 }); } instance.livingPlayers = instance.connectedPlayersAmount + 1; for (int i = 0; i < instance.allPlayerScripts.Length; i++) { PlayerControllerB val6 = instance.allPlayerScripts[i]; if (val6.isPlayerControlled && val6.isPlayerDead) { instance.livingPlayers--; } } } } [HarmonyPatch(typeof(StartOfRound), "OnPlayerDC")] [HarmonyWrapSafe] internal class OnPlayerDC_Patch { [HarmonyPostfix] public static void Postfix() { if (StartOfRound.Instance.inShipPhase || !Plugin.OnlyLateJoinInOrbit) { GameNetworkManager.Instance.SetLobbyJoinable(true); } } } [HarmonyPatch(typeof(StartOfRound), "StartGame")] [HarmonyWrapSafe] internal class StartGame_Patch { [HarmonyPrefix] public static void Prefix() { if (Plugin.OnlyLateJoinInOrbit) { GameNetworkManager.Instance.SetLobbyJoinable(false); } } } [HarmonyPatch(typeof(StartOfRound), "SetShipReadyToLand")] [HarmonyWrapSafe] internal class SetShipReadyToLand_Patch { [HarmonyPrefix] public static void Postfix() { if (Plugin.OnlyLateJoinInOrbit && StartOfRound.Instance.connectedPlayersAmount + 1 < StartOfRound.Instance.allPlayerScripts.Length) { GameNetworkManager.Instance.SetLobbyJoinable(true); } } } }
plugins/Badham_Mods-CirnoFumoScrap/fumoCirnoScrap/CirnoFumoScrap.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using LethalLib.Modules; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("CirnoFumoScrap")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("A template for Lethal Company")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+2a0d2cc8a2e914d06d8c019a2ebc2d4f62884afa")] [assembly: AssemblyProduct("CirnoFumoScrap")] [assembly: AssemblyTitle("CirnoFumoScrap")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace CirnoFumoScrap { [BepInPlugin("badham.lc.cirnoscrap", "Cirno Fumo Scrap", "1.2.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class FumoCirnoMod : BaseUnityPlugin { private const string modGUID = "badham.lc.cirnoscrap"; private const string modName = "Cirno Fumo Scrap"; private const string modVersion = "1.2.0"; private readonly Harmony harmony = new Harmony("badham.lc.cirnoscrap"); private static FumoCirnoMod Instance; private ConfigEntry<int> configFumoRarity; internal ManualLogSource mls; public static AssetBundle CirnoAssets; private void Awake() { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Expected O, but got Unknown if ((Object)(object)Instance == (Object)null) { Instance = this; } CirnoAssets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "fumocirno")); mls = Logger.CreateLogSource("badham.lc.cirnoscrap"); mls.LogInfo((object)"Cirno has infiltrated your facilities..."); harmony.PatchAll(typeof(FumoCirnoMod)); configFumoRarity = ((BaseUnityPlugin)this).Config.Bind<int>("General", "FumoRarity", 30, new ConfigDescription("How rare Fumo Cirnos are to find. Lower values mean Fumos spawn less often", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 100), Array.Empty<object>())); Item val = CirnoAssets.LoadAsset<Item>("assets/fumocirno.asset"); if ((Object)(object)val == (Object)null) { mls.LogError((object)"Failed to load Cirno prefab."); return; } NetworkPrefabs.RegisterNetworkPrefab(val.spawnPrefab); Items.RegisterScrap(val, configFumoRarity.Value, (LevelTypes)510); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "CirnoFumoScrap"; public const string PLUGIN_NAME = "CirnoFumoScrap"; public const string PLUGIN_VERSION = "1.0.0"; } }
plugins/BatTeam-LethalFashion/LethalFashion.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Unity.Netcode; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("LethalFashion")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Adding immediate outfits for the crew")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("LethalFashion")] [assembly: AssemblyTitle("LethalFashion")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace LethalFashion { [BepInPlugin("LethalFashion", "LethalFashion", "1.0.0")] public class Plugin : BaseUnityPlugin { public static ManualLogSource Log; private static Harmony harmonyInstance; private void Awake() { Log = ((BaseUnityPlugin)this).Logger; ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin LethalFashion is loaded!"); InitializeHarmony(); } private void InitializeHarmony() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown if (harmonyInstance == null) { harmonyInstance = new Harmony("LethalFashion"); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Harmony instance created"); try { harmonyInstance.PatchAll(typeof(SuitFashion)); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Patch applied successfully."); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Error applying patch: " + ex.Message)); } } } } public class SuitFashion { private static readonly MethodInfo unlockItem; private static bool isHost; static SuitFashion() { unlockItem = typeof(StartOfRound).GetMethod("SpawnUnlockable", BindingFlags.Instance | BindingFlags.NonPublic); if (unlockItem == null) { Plugin.Log.LogError((object)"SpawnUnlockable method not found in StartOfRound. Please check game/plugin version."); } } public static void SpawnUnlockableDelegate(StartOfRound instance, int ID) { if (unlockItem == null) { Plugin.Log.LogError((object)"Cannot invoke SpawnUnlockable - method reference is null. Please check game/plugin version."); return; } try { unlockItem.Invoke(instance, new object[1] { ID }); } catch (Exception ex) { Plugin.Log.LogError((object)("Error invoking SpawnUnlockable: " + ex.Message)); } } [HarmonyPatch(typeof(StartOfRound), "Start")] [HarmonyPostfix] public static void StartOfRoundSuitPatch(StartOfRound __instance) { if (isHost) { int[] array = new int[3] { 1, 2, 3 }; int[] array2 = array; foreach (int iD in array2) { SpawnUnlockableDelegate(__instance, iD); } } } [HarmonyPatch(typeof(RoundManager), "Start")] [HarmonyPrefix] private static void SetIsHost() { isHost = ((NetworkBehaviour)RoundManager.Instance).NetworkManager.IsHost; } } public static class PluginInfo { public const string PLUGIN_GUID = "LethalFashion"; public const string PLUGIN_NAME = "LethalFashion"; public const string PLUGIN_VERSION = "1.0.0"; } }
plugins/bizzlemip-BiggerLobby/BiggerLobby.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using BepInEx; using BepInEx.Configuration; using BiggerLobby.Patches; using Dissonance.Audio.Playback; using GameNetcodeStuff; using HarmonyLib; using LC_API.BundleAPI; using LC_API.ServerAPI; using Microsoft.CodeAnalysis; using Steamworks; using Steamworks.Data; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.Audio; using UnityEngine.Events; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("BiggerLobby")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Increase the max players to 50 in Lethal Company")] [assembly: AssemblyFileVersion("2.4.0.0")] [assembly: AssemblyInformationalVersion("2.4.0")] [assembly: AssemblyProduct("BiggerLobby")] [assembly: AssemblyTitle("BiggerLobby")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("2.4.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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace BiggerLobby { public static class Helper { public static T[] ResizeArray<T>(T[] oldArray, int newSize) { T[] array = new T[newSize]; oldArray.CopyTo(array, 0); return array; } public static void ResizeList<T>(this List<T> list, int size, T element = default(T)) { int count = list.Count; if (size < count) { list.RemoveRange(size, count - size); } else if (size > count) { if (size > list.Capacity) { list.Capacity = size; } list.AddRange(Enumerable.Repeat(element, size - count)); } } } [BepInPlugin("BiggerLobby", "BiggerLobby", "2.4.0")] public class Plugin : BaseUnityPlugin { public static bool oldhastime; public static int MaxPlayers = 16; public static bool instantiating; public static NetworkObject[] PlayerObjects = (NetworkObject[])(object)new NetworkObject[0]; public static Harmony _harmony; public static Harmony _harmony2; public static ConfigEntry<int>? _LoudnessMultiplier; public static bool Initialized = false; public static IDictionary<uint, NetworkObject> CustomNetObjects = new Dictionary<uint, NetworkObject>(); private void Awake() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Expected O, but got Unknown //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Expected O, but got Unknown _LoudnessMultiplier = ((BaseUnityPlugin)this).Config.Bind<int>("General", "Player loudness", 1, "Default player loudness"); _harmony = new Harmony("BiggerLobby"); _harmony2 = new Harmony("BiggerLobbyA"); _harmony.PatchAll(typeof(NonGamePatches)); _harmony.PatchAll(typeof(NonGamePatches.InternalPatches)); _harmony.PatchAll(typeof(NonGamePatches.InternalPatches2)); CustomNetObjects.Clear(); _harmony2.PatchAll(typeof(InternalPatch3)); _harmony2.PatchAll(typeof(ListSizeTranspilers)); _harmony2.PatchAll(typeof(PlayerObjects)); ((BaseUnityPlugin)this).Logger.LogInfo((object)"BiggerLobby loaded"); BundleLoader.OnLoadedAssets = (OnLoadedAssetsDelegate)Delegate.Combine((Delegate?)(object)BundleLoader.OnLoadedAssets, (Delegate?)new OnLoadedAssetsDelegate(OnLoaded)); } private void Start() { Initialize(); } private void OnDestroy() { Initialize(); } private void Initialize() { if (!Initialized) { Initialized = true; ModdedServer.SetServerModdedOnly(); } } private void OnLoaded() { Object.op_Implicit((Object)(object)BundleLoader.GetLoadedAsset<AudioMixer>("assets/diagetic.mixer")); } public static int GetPlayerCount() { return MaxPlayers; } public static int GetPlayerCountMinusOne() { return MaxPlayers - 1; } } public static class PluginInfo { public const string PLUGIN_GUID = "BiggerLobby"; public const string PLUGIN_NAME = "BiggerLobby"; public const string PLUGIN_VERSION = "2.4.0"; } } namespace BiggerLobby.Patches { [HarmonyPatch(typeof(HUDManager))] internal class InternalPatch3 { private static MethodInfo TargetMethod() { return typeof(HUDManager).GetMethod("AddChatMessage", BindingFlags.Instance | BindingFlags.NonPublic); } [HarmonyPrefix] private static void Prefix(HUDManager __instance, string chatMessage, string nameOfUserWhoTyped = "") { if (!(__instance.lastChatMessage == chatMessage)) { __instance.lastChatMessage = chatMessage; __instance.PingHUDElement(__instance.Chat, 4f, 1f, 0.2f); if (__instance.ChatMessageHistory.Count >= 4) { ((TMP_Text)__instance.chatText).text.Remove(0, __instance.ChatMessageHistory[0].Length); __instance.ChatMessageHistory.Remove(__instance.ChatMessageHistory[0]); } StringBuilder stringBuilder = new StringBuilder(chatMessage); for (int i = 1; i < StartOfRound.Instance.allPlayerScripts.Length; i++) { stringBuilder.Replace("[playerNum" + i + "]", StartOfRound.Instance.allPlayerScripts[i].playerUsername); } stringBuilder.Replace("bizzlemip", "<color=#008282>bizzlemip</color>"); chatMessage = stringBuilder.ToString(); nameOfUserWhoTyped = nameOfUserWhoTyped.Replace("bizzlemip", "<color=#008282>bizzlemip</color>"); string item = ((!string.IsNullOrEmpty(nameOfUserWhoTyped)) ? ("<color=#FF0000>" + nameOfUserWhoTyped + "</color>: <color=#FFFF00>'" + chatMessage + "'</color>") : ("<color=#7069ff>" + chatMessage + "</color>")); __instance.ChatMessageHistory.Add(item); ((TMP_Text)__instance.chatText).text = ""; for (int j = 0; j < __instance.ChatMessageHistory.Count; j++) { TextMeshProUGUI chatText = __instance.chatText; ((TMP_Text)chatText).text = ((TMP_Text)chatText).text + "\n" + __instance.ChatMessageHistory[j]; } } } } [HarmonyPatch] public class ListSizeTranspilers { private static MethodInfo _playerCountMethod = AccessTools.Method(typeof(Plugin), "GetPlayerCount", (Type[])null, (Type[])null); private static MethodInfo _playerCountMinusOneMethod = AccessTools.Method(typeof(Plugin), "GetPlayerCountMinusOne", (Type[])null, (Type[])null); private static void CheckAndReplace(List<CodeInstruction> codes, int index) { if (codes[index].opcode == OpCodes.Ldc_I4_4) { Debug.Log((object)"ok gunna do it"); codes[index].opcode = OpCodes.Call; codes[index].operand = _playerCountMethod; Debug.Log((object)"ok gunna did it"); } } [HarmonyPatch(typeof(HUDManager), "SyncAllPlayerLevelsServerRpc")] [HarmonyPatch(typeof(DressGirlAI), "ChoosePlayerToHaunt")] [HarmonyPatch(typeof(CrawlerAI), "Start")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> SyncLevelsRpc(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Newarr) { Debug.Log((object)"newarr"); CheckAndReplace(list, i - 1); } } return list.AsEnumerable(); } [HarmonyPatch(typeof(PlayerControllerB), "SendNewPlayerValuesServerRpc")] [HarmonyPatch(typeof(StartOfRound), "SyncShipUnlockablesClientRpc")] [HarmonyPatch(typeof(DressGirlAI), "ChoosePlayerToHaunt")] [HarmonyPatch(typeof(EnemyAI), "GetClosestPlayer")] [HarmonyPatch(typeof(SpringManAI), "DoAIInterval")] [HarmonyPatch(typeof(SpringManAI), "Update")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> SendNewPlayerValuesServerRpc(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Blt) { Debug.Log((object)"blt"); CheckAndReplace(list, i - 1); } } return list.AsEnumerable(); } [HarmonyPatch(typeof(StartOfRound), "EndOfGameClientRpc")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> EndOfGameClientRpc(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Brfalse && list[i - 1].opcode == OpCodes.Ldfld && list[i - 2].opcode == OpCodes.Ldfld && list[i - 3].opcode == OpCodes.Ldarg_0) { Debug.Log((object)list[i - 1].opcode); Debug.Log((object)list[i - 2].opcode); Debug.Log((object)list[i - 3].opcode); list[i - 1].opcode = OpCodes.Nop; list[i - 2].opcode = OpCodes.Nop; CheckAndReplace(list, i - 3); } } return list.AsEnumerable(); } [HarmonyPatch(typeof(QuickMenuManager), "ConfirmKickUserFromServer")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> ConfirmKickUserFromServer(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldc_I4_3) { list[i].opcode = OpCodes.Call; list[i].operand = _playerCountMinusOneMethod; Debug.Log((object)"Kick Fix Applied"); break; } } return list.AsEnumerable(); } [HarmonyPatch(typeof(StartOfRound), "SyncShipUnlockablesServerRpc")] [HarmonyPatch(typeof(StartOfRound), "OnClientConnect")] [HarmonyPatch(typeof(PlayerControllerB), "SpectateNextPlayer")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> SyncShipUnlockablesServerRpc(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldc_I4_4) { list[i].opcode = OpCodes.Call; list[i].operand = _playerCountMethod; } } return list.AsEnumerable(); } } [HarmonyPatch] public class NonGamePatches { [HarmonyPatch(typeof(GameNetworkManager))] internal class InternalPatches { private static MethodInfo TargetMethod() { return typeof(GameNetworkManager).GetMethod("ConnectionApproval", BindingFlags.Instance | BindingFlags.NonPublic); } [HarmonyPrefix] private static bool PostFix(GameNetworkManager __instance, ConnectionApprovalRequest request, ConnectionApprovalResponse response) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0029: 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) //IL_0080: Unknown result type (might be due to invalid IL or missing references) Debug.Log((object)("Connection approval callback! Game version of client request: " + Encoding.ASCII.GetString(request.Payload).ToString())); Debug.Log((object)$"Joining client id: {request.ClientNetworkId}; Local/host client id: {NetworkManager.Singleton.LocalClientId}"); if (request.ClientNetworkId == NetworkManager.Singleton.LocalClientId) { Debug.Log((object)"Stopped connection approval callback, as the client in question was the host!"); return false; } bool flag = !__instance.disallowConnection; if (flag) { string @string = Encoding.ASCII.GetString(request.Payload); string[] array = @string.Split(","); if (string.IsNullOrEmpty(@string)) { response.Reason = "Unknown; please verify your game files."; flag = false; } else if (__instance.gameHasStarted) { response.Reason = "Game has already started!"; flag = false; } else if (__instance.gameVersionNum.ToString() != array[0]) { response.Reason = $"Game version mismatch! Their version: {__instance.gameVersionNum}. Your version: {array[0]}"; flag = false; } else if (!__instance.disableSteam && ((Object)(object)StartOfRound.Instance == (Object)null || array.Length < 2 || StartOfRound.Instance.KickedClientIds.Contains((ulong)Convert.ToInt64(array[1])))) { response.Reason = "You cannot rejoin after being kicked."; flag = false; } else if (!@string.Contains("BiggerLobbyVersion2.4.0")) { response.Reason = "You need to have <color=#008282>BiggerLobby V2.4.0</color> to join this server!"; flag = false; } } else { response.Reason = "The host was not accepting connections."; } Debug.Log((object)$"Approved connection?: {flag}. Connected players #: {__instance.connectedPlayers}"); Debug.Log((object)("Disapproval reason: " + response.Reason)); response.CreatePlayerObject = false; response.Approved = flag; response.Pending = false; return false; } } [HarmonyPatch(typeof(GameNetworkManager))] internal class InternalPatches2 { private static MethodInfo TargetMethod() { return typeof(GameNetworkManager).GetMethod("SteamMatchmaking_OnLobbyCreated", BindingFlags.Instance | BindingFlags.NonPublic); } [HarmonyPostfix] private static void PostFix(GameNetworkManager __instance, Result result, Lobby lobby) { ((Lobby)(ref lobby)).SetData("name", "[BiggerLobby]" + ((Lobby)(ref lobby)).GetData("name")); } } private static PropertyInfo _playbackVolumeProperty = typeof(VoicePlayback).GetInterface("IVoicePlaybackInternal").GetProperty("PlaybackVolume"); [HarmonyPatch(typeof(StartOfRound), "UpdatePlayerVoiceEffects")] [HarmonyPrefix] public static void UpdatePlayerVoiceEffects(StartOfRound __instance) { if ((Object)(object)GameNetworkManager.Instance == (Object)null || (Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null) { return; } typeof(StartOfRound).GetField("updatePlayerVoiceInterval", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(__instance, 2f); PlayerControllerB val = ((!GameNetworkManager.Instance.localPlayerController.isPlayerDead || !((Object)(object)GameNetworkManager.Instance.localPlayerController.spectatedPlayerScript != (Object)null)) ? GameNetworkManager.Instance.localPlayerController : GameNetworkManager.Instance.localPlayerController.spectatedPlayerScript); for (int i = 0; i < __instance.allPlayerScripts.Length; i++) { PlayerControllerB val2 = __instance.allPlayerScripts[i]; if ((!val2.isPlayerControlled && !val2.isPlayerDead) || (Object)(object)val2 == (Object)(object)GameNetworkManager.Instance.localPlayerController) { continue; } if (val2.voicePlayerState == null || val2.currentVoiceChatIngameSettings._playerState == null || (Object)(object)val2.currentVoiceChatAudioSource == (Object)null) { __instance.RefreshPlayerVoicePlaybackObjects(); if (val2.voicePlayerState == null || (Object)(object)val2.currentVoiceChatAudioSource == (Object)null) { Debug.Log((object)$"Was not able to access voice chat object for player #{i}; {val2.voicePlayerState == null}; {(Object)(object)val2.currentVoiceChatAudioSource == (Object)null}"); continue; } } AudioSource currentVoiceChatAudioSource = __instance.allPlayerScripts[i].currentVoiceChatAudioSource; bool flag = val2.speakingToWalkieTalkie && val.holdingWalkieTalkie && (Object)(object)val2 != (Object)(object)val; if (val2.isPlayerDead) { ((Behaviour)((Component)currentVoiceChatAudioSource).GetComponent<AudioLowPassFilter>()).enabled = false; ((Behaviour)((Component)currentVoiceChatAudioSource).GetComponent<AudioHighPassFilter>()).enabled = false; currentVoiceChatAudioSource.panStereo = 0f; SoundManager.Instance.playerVoicePitchTargets[val2.playerClientId] = 1f; SoundManager.Instance.SetPlayerPitch(1f, (int)val2.playerClientId); if (GameNetworkManager.Instance.localPlayerController.isPlayerDead) { currentVoiceChatAudioSource.spatialBlend = 0f; val2.currentVoiceChatIngameSettings.set2D = true; if ((Object)(object)val2.currentVoiceChatIngameSettings != (Object)null && (Object)(object)val2.currentVoiceChatIngameSettings._playbackComponent != (Object)null) { _playbackVolumeProperty.SetValue(val2.currentVoiceChatIngameSettings._playbackComponent, (SoundManager.Instance.playerVoiceVolumes[i] + 1f) * (float)(2 * Plugin._LoudnessMultiplier.Value)); } } else { currentVoiceChatAudioSource.spatialBlend = 1f; val2.currentVoiceChatIngameSettings.set2D = false; if ((Object)(object)val2.currentVoiceChatIngameSettings != (Object)null && (Object)(object)val2.currentVoiceChatIngameSettings._playbackComponent != (Object)null) { _playbackVolumeProperty.SetValue(val2.currentVoiceChatIngameSettings._playbackComponent, 0); } } continue; } AudioLowPassFilter component = ((Component)currentVoiceChatAudioSource).GetComponent<AudioLowPassFilter>(); OccludeAudio component2 = ((Component)currentVoiceChatAudioSource).GetComponent<OccludeAudio>(); ((Behaviour)component).enabled = true; component2.overridingLowPass = flag || __instance.allPlayerScripts[i].voiceMuffledByEnemy; ((Behaviour)((Component)currentVoiceChatAudioSource).GetComponent<AudioHighPassFilter>()).enabled = flag; if (!flag) { currentVoiceChatAudioSource.spatialBlend = 1f; val2.currentVoiceChatIngameSettings.set2D = false; currentVoiceChatAudioSource.bypassListenerEffects = false; currentVoiceChatAudioSource.bypassEffects = false; currentVoiceChatAudioSource.outputAudioMixerGroup = SoundManager.Instance.playerVoiceMixers[val2.playerClientId]; component.lowpassResonanceQ = 1f; } else { currentVoiceChatAudioSource.spatialBlend = 0f; val2.currentVoiceChatIngameSettings.set2D = true; if (GameNetworkManager.Instance.localPlayerController.isPlayerDead) { currentVoiceChatAudioSource.panStereo = 0f; currentVoiceChatAudioSource.outputAudioMixerGroup = SoundManager.Instance.playerVoiceMixers[val2.playerClientId]; currentVoiceChatAudioSource.bypassListenerEffects = false; currentVoiceChatAudioSource.bypassEffects = false; } else { currentVoiceChatAudioSource.panStereo = 0.4f; currentVoiceChatAudioSource.bypassListenerEffects = false; currentVoiceChatAudioSource.bypassEffects = false; currentVoiceChatAudioSource.outputAudioMixerGroup = SoundManager.Instance.playerVoiceMixers[val2.playerClientId]; } component2.lowPassOverride = 4000f; component.lowpassResonanceQ = 3f; } if ((Object)(object)val2.currentVoiceChatIngameSettings != (Object)null && (Object)(object)val2.currentVoiceChatIngameSettings._playbackComponent != (Object)null) { _playbackVolumeProperty.SetValue(val2.currentVoiceChatIngameSettings._playbackComponent, (SoundManager.Instance.playerVoiceVolumes[i] + 1f) * (float)(2 * Plugin._LoudnessMultiplier.Value)); } } } [HarmonyPatch(typeof(StartOfRound), "Awake")] [HarmonyPrefix] public static void ResizeLists(ref StartOfRound __instance) { //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Expected O, but got Unknown __instance.allPlayerObjects = Helper.ResizeArray(__instance.allPlayerObjects, Plugin.MaxPlayers); __instance.allPlayerScripts = Helper.ResizeArray(__instance.allPlayerScripts, Plugin.MaxPlayers); __instance.gameStats.allPlayerStats = Helper.ResizeArray(__instance.gameStats.allPlayerStats, Plugin.MaxPlayers); __instance.playerSpawnPositions = Helper.ResizeArray(__instance.playerSpawnPositions, Plugin.MaxPlayers); for (int i = 4; i < Plugin.MaxPlayers; i++) { __instance.gameStats.allPlayerStats[i] = new PlayerStats(); __instance.playerSpawnPositions[i] = __instance.playerSpawnPositions[0]; } } [HarmonyPatch(typeof(SoundManager), "SetPlayerVoiceFilters")] [HarmonyPrefix] public static bool SetPlayerVoiceFilters(ref SoundManager __instance) { for (int i = 0; i < StartOfRound.Instance.allPlayerScripts.Length; i++) { if (!StartOfRound.Instance.allPlayerScripts[i].isPlayerControlled && !StartOfRound.Instance.allPlayerScripts[i].isPlayerDead) { __instance.playerVoicePitches[i] = 1f; __instance.playerVoiceVolumes[i] = 1f; continue; } if (StartOfRound.Instance.allPlayerScripts[i].voicePlayerState != null) { typeof(VoicePlayback).GetProperty("Dissonance.Audio.Playback.IVoicePlaybackInternal.PlaybackVolume", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(StartOfRound.Instance.allPlayerScripts[i].currentVoiceChatIngameSettings._playbackComponent, (SoundManager.Instance.playerVoiceVolumes[i] + 1f) * (float)(2 * Plugin._LoudnessMultiplier.Value)); } if (Mathf.Abs(__instance.playerVoicePitches[i] - __instance.playerVoicePitchTargets[i]) > 0.025f) { __instance.playerVoicePitches[i] = Mathf.Lerp(__instance.playerVoicePitches[i], __instance.playerVoicePitchTargets[i], 3f * Time.deltaTime); } else if (__instance.playerVoicePitches[i] != __instance.playerVoicePitchTargets[i]) { __instance.playerVoicePitches[i] = __instance.playerVoicePitchTargets[i]; } } return false; } [HarmonyPatch(typeof(MenuManager), "OnEnable")] [HarmonyPostfix] public static void CustomMenu(ref MenuManager __instance) { //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_0265: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02b2: Unknown result type (might be due to invalid IL or missing references) //IL_02c1: Unknown result type (might be due to invalid IL or missing references) GameObject p2; RectTransform rt9 = default(RectTransform); if (!__instance.isInitScene) { GameObject gameObject = ((Component)__instance.HostSettingsOptionsNormal.transform.parent.parent).gameObject; Component component = gameObject.GetComponent(typeof(RectTransform)); RectTransform val = (RectTransform)(object)((component is RectTransform) ? component : null); p2 = ((Component)gameObject.transform.Find("PrivatePublicDescription")).gameObject; Component component2 = p2.GetComponent(typeof(RectTransform)); RectTransform val2 = (RectTransform)(object)((component2 is RectTransform) ? component2 : null); Component component3 = ((Component)__instance.HostSettingsOptionsNormal.transform.Find("EnterAName")).gameObject.GetComponent(typeof(RectTransform)); RectTransform val3 = (RectTransform)(object)((component3 is RectTransform) ? component3 : null); GameObject gameObject2 = ((Component)__instance.HostSettingsOptionsNormal.transform.Find("ServerNameField")).gameObject; Component component4 = gameObject2.GetComponent(typeof(RectTransform)); RectTransform val4 = (RectTransform)(object)((component4 is RectTransform) ? component4 : null); Component component5 = ((Component)gameObject.transform.Find("Confirm")).gameObject.GetComponent(typeof(RectTransform)); RectTransform val5 = (RectTransform)(object)((component5 is RectTransform) ? component5 : null); Component component6 = ((Component)gameObject.transform.Find("Back")).gameObject.GetComponent(typeof(RectTransform)); RectTransform val6 = (RectTransform)(object)((component6 is RectTransform) ? component6 : null); Component component7 = ((Component)__instance.HostSettingsOptionsNormal.transform.Find("Public")).gameObject.GetComponent(typeof(RectTransform)); RectTransform val7 = (RectTransform)(object)((component7 is RectTransform) ? component7 : null); Component component8 = ((Component)__instance.HostSettingsOptionsNormal.transform.Find("Private")).gameObject.GetComponent(typeof(RectTransform)); Component obj = ((component8 is RectTransform) ? component8 : null); GameObject val8 = Object.Instantiate<GameObject>(gameObject2, gameObject2.transform.parent); ref RectTransform reference = ref rt9; Component component9 = val8.GetComponent(typeof(RectTransform)); reference = (RectTransform)(object)((component9 is RectTransform) ? component9 : null); val.sizeDelta = new Vector2(val.sizeDelta.x, 200f); val2.anchoredPosition = new Vector2(val2.anchoredPosition.x, -50f); val3.anchoredPosition = new Vector2(val3.anchoredPosition.x, 40f); val4.anchoredPosition = new Vector2(val4.anchoredPosition.x, 55f); val5.anchoredPosition = new Vector2(val5.anchoredPosition.x, -60f); val6.anchoredPosition = new Vector2(val6.anchoredPosition.x, -85f); val7.anchoredPosition = new Vector2(val7.anchoredPosition.x, -23f); ((RectTransform)obj).anchoredPosition = new Vector2(((RectTransform)obj).anchoredPosition.x, -23f); rt9.anchoredPosition = new Vector2(rt9.anchoredPosition.x, 21f); ((Object)rt9).name = "ServerPlayersField"; ((Component)rt9).GetComponent<TMP_InputField>().contentType = (ContentType)2; ((TMP_Text)((Component)((Component)rt9).transform.Find("Text Area").Find("Placeholder")).gameObject.GetComponent<TextMeshProUGUI>()).text = "Max players (16)..."; ((Component)rt9).transform.parent = __instance.HostSettingsOptionsNormal.transform; ((UnityEvent<string>)(object)((Component)rt9).GetComponent<TMP_InputField>().onValueChanged).AddListener((UnityAction<string>)delegate { OnChange(); }); } void OnChange() { string text = Regex.Replace(((Component)rt9).GetComponent<TMP_InputField>().text, "[^0-9]", ""); Debug.Log((object)text); if (!int.TryParse(text, out var result)) { result = 16; } result = Math.Min(Math.Max(result, 4), 40); Debug.Log((object)result); if (result > 16) { ((TMP_Text)p2.GetComponent<TextMeshProUGUI>()).text = "Notice: High max player counts\nmay cause lag."; } else if (((TMP_Text)p2.GetComponent<TextMeshProUGUI>()).text == "Notice: High max player counts\nmay cause lag.") { ((TMP_Text)p2.GetComponent<TextMeshProUGUI>()).text = "yeah you should be good now lol"; } } } [HarmonyPatch(typeof(MenuManager), "StartHosting")] [HarmonyPrefix] public static bool StartHost(MenuManager __instance) { //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) if (!GameNetworkManager.Instance.currentLobby.HasValue) { return true; } GameObject gameObject = ((Component)__instance.HostSettingsOptionsNormal.transform.Find("ServerPlayersField")).gameObject; Debug.Log((object)gameObject); GameObject gameObject2 = ((Component)gameObject.transform.Find("Text Area").Find("Text")).gameObject; Debug.Log((object)gameObject2); TextMeshProUGUI component = gameObject2.GetComponent<TextMeshProUGUI>(); Debug.Log((object)component); string text = Regex.Replace(((TMP_Text)component).text, "[^0-9]", ""); Debug.Log((object)text); if (!int.TryParse(text, out var result)) { result = 16; } result = Math.Min(Math.Max(result, 4), 40); Debug.Log((object)result); Lobby valueOrDefault = GameNetworkManager.Instance.currentLobby.GetValueOrDefault(); ((Lobby)(ref valueOrDefault)).SetData("MaxPlayers", result.ToString()); Debug.Log((object)"SETTING MAX PLAYERS==="); Plugin.MaxPlayers = result; Debug.Log((object)"SetMax"); Debug.Log((object)result); return true; } [HarmonyPatch(typeof(HUDManager), "FillEndGameStats")] [HarmonyPrefix] public static bool FillEndGameStats() { return false; } [HarmonyPatch(typeof(GameNetworkManager), "StartHost")] [HarmonyPrefix] public static bool DoTheThe() { Plugin.CustomNetObjects.Clear(); return true; } [HarmonyPatch(typeof(GameNetworkManager), "StartClient")] [HarmonyPrefix] public static bool StartClient() { Plugin.CustomNetObjects.Clear(); return true; } [HarmonyPatch(typeof(MenuManager), "StartAClient")] [HarmonyPrefix] public static bool StartAClient() { Plugin.CustomNetObjects.Clear(); Debug.Log((object)"LanRunningggg!"); return true; } [HarmonyPatch(typeof(SteamLobbyManager), "LoadServerList")] [HarmonyPrefix] public static async void LoadServerList(SteamLobbyManager __instance) { if (GameNetworkManager.Instance.waitingForLobbyDataRefresh) { return; } Debug.Log((object)typeof(SteamLobbyManager).GetField("refreshServerListTimer", BindingFlags.Instance | BindingFlags.NonPublic)); typeof(SteamLobbyManager).GetField("refreshServerListTimer", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(__instance, 0f); ((TMP_Text)__instance.serverListBlankText).text = "Loading server list..."; FieldInfo LL = typeof(SteamLobbyManager).GetField("currentLobbyList", BindingFlags.Instance | BindingFlags.NonPublic); FieldInfo LP = typeof(SteamLobbyManager).GetField("lobbySlotPositionOffset", BindingFlags.Instance | BindingFlags.NonPublic); LL.SetValue(__instance, null); LobbySlot[] array = Object.FindObjectsOfType<LobbySlot>(); for (int i = 0; i < array.Length; i++) { Object.Destroy((Object)(object)((Component)array[i]).gameObject); } LobbyQuery val; switch (__instance.sortByDistanceSetting) { case 0: val = SteamMatchmaking.LobbyList; ((LobbyQuery)(ref val)).FilterDistanceClose(); break; case 1: val = SteamMatchmaking.LobbyList; ((LobbyQuery)(ref val)).FilterDistanceFar(); break; case 2: val = SteamMatchmaking.LobbyList; ((LobbyQuery)(ref val)).FilterDistanceWorldwide(); break; } GameNetworkManager.Instance.waitingForLobbyDataRefresh = true; val = SteamMatchmaking.LobbyList; val = ((LobbyQuery)(ref val)).WithSlotsAvailable(1); val = ((LobbyQuery)(ref val)).WithKeyValue("vers", GameNetworkManager.Instance.gameVersionNum.ToString()); Lobby[] array2 = await ((LobbyQuery)(ref val)).RequestAsync(); Debug.Log((object)array2); LL.SetValue(__instance, array2); GameNetworkManager.Instance.waitingForLobbyDataRefresh = false; if (LL.GetValue(__instance) != null) { if ((LL.GetValue(__instance) as Array).Length == 0) { ((TMP_Text)__instance.serverListBlankText).text = "No available servers to join.\n\n\nBizzlemip wuz here :3"; } else { ((TMP_Text)__instance.serverListBlankText).text = ""; } LP.SetValue(__instance, 0f); for (int j = 0; j < (LL.GetValue(__instance) as Lobby[]).Length; j++) { GameObject obj = Object.Instantiate<GameObject>(__instance.LobbySlotPrefab, __instance.levelListContainer); obj.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, (float)LP.GetValue(__instance)); LP.SetValue(__instance, (float)LP.GetValue(__instance) - 42f); LobbySlot componentInChildren = obj.GetComponentInChildren<LobbySlot>(); ((TMP_Text)componentInChildren.LobbyName).text = ((Lobby)(ref (LL.GetValue(__instance) as Lobby[])[j])).GetData("name").Replace("[BiggerLobby]", "[BL]"); string data = ((Lobby)(ref (LL.GetValue(__instance) as Lobby[])[j])).GetData("MaxPlayers"); Debug.Log((object)data); if (!int.TryParse(data, out var result)) { result = 4; } result = Math.Min(Math.Max(result, 4), 40); ((TMP_Text)componentInChildren.playerCount).text = $"{((Lobby)(ref (LL.GetValue(__instance) as Lobby[])[j])).MemberCount} / " + result; componentInChildren.lobbyId = ((Lobby)(ref (LL.GetValue(__instance) as Lobby[])[j])).Id; componentInChildren.thisLobby = (LL.GetValue(__instance) as Lobby[])[j]; } } else { ((TMP_Text)__instance.serverListBlankText).text = "No available servers to join.\n\n\nBizzlemip wuz here :3"; } } [HarmonyPatch(typeof(SteamMatchmaking), "CreateLobbyAsync")] [HarmonyPrefix] public static void SetMaxMembers(ref int maxMembers) { maxMembers = Plugin.MaxPlayers; } [HarmonyPatch(typeof(GameNetworkManager), "SetConnectionDataBeforeConnecting")] [HarmonyPrefix] public static bool SetConnectionDataBeforeConnecting(GameNetworkManager __instance) { //IL_0078: Unknown result type (might be due to invalid IL or missing references) __instance.localClientWaitingForApproval = true; Debug.Log((object)("Game version: " + __instance.gameVersionNum)); if (__instance.disableSteam) { NetworkManager.Singleton.NetworkConfig.ConnectionData = Encoding.ASCII.GetBytes(__instance.gameVersionNum + ",BiggerLobbyVersion2.4.0"); } else { NetworkManager.Singleton.NetworkConfig.ConnectionData = Encoding.ASCII.GetBytes(__instance.gameVersionNum + "," + SteamId.op_Implicit(SteamClient.SteamId) + ",BiggerLobbyVersion2.4.0"); } return false; } [HarmonyPatch(typeof(GameNetworkManager), "LobbyDataIsJoinable")] [HarmonyPrefix] public static bool SkipLobbySizeCheck(ref GameNetworkManager __instance, ref bool __result, Lobby lobby) { //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) string data = ((Lobby)(ref lobby)).GetData("vers"); if (!int.TryParse(((Lobby)(ref lobby)).GetData("MaxPlayers"), out var result)) { result = 16; } result = Math.Min(Math.Max(result, 4), 40); if (((Lobby)(ref lobby)).MemberCount >= result || ((Lobby)(ref lobby)).MemberCount < 1) { Debug.Log((object)$"Lobby join denied! Too many members in lobby! {((Lobby)(ref lobby)).Id}"); Object.FindObjectOfType<MenuManager>().SetLoadingScreen(false, (RoomEnter)4, "The server is full!"); __result = false; return false; } if (data != __instance.gameVersionNum.ToString()) { Debug.Log((object)$"Lobby join denied! Attempted to join vers.{data} lobby id: {((Lobby)(ref lobby)).Id}"); Object.FindObjectOfType<MenuManager>().SetLoadingScreen(false, (RoomEnter)2, $"The server host is playing on version {data} while you are on version {__instance.gameVersionNum}."); __result = false; return false; } if (((Lobby)(ref lobby)).GetData("joinable") == "false") { Debug.Log((object)"Lobby join denied! Host lobby is not joinable"); Object.FindObjectOfType<MenuManager>().SetLoadingScreen(false, (RoomEnter)2, "The server host has already landed their ship, or they are still loading in."); __result = false; return false; } Debug.Log((object)"AEAELOGGINGNUMBER"); Debug.Log((object)result); Debug.Log((object)((Lobby)(ref lobby)).GetData("MaxPlayers")); Debug.Log((object)result); Debug.Log((object)"SETTING MAX PLAYERS==="); Plugin.MaxPlayers = result; __result = true; return false; } } [HarmonyPatch] internal class PlayerObjects { private static StartOfRound startOfRound; private static bool instantiating; private static int nextClientId; private static PlayerControllerB referencePlayer; [HarmonyPatch(typeof(StartOfRound), "Awake")] [HarmonyPrefix] public static void ResizeLists(ref StartOfRound __instance) { //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Expected O, but got Unknown __instance.allPlayerObjects = Helper.ResizeArray(__instance.allPlayerObjects, Plugin.MaxPlayers); __instance.allPlayerScripts = Helper.ResizeArray(__instance.allPlayerScripts, Plugin.MaxPlayers); __instance.gameStats.allPlayerStats = Helper.ResizeArray(__instance.gameStats.allPlayerStats, Plugin.MaxPlayers); __instance.playerSpawnPositions = Helper.ResizeArray(__instance.playerSpawnPositions, Plugin.MaxPlayers); for (int i = 4; i < Plugin.MaxPlayers; i++) { __instance.gameStats.allPlayerStats[i] = new PlayerStats(); __instance.playerSpawnPositions[i] = __instance.playerSpawnPositions[0]; } } [HarmonyPatch(typeof(ForestGiantAI), "Start")] [HarmonyPrefix] public static bool ResizeLists2(ref ForestGiantAI __instance) { __instance.playerStealthMeters = Helper.ResizeArray(__instance.playerStealthMeters, Plugin.MaxPlayers); return true; } [HarmonyPatch(typeof(HUDManager), "Awake")] [HarmonyPostfix] public static void ResizeLists2(ref HUDManager __instance) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown __instance.endgameStatsAnimator = Object.Instantiate<Animator>(__instance.endgameStatsAnimator); __instance.playerLevels = Helper.ResizeArray(__instance.playerLevels, Plugin.MaxPlayers); for (int i = 4; i < Plugin.MaxPlayers; i++) { __instance.playerLevels[i] = new PlayerLevel(); } } [HarmonyPatch(typeof(SoundManager), "Awake")] [HarmonyPostfix] public static void SoundWake(ref SoundManager __instance) { __instance.playerVoiceMixers = Helper.ResizeArray(__instance.playerVoiceMixers, Plugin.MaxPlayers); for (int i = 0; i < Plugin.MaxPlayers; i++) { __instance.playerVoiceMixers[i] = __instance.diageticMixer.outputAudioMixerGroup; } } [HarmonyPatch(typeof(SoundManager), "Start")] [HarmonyPostfix] public static void ResizeSoundManagerLists(ref SoundManager __instance) { __instance.playerVoicePitchLerpSpeed = new float[Plugin.MaxPlayers + 1]; __instance.playerVoicePitchTargets = new float[Plugin.MaxPlayers + 1]; __instance.playerVoiceVolumes = new float[Plugin.MaxPlayers + 1]; __instance.playerVoicePitches = new float[Plugin.MaxPlayers + 1]; for (int i = 1; i < Plugin.MaxPlayers + 1; i++) { __instance.playerVoicePitchLerpSpeed[i] = 3f; __instance.playerVoicePitchTargets[i] = 1f; __instance.playerVoicePitches[i] = 1f; __instance.playerVoiceVolumes[i] = 1f; } } [HarmonyPatch(typeof(EnemyAI), "EnableEnemyMesh")] [HarmonyPrefix] public static bool EnableEnemyMesh(EnemyAI __instance, bool enable, bool overrideDoNotSet = false) { int layer = ((!enable) ? 23 : 19); for (int i = 0; i < __instance.skinnedMeshRenderers.Length; i++) { if (Object.op_Implicit((Object)(object)__instance.skinnedMeshRenderers[i]) && (!((Component)__instance.skinnedMeshRenderers[i]).CompareTag("DoNotSet") || overrideDoNotSet)) { ((Component)__instance.skinnedMeshRenderers[i]).gameObject.layer = layer; } } for (int j = 0; j < __instance.meshRenderers.Length; j++) { if (Object.op_Implicit((Object)(object)__instance.meshRenderers[j]) && (!((Component)__instance.meshRenderers[j]).CompareTag("DoNotSet") || overrideDoNotSet)) { ((Component)__instance.meshRenderers[j]).gameObject.layer = layer; } } return false; } [HarmonyPatch(typeof(ShipTeleporter), "Awake")] [HarmonyPrefix] public static bool Awake2(ShipTeleporter __instance) { int[] array = new int[Plugin.MaxPlayers]; for (int i = 0; i < Plugin.MaxPlayers; i++) { array[i] = -1; } typeof(ShipTeleporter).GetField("playersBeingTeleported", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(__instance, array); __instance.buttonTrigger.interactable = false; typeof(ShipTeleporter).GetField("cooldownTime", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(__instance, __instance.cooldownAmount); return false; } [HarmonyPatch(typeof(NetworkSceneManager), "PopulateScenePlacedObjects")] [HarmonyPrefix] public static bool AddPlayers(NetworkSceneManager __instance) { //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_022c: 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) startOfRound = StartOfRound.Instance; if ((Object)(object)startOfRound.allPlayerObjects[Plugin.MaxPlayers - 1] != (Object)null) { return true; } referencePlayer = startOfRound.allPlayerObjects[0].GetComponent<PlayerControllerB>(); GameObject playerPrefab = startOfRound.playerPrefab; Transform transform = ((Component)startOfRound.playersContainer).transform; FieldInfo field = typeof(NetworkObject).GetField("GlobalObjectIdHash", BindingFlags.Instance | BindingFlags.NonPublic); PropertyInfo property = typeof(NetworkObject).GetProperty("NetworkObjectId", BindingFlags.Instance | BindingFlags.Public); typeof(NetworkSceneManager).GetField("ScenePlacedObjects", BindingFlags.Instance | BindingFlags.NonPublic); instantiating = true; typeof(NetworkSpawnManager).GetMethod("SpawnNetworkObjectLocally", BindingFlags.Instance | BindingFlags.NonPublic, null, CallingConventions.Any, new Type[6] { typeof(NetworkObject), typeof(ulong), typeof(bool), typeof(bool), typeof(ulong), typeof(bool) }, null); for (int i = 4; i < Plugin.MaxPlayers; i++) { nextClientId = i; GameObject val = Object.Instantiate<GameObject>(playerPrefab, transform); PlayerControllerB component = val.GetComponent<PlayerControllerB>(); NetworkObject component2 = val.GetComponent<NetworkObject>(); NetworkObject component3 = ((Component)val.transform.Find("PlayerPhysicsBox")).gameObject.GetComponent<NetworkObject>(); NetworkObject component4 = ((Component)val.transform.Find("ScavengerModel/metarig/ScavengerModelArmsOnly/metarig/spine.003/shoulder.R/arm.R_upper/arm.R_lower/hand.R/LocalItemHolder")).gameObject.GetComponent<NetworkObject>(); NetworkObject component5 = ((Component)val.transform.Find("ScavengerModel/metarig/spine/spine.001/spine.002/spine.003/shoulder.R/arm.R_upper/arm.R_lower/hand.R/ServerItemHolder")).gameObject.GetComponent<NetworkObject>(); component.TeleportPlayer(StartOfRound.Instance.notSpawnedPosition.position, false, 0f, false, true); startOfRound.allPlayerObjects[i] = val; startOfRound.allPlayerScripts[i] = component; uint num = (uint)(6942069 + i); ulong num2 = 6942069uL + (ulong)i; uint num3 = (uint)(123456789 + i); uint num4 = (uint)(987654321 + i); uint num5 = (uint)(124585949 + i); ulong num6 = 123456789uL + (ulong)i; ulong num7 = 987654321uL + (ulong)i; ulong num8 = 124585949uL + (ulong)i; Scene scene = ((Component)component2).gameObject.scene; _ = ((Scene)(ref scene)).handle; field.SetValue(component2, num); property.SetValue(component2, num2); field.SetValue(component3, num3); property.SetValue(component3, num6); field.SetValue(component4, num4); property.SetValue(component4, num7); field.SetValue(component5, num5); property.SetValue(component5, num8); ManualCameraRenderer[] array = Object.FindObjectsByType<ManualCameraRenderer>((FindObjectsInactive)1, (FindObjectsSortMode)0); for (int j = 0; j < array.Length; j++) { array[j].AddTransformAsTargetToRadar(((Component)component).transform, "Player #" + j, false); } } instantiating = false; return true; } [HarmonyPatch(typeof(QuickMenuManager), "AddUserToPlayerList")] [HarmonyPrefix] public static bool AddUserToPlayerList(QuickMenuManager __instance, ulong steamId, string playerName, int playerObjectId) { if (playerObjectId >= 0 && playerObjectId <= Plugin.MaxPlayers) { __instance.playerListSlots[playerObjectId].KickUserButton.SetActive(((NetworkBehaviour)StartOfRound.Instance).IsServer); __instance.playerListSlots[playerObjectId].slotContainer.SetActive(true); __instance.playerListSlots[playerObjectId].isConnected = true; __instance.playerListSlots[playerObjectId].playerSteamId = steamId; ((TMP_Text)__instance.playerListSlots[playerObjectId].usernameHeader).text = playerName.Replace("bizzlemip", "<color=#008282>bizzlemip</color>"); if ((Object)(object)GameNetworkManager.Instance.localPlayerController != (Object)null) { __instance.playerListSlots[playerObjectId].volumeSliderContainer.SetActive(playerObjectId != (int)GameNetworkManager.Instance.localPlayerController.playerClientId); } } return false; } [HarmonyPatch(typeof(QuickMenuManager), "Update")] [HarmonyPrefix] private static bool Update(QuickMenuManager __instance) { for (int i = 0; i < __instance.playerListSlots.Length; i++) { if (__instance.playerListSlots[i].isConnected) { float num = __instance.playerListSlots[i].volumeSlider.value / __instance.playerListSlots[i].volumeSlider.maxValue; if (num == -1f) { SoundManager.Instance.playerVoiceVolumes[i] = -1f; } else { SoundManager.Instance.playerVoiceVolumes[i] = num; } } } return false; } [HarmonyPatch(typeof(QuickMenuManager), "Start")] [HarmonyPrefix] public static bool FixPlayerList(ref QuickMenuManager __instance) { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Expected O, but got Unknown //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Expected O, but got Unknown //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_02a1: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Expected O, but got Unknown //IL_032b: Unknown result type (might be due to invalid IL or missing references) //IL_0335: Expected O, but got Unknown GameObject val = null; GameObject gameObject = ((Component)__instance.playerListPanel.transform.Find("Image")).gameObject; if (Object.op_Implicit((Object)(object)gameObject.transform.Find("Mask"))) { val = ((Component)gameObject.transform.Find("Mask")).gameObject; } GameObject val2 = new GameObject("Mask"); GameObject val3 = new GameObject("ScrollViewport"); GameObject val4 = new GameObject("BGCollision"); GameObject val5 = new GameObject("ScrollContent"); val2.transform.SetParent(gameObject.transform); val3.transform.SetParent(val2.transform); val4.transform.SetParent(val3.transform); val5.transform.SetParent(val3.transform); val2.transform.localScale = Vector3.one; val3.transform.localScale = Vector3.one; val5.transform.localScale = Vector3.one; val2.AddComponent<RectTransform>().sizeDelta = new Vector2(300f, 280f); val2.transform.localPosition = new Vector3(-10f, 110f, 0f); val3.transform.localPosition = new Vector3(0f, -10f, 0f); val5.AddComponent<RectTransform>().pivot = new Vector2(0.5f, 1f); val2.GetComponent<RectTransform>().pivot = new Vector2(0.5f, 1f); val2.transform.localPosition = new Vector3(-10f, 110f, 0f); val2.AddComponent<RectMask2D>(); VerticalLayoutGroup val6 = val5.AddComponent<VerticalLayoutGroup>(); ContentSizeFitter obj = val5.AddComponent<ContentSizeFitter>(); ScrollRect obj2 = val3.AddComponent<ScrollRect>(); obj2.viewport = val3.AddComponent<RectTransform>(); obj2.content = val5.GetComponent<RectTransform>(); obj2.horizontal = false; Image val7 = val4.AddComponent<Image>(); val4.GetComponent<RectTransform>().anchorMin = new Vector2(0f, 0f); val4.GetComponent<RectTransform>().anchorMax = new Vector2(1f, 1f); ((Graphic)val7).color = new Color(255f, 255f, 255f, 0f); ((HorizontalOrVerticalLayoutGroup)val6).spacing = 50f; obj.horizontalFit = (FitMode)0; obj.verticalFit = (FitMode)2; __instance.playerListSlots = Helper.ResizeArray(__instance.playerListSlots, Plugin.MaxPlayers); for (int i = 0; i < Plugin.MaxPlayers; i++) { if (i < 4) { __instance.playerListSlots[i].slotContainer.transform.SetParent(val5.transform); continue; } PlayerListSlot val8 = new PlayerListSlot(); GameObject val9 = (val8.slotContainer = Object.Instantiate<GameObject>(__instance.playerListSlots[0].slotContainer)); val8.volumeSliderContainer = ((Component)val9.transform.Find("VoiceVolumeSlider")).gameObject; val8.KickUserButton = ((Component)val9.transform.Find("KickButton")).gameObject; QuickMenuManager yeahoriginal = __instance; int localI = i; ((UnityEvent)val8.KickUserButton.GetComponent<Button>().onClick).AddListener((UnityAction)delegate { yeahoriginal.KickUserFromServer(localI); }); val8.isConnected = false; val8.usernameHeader = ((Component)val9.transform.Find("PlayerNameButton").Find("PName")).gameObject.GetComponent<TextMeshProUGUI>(); val8.volumeSlider = ((Component)val9.transform.Find("VoiceVolumeSlider").Find("Slider")).gameObject.GetComponent<Slider>(); val8.playerSteamId = __instance.playerListSlots[0].playerSteamId; val9.transform.SetParent(val5.transform, false); __instance.playerListSlots[i] = val8; } if ((Object)(object)val != (Object)null) { Object.Destroy((Object)(object)val); } return true; } [HarmonyPatch(typeof(StartOfRound), "SyncShipUnlockablesClientRpc")] [HarmonyPrefix] public static bool SyncShipUnlockablesClientRpc(StartOfRound __instance, int[] playerSuitIDs, bool shipLightsOn, Vector3[] placeableObjectPositions, Vector3[] placeableObjectRotations, int[] placeableObjects, int[] storedItems, int[] scrapValues, int[] itemSaveData) { Debug.Log((object)"INITIAL ARRAY LENGTHS"); Debug.Log((object)__instance.allPlayerScripts.Length); Debug.Log((object)playerSuitIDs.Length); return true; } [HarmonyPatch(typeof(ManualCameraRenderer), "Awake")] [HarmonyPrefix] public static bool Mawake(ref ManualCameraRenderer __instance) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown for (int i = 0; i < 4; i++) { __instance.radarTargets.Add(new TransformAndName(((Component)StartOfRound.Instance.allPlayerScripts[i]).transform, StartOfRound.Instance.allPlayerScripts[i].playerUsername, false)); } __instance.targetTransformIndex = 0; __instance.targetedPlayer = StartOfRound.Instance.allPlayerScripts[0]; return false; } [HarmonyPatch(typeof(PlayerControllerB), "Awake")] [HarmonyPrefix] public static bool FixPlayerObject(ref PlayerControllerB __instance) { if (!instantiating) { return true; } ((Object)((Component)__instance).gameObject).name = $"ExtraPlayer{nextClientId}"; __instance.playerClientId = (ulong)nextClientId; __instance.actualClientId = (ulong)nextClientId; StartOfRound.Instance.allPlayerObjects[nextClientId] = ((Component)((Component)__instance).transform.parent).gameObject; StartOfRound.Instance.allPlayerScripts[nextClientId] = __instance; FieldInfo[] fields = typeof(PlayerControllerB).GetFields(); foreach (FieldInfo fieldInfo in fields) { object value = fieldInfo.GetValue(__instance); object value2 = fieldInfo.GetValue(referencePlayer); if (value == null && value2 != null) { fieldInfo.SetValue(__instance, value2); } } ((Behaviour)__instance).enabled = true; return true; } [HarmonyPatch(typeof(StartOfRound), "GetPlayerSpawnPosition")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> GetPlayerSpawnPosition(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); list[0].opcode = OpCodes.Ldc_I4_1; return list.AsEnumerable(); } } }
plugins/bizzlemip-BiggerLobby/BiggerLobbyV2.0.4.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using BepInEx; using GameNetcodeStuff; using HarmonyLib; using LC_API.BundleAPI; using LC_API.ServerAPI; using Microsoft.CodeAnalysis; using Steamworks; using Steamworks.Data; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.Audio; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("BiggerLobby")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Increase the max players in Lethal Company")] [assembly: AssemblyFileVersion("2.0.0.0")] [assembly: AssemblyInformationalVersion("2.0.0")] [assembly: AssemblyProduct("BiggerLobby")] [assembly: AssemblyTitle("BiggerLobby")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("2.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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace BiggerLobby { public static class Helper { public static T[] ResizeArray<T>(T[] oldArray, int newSize) { T[] array = new T[newSize]; oldArray.CopyTo(array, 0); return array; } public static void ResizeList<T>(this List<T> list, int size, T element = default(T)) { int count = list.Count; if (size < count) { list.RemoveRange(size, count - size); } else if (size > count) { if (size > list.Capacity) { list.Capacity = size; } list.AddRange(Enumerable.Repeat(element, size - count)); } } } [BepInPlugin("BiggerLobby", "BiggerLobby", "2.0.0")] public class Plugin : BaseUnityPlugin { public static bool oldhastime; public static int MaxPlayers = 20; public static bool instantiating; private Harmony _harmony; private void Awake() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Expected O, but got Unknown _harmony = new Harmony("BiggerLobby"); _harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"BiggerLobby loaded"); BundleLoader.OnLoadedAssets = (OnLoadedAssetsDelegate)Delegate.Combine((Delegate?)(object)BundleLoader.OnLoadedAssets, (Delegate?)new OnLoadedAssetsDelegate(OnLoaded)); } private void OnLoaded() { AudioMixer loadedAsset = BundleLoader.GetLoadedAsset<AudioMixer>("assets/diagetic.mixer"); if (Object.op_Implicit((Object)(object)loadedAsset)) { } } private void OnDestroy() { ModdedServer.SetServerModdedOnly(); } } public static class PluginInfo { public const string PLUGIN_GUID = "BiggerLobby"; public const string PLUGIN_NAME = "BiggerLobby"; public const string PLUGIN_VERSION = "2.0.0"; } } namespace BiggerLobby.Patches { [HarmonyPatch(typeof(GameNetworkManager))] internal class InternalPatches { private static MethodInfo TargetMethod() { return typeof(GameNetworkManager).GetMethod("ConnectionApproval", BindingFlags.Instance | BindingFlags.NonPublic); } [HarmonyPrefix] private static bool PostFix(GameNetworkManager __instance, ConnectionApprovalRequest request, ConnectionApprovalResponse response) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: 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) Debug.Log((object)("Connection approval callback! Game version of client request: " + Encoding.ASCII.GetString(request.Payload).ToString())); Debug.Log((object)$"Joining client id: {request.ClientNetworkId}; Local/host client id: {NetworkManager.Singleton.LocalClientId}"); if (request.ClientNetworkId == NetworkManager.Singleton.LocalClientId) { Debug.Log((object)"Stopped connection approval callback, as the client in question was the host!"); return false; } bool flag = !__instance.disallowConnection; if (flag) { string @string = Encoding.ASCII.GetString(request.Payload); string[] array = @string.Split(","); if (string.IsNullOrEmpty(@string)) { response.Reason = "Unknown; please verify your game files."; flag = false; } else if (__instance.connectedPlayers >= Plugin.MaxPlayers) { response.Reason = "Lobby is full!"; flag = false; } else if (__instance.gameHasStarted) { response.Reason = "Game has already started!"; flag = false; } else if (__instance.gameVersionNum.ToString() != array[0]) { response.Reason = $"Game version mismatch! Their version: {__instance.gameVersionNum}. Your version: {array[0]}"; flag = false; } else if (!__instance.disableSteam && ((Object)(object)StartOfRound.Instance == (Object)null || array.Length < 2 || StartOfRound.Instance.KickedClientIds.Contains((ulong)Convert.ToInt64(array[1])))) { response.Reason = "You cannot rejoin after being kicked."; flag = false; } } else { response.Reason = "The host was not accepting connections."; } Debug.Log((object)$"Approved connection?: {flag}. Connected players #: {__instance.connectedPlayers}"); Debug.Log((object)("Disapproval reason: " + response.Reason)); response.CreatePlayerObject = false; response.Approved = flag; response.Pending = false; return false; } } [HarmonyPatch(typeof(QuickMenuManager))] internal class InternalPatch2 { private static MethodInfo TargetMethod() { return typeof(QuickMenuManager).GetMethod("NonHostPlayerSlotsEnabled", BindingFlags.Instance | BindingFlags.NonPublic); } [HarmonyPrefix] private static bool PostFix(ref bool __result) { __result = false; return false; } } [HarmonyPatch(typeof(HUDManager))] internal class InternalPatch3 { private static MethodInfo TargetMethod() { return typeof(HUDManager).GetMethod("AddChatMessage", BindingFlags.Instance | BindingFlags.NonPublic); } [HarmonyPrefix] private static void Prefix(HUDManager __instance, string chatMessage, string nameOfUserWhoTyped = "") { if (!(__instance.lastChatMessage == chatMessage)) { __instance.lastChatMessage = chatMessage; __instance.PingHUDElement(__instance.Chat, 4f, 1f, 0.2f); if (__instance.ChatMessageHistory.Count >= 4) { ((TMP_Text)__instance.chatText).text.Remove(0, __instance.ChatMessageHistory[0].Length); __instance.ChatMessageHistory.Remove(__instance.ChatMessageHistory[0]); } StringBuilder stringBuilder = new StringBuilder(chatMessage); for (int i = 1; i < StartOfRound.Instance.allPlayerScripts.Length; i++) { stringBuilder.Replace("[playerNum" + i + "]", StartOfRound.Instance.allPlayerScripts[i].playerUsername); } stringBuilder.Replace("bizzlemip", "<color=#008282>bizzlemip</color>"); chatMessage = stringBuilder.ToString(); nameOfUserWhoTyped = nameOfUserWhoTyped.Replace("bizzlemip", "<color=#008282>bizzlemip</color>"); string item = ((!string.IsNullOrEmpty(nameOfUserWhoTyped)) ? ("<color=#FF0000>" + nameOfUserWhoTyped + "</color>: <color=#FFFF00>'" + chatMessage + "'</color>") : ("<color=#7069ff>" + chatMessage + "</color>")); __instance.ChatMessageHistory.Add(item); ((TMP_Text)__instance.chatText).text = ""; for (int j = 0; j < __instance.ChatMessageHistory.Count; j++) { TextMeshProUGUI chatText = __instance.chatText; ((TMP_Text)chatText).text = ((TMP_Text)chatText).text + "\n" + __instance.ChatMessageHistory[j]; } } } } [HarmonyPatch] public class ListSizeTranspilers { [HarmonyPatch(typeof(HUDManager), "SyncAllPlayerLevelsServerRpc")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> SyncLevelsRpc(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Newarr && list[i - 1].opcode == OpCodes.Ldc_I4_4) { list[i - 1].opcode = OpCodes.Ldc_I4_S; list[i - 1].operand = Plugin.MaxPlayers; } } return list.AsEnumerable(); } [HarmonyPatch(typeof(CrawlerAI), "Start")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> CrawlerAIPatch(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Newarr && list[i - 1].opcode == OpCodes.Ldc_I4_4) { list[i - 1].opcode = OpCodes.Ldc_I4_S; list[i - 1].operand = Plugin.MaxPlayers; } } return list.AsEnumerable(); } [HarmonyPatch(typeof(DressGirlAI), "ChoosePlayerToHaunt")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> DressPatch(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Newarr && list[i - 1].opcode == OpCodes.Ldc_I4_4) { list[i - 1].opcode = OpCodes.Ldc_I4_S; list[i - 1].operand = Plugin.MaxPlayers; } } return list.AsEnumerable(); } [HarmonyPatch(typeof(PlayerControllerB), "SendNewPlayerValuesServerRpc")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> SendNewPlayerValuesServerRpc(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Blt && list[i - 1].opcode == OpCodes.Ldc_I4_4) { list[i - 1].opcode = OpCodes.Ldc_I4_S; list[i - 1].operand = Plugin.MaxPlayers; break; } } return list.AsEnumerable(); } [HarmonyPatch(typeof(StartOfRound), "SyncShipUnlockablesClientRpc")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> SyncShipUnlockablesClientRpc(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Blt && list[i - 1].opcode == OpCodes.Ldc_I4_4) { list[i - 1].opcode = OpCodes.Ldc_I4_S; list[i - 1].operand = Plugin.MaxPlayers; break; } } return list.AsEnumerable(); } [HarmonyPatch(typeof(DressGirlAI), "ChoosePlayerToHaunt")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> ChoosePlayerToHaunt(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Blt && list[i - 1].opcode == OpCodes.Ldc_I4_4) { list[i - 1].opcode = OpCodes.Ldc_I4_S; list[i - 1].operand = Plugin.MaxPlayers; Debug.Log((object)"Dress AI Fix Applied"); } } return list.AsEnumerable(); } [HarmonyPatch(typeof(EnemyAI), "GetClosestPlayer")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> GetClosestPlayer(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Blt && list[i - 1].opcode == OpCodes.Ldc_I4_4) { list[i - 1].opcode = OpCodes.Ldc_I4_S; list[i - 1].operand = Plugin.MaxPlayers; Debug.Log((object)"Gen AI Fix Applied"); break; } } return list.AsEnumerable(); } [HarmonyPatch(typeof(SpringManAI), "Update")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> SUpdate(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Blt && list[i - 1].opcode == OpCodes.Ldc_I4_4 && list[i - 2].opcode == OpCodes.Ldloc_2) { list[i - 1].opcode = OpCodes.Ldc_I4_S; list[i - 1].operand = Plugin.MaxPlayers; Debug.Log((object)"Spring AI Fix 2 Applied"); break; } } return list.AsEnumerable(); } [HarmonyPatch(typeof(SpringManAI), "DoAIInterval")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> AIInterval(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Blt && list[i - 1].opcode == OpCodes.Ldc_I4_4) { list[i - 1].opcode = OpCodes.Ldc_I4_S; list[i - 1].operand = Plugin.MaxPlayers; Debug.Log((object)"Spring AI Fix Applied"); break; } } return list.AsEnumerable(); } [HarmonyPatch(typeof(StartOfRound), "SyncShipUnlockablesServerRpc")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> SyncShipUnlockablesServerRpc(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldc_I4_4) { list[i].opcode = OpCodes.Ldc_I4_S; list[i].operand = Plugin.MaxPlayers; } } return list.AsEnumerable(); } [HarmonyPatch(typeof(StartOfRound), "OnClientConnect")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> OnClientConnect(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldc_I4_4) { list[i].opcode = OpCodes.Ldc_I4_S; list[i].operand = Plugin.MaxPlayers; } } return list.AsEnumerable(); } [HarmonyPatch(typeof(HUDManager), "FillEndGameStats")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> FillEndGameStats(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Blt) { list[i].opcode = OpCodes.Bgt; } } return list.AsEnumerable(); } [HarmonyPatch(typeof(PlayerControllerB), "SpectateNextPlayer")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> SpectateNextPlayer(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldc_I4_4) { list[i].opcode = OpCodes.Ldc_I4_S; list[i].operand = Plugin.MaxPlayers; } } return list.AsEnumerable(); } } [HarmonyPatch] internal class LobbySize { [HarmonyPatch(typeof(SteamMatchmaking), "CreateLobbyAsync")] [HarmonyPrefix] public static void SetMaxMembers(ref int maxMembers) { maxMembers = Plugin.MaxPlayers; } [HarmonyPatch(typeof(GameNetworkManager), "LobbyDataIsJoinable")] [HarmonyPrefix] public static bool SkipLobbySizeCheck(ref GameNetworkManager __instance, ref bool __result, Lobby lobby) { //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) string data = ((Lobby)(ref lobby)).GetData("vers"); string data2 = ((Lobby)(ref lobby)).GetData("MaxPlayers"); if (!Utility.IsNullOrWhiteSpace(data2) || !int.TryParse(data2, out var result)) { result = 20; } result = Math.Min(Math.Max(result, 4), 20); if (((Lobby)(ref lobby)).MemberCount >= result || ((Lobby)(ref lobby)).MemberCount < 1) { Debug.Log((object)$"Lobby join denied! Too many members in lobby! {((Lobby)(ref lobby)).Id}"); Object.FindObjectOfType<MenuManager>().SetLoadingScreen(false, (RoomEnter)4, "The server is full!"); return false; } if (data != __instance.gameVersionNum.ToString()) { Debug.Log((object)$"Lobby join denied! Attempted to join vers.{data} lobby id: {((Lobby)(ref lobby)).Id}"); Object.FindObjectOfType<MenuManager>().SetLoadingScreen(false, (RoomEnter)2, $"The server host is playing on version {data} while you are on version {__instance.gameVersionNum}."); __result = false; return false; } if (((Lobby)(ref lobby)).GetData("joinable") == "false") { Debug.Log((object)"Lobby join denied! Host lobby is not joinable"); Object.FindObjectOfType<MenuManager>().SetLoadingScreen(false, (RoomEnter)2, "The server host has already landed their ship, or they are still loading in."); __result = false; return false; } __result = true; return false; } } [HarmonyPatch] internal class PlayerObjects { private static StartOfRound startOfRound; private static bool instantiating; private static int nextClientId; private static PlayerControllerB referencePlayer; [HarmonyPatch(typeof(StartOfRound), "Awake")] [HarmonyPrefix] public static void ResizeLists(ref StartOfRound __instance) { //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Expected O, but got Unknown __instance.allPlayerObjects = Helper.ResizeArray(__instance.allPlayerObjects, Plugin.MaxPlayers); __instance.allPlayerScripts = Helper.ResizeArray(__instance.allPlayerScripts, Plugin.MaxPlayers); __instance.gameStats.allPlayerStats = Helper.ResizeArray(__instance.gameStats.allPlayerStats, Plugin.MaxPlayers); __instance.playerSpawnPositions = Helper.ResizeArray(__instance.playerSpawnPositions, Plugin.MaxPlayers); for (int i = 4; i < Plugin.MaxPlayers; i++) { __instance.gameStats.allPlayerStats[i] = new PlayerStats(); __instance.playerSpawnPositions[i] = __instance.playerSpawnPositions[0]; } } [HarmonyPatch(typeof(ForestGiantAI), "Start")] [HarmonyPrefix] public static bool ResizeLists2(ref ForestGiantAI __instance) { __instance.playerStealthMeters = Helper.ResizeArray(__instance.playerStealthMeters, Plugin.MaxPlayers); return true; } [HarmonyPatch(typeof(HUDManager), "Awake")] [HarmonyPostfix] public static void ResizeLists2(ref HUDManager __instance) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown __instance.playerLevels = Helper.ResizeArray(__instance.playerLevels, Plugin.MaxPlayers); for (int i = 4; i < Plugin.MaxPlayers; i++) { __instance.playerLevels[i] = new PlayerLevel(); } } [HarmonyPatch(typeof(MenuManager), "OnEnable")] [HarmonyPostfix] public static void CustomMenu(ref MenuManager __instance) { //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Unknown result type (might be due to invalid IL or missing references) //IL_02b2: Unknown result type (might be due to invalid IL or missing references) //IL_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) if (!__instance.isInitScene) { GameObject gameObject = ((Component)__instance.HostSettingsOptionsNormal.transform.parent.parent).gameObject; Component component = gameObject.GetComponent(typeof(RectTransform)); RectTransform val = (RectTransform)(object)((component is RectTransform) ? component : null); GameObject gameObject2 = ((Component)gameObject.transform.Find("PrivatePublicDescription")).gameObject; Component component2 = gameObject2.GetComponent(typeof(RectTransform)); RectTransform val2 = (RectTransform)(object)((component2 is RectTransform) ? component2 : null); GameObject gameObject3 = ((Component)__instance.HostSettingsOptionsNormal.transform.Find("EnterAName")).gameObject; Component component3 = gameObject3.GetComponent(typeof(RectTransform)); RectTransform val3 = (RectTransform)(object)((component3 is RectTransform) ? component3 : null); GameObject gameObject4 = ((Component)__instance.HostSettingsOptionsNormal.transform.Find("ServerNameField")).gameObject; Component component4 = gameObject4.GetComponent(typeof(RectTransform)); RectTransform val4 = (RectTransform)(object)((component4 is RectTransform) ? component4 : null); GameObject gameObject5 = ((Component)gameObject.transform.Find("Confirm")).gameObject; Component component5 = gameObject5.GetComponent(typeof(RectTransform)); RectTransform val5 = (RectTransform)(object)((component5 is RectTransform) ? component5 : null); GameObject gameObject6 = ((Component)gameObject.transform.Find("Back")).gameObject; Component component6 = gameObject6.GetComponent(typeof(RectTransform)); RectTransform val6 = (RectTransform)(object)((component6 is RectTransform) ? component6 : null); GameObject gameObject7 = ((Component)__instance.HostSettingsOptionsNormal.transform.Find("Public")).gameObject; Component component7 = gameObject7.GetComponent(typeof(RectTransform)); RectTransform val7 = (RectTransform)(object)((component7 is RectTransform) ? component7 : null); GameObject gameObject8 = ((Component)__instance.HostSettingsOptionsNormal.transform.Find("Private")).gameObject; Component component8 = gameObject8.GetComponent(typeof(RectTransform)); RectTransform val8 = (RectTransform)(object)((component8 is RectTransform) ? component8 : null); GameObject val9 = Object.Instantiate<GameObject>(gameObject4, gameObject4.transform.parent); Component component9 = val9.GetComponent(typeof(RectTransform)); RectTransform val10 = (RectTransform)(object)((component9 is RectTransform) ? component9 : null); val.sizeDelta = new Vector2(val.sizeDelta.x, 200f); val2.anchoredPosition = new Vector2(val2.anchoredPosition.x, -50f); val3.anchoredPosition = new Vector2(val3.anchoredPosition.x, 40f); val4.anchoredPosition = new Vector2(val4.anchoredPosition.x, 55f); val5.anchoredPosition = new Vector2(val5.anchoredPosition.x, -60f); val6.anchoredPosition = new Vector2(val6.anchoredPosition.x, -85f); val7.anchoredPosition = new Vector2(val7.anchoredPosition.x, -23f); val8.anchoredPosition = new Vector2(val8.anchoredPosition.x, -23f); val10.anchoredPosition = new Vector2(val10.anchoredPosition.x, 21f); ((Object)val10).name = "ServerPlayersField"; ((Component)val10).GetComponent<TMP_InputField>().contentType = (ContentType)2; ((TMP_Text)((Component)((Component)val10).transform.Find("Text Area").Find("Placeholder")).gameObject.GetComponent<TextMeshProUGUI>()).text = "Max players..."; ((Component)val10).transform.parent = __instance.HostSettingsOptionsNormal.transform; } } [HarmonyPatch(typeof(MenuManager), "StartHosting")] [HarmonyPrefix] public static bool StartHost(MenuManager __instance) { //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) if (!GameNetworkManager.Instance.currentLobby.HasValue) { return true; } GameObject gameObject = ((Component)__instance.HostSettingsOptionsNormal.transform.Find("ServerPlayersField")).gameObject; Debug.Log((object)gameObject); GameObject gameObject2 = ((Component)gameObject.transform.Find("Text Area").Find("Text")).gameObject; Debug.Log((object)gameObject2); TextMeshProUGUI component = gameObject2.GetComponent<TextMeshProUGUI>(); Debug.Log((object)component); string text = Regex.Replace(((TMP_Text)component).text, "[^0-9]", ""); Debug.Log((object)text); if (!int.TryParse(text, out var result)) { Debug.Log((object)result); result = 20; } result = Math.Min(Math.Max(result, 4), 20); Debug.Log((object)result); Lobby valueOrDefault = GameNetworkManager.Instance.currentLobby.GetValueOrDefault(); ((Lobby)(ref valueOrDefault)).SetData("MaxPlayers", result.ToString()); return true; } [HarmonyPatch(typeof(SteamLobbyManager), "LoadServerList")] [HarmonyPrefix] public static async void LoadServerList(SteamLobbyManager __instance) { if (GameNetworkManager.Instance.waitingForLobbyDataRefresh) { return; } Debug.Log((object)typeof(SteamLobbyManager).GetField("refreshServerListTimer", BindingFlags.Instance | BindingFlags.NonPublic)); typeof(SteamLobbyManager).GetField("refreshServerListTimer", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(__instance, 0f); ((TMP_Text)__instance.serverListBlankText).text = "Loading server list..."; FieldInfo LL = typeof(SteamLobbyManager).GetField("currentLobbyList", BindingFlags.Instance | BindingFlags.NonPublic); FieldInfo LP = typeof(SteamLobbyManager).GetField("lobbySlotPositionOffset", BindingFlags.Instance | BindingFlags.NonPublic); LL.SetValue(__instance, null); LobbySlot[] array = Object.FindObjectsOfType<LobbySlot>(); for (int i = 0; i < array.Length; i++) { Object.Destroy((Object)(object)((Component)array[i]).gameObject); } LobbyQuery val; switch (__instance.sortByDistanceSetting) { case 0: val = SteamMatchmaking.LobbyList; ((LobbyQuery)(ref val)).FilterDistanceClose(); break; case 1: val = SteamMatchmaking.LobbyList; ((LobbyQuery)(ref val)).FilterDistanceFar(); break; case 2: val = SteamMatchmaking.LobbyList; ((LobbyQuery)(ref val)).FilterDistanceWorldwide(); break; } GameNetworkManager.Instance.waitingForLobbyDataRefresh = true; val = SteamMatchmaking.LobbyList; val = ((LobbyQuery)(ref val)).WithSlotsAvailable(1); val = ((LobbyQuery)(ref val)).WithKeyValue("vers", GameNetworkManager.Instance.gameVersionNum.ToString()); Lobby[] results = await ((LobbyQuery)(ref val)).RequestAsync(); Debug.Log((object)results); LL.SetValue(__instance, results); GameNetworkManager.Instance.waitingForLobbyDataRefresh = false; if (LL.GetValue(__instance) != null) { if ((LL.GetValue(__instance) as Array).Length == 0) { ((TMP_Text)__instance.serverListBlankText).text = "No available servers to join.\n\n\nBizzlemip wuz here :3"; } else { ((TMP_Text)__instance.serverListBlankText).text = ""; } LP.SetValue(__instance, 0f); for (int j = 0; j < (LL.GetValue(__instance) as Lobby[]).Length; j++) { GameObject obj = Object.Instantiate<GameObject>(__instance.LobbySlotPrefab, __instance.levelListContainer); obj.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, (float)LP.GetValue(__instance)); LP.SetValue(__instance, (float)LP.GetValue(__instance) - 42f); LobbySlot componentInChildren = obj.GetComponentInChildren<LobbySlot>(); ((TMP_Text)componentInChildren.LobbyName).text = ((Lobby)(ref (LL.GetValue(__instance) as Lobby[])[j])).GetData("name"); string text = ((Lobby)(ref (LL.GetValue(__instance) as Lobby[])[j])).GetData("MaxPlayers"); Debug.Log((object)text); if (!int.TryParse(text, out var number)) { number = 4; } number = Math.Min(Math.Max(number, 4), 20); ((TMP_Text)componentInChildren.playerCount).text = $"{((Lobby)(ref (LL.GetValue(__instance) as Lobby[])[j])).MemberCount} / " + number; componentInChildren.lobbyId = ((Lobby)(ref (LL.GetValue(__instance) as Lobby[])[j])).Id; componentInChildren.thisLobby = (LL.GetValue(__instance) as Lobby[])[j]; } } else { ((TMP_Text)__instance.serverListBlankText).text = "No available servers to join.\n\n\nBizzlemip wuz here :3"; } } [HarmonyPatch(typeof(SoundManager), "Awake")] [HarmonyPostfix] public static void SoundWake(ref SoundManager __instance) { if ((Object)(object)BundleLoader.GetLoadedAsset<AudioMixer>("assets/diagetic.mixer") != (Object)null) { __instance.diageticMixer = BundleLoader.GetLoadedAsset<AudioMixer>("assets/diagetic.mixer"); } __instance.playerVoiceMixers = Helper.ResizeArray(__instance.playerVoiceMixers, Plugin.MaxPlayers); for (int i = 4; i < Plugin.MaxPlayers; i++) { __instance.playerVoiceMixers[i] = Object.Instantiate<AudioMixerGroup>(__instance.playerVoiceMixers[0]); } } [HarmonyPatch(typeof(SoundManager), "Start")] [HarmonyPostfix] public static void ResizeSoundManagerLists(ref SoundManager __instance) { __instance.playerVoicePitchLerpSpeed = new float[Plugin.MaxPlayers + 1]; __instance.playerVoicePitchTargets = new float[Plugin.MaxPlayers + 1]; __instance.playerVoiceVolumes = new float[Plugin.MaxPlayers + 1]; __instance.playerVoicePitches = new float[Plugin.MaxPlayers + 1]; for (int i = 1; i < Plugin.MaxPlayers + 1; i++) { __instance.playerVoicePitchLerpSpeed[i] = 3f; __instance.playerVoicePitchTargets[i] = 1f; __instance.playerVoicePitches[i] = 1f; __instance.playerVoiceVolumes[i] = 1f; } } [HarmonyPatch(typeof(StartOfRound), "EndOfGame")] [HarmonyPrefix] public static void EOG(ref StartOfRound __instance, int bodiesInsured = 0, int connectedPlayersOnServer = 0) { Plugin.oldhastime = __instance.currentLevel.planetHasTime; __instance.currentLevel.planetHasTime = false; } [HarmonyPatch(typeof(StartOfRound), "ReviveDeadPlayers")] [HarmonyPrefix] public static void RDP(ref StartOfRound __instance) { __instance.currentLevel.planetHasTime = Plugin.oldhastime; } [HarmonyPatch(typeof(EnemyAI), "EnableEnemyMesh")] [HarmonyPrefix] public static bool EnableEnemyMesh(EnemyAI __instance, bool enable, bool overrideDoNotSet = false) { int layer = ((!enable) ? 23 : 19); for (int i = 0; i < __instance.skinnedMeshRenderers.Length; i++) { if (Object.op_Implicit((Object)(object)__instance.skinnedMeshRenderers[i]) && (!((Component)__instance.skinnedMeshRenderers[i]).CompareTag("DoNotSet") || overrideDoNotSet)) { ((Component)__instance.skinnedMeshRenderers[i]).gameObject.layer = layer; } } for (int j = 0; j < __instance.meshRenderers.Length; j++) { if (Object.op_Implicit((Object)(object)__instance.meshRenderers[j]) && (!((Component)__instance.meshRenderers[j]).CompareTag("DoNotSet") || overrideDoNotSet)) { ((Component)__instance.meshRenderers[j]).gameObject.layer = layer; } } return false; } [HarmonyPatch(typeof(ShipTeleporter), "Awake")] [HarmonyPrefix] public static bool Awake2(ShipTeleporter __instance) { int[] array = new int[Plugin.MaxPlayers]; for (int i = 0; i < Plugin.MaxPlayers; i++) { array[i] = -1; } Debug.Log((object)array[10]); typeof(ShipTeleporter).GetField("playersBeingTeleported", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(__instance, array); __instance.buttonTrigger.interactable = false; typeof(ShipTeleporter).GetField("cooldownTime", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(__instance, __instance.cooldownAmount); return false; } [HarmonyPatch(typeof(NetworkSceneManager), "PopulateScenePlacedObjects")] [HarmonyPostfix] public static void AddPlayers(ref NetworkSceneManager __instance) { //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) startOfRound = StartOfRound.Instance; if ((Object)(object)startOfRound.allPlayerObjects[Plugin.MaxPlayers - 1] != (Object)null) { return; } Debug.Log((object)StartOfRound.Instance); Debug.Log((object)"AEAEAE"); referencePlayer = startOfRound.allPlayerObjects[0].GetComponent<PlayerControllerB>(); GameObject playerPrefab = startOfRound.playerPrefab; Transform transform = ((Component)startOfRound.playersContainer).transform; FieldInfo field = typeof(NetworkObject).GetField("GlobalObjectIdHash", BindingFlags.Instance | BindingFlags.NonPublic); PropertyInfo property = typeof(NetworkObject).GetProperty("NetworkObjectId", BindingFlags.Instance | BindingFlags.Public); Debug.Log((object)property); FieldInfo field2 = typeof(NetworkSceneManager).GetField("ScenePlacedObjects", BindingFlags.Instance | BindingFlags.NonPublic); instantiating = true; MethodInfo method = typeof(NetworkSpawnManager).GetMethod("SpawnNetworkObjectLocally", BindingFlags.Instance | BindingFlags.NonPublic, null, CallingConventions.Any, new Type[6] { typeof(NetworkObject), typeof(ulong), typeof(bool), typeof(bool), typeof(ulong), typeof(bool) }, null); for (int i = 4; i < Plugin.MaxPlayers; i++) { nextClientId = i; GameObject val = Object.Instantiate<GameObject>(playerPrefab, transform); PlayerControllerB component = val.GetComponent<PlayerControllerB>(); NetworkObject component2 = val.GetComponent<NetworkObject>(); component.TeleportPlayer(StartOfRound.Instance.notSpawnedPosition.position, false, 0f, false, true); startOfRound.allPlayerObjects[i] = val; startOfRound.allPlayerScripts[i] = component; uint num = (uint)(1234567890 + i); ulong num2 = 1234567890uL + (ulong)i; Scene scene = ((Component)component2).gameObject.scene; int handle = ((Scene)(ref scene)).handle; field.SetValue(component2, num); property.SetValue(component2, num2); Dictionary<uint, Dictionary<int, NetworkObject>> dictionary = field2.GetValue(__instance) as Dictionary<uint, Dictionary<int, NetworkObject>>; if (!dictionary.ContainsKey(num)) { dictionary.Add(num, new Dictionary<int, NetworkObject>()); } if (dictionary[num].ContainsKey(handle)) { string arg = (((Object)(object)dictionary[num][handle] != (Object)null) ? ((Object)dictionary[num][handle]).name : "Null Entry"); throw new Exception(((Object)component2).name + " tried to registered with ScenePlacedObjects which already contains " + string.Format("the same {0} value {1} for {2}!", "GlobalObjectIdHash", num, arg)); } dictionary[num].Add(handle, component2); ManualCameraRenderer[] array = Object.FindObjectsByType<ManualCameraRenderer>((FindObjectsInactive)1, (FindObjectsSortMode)0); for (int j = 0; j < array.Length; j++) { ManualCameraRenderer val2 = array[j]; val2.AddTransformAsTargetToRadar(((Component)component).transform, "Player #" + j, false); } } instantiating = false; } [HarmonyPatch(typeof(QuickMenuManager), "Start")] [HarmonyPrefix] public static bool RemovePlayerlist(ref QuickMenuManager __instance) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown __instance.playerListSlots = Helper.ResizeArray(__instance.playerListSlots, Plugin.MaxPlayers); for (int i = 4; i < Plugin.MaxPlayers; i++) { PlayerListSlot val = new PlayerListSlot(); val.slotContainer = __instance.playerListSlots[0].slotContainer; val.volumeSliderContainer = __instance.playerListSlots[0].volumeSliderContainer; val.KickUserButton = __instance.playerListSlots[0].KickUserButton; val.isConnected = false; val.usernameHeader = __instance.playerListSlots[0].usernameHeader; val.volumeSlider = __instance.playerListSlots[0].volumeSlider; val.playerSteamId = __instance.playerListSlots[0].playerSteamId; __instance.playerListSlots[i] = val; } __instance.playerListPanel.SetActive(false); return true; } [HarmonyPatch(typeof(ManualCameraRenderer), "Awake")] [HarmonyPrefix] public static bool Mawake(ref ManualCameraRenderer __instance) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown for (int i = 0; i < 4; i++) { __instance.radarTargets.Add(new TransformAndName(((Component)StartOfRound.Instance.allPlayerScripts[i]).transform, StartOfRound.Instance.allPlayerScripts[i].playerUsername, false)); } __instance.targetTransformIndex = 0; __instance.targetedPlayer = StartOfRound.Instance.allPlayerScripts[0]; return false; } [HarmonyPatch(typeof(PlayerControllerB), "Awake")] [HarmonyPrefix] public static bool FixPlayerObject(ref PlayerControllerB __instance) { if (!instantiating) { return true; } ((Object)((Component)__instance).gameObject).name = $"ExtraPlayer{nextClientId}"; __instance.playerClientId = (ulong)nextClientId; __instance.actualClientId = (ulong)nextClientId; StartOfRound.Instance.allPlayerObjects[nextClientId] = ((Component)((Component)__instance).transform.parent).gameObject; StartOfRound.Instance.allPlayerScripts[nextClientId] = __instance; FieldInfo[] fields = typeof(PlayerControllerB).GetFields(); FieldInfo[] array = fields; foreach (FieldInfo fieldInfo in array) { object value = fieldInfo.GetValue(__instance); object value2 = fieldInfo.GetValue(referencePlayer); if (value == null && value2 != null) { fieldInfo.SetValue(__instance, value2); } } ((Behaviour)__instance).enabled = true; return true; } [HarmonyPatch(typeof(StartOfRound), "GetPlayerSpawnPosition")] [HarmonyTranspiler] public static IEnumerable<CodeInstruction> GetPlayerSpawnPosition(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); list[0].opcode = OpCodes.Ldc_I4_1; return list.AsEnumerable(); } } }
plugins/burgerflipper-MouthDogMeow/MeowMod.dll
Decompiled 2 years agousing System.CodeDom.Compiler; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using MeowMod.Patches; using MeowMod.Properties; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("MeowMod")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("MeowMod")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("6e5645a9-7220-4e45-ab6b-9a82f1ec21ec")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace MeowMod { [BepInPlugin("Aries.MeowMod", "Mouth Dog Meow", "1.0.0")] public class MeowModBase : BaseUnityPlugin { private const string modGUID = "Aries.MeowMod"; private const string modName = "Mouth Dog Meow"; private const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("Aries.MeowMod"); private static MeowModBase Instance; internal ManualLogSource val; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } val = Logger.CreateLogSource("Aries.MeowMod"); val.LogWarning((object)"ICD is online!"); harmony.PatchAll(typeof(MeowModBase)); harmony.PatchAll(typeof(MeowPatch)); } } } namespace MeowMod.Properties { [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [DebuggerNonUserCode] [CompilerGenerated] internal class Resources { private static ResourceManager resourceMan; private static CultureInfo resourceCulture; [EditorBrowsable(EditorBrowsableState.Advanced)] internal static ResourceManager ResourceManager { get { if (resourceMan == null) { resourceMan = new ResourceManager("MeowMod.Properties.Resources", typeof(Resources).Assembly); } return resourceMan; } } [EditorBrowsable(EditorBrowsableState.Advanced)] internal static CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } internal static byte[] meowbundle => (byte[])ResourceManager.GetObject("meowbundle", resourceCulture); internal Resources() { } } } namespace MeowMod.Patches { [HarmonyPatch(typeof(MouthDogAI))] internal class MeowPatch { [HarmonyPatch("Start")] [HarmonyPostfix] private static void soundPatch(ref AudioClip ___breathingSFX) { AudioClip val = AssetBundle.LoadFromMemory(Resources.meowbundle).LoadAsset<AudioClip>("Assets/meow.mp3"); ___breathingSFX = val; } } }
plugins/ColtG5-CreepyBrackens/CreepyBrackens.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Threading.Tasks; using BepInEx; using BepInEx.Logging; using CreepyBrackens.Patches; using HarmonyLib; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("CreepyBrackens")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("CreepyBrackens")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("9568b680-cde8-423a-b296-7890f2293a27")] [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] namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace CreepyBrackens { [BepInPlugin("ColtG5.CreepyBrackens", "CreepyBrackens", "1.0.0")] public class CreepyBrackens : BaseUnityPlugin { private const string modGUID = "ColtG5.CreepyBrackens"; private const string modName = "CreepyBrackens"; private const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("ColtG5.CreepyBrackens"); private static CreepyBrackens Instance; internal ManualLogSource mls; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("ColtG5.CreepyBrackens"); harmony.PatchAll(typeof(BrackenUpdatePatch)); mls.LogInfo((object)"Successfully patched CreepyBrackens into the game !!!!"); } } } namespace CreepyBrackens.Patches { [HarmonyPatch(typeof(FlowermanAI))] internal class BrackenUpdatePatch { private class FlowermanAudioInfo { public bool IsPlaying { get; set; } public AudioSource AudioSource { get; set; } } private static Dictionary<FlowermanAI, FlowermanAudioInfo> flowermanAudioInfoMap = new Dictionary<FlowermanAI, FlowermanAudioInfo>(); [HarmonyPatch("Update")] [HarmonyPrefix] private static async void UpdatePatch(FlowermanAI __instance) { if (!flowermanAudioInfoMap.TryGetValue(__instance, out var flowermanAudioInfo)) { flowermanAudioInfo = new FlowermanAudioInfo { IsPlaying = false, AudioSource = ((Component)__instance).gameObject.AddComponent<AudioSource>() }; flowermanAudioInfo.AudioSource.spatialBlend = 1f; flowermanAudioInfo.AudioSource.dopplerLevel = 1f; flowermanAudioInfo.AudioSource.rolloffMode = (AudioRolloffMode)0; flowermanAudioInfo.AudioSource.minDistance = 5f; flowermanAudioInfo.AudioSource.maxDistance = 50f; flowermanAudioInfo.AudioSource.volume = 0.8f; flowermanAudioInfoMap[__instance] = flowermanAudioInfo; } if (__instance.wasInEvadeMode && flowermanAudioInfo.IsPlaying) { flowermanAudioInfo.AudioSource.Stop(); flowermanAudioInfo.IsPlaying = false; } if (!__instance.wasInEvadeMode && !flowermanAudioInfo.IsPlaying && ((EnemyAI)__instance).mostOptimalDistance <= 50f) { flowermanAudioInfo.IsPlaying = true; string path = "file://" + Paths.PluginPath + "\\ColtG5-CreepyBrackens\\creepy-bracken-sound.mp3"; UnityWebRequest audioClip = UnityWebRequestMultimedia.GetAudioClip(path, (AudioType)13); audioClip.SendWebRequest(); while (!audioClip.isDone) { } AudioClip clip = DownloadHandlerAudioClip.GetContent(audioClip); flowermanAudioInfo.AudioSource.clip = clip; flowermanAudioInfo.AudioSource.PlayOneShot(clip); Random random = new Random(); double randomDelay = random.NextDouble() * 5.0 + 5.0; Task.Run(async delegate { await Task.Delay(TimeSpan.FromSeconds((double)clip.length + randomDelay)); flowermanAudioInfo.AudioSource.Stop(); flowermanAudioInfo.IsPlaying = false; }); } } } }
plugins/EliteMasterEric-Coroner/Coroner.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using TMPro; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("EliteMasterEric")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Rework the Performance Report with new info, including cause of death.")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Coroner")] [assembly: AssemblyTitle("Coroner")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Coroner { internal class AdvancedDeathTracker { private static readonly Dictionary<int, AdvancedCauseOfDeath> PlayerCauseOfDeath = new Dictionary<int, AdvancedCauseOfDeath>(); public static void ClearDeathTracker() { PlayerCauseOfDeath.Clear(); } public static void SetCauseOfDeath(int playerIndex, AdvancedCauseOfDeath causeOfDeath) { PlayerCauseOfDeath[playerIndex] = causeOfDeath; } public static void SetCauseOfDeath(int playerIndex, CauseOfDeath causeOfDeath) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) SetCauseOfDeath(playerIndex, ConvertCauseOfDeath(causeOfDeath)); } public static void SetCauseOfDeath(PlayerControllerB playerController, CauseOfDeath causeOfDeath) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) SetCauseOfDeath((int)playerController.playerClientId, ConvertCauseOfDeath(causeOfDeath)); } public static void SetCauseOfDeath(PlayerControllerB playerController, AdvancedCauseOfDeath causeOfDeath) { SetCauseOfDeath((int)playerController.playerClientId, causeOfDeath); } public static AdvancedCauseOfDeath GetCauseOfDeath(int playerIndex) { PlayerControllerB playerController = StartOfRound.Instance.allPlayerScripts[playerIndex]; return GetCauseOfDeath(playerController); } public static AdvancedCauseOfDeath GetCauseOfDeath(PlayerControllerB playerController) { if (!PlayerCauseOfDeath.ContainsKey((int)playerController.playerClientId)) { return GuessCauseOfDeath(playerController); } return PlayerCauseOfDeath[(int)playerController.playerClientId]; } public static AdvancedCauseOfDeath GuessCauseOfDeath(PlayerControllerB playerController) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Invalid comparison between Unknown and I4 //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Invalid comparison between Unknown and I4 if (playerController.isPlayerDead) { if ((int)playerController.causeOfDeath == 5 && playerController.isSinking) { return AdvancedCauseOfDeath.Quicksand; } if (IsHoldingJetpack(playerController)) { if ((int)playerController.causeOfDeath == 2) { return AdvancedCauseOfDeath.Jetpack_Gravity; } if ((int)playerController.causeOfDeath == 3) { return AdvancedCauseOfDeath.Jetpack_Blast; } } return ConvertCauseOfDeath(playerController.causeOfDeath); } return AdvancedCauseOfDeath.Unknown; } public static bool IsHoldingJetpack(PlayerControllerB playerController) { GrabbableObject component = ((Component)playerController.currentlyHeldObjectServer).gameObject.GetComponent<GrabbableObject>(); if ((Object)(object)component == (Object)null) { return false; } if (component is JetpackItem) { return true; } return false; } public static AdvancedCauseOfDeath ConvertCauseOfDeath(CauseOfDeath causeOfDeath) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected I4, but got Unknown return (int)causeOfDeath switch { 0 => AdvancedCauseOfDeath.Unknown, 1 => AdvancedCauseOfDeath.Bludgeoning, 2 => AdvancedCauseOfDeath.Gravity, 3 => AdvancedCauseOfDeath.Blast, 4 => AdvancedCauseOfDeath.Strangulation, 5 => AdvancedCauseOfDeath.Suffocation, 6 => AdvancedCauseOfDeath.Mauling, 7 => AdvancedCauseOfDeath.Gunshots, 8 => AdvancedCauseOfDeath.Crushing, 9 => AdvancedCauseOfDeath.Drowning, 10 => AdvancedCauseOfDeath.Abandoned, 11 => AdvancedCauseOfDeath.Electrocution, _ => AdvancedCauseOfDeath.Unknown, }; } public static string StringifyCauseOfDeath(CauseOfDeath causeOfDeath) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return StringifyCauseOfDeath(ConvertCauseOfDeath(causeOfDeath)); } public static string StringifyCauseOfDeath(AdvancedCauseOfDeath causeOfDeath) { return causeOfDeath switch { AdvancedCauseOfDeath.Bludgeoning => "Bludgeoned to death.", AdvancedCauseOfDeath.Gravity => "Fell to their death.", AdvancedCauseOfDeath.Blast => "Exploded.", AdvancedCauseOfDeath.Strangulation => "Strangled to death.", AdvancedCauseOfDeath.Suffocation => "Suffocated to death.", AdvancedCauseOfDeath.Mauling => "Mauled to death.", AdvancedCauseOfDeath.Gunshots => "Shot to death by a turret.", AdvancedCauseOfDeath.Crushing => "Crushed to death.", AdvancedCauseOfDeath.Drowning => "Drowned to death.", AdvancedCauseOfDeath.Abandoned => "Abandoned by their coworkers.", AdvancedCauseOfDeath.Electrocution => "Electrocuted to death.", AdvancedCauseOfDeath.Enemy_DepositItemsDesk => "Received a demotion.", AdvancedCauseOfDeath.Enemy_Bracken => "Had their neck snapped by a Bracken.", AdvancedCauseOfDeath.Enemy_EyelessDog => "Was eaten by an Eyeless Dog.", AdvancedCauseOfDeath.Enemy_ForestGiant => "Swallowed whole by a Forest Giant.", AdvancedCauseOfDeath.Enemy_CircuitBees => "Electro-stung to death by Circuit Bees.", AdvancedCauseOfDeath.Enemy_GhostGirl => "Died a mysterious death.", AdvancedCauseOfDeath.Enemy_EarthLeviathan => "Swallowed whole by an Earth Leviathan.", AdvancedCauseOfDeath.Enemy_BaboonHawk => "Was eaten by a Baboon Hawk.", AdvancedCauseOfDeath.Enemy_Jester => "Was the butt of a joke.", AdvancedCauseOfDeath.Quicksand => "Got stuck in quicksand.", AdvancedCauseOfDeath.Jetpack_Gravity => "Flew too close to the sun.", AdvancedCauseOfDeath.Jetpack_Blast => "Went up in a fiery blaze.", AdvancedCauseOfDeath.Unknown => "Died somehow.", _ => "Died somehow.", }; } internal static void SetCauseOfDeath(PlayerControllerB playerControllerB, object enemy_BaboonHawk) { throw new NotImplementedException(); } } internal enum AdvancedCauseOfDeath { Unknown, Bludgeoning, Gravity, Blast, Strangulation, Suffocation, Mauling, Gunshots, Crushing, Drowning, Abandoned, Electrocution, Enemy_DepositItemsDesk, Enemy_Bracken, Enemy_EyelessDog, Enemy_ForestGiant, Enemy_CircuitBees, Enemy_GhostGirl, Enemy_EarthLeviathan, Enemy_BaboonHawk, Quicksand, Enemy_Jester, Jetpack_Gravity, Jetpack_Blast } public static class PluginInfo { public const string PLUGIN_ID = "Coroner"; public const string PLUGIN_NAME = "Coroner"; public const string PLUGIN_VERSION = "1.0.0"; public const string PLUGIN_GUID = "com.elitemastereric.coroner"; } [BepInPlugin("com.elitemastereric.coroner", "Coroner", "1.0.0")] public class Plugin : BaseUnityPlugin { public ManualLogSource PluginLogger; public PluginConfig PluginConfig; public static Plugin Instance { get; private set; } private void Awake() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown Instance = this; PluginLogger = ((BaseUnityPlugin)this).Logger; Harmony val = new Harmony("com.elitemastereric.coroner"); val.PatchAll(); PluginLogger.LogInfo((object)"Plugin Coroner (com.elitemastereric.coroner) is loaded!"); LoadConfig(); } private void LoadConfig() { PluginConfig = new PluginConfig(); PluginConfig.BindConfig(((BaseUnityPlugin)this).Config); } } public class PluginConfig { private ConfigEntry<bool> DisplayCauseOfDeath; private ConfigEntry<bool> DisplayFunnyNotes; private ConfigEntry<bool> DeathReplacesNotes; public void BindConfig(ConfigFile _config) { DisplayCauseOfDeath = _config.Bind<bool>("General", "DisplayCauseOfDeath", true, "Display the cause of death in the player notes."); DisplayFunnyNotes = _config.Bind<bool>("General", "DisplayFunnyNotes", true, "Display a random note when the player has no notes."); DeathReplacesNotes = _config.Bind<bool>("General", "DeathReplacesNotes", true, "True to replace notes when the player dies, false to append."); } public bool ShouldDisplayCauseOfDeath() { return DisplayCauseOfDeath.Value; } public bool ShouldDisplayFunnyNotes() { return DisplayFunnyNotes.Value; } public bool ShouldDeathReplaceNotes() { return DeathReplacesNotes.Value; } } } namespace Coroner.Patch { [HarmonyPatch(typeof(DepositItemsDesk))] [HarmonyPatch("AnimationGrabPlayer")] internal class DepositItemsDeskAnimationGrabPlayerPatch { public static void Postfix(int playerID) { Plugin.Instance.PluginLogger.LogInfo((object)"Accessing state after tentacle devouring..."); PlayerControllerB val = StartOfRound.Instance.allPlayerScripts[playerID]; if (val.isPlayerDead) { Plugin.Instance.PluginLogger.LogInfo((object)"Player is now dead! Setting special cause of death..."); AdvancedDeathTracker.SetCauseOfDeath(val, AdvancedCauseOfDeath.Enemy_DepositItemsDesk); } else { Plugin.Instance.PluginLogger.LogWarning((object)"Player is somehow still alive! Skipping..."); } } } [HarmonyPatch(typeof(FlowermanAI))] [HarmonyPatch("killAnimation")] internal class FlowermanAIKillAnimationPatch { public static void Postfix(FlowermanAI __instance) { Plugin.Instance.PluginLogger.LogInfo((object)"Accessing state after Bracken snapping neck..."); if ((Object)(object)((EnemyAI)__instance).inSpecialAnimationWithPlayer == (Object)null) { Plugin.Instance.PluginLogger.LogWarning((object)"Could not access player after snapping neck!"); } else if (((EnemyAI)__instance).inSpecialAnimationWithPlayer.isPlayerDead) { Plugin.Instance.PluginLogger.LogInfo((object)"Player is now dead! Setting special cause of death..."); AdvancedDeathTracker.SetCauseOfDeath(((EnemyAI)__instance).inSpecialAnimationWithPlayer, AdvancedCauseOfDeath.Enemy_Bracken); } else { Plugin.Instance.PluginLogger.LogWarning((object)"Player is somehow still alive! Skipping..."); } } } [HarmonyPatch(typeof(MouthDogAI))] [HarmonyPatch("KillPlayer")] internal class MouthDogAIKillPlayerPatch { public static void Postfix(int playerId) { Plugin.Instance.PluginLogger.LogInfo((object)"Accessing state after dog devouring..."); PlayerControllerB val = StartOfRound.Instance.allPlayerScripts[playerId]; if ((Object)(object)val == (Object)null) { Plugin.Instance.PluginLogger.LogWarning((object)"Could not access player after death!"); } else if (val.isPlayerDead) { Plugin.Instance.PluginLogger.LogInfo((object)"Player is now dead! Setting special cause of death..."); AdvancedDeathTracker.SetCauseOfDeath(val, AdvancedCauseOfDeath.Enemy_EyelessDog); } else { Plugin.Instance.PluginLogger.LogWarning((object)"Player is somehow still alive! Skipping..."); } } } [HarmonyPatch(typeof(ForestGiantAI))] [HarmonyPatch("EatPlayerAnimation")] internal class ForestGiantAIEatPlayerAnimationPatch { public static void Postfix(PlayerControllerB playerBeingEaten) { Plugin.Instance.PluginLogger.LogInfo((object)"Accessing state after Forest Giant devouring..."); if ((Object)(object)playerBeingEaten == (Object)null) { Plugin.Instance.PluginLogger.LogWarning((object)"Could not access player after death!"); } else if (playerBeingEaten.isPlayerDead) { Plugin.Instance.PluginLogger.LogInfo((object)"Player is now dead! Setting special cause of death..."); AdvancedDeathTracker.SetCauseOfDeath(playerBeingEaten, AdvancedCauseOfDeath.Enemy_ForestGiant); } else { Plugin.Instance.PluginLogger.LogWarning((object)"Player is somehow still alive! Skipping..."); } } } [HarmonyPatch(typeof(RedLocustBees))] [HarmonyPatch("BeeKillPlayerOnLocalClient")] internal class RedLocustBeesBeeKillPlayerOnLocalClientPatch { public static void Postfix(int playerId) { Plugin.Instance.PluginLogger.LogInfo((object)"Accessing state after Red Locust devouring..."); PlayerControllerB val = StartOfRound.Instance.allPlayerScripts[playerId]; if ((Object)(object)val == (Object)null) { Plugin.Instance.PluginLogger.LogWarning((object)"Could not access player after death!"); } else if (val.isPlayerDead) { Plugin.Instance.PluginLogger.LogInfo((object)"Player is now dead! Setting special cause of death..."); AdvancedDeathTracker.SetCauseOfDeath(val, AdvancedCauseOfDeath.Enemy_CircuitBees); } else { Plugin.Instance.PluginLogger.LogWarning((object)"Player is somehow still alive! Skipping..."); } } } [HarmonyPatch(typeof(DressGirlAI))] [HarmonyPatch("OnCollideWithPlayer")] internal class DressGirlAIOnCollideWithPlayerPatch { public static void Postfix(DressGirlAI __instance, Collider other) { if ((Object)(object)__instance.hauntingPlayer == (Object)null) { Plugin.Instance.PluginLogger.LogWarning((object)"Could not access player after death!"); } else if (__instance.hauntingPlayer.isPlayerDead) { Plugin.Instance.PluginLogger.LogInfo((object)"Player is now dead! Setting special cause of death..."); AdvancedDeathTracker.SetCauseOfDeath(__instance.hauntingPlayer, AdvancedCauseOfDeath.Enemy_GhostGirl); } else { Plugin.Instance.PluginLogger.LogWarning((object)"Player is somehow still alive! Skipping..."); } } } [HarmonyPatch(typeof(SandWormAI))] [HarmonyPatch("EatPlayer")] internal class SandWormAIEatPlayerPatch { public static void Postfix(PlayerControllerB playerScript) { if ((Object)(object)playerScript == (Object)null) { Plugin.Instance.PluginLogger.LogWarning((object)"Could not access player after death!"); } else if (playerScript.isPlayerDead) { Plugin.Instance.PluginLogger.LogInfo((object)"Player is now dead! Setting special cause of death..."); AdvancedDeathTracker.SetCauseOfDeath(playerScript, AdvancedCauseOfDeath.Enemy_EarthLeviathan); } else { Plugin.Instance.PluginLogger.LogWarning((object)"Player is somehow still alive! Skipping..."); } } } [HarmonyPatch(typeof(BaboonBirdAI))] [HarmonyPatch("OnCollideWithPlayer")] internal class BaboonBirdAIOnCollideWithPlayerPatch { public static void Postfix(BaboonBirdAI __instance, Collider other) { bool value = Traverse.Create((object)__instance).Field("doingKillAnimation").GetValue<bool>(); PlayerControllerB val = ((EnemyAI)__instance).MeetsStandardPlayerCollisionConditions(other, ((EnemyAI)__instance).inSpecialAnimation || value, false); if ((Object)(object)val == (Object)null) { Plugin.Instance.PluginLogger.LogWarning((object)"Could not access player after death!"); } else if (val.isPlayerDead) { Plugin.Instance.PluginLogger.LogInfo((object)"Player is now dead! Setting special cause of death..."); AdvancedDeathTracker.SetCauseOfDeath(val, AdvancedCauseOfDeath.Enemy_BaboonHawk); } else { Plugin.Instance.PluginLogger.LogWarning((object)"Player is somehow still alive! Skipping..."); } } } [HarmonyPatch(typeof(JesterAI))] [HarmonyPatch("killPlayerAnimation")] internal class JesterAIKillPlayerAnimationPatch { public static void Postfix(JesterAI __instance, int playerId) { PlayerControllerB val = StartOfRound.Instance.allPlayerScripts[playerId]; if ((Object)(object)val == (Object)null) { Plugin.Instance.PluginLogger.LogWarning((object)"Could not access player after death!"); } else if (val.isPlayerDead) { Plugin.Instance.PluginLogger.LogInfo((object)"Player is now dead! Setting special cause of death..."); AdvancedDeathTracker.SetCauseOfDeath(val, AdvancedCauseOfDeath.Enemy_Jester); } else { Plugin.Instance.PluginLogger.LogWarning((object)"Player is somehow still alive! Skipping..."); } } } [HarmonyPatch(typeof(HUDManager))] [HarmonyPatch("FillEndGameStats")] internal class HUDManagerFillEndGameStatsPatch { public static readonly string[] FUNNY_NOTES = new string[16] { "* The goofiest goober.\n", "* The cutest employee.\n", "* Had the most fun.\n", "* Had the least fun.\n", "* The bravest employee.\n", "* Did a sick flip.\n", "* Stubbed their toe.\n", "* The most likely to succeed.\n", "* The least likely to succeed.\n", "* The most likely to die.\n", "* The least likely to die.\n", "* A team player.\n", "* A real go-getter.\n", "* Passed GO and collected $200.\n", "* Getting freaky on a Friday night.\n", "* I think this one's a serial killer.\n" }; private static readonly Random RANDOM = new Random(); public static void Postfix(HUDManager __instance) { Plugin.Instance.PluginLogger.LogInfo((object)"Applying Coroner patches to player notes..."); for (int i = 0; i < __instance.statsUIElements.playerNotesText.Length; i++) { PlayerControllerB val = __instance.playersManager.allPlayerScripts[i]; if (!val.disconnectedMidGame && !val.isPlayerDead && !val.isPlayerControlled) { Plugin.Instance.PluginLogger.LogInfo((object)("Player " + i + " is not controlled by a player. Skipping...")); continue; } TextMeshProUGUI val2 = __instance.statsUIElements.playerNotesText[i]; if (__instance.playersManager.allPlayerScripts[i].isPlayerDead) { if (Plugin.Instance.PluginConfig.ShouldDisplayCauseOfDeath()) { AdvancedCauseOfDeath causeOfDeath = AdvancedDeathTracker.GetCauseOfDeath(val); string text = AdvancedDeathTracker.StringifyCauseOfDeath(causeOfDeath); if (Plugin.Instance.PluginConfig.ShouldDeathReplaceNotes()) { Plugin.Instance.PluginLogger.LogInfo((object)("Player " + i + " is dead! Replacing notes with Cause of Death...")); ((TMP_Text)val2).text = "* " + text + "\n"; } else { Plugin.Instance.PluginLogger.LogInfo((object)("Player " + i + " is dead! Appending notes with Cause of Death...")); ((TMP_Text)val2).text = ((TMP_Text)val2).text + "* " + text + "\n"; } } else { Plugin.Instance.PluginLogger.LogInfo((object)("Player " + i + " is dead, but Config says leave it be...")); } continue; } Plugin.Instance.PluginLogger.LogInfo((object)("Player " + i + " is not dead!")); if (((TMP_Text)val2).text == "") { if (Plugin.Instance.PluginConfig.ShouldDisplayFunnyNotes()) { Plugin.Instance.PluginLogger.LogInfo((object)("Player " + i + " has no notes! Injecting something funny...")); ((TMP_Text)val2).text = ChooseFunnyNote(); } else { Plugin.Instance.PluginLogger.LogInfo((object)("Player " + i + " has no notes, but Config says leave it be...")); } } else { Plugin.Instance.PluginLogger.LogInfo((object)("Player " + i + " has notes! Let's leave it be...")); } } AdvancedDeathTracker.ClearDeathTracker(); } private static string ChooseFunnyNote() { return FUNNY_NOTES[RANDOM.Next(FUNNY_NOTES.Length)]; } } }
plugins/Evaisa-LethalLib/LethalLib/LethalLib.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using LethalLib.Extras; using LethalLib.Modules; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using MonoMod.RuntimeDetour; using On; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("LethalLib")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Mod for Lethal Company")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+e777ef6b3cc96696c529b621f2dcc6659d040926")] [assembly: AssemblyProduct("LethalLib")] [assembly: AssemblyTitle("LethalLib")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace LethalLib { [BepInPlugin("evaisa.lethallib", "LethalLib", "0.4.5")] public class Plugin : BaseUnityPlugin { public const string ModGUID = "evaisa.lethallib"; public const string ModName = "LethalLib"; public const string ModVersion = "0.4.5"; public static AssetBundle MainAssets; public static ManualLogSource logger; private void Awake() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_003f: Unknown result type (might be due to invalid IL or missing references) logger = ((BaseUnityPlugin)this).Logger; ((BaseUnityPlugin)this).Logger.LogInfo((object)"LethalLib loaded!!"); new ILHook((MethodBase)typeof(StackTrace).GetMethod("AddFrames", BindingFlags.Instance | BindingFlags.NonPublic), new Manipulator(IlHook)); Enemies.Init(); Items.Init(); Unlockables.Init(); NetworkPrefabs.Init(); } private void IlHook(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallvirt(x, (MethodBase)typeof(StackFrame).GetMethod("GetFileLineNumber", BindingFlags.Instance | BindingFlags.Public)) }); val.RemoveRange(2); val.EmitDelegate<Func<StackFrame, string>>((Func<StackFrame, string>)GetLineOrIL); } private static string GetLineOrIL(StackFrame instance) { int fileLineNumber = instance.GetFileLineNumber(); if (fileLineNumber == -1 || fileLineNumber == 0) { return "IL_" + instance.GetILOffset().ToString("X4"); } return fileLineNumber.ToString(); } } } namespace LethalLib.Modules { public class Enemies { public enum SpawnType { Default, Daytime, Outside } public class SpawnableEnemy { public EnemyType enemy; public int rarity; public Levels.LevelTypes spawnLevels; public SpawnType spawnType; public TerminalNode terminalNode; public TerminalKeyword infoKeyword; public string modName; public SpawnableEnemy(EnemyType enemy, int rarity, Levels.LevelTypes spawnLevels, SpawnType spawnType) { this.enemy = enemy; this.rarity = rarity; this.spawnLevels = spawnLevels; this.spawnType = spawnType; } } [CompilerGenerated] private static class <>O { public static hook_Awake <0>__RegisterLevelEnemies; public static hook_Start <1>__Terminal_Start; } public static List<SpawnableEnemy> spawnableEnemies = new List<SpawnableEnemy>(); public static void Init() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown object obj = <>O.<0>__RegisterLevelEnemies; if (obj == null) { hook_Awake val = RegisterLevelEnemies; <>O.<0>__RegisterLevelEnemies = val; obj = (object)val; } StartOfRound.Awake += (hook_Awake)obj; object obj2 = <>O.<1>__Terminal_Start; if (obj2 == null) { hook_Start val2 = Terminal_Start; <>O.<1>__Terminal_Start = val2; obj2 = (object)val2; } Terminal.Start += (hook_Start)obj2; } private static void Terminal_Start(orig_Start orig, Terminal self) { //IL_0187: 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_0194: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Expected O, but got Unknown TerminalKeyword val = self.terminalNodes.allKeywords.First((TerminalKeyword keyword) => keyword.word == "info"); List<string> list = new List<string>(); foreach (SpawnableEnemy spawnableEnemy in spawnableEnemies) { if (list.Contains(spawnableEnemy.enemy.enemyName)) { Plugin.logger.LogInfo((object)("Skipping " + spawnableEnemy.enemy.enemyName + " because it was already added")); continue; } if ((Object)(object)spawnableEnemy.terminalNode == (Object)null) { spawnableEnemy.terminalNode = ScriptableObject.CreateInstance<TerminalNode>(); spawnableEnemy.terminalNode.displayText = spawnableEnemy.enemy.enemyName + "\n\nDanger level: Unknown\n\n[No information about this creature was found.]\n\n"; spawnableEnemy.terminalNode.clearPreviousText = true; spawnableEnemy.terminalNode.maxCharactersToType = 35; spawnableEnemy.terminalNode.creatureName = spawnableEnemy.enemy.enemyName; } TerminalKeyword val2 = (((Object)(object)spawnableEnemy.infoKeyword != (Object)null) ? spawnableEnemy.infoKeyword : TerminalUtils.CreateTerminalKeyword(spawnableEnemy.terminalNode.creatureName.ToLowerInvariant().Replace(" ", "-"), isVerb: false, null, null, val)); val2.defaultVerb = val; List<TerminalKeyword> list2 = self.terminalNodes.allKeywords.ToList(); list2.Add(val2); self.terminalNodes.allKeywords = list2.ToArray(); List<CompatibleNoun> list3 = val.compatibleNouns.ToList(); list3.Add(new CompatibleNoun { noun = val2, result = spawnableEnemy.terminalNode }); val.compatibleNouns = list3.ToArray(); spawnableEnemy.terminalNode.creatureFileID = self.enemyFiles.Count; self.enemyFiles.Add(spawnableEnemy.terminalNode); spawnableEnemy.enemy.enemyPrefab.GetComponentInChildren<ScanNodeProperties>().creatureScanID = spawnableEnemy.terminalNode.creatureFileID; } orig.Invoke(self); } private static void RegisterLevelEnemies(orig_Awake orig, StartOfRound self) { //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Expected O, but got Unknown orig.Invoke(self); SelectableLevel[] levels = self.levels; foreach (SelectableLevel val in levels) { string name = ((Object)val).name; if (!Enum.IsDefined(typeof(Levels.LevelTypes), name)) { continue; } Levels.LevelTypes levelTypes = (Levels.LevelTypes)Enum.Parse(typeof(Levels.LevelTypes), name); foreach (SpawnableEnemy spawnableEnemy in spawnableEnemies) { if (!spawnableEnemy.spawnLevels.HasFlag(levelTypes)) { continue; } SpawnableEnemyWithRarity item = new SpawnableEnemyWithRarity { enemyType = spawnableEnemy.enemy, rarity = spawnableEnemy.rarity }; switch (spawnableEnemy.spawnType) { case SpawnType.Default: if (!val.Enemies.Any((SpawnableEnemyWithRarity x) => (Object)(object)x.enemyType == (Object)(object)spawnableEnemy.enemy)) { val.Enemies.Add(item); Plugin.logger.LogInfo((object)("Added " + ((Object)spawnableEnemy.enemy).name + " to " + name + " with SpawnType [Default]")); } break; case SpawnType.Daytime: if (!val.DaytimeEnemies.Any((SpawnableEnemyWithRarity x) => (Object)(object)x.enemyType == (Object)(object)spawnableEnemy.enemy)) { val.DaytimeEnemies.Add(item); Plugin.logger.LogInfo((object)("Added " + ((Object)spawnableEnemy.enemy).name + " to " + name + " with SpawnType [Daytime]")); } break; case SpawnType.Outside: if (!val.OutsideEnemies.Any((SpawnableEnemyWithRarity x) => (Object)(object)x.enemyType == (Object)(object)spawnableEnemy.enemy)) { val.OutsideEnemies.Add(item); Plugin.logger.LogInfo((object)("Added " + ((Object)spawnableEnemy.enemy).name + " to " + name + " with SpawnType [Outside]")); } break; } } } } public static void RegisterEnemy(EnemyType enemy, int rarity, Levels.LevelTypes levelFlags, SpawnType spawnType, TerminalNode infoNode = null) { RegisterEnemy(enemy, rarity, levelFlags, spawnType, infoNode, null); } public static void RegisterEnemy(EnemyType enemy, int rarity, Levels.LevelTypes levelFlags, TerminalNode infoNode = null) { RegisterEnemy(enemy, rarity, levelFlags, SpawnType.Default, infoNode); } public static void RegisterEnemy(EnemyType enemy, int rarity, Levels.LevelTypes levelFlags, SpawnType spawnType, TerminalNode infoNode = null, TerminalKeyword infoKeyword = null) { SpawnableEnemy spawnableEnemy = new SpawnableEnemy(enemy, rarity, levelFlags, spawnType); spawnableEnemy.terminalNode = infoNode; spawnableEnemy.infoKeyword = infoKeyword; Assembly callingAssembly = Assembly.GetCallingAssembly(); string name = callingAssembly.GetName().Name; spawnableEnemy.modName = name; spawnableEnemies.Add(spawnableEnemy); } public static void RegisterEnemy(EnemyType enemy, int rarity, Levels.LevelTypes levelFlags, TerminalNode infoNode = null, TerminalKeyword infoKeyword = null) { SpawnableEnemy spawnableEnemy = new SpawnableEnemy(enemy, rarity, levelFlags, enemy.isDaytimeEnemy ? SpawnType.Daytime : (enemy.isOutsideEnemy ? SpawnType.Outside : SpawnType.Default)); spawnableEnemy.terminalNode = infoNode; spawnableEnemy.infoKeyword = infoKeyword; Assembly callingAssembly = Assembly.GetCallingAssembly(); string name = callingAssembly.GetName().Name; spawnableEnemy.modName = name; spawnableEnemies.Add(spawnableEnemy); } } public class Items { public class ScrapItem { public Item item; public int rarity; public Levels.LevelTypes spawnLevels; public string modName; public ScrapItem(Item item, int rarity, Levels.LevelTypes spawnLevels) { this.item = item; this.rarity = rarity; this.spawnLevels = spawnLevels; } } public class ShopItem { public Item item; public TerminalNode buyNode1; public TerminalNode buyNode2; public TerminalNode itemInfo; public int price; public string modName; public ShopItem(Item item, TerminalNode buyNode1 = null, TerminalNode buyNode2 = null, TerminalNode itemInfo = null, int price = 0) { this.item = item; this.price = price; if ((Object)(object)buyNode1 != (Object)null) { this.buyNode1 = buyNode1; } if ((Object)(object)buyNode2 != (Object)null) { this.buyNode2 = buyNode2; } if ((Object)(object)itemInfo != (Object)null) { this.itemInfo = itemInfo; } } } [CompilerGenerated] private static class <>O { public static hook_Awake <0>__StartOfRound_Awake; public static hook_Awake <1>__Terminal_Awake; } public static List<ScrapItem> scrapItems = new List<ScrapItem>(); public static List<ShopItem> shopItems = new List<ShopItem>(); public static void Init() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown object obj = <>O.<0>__StartOfRound_Awake; if (obj == null) { hook_Awake val = StartOfRound_Awake; <>O.<0>__StartOfRound_Awake = val; obj = (object)val; } StartOfRound.Awake += (hook_Awake)obj; object obj2 = <>O.<1>__Terminal_Awake; if (obj2 == null) { hook_Awake val2 = Terminal_Awake; <>O.<1>__Terminal_Awake = val2; obj2 = (object)val2; } Terminal.Awake += (hook_Awake)obj2; } private static void Terminal_Awake(orig_Awake orig, Terminal self) { //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_0303: Unknown result type (might be due to invalid IL or missing references) //IL_0338: Unknown result type (might be due to invalid IL or missing references) //IL_0341: Expected O, but got Unknown //IL_0343: Unknown result type (might be due to invalid IL or missing references) //IL_0348: Unknown result type (might be due to invalid IL or missing references) //IL_037d: Unknown result type (might be due to invalid IL or missing references) //IL_0385: Expected O, but got Unknown //IL_03e9: Unknown result type (might be due to invalid IL or missing references) //IL_03ee: Unknown result type (might be due to invalid IL or missing references) //IL_03f6: Unknown result type (might be due to invalid IL or missing references) //IL_0403: Expected O, but got Unknown //IL_0497: Unknown result type (might be due to invalid IL or missing references) //IL_049c: Unknown result type (might be due to invalid IL or missing references) //IL_04a4: Unknown result type (might be due to invalid IL or missing references) //IL_04b1: Expected O, but got Unknown List<Item> list = self.buyableItemsList.ToList(); TerminalKeyword val = self.terminalNodes.allKeywords.First((TerminalKeyword keyword) => keyword.word == "buy"); TerminalNode result = val.compatibleNouns[0].result.terminalOptions[1].result; TerminalKeyword val2 = self.terminalNodes.allKeywords.First((TerminalKeyword keyword) => keyword.word == "info"); Plugin.logger.LogInfo((object)$"Adding {shopItems.Count} items to terminal"); foreach (ShopItem item in shopItems) { if (list.Any((Item x) => x.itemName == item.item.itemName)) { Plugin.logger.LogInfo((object)("Item " + item.item.itemName + " already exists in terminal, skipping")); continue; } if (item.price == -1) { item.price = item.item.creditsWorth; } else { item.item.creditsWorth = item.price; } list.Add(item.item); string itemName = item.item.itemName; char c = itemName[itemName.Length - 1]; string text = itemName; TerminalNode val3 = item.buyNode2; if ((Object)(object)val3 == (Object)null) { val3 = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val3).name = itemName.Replace(" ", "-") + "BuyNode2"; val3.displayText = "Ordered [variableAmount] " + text + ". Your new balance is [playerCredits].\n\nOur contractors enjoy fast, free shipping while on the job! Any purchased items will arrive hourly at your approximate location.\r\n\r\n"; val3.clearPreviousText = true; val3.maxCharactersToType = 15; } val3.buyItemIndex = list.Count - 1; val3.isConfirmationNode = false; val3.itemCost = item.price; val3.playSyncedClip = 0; TerminalNode val4 = item.buyNode1; if ((Object)(object)val4 == (Object)null) { val4 = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val4).name = itemName.Replace(" ", "-") + "BuyNode1"; val4.displayText = "You have requested to order " + text + ". Amount: [variableAmount].\nTotal cost of items: [totalCost].\n\nPlease CONFIRM or DENY.\r\n\r\n"; val4.clearPreviousText = true; val4.maxCharactersToType = 35; } val4.buyItemIndex = list.Count - 1; val4.isConfirmationNode = true; val4.overrideOptions = true; val4.itemCost = item.price; val4.terminalOptions = (CompatibleNoun[])(object)new CompatibleNoun[2] { new CompatibleNoun { noun = self.terminalNodes.allKeywords.First((TerminalKeyword keyword2) => keyword2.word == "confirm"), result = val3 }, new CompatibleNoun { noun = self.terminalNodes.allKeywords.First((TerminalKeyword keyword2) => keyword2.word == "deny"), result = result } }; TerminalKeyword val5 = TerminalUtils.CreateTerminalKeyword(itemName.ToLowerInvariant().Replace(" ", "-"), isVerb: false, null, null, val); List<TerminalKeyword> list2 = self.terminalNodes.allKeywords.ToList(); list2.Add(val5); self.terminalNodes.allKeywords = list2.ToArray(); List<CompatibleNoun> list3 = val.compatibleNouns.ToList(); list3.Add(new CompatibleNoun { noun = val5, result = val4 }); val.compatibleNouns = list3.ToArray(); TerminalNode val6 = item.itemInfo; if ((Object)(object)val6 == (Object)null) { val6 = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val6).name = itemName.Replace(" ", "-") + "InfoNode"; val6.displayText = "[No information about this object was found.]\n\n"; val6.clearPreviousText = true; val6.maxCharactersToType = 25; } self.terminalNodes.allKeywords = list2.ToArray(); List<CompatibleNoun> list4 = val2.compatibleNouns.ToList(); list4.Add(new CompatibleNoun { noun = val5, result = val6 }); val2.compatibleNouns = list4.ToArray(); Plugin.logger.LogInfo((object)(item.modName + " registered item: " + item.item.itemName)); } self.buyableItemsList = list.ToArray(); orig.Invoke(self); } private static void StartOfRound_Awake(orig_Awake orig, StartOfRound self) { //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Expected O, but got Unknown orig.Invoke(self); SelectableLevel[] levels = self.levels; foreach (SelectableLevel val in levels) { string name = ((Object)val).name; if (!Enum.IsDefined(typeof(Levels.LevelTypes), name)) { continue; } Levels.LevelTypes levelTypes = (Levels.LevelTypes)Enum.Parse(typeof(Levels.LevelTypes), name); foreach (ScrapItem scrapItem in scrapItems) { if (scrapItem.spawnLevels.HasFlag(levelTypes)) { SpawnableItemWithRarity item = new SpawnableItemWithRarity { spawnableItem = scrapItem.item, rarity = scrapItem.rarity }; if (!val.spawnableScrap.Any((SpawnableItemWithRarity x) => (Object)(object)x.spawnableItem == (Object)(object)scrapItem.item)) { val.spawnableScrap.Add(item); } } } } foreach (ScrapItem scrapItem2 in scrapItems) { if (!self.allItemsList.itemsList.Contains(scrapItem2.item)) { Plugin.logger.LogInfo((object)(scrapItem2.modName + " registered item: " + scrapItem2.item.itemName)); self.allItemsList.itemsList.Add(scrapItem2.item); } } foreach (ShopItem shopItem in shopItems) { if (!self.allItemsList.itemsList.Contains(shopItem.item)) { Plugin.logger.LogInfo((object)(shopItem.modName + " registered item: " + shopItem.item.itemName)); self.allItemsList.itemsList.Add(shopItem.item); } } } public static void RegisterScrap(Item spawnableItem, int rarity, Levels.LevelTypes levelFlags) { ScrapItem scrapItem = new ScrapItem(spawnableItem, rarity, levelFlags); Assembly callingAssembly = Assembly.GetCallingAssembly(); string name = callingAssembly.GetName().Name; scrapItem.modName = name; scrapItems.Add(scrapItem); } public static void RegisterShopItem(Item shopItem, TerminalNode buyNode1 = null, TerminalNode buyNode2 = null, TerminalNode itemInfo = null, int price = -1) { ShopItem shopItem2 = new ShopItem(shopItem, buyNode1, buyNode2, itemInfo, price); Assembly callingAssembly = Assembly.GetCallingAssembly(); string name = callingAssembly.GetName().Name; shopItem2.modName = name; shopItems.Add(shopItem2); } public static void RegisterShopItem(Item shopItem, int price = -1) { ShopItem shopItem2 = new ShopItem(shopItem, null, null, null, price); Assembly callingAssembly = Assembly.GetCallingAssembly(); string name = callingAssembly.GetName().Name; shopItem2.modName = name; shopItems.Add(shopItem2); } } public class Levels { [Flags] public enum LevelTypes { None = 1, ExperimentationLevel = 2, AssuranceLevel = 4, VowLevel = 8, OffenseLevel = 0x10, MarchLevel = 0x20, RendLevel = 0x40, DineLevel = 0x80, TitanLevel = 0x100, All = 0x1FE } } public class NetworkPrefabs { [CompilerGenerated] private static class <>O { public static hook_Start <0>__GameNetworkManager_Start; } private static List<GameObject> _networkPrefabs = new List<GameObject>(); internal static void Init() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown object obj = <>O.<0>__GameNetworkManager_Start; if (obj == null) { hook_Start val = GameNetworkManager_Start; <>O.<0>__GameNetworkManager_Start = val; obj = (object)val; } GameNetworkManager.Start += (hook_Start)obj; } public static void RegisterNetworkPrefab(GameObject prefab) { _networkPrefabs.Add(prefab); } private static void GameNetworkManager_Start(orig_Start orig, GameNetworkManager self) { orig.Invoke(self); foreach (GameObject networkPrefab in _networkPrefabs) { ((Component)self).GetComponent<NetworkManager>().AddNetworkPrefab(networkPrefab); } } } public class Shaders { public static void FixShaders(GameObject gameObject) { Renderer[] componentsInChildren = gameObject.GetComponentsInChildren<Renderer>(); foreach (Renderer val in componentsInChildren) { Material[] materials = val.materials; foreach (Material val2 in materials) { if (((Object)val2.shader).name.Contains("Standard")) { val2.shader = Shader.Find("HDRP/Lit"); } } } } } public class TerminalUtils { public static TerminalKeyword CreateTerminalKeyword(string word, bool isVerb = false, CompatibleNoun[] compatibleNouns = null, TerminalNode specialKeywordResult = null, TerminalKeyword defaultVerb = null, bool accessTerminalObjects = false) { TerminalKeyword val = ScriptableObject.CreateInstance<TerminalKeyword>(); ((Object)val).name = word; val.word = word; val.isVerb = isVerb; val.compatibleNouns = compatibleNouns; val.specialKeywordResult = specialKeywordResult; val.defaultVerb = defaultVerb; val.accessTerminalObjects = accessTerminalObjects; return val; } } public enum StoreType { None, ShipUpgrade, Decor } public class Unlockables { public class RegisteredUnlockable { public UnlockableItem unlockable; public StoreType StoreType; public TerminalNode buyNode1; public TerminalNode buyNode2; public TerminalNode itemInfo; public int price; public string modName; public RegisteredUnlockable(UnlockableItem unlockable, TerminalNode buyNode1 = null, TerminalNode buyNode2 = null, TerminalNode itemInfo = null, int price = -1) { this.unlockable = unlockable; this.buyNode1 = buyNode1; this.buyNode2 = buyNode2; this.itemInfo = itemInfo; this.price = price; } } [CompilerGenerated] private static class <>O { public static hook_Awake <0>__StartOfRound_Awake; public static hook_Awake <1>__Terminal_Awake; public static hook_TextPostProcess <2>__Terminal_TextPostProcess; } public static List<RegisteredUnlockable> registeredUnlockables = new List<RegisteredUnlockable>(); public static void Init() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown //IL_0053: 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_005e: Expected O, but got Unknown object obj = <>O.<0>__StartOfRound_Awake; if (obj == null) { hook_Awake val = StartOfRound_Awake; <>O.<0>__StartOfRound_Awake = val; obj = (object)val; } StartOfRound.Awake += (hook_Awake)obj; object obj2 = <>O.<1>__Terminal_Awake; if (obj2 == null) { hook_Awake val2 = Terminal_Awake; <>O.<1>__Terminal_Awake = val2; obj2 = (object)val2; } Terminal.Awake += (hook_Awake)obj2; object obj3 = <>O.<2>__Terminal_TextPostProcess; if (obj3 == null) { hook_TextPostProcess val3 = Terminal_TextPostProcess; <>O.<2>__Terminal_TextPostProcess = val3; obj3 = (object)val3; } Terminal.TextPostProcess += (hook_TextPostProcess)obj3; } private static string Terminal_TextPostProcess(orig_TextPostProcess orig, Terminal self, string modifiedDisplayText, TerminalNode node) { if (modifiedDisplayText.Contains("[buyableItemsList]") && modifiedDisplayText.Contains("[unlockablesSelectionList]")) { int num = modifiedDisplayText.IndexOf(":"); foreach (RegisteredUnlockable registeredUnlockable in registeredUnlockables) { if (registeredUnlockable.StoreType == StoreType.ShipUpgrade) { string unlockableName = registeredUnlockable.unlockable.unlockableName; int price = registeredUnlockable.price; string value = $"\n* {unlockableName} // Price: ${price}"; modifiedDisplayText = modifiedDisplayText.Insert(num + 1, value); } } } return orig.Invoke(self, modifiedDisplayText, node); } private static void Terminal_Awake(orig_Awake orig, Terminal self) { //IL_0376: Unknown result type (might be due to invalid IL or missing references) //IL_037b: Unknown result type (might be due to invalid IL or missing references) //IL_03b0: Unknown result type (might be due to invalid IL or missing references) //IL_03b9: Expected O, but got Unknown //IL_03bb: Unknown result type (might be due to invalid IL or missing references) //IL_03c0: Unknown result type (might be due to invalid IL or missing references) //IL_03f5: Unknown result type (might be due to invalid IL or missing references) //IL_03fd: Expected O, but got Unknown //IL_0484: Unknown result type (might be due to invalid IL or missing references) //IL_0489: Unknown result type (might be due to invalid IL or missing references) //IL_0496: Unknown result type (might be due to invalid IL or missing references) //IL_04a3: Expected O, but got Unknown //IL_0537: Unknown result type (might be due to invalid IL or missing references) //IL_053c: Unknown result type (might be due to invalid IL or missing references) //IL_0549: Unknown result type (might be due to invalid IL or missing references) //IL_0556: Expected O, but got Unknown orig.Invoke(self); TerminalKeyword val = self.terminalNodes.allKeywords.First((TerminalKeyword keyword) => keyword.word == "buy"); TerminalNode result = val.compatibleNouns[0].result.terminalOptions[1].result; TerminalKeyword val2 = self.terminalNodes.allKeywords.First((TerminalKeyword keyword) => keyword.word == "info"); List<RegisteredUnlockable> list = registeredUnlockables.FindAll((RegisteredUnlockable unlockable) => unlockable.price != -1).ToList(); Plugin.logger.LogInfo((object)$"Adding {list.Count} items to terminal"); foreach (RegisteredUnlockable item in list) { string unlockableName = item.unlockable.unlockableName; TerminalKeyword keyword3 = TerminalUtils.CreateTerminalKeyword(unlockableName.ToLowerInvariant().Replace(" ", "-"), isVerb: false, null, null, val); if (self.terminalNodes.allKeywords.Any((TerminalKeyword kw) => kw.word == keyword3.word)) { Plugin.logger.LogInfo((object)("Keyword " + keyword3.word + " already registed, skipping.")); continue; } int shipUnlockableID = StartOfRound.Instance.unlockablesList.unlockables.FindIndex((UnlockableItem unlockable) => unlockable.unlockableName == item.unlockable.unlockableName); if (item.price == -1 && (Object)(object)item.buyNode1 != (Object)null) { item.price = item.buyNode1.itemCost; } char c = unlockableName[unlockableName.Length - 1]; string text = unlockableName; TerminalNode val3 = item.buyNode2; if ((Object)(object)val3 == (Object)null) { val3 = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val3).name = unlockableName.Replace(" ", "-") + "BuyNode2"; val3.displayText = "Ordered [variableAmount] " + text + ". Your new balance is [playerCredits].\n\nOur contractors enjoy fast, free shipping while on the job! Any purchased items will arrive hourly at your approximate location.\r\n\r\n"; val3.clearPreviousText = true; val3.maxCharactersToType = 15; } val3.buyItemIndex = -1; val3.shipUnlockableID = shipUnlockableID; val3.buyUnlockable = true; val3.creatureName = unlockableName; val3.isConfirmationNode = false; val3.itemCost = item.price; val3.playSyncedClip = 0; TerminalNode val4 = item.buyNode1; if ((Object)(object)val4 == (Object)null) { val4 = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val4).name = unlockableName.Replace(" ", "-") + "BuyNode1"; val4.displayText = "You have requested to order " + text + ". Amount: [variableAmount].\nTotal cost of items: [totalCost].\n\nPlease CONFIRM or DENY.\r\n\r\n"; val4.clearPreviousText = true; val4.maxCharactersToType = 35; } val4.buyItemIndex = -1; val4.shipUnlockableID = shipUnlockableID; val4.creatureName = unlockableName; val4.isConfirmationNode = true; val4.overrideOptions = true; val4.itemCost = item.price; val4.terminalOptions = (CompatibleNoun[])(object)new CompatibleNoun[2] { new CompatibleNoun { noun = self.terminalNodes.allKeywords.First((TerminalKeyword keyword2) => keyword2.word == "confirm"), result = val3 }, new CompatibleNoun { noun = self.terminalNodes.allKeywords.First((TerminalKeyword keyword2) => keyword2.word == "deny"), result = result } }; if (item.StoreType == StoreType.Decor) { item.unlockable.shopSelectionNode = val4; } else { item.unlockable.shopSelectionNode = null; } List<TerminalKeyword> list2 = self.terminalNodes.allKeywords.ToList(); list2.Add(keyword3); self.terminalNodes.allKeywords = list2.ToArray(); List<CompatibleNoun> list3 = val.compatibleNouns.ToList(); list3.Add(new CompatibleNoun { noun = keyword3, result = val4 }); val.compatibleNouns = list3.ToArray(); TerminalNode val5 = item.itemInfo; if ((Object)(object)val5 == (Object)null) { val5 = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val5).name = unlockableName.Replace(" ", "-") + "InfoNode"; val5.displayText = "[No information about this object was found.]\n\n"; val5.clearPreviousText = true; val5.maxCharactersToType = 25; } self.terminalNodes.allKeywords = list2.ToArray(); List<CompatibleNoun> list4 = val2.compatibleNouns.ToList(); list4.Add(new CompatibleNoun { noun = keyword3, result = val5 }); val2.compatibleNouns = list4.ToArray(); Plugin.logger.LogInfo((object)(item.modName + " registered item: " + item.unlockable.unlockableName)); } orig.Invoke(self); } private static void StartOfRound_Awake(orig_Awake orig, StartOfRound self) { orig.Invoke(self); Plugin.logger.LogInfo((object)$"Adding {registeredUnlockables.Count} unlockables to unlockables list"); foreach (RegisteredUnlockable unlockable in registeredUnlockables) { if (self.unlockablesList.unlockables.Any((UnlockableItem x) => x.unlockableName == unlockable.unlockable.unlockableName)) { Plugin.logger.LogInfo((object)("Unlockable " + unlockable.unlockable.unlockableName + " already exists in unlockables list, skipping")); continue; } if ((Object)(object)unlockable.unlockable.prefabObject != (Object)null) { PlaceableShipObject componentInChildren = unlockable.unlockable.prefabObject.GetComponentInChildren<PlaceableShipObject>(); if ((Object)(object)componentInChildren != (Object)null) { componentInChildren.unlockableID = self.unlockablesList.unlockables.Count; } } self.unlockablesList.unlockables.Add(unlockable.unlockable); } } public static void RegisterUnlockable(UnlockableItemDef unlockable, int price = -1, StoreType storeType = StoreType.None) { RegisterUnlockable(unlockable.unlockable, storeType, null, null, null, price); } public static void RegisterUnlockable(UnlockableItem unlockable, int price = -1, StoreType storeType = StoreType.None) { RegisterUnlockable(unlockable, storeType, null, null, null, price); } public static void RegisterUnlockable(UnlockableItemDef unlockable, StoreType storeType = StoreType.None, TerminalNode buyNode1 = null, TerminalNode buyNode2 = null, TerminalNode itemInfo = null, int price = -1) { RegisterUnlockable(unlockable.unlockable, storeType, buyNode1, buyNode2, itemInfo, price); } public static void RegisterUnlockable(UnlockableItem unlockable, StoreType storeType = StoreType.None, TerminalNode buyNode1 = null, TerminalNode buyNode2 = null, TerminalNode itemInfo = null, int price = -1) { RegisteredUnlockable registeredUnlockable = new RegisteredUnlockable(unlockable, buyNode1, buyNode2, itemInfo, price); Assembly callingAssembly = Assembly.GetCallingAssembly(); string name = callingAssembly.GetName().Name; registeredUnlockable.modName = name; registeredUnlockable.StoreType = storeType; registeredUnlockables.Add(registeredUnlockable); } } } namespace LethalLib.Extras { [CreateAssetMenu(menuName = "ScriptableObjects/UnlockableItem")] public class UnlockableItemDef : ScriptableObject { public StoreType storeType = StoreType.None; public UnlockableItem unlockable; } }
plugins/femboytv-LethalPosters/LethalPosters.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.7", FrameworkDisplayName = ".NET Framework 4.7")] [assembly: AssemblyCompany("LethalPosters")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("LethalCopmany posters API")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("LethalPosters")] [assembly: AssemblyTitle("LethalPosters")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace LethalPosters; internal class Patches { private static ManualLogSource Logger { get; set; } public static void Init(ManualLogSource logger) { Logger = logger; } [HarmonyPatch(typeof(StartOfRound), "Start")] [HarmonyPostfix] private static void StartPatch() { Logger.LogInfo((object)"Patching Start in StartOfRound"); UpdateMaterials(0); } [HarmonyPatch(typeof(RoundManager), "GenerateNewLevelClientRpc")] [HarmonyPostfix] private static void GenerateNewLevelClientRpcPatch(int randomSeed) { Logger.LogInfo((object)"Patching GenerateNewLevelClientRpc in RoundManager"); UpdateMaterials(randomSeed); } private static void UpdateMaterials(int seed) { Logger.LogInfo((object)"Patching the textures"); Plugin.Rand = new Random(seed); Material[] materials = ((Renderer)GameObject.Find("HangarShip/Plane.001").GetComponent<MeshRenderer>()).materials; UpdateTexture(Plugin.PosterFiles, materials[0]); UpdateTexture(Plugin.TipFiles, materials[1]); } private static void UpdateTexture(IReadOnlyList<string> files, Material material) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown if (files.Count != 0) { int index = Plugin.Rand.Next(files.Count); Texture2D val = new Texture2D(2, 2); Logger.LogInfo((object)("Patching " + ((Object)material).name + " with " + files[index])); ImageConversion.LoadImage(val, File.ReadAllBytes(files[index])); material.mainTexture = (Texture)(object)val; } } } [BepInPlugin("LethalPosters", "LethalPosters", "1.0.0")] public class Plugin : BaseUnityPlugin { public static List<string> PosterFolders = new List<string>(); public static readonly List<string> PosterFiles = new List<string>(); public static readonly List<string> TipFiles = new List<string>(); public static Random Rand = new Random(); private void Awake() { //IL_00e4: Unknown result type (might be due to invalid IL or missing references) PosterFolders = Directory.GetDirectories(Paths.PluginPath, "LethalPosters", SearchOption.AllDirectories).ToList(); foreach (string posterFolder in PosterFolders) { string[] files = Directory.GetFiles(Path.Combine(posterFolder, "posters")); foreach (string text in files) { if (Path.GetExtension(text) != ".old") { PosterFiles.Add(text); } } files = Directory.GetFiles(Path.Combine(posterFolder, "tips")); foreach (string text2 in files) { if (Path.GetExtension(text2) != ".old") { TipFiles.Add(text2); } } } Patches.Init(((BaseUnityPlugin)this).Logger); new Harmony("LethalPosters").PatchAll(typeof(Patches)); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin LethalPosters (1.0.0) is loaded!"); } } public static class PluginInfo { public const string PLUGIN_GUID = "LethalPosters"; public const string PLUGIN_NAME = "LethalPosters"; public const string PLUGIN_VERSION = "1.0.0"; }
plugins/FlipMods-FasterItemDropship/FasterItemDropship.dll
Decompiled 2 years agousing System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("FasterItemDropship")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("Mod made by flipf17")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("FasterItemDropship")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("a5a250fd-b706-48b9-9be9-da360fd939dc")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace FasterItemDropship { public static class ConfigSettings { public static ConfigEntry<int> dropshipDeliveryTime; public static ConfigEntry<int> dropshipMaxStayDuration; public static ConfigEntry<int> dropshipLeaveAfterSecondsOpenDoors; public static void BindConfigSettings() { Plugin.Log("BindingConfigs"); dropshipDeliveryTime = ((BaseUnityPlugin)Plugin.instance).Config.Bind<int>("FasterItemDropship", "DeliveryTime", 10, "How long it takes (in seconds) for the item dropship to arrive."); dropshipMaxStayDuration = ((BaseUnityPlugin)Plugin.instance).Config.Bind<int>("FasterItemDropship", "MaxLandDuration", 40, "The max duration (in seconds) the item dropship will stay."); dropshipLeaveAfterSecondsOpenDoors = ((BaseUnityPlugin)Plugin.instance).Config.Bind<int>("FasterItemDropship", "LeaveAfterSecondsOpenDoors", 3, "How long (in seconds) the item dropship will stay for after opening its doors."); } } [BepInPlugin("FlipMods.FasterItemDropship", "FasterItemDropship", "1.2.0")] public class Plugin : BaseUnityPlugin { private Harmony _harmony; public static Plugin instance; private void Awake() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown instance = this; ConfigSettings.BindConfigSettings(); _harmony = new Harmony("FasterItemDropship"); _harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"FasterItemDropship loaded"); } public static void Log(string message) { ((BaseUnityPlugin)instance).Logger.LogInfo((object)message); } } public static class PluginInfo { public const string PLUGIN_GUID = "FlipMods.FasterItemDropship"; public const string PLUGIN_NAME = "FasterItemDropship"; public const string PLUGIN_VERSION = "1.2.0"; } } namespace FasterItemDropship.Patches { [HarmonyPatch] internal class FasterItemDropshipPatcher { private static Terminal terminalScript; private static StartOfRound playersManager; private static List<int> itemsToDeliver; private static List<int> orderedItemsFromTerminal; [HarmonyPatch(typeof(ItemDropship), "Start")] [HarmonyPrefix] public static void InitializeDropship(ItemDropship __instance) { playersManager = Object.FindObjectOfType<StartOfRound>(); terminalScript = Object.FindObjectOfType<Terminal>(); itemsToDeliver = (List<int>)Traverse.Create((object)__instance).Field("itemsToDeliver").GetValue(); } [HarmonyPatch(typeof(Terminal), "Start")] [HarmonyPrefix] public static void InitializeTerminal(Terminal __instance) { orderedItemsFromTerminal = __instance.orderedItemsFromTerminal; } [HarmonyPatch(typeof(ItemDropship), "Update")] [HarmonyPrefix] public static void DropshipUpdate(ItemDropship __instance) { if (((NetworkBehaviour)__instance).IsServer && !__instance.deliveringOrder && terminalScript.orderedItemsFromTerminal.Count > 0 && !playersManager.shipHasLanded) { __instance.shipTimer += Time.deltaTime; } } [HarmonyPatch(typeof(ItemDropship), "Update")] private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldc_R4) { if ((float)list[i].operand == 20f) { list[i].operand = (float)ConfigSettings.dropshipMaxStayDuration.Value; } else if ((float)list[i].operand == 40f) { list[i].operand = (float)(ConfigSettings.dropshipMaxStayDuration.Value + ConfigSettings.dropshipDeliveryTime.Value); } else if ((float)list[i].operand == 30f) { list[i].operand = (float)ConfigSettings.dropshipMaxStayDuration.Value; break; } } } return list.AsEnumerable(); } [HarmonyPatch(typeof(ItemDropship), "OpenShipDoorsOnServer")] [HarmonyPostfix] public static void OnOpenShipDoors(ItemDropship __instance) { if (((NetworkBehaviour)__instance).IsServer) { __instance.shipTimer = Mathf.Max(__instance.shipTimer, (float)(ConfigSettings.dropshipMaxStayDuration.Value - ConfigSettings.dropshipLeaveAfterSecondsOpenDoors.Value)); } } [HarmonyPatch(typeof(ItemDropship), "ShipLandedAnimationEvent")] [HarmonyPrefix] public static void AddLateItemsServer(ItemDropship __instance) { if (((NetworkBehaviour)__instance).IsServer && __instance.shipLanded && !__instance.shipDoorsOpened) { while (orderedItemsFromTerminal.Count > 0 && itemsToDeliver.Count < 12) { itemsToDeliver.Add(orderedItemsFromTerminal[0]); orderedItemsFromTerminal.RemoveAt(0); } } } } }
plugins/FlipMods-LetMeLookDown/LetMeLookDown.dll
Decompiled 2 years agousing System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using GameNetcodeStuff; using HarmonyLib; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("LetMeLookDown")] [assembly: AssemblyDescription("Mod made by flipf17")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("LetMeLookDown")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("a9c88d54-8f01-44a7-be0d-bd61d38aadcb")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace LetMeLookDown { [BepInPlugin("FlipMods.LetMeLookDown", "LetMeLookDown", "1.0.1")] public class Plugin : BaseUnityPlugin { private Harmony _harmony; private static Plugin instance; public static float maxAngle = 80f; private void Awake() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown _harmony = new Harmony("LetMeLookDown"); _harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"LetMeLookDown mod loaded"); instance = this; } public static void Log(string message) { ((BaseUnityPlugin)instance).Logger.LogInfo((object)message); } } public static class PluginInfo { public const string PLUGIN_GUID = "FlipMods.LetMeLookDown"; public const string PLUGIN_NAME = "LetMeLookDown"; public const string PLUGIN_VERSION = "1.0.1"; } } namespace LetMeLookDown.Patches { [HarmonyPatch] internal class AdjustSmoothLookingPatcher { [HarmonyPatch(typeof(PlayerControllerB), "CalculateSmoothLookingInput")] private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldc_R4 && (float)list[i].operand == 60f) { list[i].operand = Plugin.maxAngle; break; } } return list.AsEnumerable(); } } [HarmonyPatch] internal class AdjustNormalLookingPatcher { [HarmonyPatch(typeof(PlayerControllerB), "CalculateNormalLookingInput")] private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldc_R4 && (float)list[i].operand == 60f) { list[i].operand = Plugin.maxAngle; break; } } return list.AsEnumerable(); } } }
plugins/FlipMods-MoreBlood/MoreBlood.dll
Decompiled 2 years agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using GameNetcodeStuff; using HarmonyLib; using MoreBlood.Config; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("MoreBlood")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("MoreBlood")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("d1f1321d-30a3-4600-9bf8-1e69fe1abf8c")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace MoreBlood { [BepInPlugin("FlipMods.MoreBlood", "MoreBlood", "1.0.2")] public class Plugin : BaseUnityPlugin { public static Plugin instance; private Harmony _harmony; private void Awake() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown instance = this; _harmony = new Harmony("MoreBlood"); ConfigSettings.BindConfigSettings(); _harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"MoreBlood loaded"); } public static void Log(string message) { ((BaseUnityPlugin)instance).Logger.LogInfo((object)message); } } public static class PluginInfo { public const string PLUGIN_GUID = "FlipMods.MoreBlood"; public const string PLUGIN_NAME = "MoreBlood"; public const string PLUGIN_VERSION = "1.0.2"; } } namespace MoreBlood.Patches { [HarmonyPatch(typeof(PlayerControllerB))] internal class MoreBloodPatcher { private static int bloodCount; [HarmonyPatch("DropBlood")] [HarmonyPostfix] public static void MoreBlood(PlayerControllerB __instance, Vector3 direction = default(Vector3), bool leaveBlood = true, bool leaveFootprint = false) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) bloodCount++; if (bloodCount < ConfigSettings.numBloodPools.Value) { __instance.DropBlood(direction, leaveBlood, leaveFootprint); } else { bloodCount = 0; } } [HarmonyPatch("RandomizeBloodRotationAndScale")] [HarmonyPostfix] public static void RandomizeBloodScale(ref Transform blood, PlayerControllerB __instance) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0013: 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_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) Transform obj = blood; obj.localScale *= ConfigSettings.bloodScale.Value; blood.position += new Vector3((float)Random.Range(-1, 1) * ConfigSettings.bloodScale.Value, 0.55f, (float)Random.Range(-1, 1) * ConfigSettings.bloodScale.Value); } } } namespace MoreBlood.Config { public static class ConfigSettings { public static ConfigEntry<float> bloodScale; public static ConfigEntry<int> numBloodPools; public static void BindConfigSettings() { Plugin.Log("BindingConfigs"); bloodScale = ((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("MoreBlood", "BloodScale", 4f, "The size of the blood pools"); numBloodPools = ((BaseUnityPlugin)Plugin.instance).Config.Bind<int>("MoreBlood", "NumberOfBloodPools", 4, "Max number of blood pools spread around the blood source."); } } }
plugins/FlipMods-ObjectVolumeController/ObjectVolumeController.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using GameNetcodeStuff; using HarmonyLib; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("ObjectVolumeController")] [assembly: AssemblyDescription("Mod made by flipf17")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ObjectVolumeController")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("49ff2710-6c88-48c4-989a-32b79f0ddd6a")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace ObjectVolumeController { [BepInPlugin("FlipMods.ObjectVolumeController", "ObjectVolumeController", "1.0.2")] public class Plugin : BaseUnityPlugin { public static Plugin instance; private Harmony _harmony; public static Key volumeUpKey = (Key)14; public static Key volumeDownKey = (Key)13; public static string volumeHoverTip = "Volume up: [+]\nVolume down: [-]"; public static float volumeIncrement = 0.1f; public static float maxDisplayedVolume = 1.5f; public static float defaultVolume = 1f; private void Awake() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown _harmony = new Harmony("ObjectVolumeController"); _harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"ObjectVolumeController loaded"); instance = this; } public static void Log(string message) { ((BaseUnityPlugin)instance).Logger.LogInfo((object)message); } } public static class PluginInfo { public const string PLUGIN_GUID = "FlipMods.ObjectVolumeController"; public const string PLUGIN_NAME = "ObjectVolumeController"; public const string PLUGIN_VERSION = "1.0.2"; } } namespace ObjectVolumeController.Patcher { [HarmonyPatch] internal class ChangeVolumePatcher { private static AudioPlayerItemType boomboxItems = new AudioPlayerItemType("Boomboxes", "Grab boombox: [E]"); private static AudioPlayerPlaceableType recordPlayers = new AudioPlayerPlaceableType("Record players", "Record player: [E]"); private static AudioPlayerPlaceableType televisions = new AudioPlayerPlaceableType("Televisions", "Television: [E]"); [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPrefix] public static void GetObjectLookingAt(PlayerControllerB __instance) { boomboxItems.lookingAtDeviceType = false; recordPlayers.lookingAtDeviceType = false; televisions.lookingAtDeviceType = false; if (!((NetworkBehaviour)__instance).IsOwner || !__instance.isPlayerControlled || __instance.inTerminalMenu || __instance.isTypingChat || __instance.isPlayerDead) { return; } InteractTrigger hoveringOverTrigger = __instance.hoveringOverTrigger; object obj; if (hoveringOverTrigger == null) { obj = null; } else { Transform parent = ((Component)hoveringOverTrigger).transform.parent; obj = ((parent != null) ? ((Component)parent).gameObject : null); } GameObject val = (GameObject)obj; if ((Object)(object)val != (Object)null) { if (((Object)val).name.Contains("RecordPlayer")) { recordPlayers.lookingAtDeviceType = true; } else if (((Object)val).name.Contains("Television")) { televisions.lookingAtDeviceType = true; } } if (!recordPlayers.lookingAtDeviceType && !televisions.lookingAtDeviceType) { if ((Object)(object)__instance.cursorTip != (Object)null && ((TMP_Text)__instance.cursorTip).text.Contains(boomboxItems.originalHoverTip)) { boomboxItems.lookingAtDeviceType = true; } else if ((Object)(object)__instance.currentlyHeldObjectServer != (Object)null && __instance.currentlyHeldObjectServer is BoomboxItem) { boomboxItems.lookingAtDeviceType = true; } } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] public static void GetVolumeInput(PlayerControllerB __instance) { if (!((NetworkBehaviour)__instance).IsOwner || !__instance.isPlayerControlled || __instance.inTerminalMenu || __instance.isTypingChat || __instance.isPlayerDead || (!boomboxItems.lookingAtDeviceType && !recordPlayers.lookingAtDeviceType && !televisions.lookingAtDeviceType)) { return; } float num = 0f; if (((ButtonControl)Keyboard.current.minusKey).wasPressedThisFrame) { num = 0f - Plugin.volumeIncrement; } if (((ButtonControl)Keyboard.current.equalsKey).wasPressedThisFrame) { num = Plugin.volumeIncrement; } if (num != 0f) { Plugin.Log("AdjustVolume: " + num); AudioPlayerTypeBase audioPlayerTypeBase = null; if (boomboxItems.lookingAtDeviceType) { audioPlayerTypeBase = boomboxItems; } else if (recordPlayers.lookingAtDeviceType) { audioPlayerTypeBase = recordPlayers; } else if (televisions.lookingAtDeviceType) { audioPlayerTypeBase = televisions; } if (audioPlayerTypeBase != null) { audioPlayerTypeBase.currentVolume = Mathf.Clamp(audioPlayerTypeBase.currentVolume + num, 0f, Plugin.maxDisplayedVolume); audioPlayerTypeBase.UpdateVolumes(); audioPlayerTypeBase.UpdateTooltips(); Plugin.Log($"[{audioPlayerTypeBase.name}] Updating volume to: {audioPlayerTypeBase.currentVolume}%"); } } } [HarmonyPatch(typeof(BoomboxItem), "Start")] [HarmonyPostfix] public static void SetBoomboxHoverTip(BoomboxItem __instance) { boomboxItems.audioSources.Add(__instance.boomboxAudio); boomboxItems.items.Add((GrabbableObject)(object)__instance); ((GrabbableObject)__instance).itemProperties.canBeGrabbedBeforeGameStart = true; if (boomboxItems.defaultVolume == 0f) { boomboxItems.defaultVolume = __instance.boomboxAudio.volume; Plugin.Log("Boombox volume: " + boomboxItems.defaultVolume); } if (boomboxItems.controlTooltips == null) { boomboxItems.controlTooltips = new List<string>(((GrabbableObject)__instance).itemProperties.toolTips); boomboxItems.controlTooltips.Add(""); } boomboxItems.UpdateTooltips(); boomboxItems.UpdateVolumes(); } [HarmonyPatch(typeof(AutoParentToShip), "Awake")] [HarmonyPostfix] public static void SetRecordPlayerHoverTip(AutoParentToShip __instance) { if (((Object)__instance).name.Contains("RecordPlayerContainer")) { AudioSource val = ((Component)__instance).GetComponentInChildren<AnimatedObjectTrigger>()?.thisAudioSource; if ((Object)(object)val != (Object)null) { recordPlayers.audioSources.Add(val); } InteractTrigger componentInChildren = ((Component)__instance).GetComponentInChildren<InteractTrigger>(); if (recordPlayers.defaultVolume == 0f) { recordPlayers.defaultVolume = val.volume; Plugin.Log("RecordPlayer Volume: " + recordPlayers.defaultVolume); } if ((Object)(object)componentInChildren == (Object)null) { Plugin.Log("Record player trigger missing!"); return; } recordPlayers.triggers.Add(componentInChildren); recordPlayers.UpdateTooltips(); recordPlayers.UpdateVolumes(); } } [HarmonyPatch(typeof(TVScript), "__initializeVariables")] [HarmonyPostfix] public static void SetTelevisionHoverTip(TVScript __instance) { televisions.audioSources.Add(__instance.tvSFX); Transform parent = ((Component)__instance).transform.parent; InteractTrigger val = ((parent != null) ? ((Component)parent).GetComponentInChildren<InteractTrigger>() : null); if (televisions.defaultVolume == 0f) { televisions.defaultVolume = __instance.tvSFX.volume; Plugin.Log("Television volume: " + televisions.defaultVolume); } if ((Object)(object)val == (Object)null) { Plugin.Log("Television trigger missing!"); return; } televisions.triggers.Add(val); televisions.UpdateTooltips(); televisions.UpdateVolumes(); } } internal abstract class AudioPlayerTypeBase { public string name; public List<AudioSource> audioSources; public string originalHoverTip; public float defaultVolume; public float currentVolume; public bool lookingAtDeviceType; public Type objectType; public AudioPlayerTypeBase(string name, string originalHoverTip = "", float defaultVolume = 0f) { this.name = name; audioSources = new List<AudioSource>(); this.originalHoverTip = originalHoverTip; this.defaultVolume = defaultVolume; currentVolume = Plugin.defaultVolume; lookingAtDeviceType = false; } public void UpdateVolumes() { for (int i = 0; i < audioSources.Count; i++) { if ((Object)(object)audioSources[i] != (Object)null) { audioSources[i].volume = currentVolume / Plugin.maxDisplayedVolume; } } } public abstract void UpdateTooltips(); } internal class AudioPlayerItemType : AudioPlayerTypeBase { public List<GrabbableObject> items; public List<string> controlTooltips; public AudioPlayerItemType(string name, string originalHoverTip = "", float defaultVolume = 0f) : base(name, originalHoverTip, defaultVolume) { items = new List<GrabbableObject>(); } public override void UpdateTooltips() { for (int i = 0; i < items.Count; i++) { if ((Object)(object)items[i] != (Object)null) { items[i].customGrabTooltip = $"{originalHoverTip}\n{Mathf.RoundToInt(currentVolume * 10f) * 10}% volume\n{Plugin.volumeHoverTip}"; controlTooltips[controlTooltips.Count - 1] = items[i].customGrabTooltip.Replace(originalHoverTip + "\n", ""); items[i].itemProperties.toolTips = controlTooltips.ToArray(); } } PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController; if ((Object)(object)localPlayerController != (Object)null && (Object)(object)localPlayerController.currentlyHeldObjectServer != (Object)null && items.Contains(localPlayerController.currentlyHeldObjectServer)) { localPlayerController.currentlyHeldObjectServer.EquipItem(); } } } internal class AudioPlayerPlaceableType : AudioPlayerTypeBase { public List<InteractTrigger> triggers; public AudioPlayerPlaceableType(string name, string originalHoverTip = "", float defaultVolume = 0f) : base(name, originalHoverTip, defaultVolume) { triggers = new List<InteractTrigger>(); } public override void UpdateTooltips() { for (int i = 0; i < triggers.Count; i++) { if ((Object)(object)triggers[i] != (Object)null) { triggers[i].hoverTip = $"{originalHoverTip}\n{Mathf.RoundToInt(currentVolume * 10f) * 10}% volume\n{Plugin.volumeHoverTip}"; } } } } }
plugins/FlipMods-ReservedFlashlightSlot/ReservedFlashlightSlot.dll
Decompiled 2 years agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using GameNetcodeStuff; using HarmonyLib; using ReservedItemSlotCore; using ReservedItemSlotCore.Patches; using Unity.Netcode; using UnityEngine; using UnityEngine.InputSystem; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("ReservedFlashlightSlot")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ReservedFlashlightSlot")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("5b7d6563-4e51-4a69-bcf9-fa1dea6eff75")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace ReservedFlashlightSlot { [BepInPlugin("FlipMods.ReservedFlashlightSlot", "ReservedFlashlightSlot", "1.0.0")] public class Plugin : BaseUnityPlugin { private Harmony _harmony; private static Plugin instance; public static ReservedItemInfo proFlashlightInfo = new ReservedItemInfo("Pro-flashlight", 120, true, true, true, true); public static ReservedItemInfo flashlightInfo = new ReservedItemInfo("Flashlight", 120, true, true, true, true); private void Awake() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown _harmony = new Harmony("ReservedFlashlightSlot"); _harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"ReservedFlashlightSlot loaded"); instance = this; } public static void Log(string message) { ((BaseUnityPlugin)instance).Logger.LogInfo((object)message); } } public static class PluginInfo { public const string PLUGIN_GUID = "FlipMods.ReservedFlashlightSlot"; public const string PLUGIN_NAME = "ReservedFlashlightSlot"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace ReservedFlashlightSlot.Patches { [HarmonyPatch] public class ReservedFlashlightSlotPatcher { private static InputAction activateFlashlightAction; private static PlayerControllerB localPlayerController => ReservedItemSlotCorePatcher.localPlayerController; private static FlashlightItem heldFlashlight { get { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown PlayerControllerB obj = localPlayerController; return (FlashlightItem)((obj != null) ? obj.ItemSlots[Plugin.flashlightInfo.reservedItemIndex] : null); } } [HarmonyPatch(typeof(FlashlightItem), "__initializeVariables")] [HarmonyPostfix] public static void EditTooltips(FlashlightItem __instance) { ((GrabbableObject)__instance).itemProperties.toolTips[((GrabbableObject)__instance).itemProperties.toolTips.Length - 1] += " [F]"; } [HarmonyPatch(typeof(PlayerControllerB), "Awake")] [HarmonyPostfix] public static void Initialize() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown activateFlashlightAction = new InputAction((string)null, (InputActionType)0, "<Keyboard>/f", "Press", (string)null, (string)null); } [HarmonyPatch(typeof(PlayerControllerB), "OnEnable")] [HarmonyPostfix] public static void OnEnable() { activateFlashlightAction.Enable(); activateFlashlightAction.performed += OnActivateFlashlightPerformed; } [HarmonyPatch(typeof(PlayerControllerB), "OnDisable")] [HarmonyPostfix] public static void OnDisable() { activateFlashlightAction.performed -= OnActivateFlashlightPerformed; activateFlashlightAction.Disable(); } private static void OnActivateFlashlightPerformed(CallbackContext context) { if ((Object)(object)localPlayerController == (Object)null || !((NetworkBehaviour)localPlayerController).IsOwner || !localPlayerController.isPlayerControlled || (((NetworkBehaviour)localPlayerController).IsServer && !localPlayerController.isHostPlayerObject) || !((CallbackContext)(ref context)).performed || (Object)(object)heldFlashlight == (Object)null) { return; } float num = (float)Traverse.Create((object)localPlayerController).Field("timeSinceSwitchingSlots").GetValue(); if (!(num < 0.075f)) { ((GrabbableObject)heldFlashlight).UseItemOnClient(true); if (!((GrabbableObject)heldFlashlight).isBeingUsed) { heldFlashlight.SwitchFlashlight(false); } else if (localPlayerController.currentItemSlot != Plugin.flashlightInfo.reservedItemIndex) { ((GrabbableObject)heldFlashlight).PocketItem(); } Traverse.Create((object)localPlayerController).Field("timeSinceSwitchingSlots").SetValue((object)0); } } } }
plugins/FlipMods-ReservedItemSlotCore/ReservedItemSlotCore.dll
Decompiled 2 years agousing System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using GameNetcodeStuff; using HarmonyLib; using Unity.Netcode; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("ReservedItemSlotCore")] [assembly: AssemblyDescription("Mod made by flipf17")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ReservedItemSlotCore")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("238ce080-e339-46b6-9b08-992a950453a1")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace ReservedItemSlotCore { [BepInPlugin("FlipMods.ReservedItemSlotCore", "ReservedItemSlotCore", "1.0.0")] public class Plugin : BaseUnityPlugin { private Harmony _harmony; private static Plugin instance; public static Dictionary<string, ReservedItemInfo> reservedItemsDict => ReservedItemInfo.reservedItemsDict; public static List<ReservedItemInfo> reservedItemsList => ReservedItemInfo.reservedItemsList; public static int numReservedItemSlots => ReservedItemInfo.numReservedItemSlots; private void Awake() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown _harmony = new Harmony("ReservedItemSlotCore"); _harmony.PatchAll(); instance = this; } public static void Log(string message) { ((BaseUnityPlugin)instance).Logger.LogInfo((object)message); } public static bool IsReservedItem(string itemName) { return reservedItemsDict.ContainsKey(itemName); } public static ReservedItemInfo GetReservedItemInfo(string itemName) { return IsReservedItem(itemName) ? reservedItemsDict[itemName] : null; } public static int GetReservedItemHotbarIndex(string itemName) { return IsReservedItem(itemName) ? reservedItemsDict[itemName].reservedItemIndex : (-1); } } public class ReservedItemInfo { public static Dictionary<string, ReservedItemInfo> reservedItemsDict = new Dictionary<string, ReservedItemInfo>(); public static List<ReservedItemInfo> reservedItemsList = new List<ReservedItemInfo>(); public static int numReservedItemSlots = 0; public static int defaultHotbarSlotPriority = 10; public static int currentUndefinedHotbarSlotPriority = 0; public string itemName; public int hotbarSlotPriority; private int undefinedHotbarSlotPriority = -1; public int reservedItemIndex; public bool forceUpdateCanBeGrabbedBeforeGameStart = false; public bool canBeGrabbedBeforeGameStart = false; public bool forceUpdateRequiresBattery = false; public bool requiresBattery = false; public static void SortReservedItemsOnPriority() { reservedItemsList.Sort((ReservedItemInfo item1, ReservedItemInfo item2) => (item2.hotbarSlotPriority != item1.hotbarSlotPriority) ? item2.hotbarSlotPriority.CompareTo(item1.hotbarSlotPriority) : item2.undefinedHotbarSlotPriority.CompareTo(item1.undefinedHotbarSlotPriority)); int num = 0; for (int i = 0; i < reservedItemsList.Count; i++) { if (i > 0 && reservedItemsList[i].hotbarSlotPriority == reservedItemsList[i - 1].hotbarSlotPriority && reservedItemsList[i].undefinedHotbarSlotPriority == reservedItemsList[i - 1].undefinedHotbarSlotPriority) { num++; } reservedItemsList[i].reservedItemIndex = i - num; } numReservedItemSlots = num + 1; } public ReservedItemInfo(string itemName, int hotbarSlotPriority = -1, bool forceUpdateCanBeGrabbedBeforeGameStart = false, bool canBeGrabbedBeforeGameStart = false, bool forceUpdateRequiresBattery = false, bool requiresBattery = false) { this.itemName = itemName; this.forceUpdateCanBeGrabbedBeforeGameStart = forceUpdateCanBeGrabbedBeforeGameStart; this.canBeGrabbedBeforeGameStart = canBeGrabbedBeforeGameStart; this.forceUpdateRequiresBattery = forceUpdateRequiresBattery; this.requiresBattery = requiresBattery; if (hotbarSlotPriority != -1) { this.hotbarSlotPriority = hotbarSlotPriority; } else { this.hotbarSlotPriority = defaultHotbarSlotPriority; undefinedHotbarSlotPriority = ++currentUndefinedHotbarSlotPriority; } if (!reservedItemsDict.ContainsKey(this.itemName)) { reservedItemsDict.Add(this.itemName, this); reservedItemsList.Add(this); } else { Plugin.Log($"Tried to add duplicate item name to the ReservedItems list: {this.itemName}"); } } } public static class PluginInfo { public const string PLUGIN_GUID = "FlipMods.ReservedItemSlotCore"; public const string PLUGIN_NAME = "ReservedItemSlotCore"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace ReservedItemSlotCore.Patches { [HarmonyPatch] public class ReservedItemSlotCorePatcher { public static PlayerControllerB localPlayerController; public static ReservedItemInfo grabbingReservedItem = null; public static int initialItemSlotSize = 4; public static int numUnreservedItemSlots = 4; private static int initialSlotCount; private static CanvasScaler canvasScaler; private static AspectRatioFitter aspectRatioFitter; private static float iconWidth; private static float xPos; private static float iconYPos; [HarmonyPatch(typeof(PlayerControllerB), "ConnectClientToPlayerObject")] [HarmonyPostfix] public static void OnLocalPlayerConnect(PlayerControllerB __instance) { if ((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)(object)__instance) { localPlayerController = __instance; } } [HarmonyPatch(typeof(PlayerControllerB), "Start")] [HarmonyPostfix] public static void AddNewHotbarSlot(PlayerControllerB __instance) { Plugin.Log("OldItemsCount: " + __instance.ItemSlots.Length + " ReservedItemsCount: " + Plugin.reservedItemsList.Count); if (Plugin.reservedItemsList != null && Plugin.reservedItemsList.Count > 0) { __instance.ItemSlots = (GrabbableObject[])(object)new GrabbableObject[__instance.ItemSlots.Length + Plugin.numReservedItemSlots]; } Plugin.Log("NewItemsCount: " + __instance.ItemSlots.Length); } [HarmonyPatch(typeof(PlayerControllerB), "FirstEmptyItemSlot")] [HarmonyPostfix] public static void FirstEmptyItemSlot(ref int __result, PlayerControllerB __instance) { if (grabbingReservedItem != null) { __result = (IsItemSlotEmpty(grabbingReservedItem, __instance) ? grabbingReservedItem.reservedItemIndex : __result); } else { if (__result < numUnreservedItemSlots) { return; } __result = -1; for (int i = 0; i < numUnreservedItemSlots; i++) { if ((Object)(object)__instance.ItemSlots[i] == (Object)null) { __result = i; break; } } } } [HarmonyPatch(typeof(PlayerControllerB), "NextItemSlot")] [HarmonyPostfix] public static void PreventSwitchingToEmptyReservedSlots(bool forward, ref int __result, PlayerControllerB __instance) { if (__result < numUnreservedItemSlots || (Object)(object)__instance.ItemSlots[__result] != (Object)null) { return; } int i = __result; if (forward) { __result = 0; for (; i < __instance.ItemSlots.Length; i++) { if ((Object)(object)__instance.ItemSlots[i] != (Object)null) { __result = i; break; } } return; } __result = numUnreservedItemSlots - 1; while (i >= numUnreservedItemSlots) { if ((Object)(object)__instance.ItemSlots[i] != (Object)null) { __result = i; break; } i--; } } [HarmonyPatch(typeof(PlayerControllerB), "SwitchToItemSlot")] [HarmonyPrefix] public static bool SwitchToReservedItemSlot(int slot, PlayerControllerB __instance, GrabbableObject fillSlotWithItem = null) { if (slot >= numUnreservedItemSlots && (Object)(object)__instance.ItemSlots[slot] == (Object)null && (Object)(object)fillSlotWithItem == (Object)null) { slot = ((slot != __instance.currentItemSlot) ? __instance.currentItemSlot : 0); MethodInfo method = ((object)__instance).GetType().GetMethod("SwitchToItemSlot", BindingFlags.Instance | BindingFlags.NonPublic); method.Invoke(__instance, new object[2] { slot, __instance.ItemSlots[slot] }); return false; } return true; } [HarmonyPatch(typeof(PlayerControllerB), "BeginGrabObject")] [HarmonyPrefix] public static void GrabReservedItemPrefix(PlayerControllerB __instance) { //IL_0018: 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) //IL_0036: Unknown result type (might be due to invalid IL or missing references) grabbingReservedItem = null; Ray val = default(Ray); ((Ray)(ref val))..ctor(((Component)localPlayerController.gameplayCamera).transform.position, ((Component)localPlayerController.gameplayCamera).transform.forward); RaycastHit val2 = default(RaycastHit); if (Physics.Raycast(val, ref val2, localPlayerController.grabDistance, (int)Traverse.Create((object)localPlayerController).Field("interactableObjectsMask").GetValue()) && ((Component)((RaycastHit)(ref val2)).collider).gameObject.layer != 8 && ((Component)((RaycastHit)(ref val2)).collider).tag == "PhysicsProp") { GrabbableObject component = ((Component)((Component)((RaycastHit)(ref val2)).collider).transform).gameObject.GetComponent<GrabbableObject>(); if (!((Object)(object)component == (Object)null)) { grabbingReservedItem = Plugin.GetReservedItemInfo(component.itemProperties.itemName); } } } [HarmonyPatch(typeof(PlayerControllerB), "BeginGrabObject")] [HarmonyPostfix] public static void GrabReservedItemPostfix(PlayerControllerB __instance) { grabbingReservedItem = null; } [HarmonyPatch(typeof(PlayerControllerB), "GrabObjectClientRpc")] [HarmonyPrefix] public static void GrabReservedItemClientRpcPrefix(bool grabValidated, NetworkObjectReference grabbedObject, PlayerControllerB __instance) { grabbingReservedItem = null; NetworkObject val = default(NetworkObject); if (((NetworkObjectReference)(ref grabbedObject)).TryGet(ref val, (NetworkManager)null)) { GrabbableObject componentInChildren = ((Component)val).gameObject.GetComponentInChildren<GrabbableObject>(); grabbingReservedItem = Plugin.GetReservedItemInfo(componentInChildren.itemProperties.itemName); } } [HarmonyPatch(typeof(PlayerControllerB), "GrabObjectClientRpc")] [HarmonyPostfix] public static void GrabReservedItemClientRpcPostfix(bool grabValidated, NetworkObjectReference grabbedObject, PlayerControllerB __instance) { grabbingReservedItem = null; } [HarmonyPatch(typeof(PlayerControllerB), "ThrowObjectClientRpc")] [HarmonyPostfix] public static void OnDropReservedItem(bool droppedInElevator, bool droppedInShipRoom, Vector3 targetFloorPosition, NetworkObjectReference grabbedObject, int floorYRot, PlayerControllerB __instance) { if ((Object)(object)__instance == (Object)(object)localPlayerController && __instance.currentItemSlot >= numUnreservedItemSlots && (Object)(object)__instance.ItemSlots[__instance.currentItemSlot] == (Object)null) { MethodInfo method = ((object)__instance).GetType().GetMethod("SwitchToItemSlot", BindingFlags.Instance | BindingFlags.NonPublic); method.Invoke(__instance, new object[2] { 0, __instance.ItemSlots[0] }); } } public static bool IsItemSlotEmpty(string itemName, PlayerControllerB player = null) { return IsItemSlotEmpty(Plugin.GetReservedItemInfo(itemName), player); } public static bool IsItemSlotEmpty(ReservedItemInfo itemInfo, PlayerControllerB player = null) { if ((Object)(object)player == (Object)null) { player = localPlayerController; } if ((Object)(object)player == (Object)null) { return false; } return itemInfo != null && itemInfo.reservedItemIndex < player.ItemSlots.Length && (Object)(object)player.ItemSlots[itemInfo.reservedItemIndex] == (Object)null; } public static GrabbableObject GetHeldReservedObject(string itemName, PlayerControllerB player = null) { if ((Object)(object)player == (Object)null) { player = localPlayerController; } if ((Object)(object)player == (Object)null) { return null; } int reservedItemHotbarIndex = Plugin.GetReservedItemHotbarIndex(itemName); return (reservedItemHotbarIndex >= 0 && reservedItemHotbarIndex < player.ItemSlots.Length && (Object)(object)player.ItemSlots[reservedItemHotbarIndex] != (Object)null) ? player.ItemSlots[reservedItemHotbarIndex] : null; } [HarmonyPatch(typeof(GrabbableObject), "Start")] [HarmonyPostfix] public static void OnCreateGrabbableObject(GrabbableObject __instance) { ReservedItemInfo reservedItemInfo = Plugin.GetReservedItemInfo(__instance.itemProperties.itemName); if (reservedItemInfo != null) { if (reservedItemInfo.forceUpdateCanBeGrabbedBeforeGameStart) { __instance.itemProperties.canBeGrabbedBeforeGameStart = reservedItemInfo.canBeGrabbedBeforeGameStart; } if (reservedItemInfo.forceUpdateRequiresBattery) { __instance.itemProperties.requiresBattery = reservedItemInfo.requiresBattery; } } } [HarmonyPatch(typeof(HUDManager), "Awake")] [HarmonyPrefix] public static void Initialize(HUDManager __instance) { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) initialSlotCount = __instance.itemSlotIconFrames.Length; initialItemSlotSize = initialSlotCount; canvasScaler = ((Component)__instance.itemSlotIconFrames[0]).GetComponentInParent<CanvasScaler>(); aspectRatioFitter = ((Component)__instance.itemSlotIconFrames[0]).GetComponentInParent<AspectRatioFitter>(); iconWidth = ((Component)__instance.itemSlotIconFrames[0]).GetComponent<RectTransform>().sizeDelta.x; xPos = canvasScaler.referenceResolution.x / 2f / aspectRatioFitter.aspectRatio - iconWidth / 4f; iconYPos = ((Component)__instance.itemSlotIconFrames[0]).GetComponent<RectTransform>().anchoredPosition.y; } [HarmonyPatch(typeof(HUDManager), "Start")] [HarmonyPostfix] public static void AddNewHotbarSlotsHud(HUDManager __instance) { //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) numUnreservedItemSlots = __instance.itemSlotIconFrames.Length; if (Plugin.reservedItemsList.Count <= 0) { return; } int reservedItemIndex = Plugin.reservedItemsList[0].reservedItemIndex; for (int i = 0; i < Plugin.reservedItemsList.Count; i++) { Plugin.reservedItemsList[i].reservedItemIndex = Plugin.reservedItemsList[i].reservedItemIndex - reservedItemIndex + numUnreservedItemSlots; } List<Image> list = new List<Image>(__instance.itemSlotIconFrames); List<Image> list2 = new List<Image>(__instance.itemSlotIcons); float y = ((Component)list[0]).GetComponent<RectTransform>().sizeDelta.y; Vector3 eulerAngles = ((Transform)((Component)list[0]).GetComponent<RectTransform>()).eulerAngles; Vector3 eulerAngles2 = ((Transform)((Component)list2[0]).GetComponent<RectTransform>()).eulerAngles; Plugin.Log($"Adding {ReservedItemInfo.reservedItemsList.Count} Reserved Item slots to the inventory HUD. Previous inventory HUD size: {numUnreservedItemSlots}"); string text = ""; int num = 0; for (int j = 0; j < Plugin.reservedItemsList.Count; j++) { ReservedItemInfo reservedItemInfo = Plugin.reservedItemsList[j]; if (j > 0 && reservedItemInfo.reservedItemIndex == Plugin.reservedItemsList[j - 1].reservedItemIndex) { Plugin.Log($"Reserved Item type [{reservedItemInfo.itemName}] specified the same priority [{reservedItemInfo.hotbarSlotPriority}] as the item of type [{text}]. Item slot will be reserved for both types. Inventory index: {list.Count - 1}"); continue; } text = reservedItemInfo.itemName; Plugin.Log($"Adding Reserved Item slot for item types [{reservedItemInfo.itemName}]. Inventory index: {list.Count}"); float num2 = iconYPos + 1.125f * y * (float)num; Image val = Object.Instantiate<Image>(list[numUnreservedItemSlots - 1], ((Component)list[0]).transform.parent); ((Object)val).name = $"Slot{list.Count} [{reservedItemInfo.itemName}]"; ((Component)val).GetComponent<RectTransform>().anchoredPosition = new Vector2(xPos, num2); ((Transform)((Component)val).GetComponent<RectTransform>()).eulerAngles = eulerAngles; Image component = ((Component)((Component)val).transform.GetChild(0)).GetComponent<Image>(); ((Object)component).name = "Icon"; ((Transform)((Component)component).GetComponent<RectTransform>()).eulerAngles = eulerAngles2; list.Add(val); list2.Add(component); num++; } __instance.itemSlotIcons = list2.ToArray(); __instance.itemSlotIconFrames = list.ToArray(); Plugin.Log($"Finished adding {list.Count - numUnreservedItemSlots} Reserved Item slots in the inventory HUD."); } [HarmonyPatch(typeof(PreInitSceneScript), "Awake")] [HarmonyPrefix] public static void SortReservedItems() { Plugin.Log($"Sorting {ReservedItemInfo.reservedItemsList.Count} Reserved Items on priority."); ReservedItemInfo.SortReservedItemsOnPriority(); } } }
plugins/FyreBytes-LethallyWide/LethallyWide.dll
Decompiled 2 years agousing System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("LC Ultrawide")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("LC Ultrawide")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("c57c79ae-4ad6-4a9f-a590-27d09b8e6c11")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace LethallyWideMod; [BepInPlugin("LethallyWide", "Lethally Wide", "1.0.0")] public class LethallyWide2 : BaseUnityPlugin { public static ManualLogSource log; public static bool ultrawide; public static ConfigEntry<bool> useCustomFOV; public static ConfigEntry<int> resdiv_cfg; public static ConfigEntry<int> targetFOV_cfg; public static ConfigEntry<int> terminalFOV_cfg; public static ConfigEntry<float> posmod_z_cfg; public static ConfigEntry<float> posmod_zt_cfg; public static ConfigEntry<float> posmod_y_cfg; public static ConfigEntry<bool> useCustomDimensions; public static ConfigEntry<int> customW; public static ConfigEntry<int> customH; public static ConfigEntry<float> uiScale; public static ConfigEntry<float> uiAspect; public static ConfigEntry<bool> visorEnabled; public static Vector3 startGameCamLocalPos; public static Vector2 dimensions_mult; public static Vector2 dimensions; public static float aspect; private void Awake() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown log = Logger.CreateLogSource("Lethally Wide Mod"); Harmony val = new Harmony("com.n8bits.lethallywide"); resdiv_cfg = ((BaseUnityPlugin)this).Config.Bind<int>("RESOLUTION", "resdiv", 1, "Divides resolution by this number. Higher values make pixelation effect stronger."); useCustomDimensions = ((BaseUnityPlugin)this).Config.Bind<bool>("RESOLUTION", "use_custom_dimensions", false, "True = Mod sets game dimensions to values in this file. Fale = Mod auto-detects resolution."); customW = ((BaseUnityPlugin)this).Config.Bind<int>("RESOLUTION", "Width", 3440, "Only used if use_custom_dimensions = true. Otherwise this value is detected automatically."); customH = ((BaseUnityPlugin)this).Config.Bind<int>("RESOLUTION", "Height", 1440, "Only used if use_custom_dimensions = true. Otherwise this value is detected automatically."); visorEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("UI", "visor", true, "Whether the visor overlay is visible"); uiScale = ((BaseUnityPlugin)this).Config.Bind<float>("UI", "UI_scale", 3.2f, "Scales the games first person UI."); uiAspect = ((BaseUnityPlugin)this).Config.Bind<float>("UI", "UI_aspect", 1.77f, "Scales the games first person UI."); useCustomFOV = ((BaseUnityPlugin)this).Config.Bind<bool>("FOV", "use_custom_FOV", false, "Whether to use the values here for FOV or just use vanilla. Default is 66."); targetFOV_cfg = ((BaseUnityPlugin)this).Config.Bind<int>("FOV", "targetFOV", 103, "Sets the default field of view (FOV). On a 21:9, 3440x1440 monitor, a maximum FOV of 103 is recommended to avoid gameplay issues due to pop-in effects."); terminalFOV_cfg = ((BaseUnityPlugin)this).Config.Bind<int>("FOV", "terminalFOV", 80, "Adjusts the FOV for terminal use. An FOV of 80 is optimal for 21:9, 3440x1440 monitors, balancing text distortion and camera zoom."); posmod_zt_cfg = ((BaseUnityPlugin)this).Config.Bind<float>("OFFSET", "cam_offset_z_terminal", -0.15f, "Used if FOV > 66 to prevent player model clipping. The default value suits a 21:9, 3440x1440 monitor and balances readability with zoom level."); posmod_z_cfg = ((BaseUnityPlugin)this).Config.Bind<float>("OFFSET", "cam_offset_z", 0.1f, "Alters the camera's forward/backward offset to compensate for a higher FOV, preventing player model clipping, such as the back of the head during sprinting animations."); posmod_y_cfg = ((BaseUnityPlugin)this).Config.Bind<float>("OFFSET", "cam_offset_y", -0.1f, "Adjusts the camera's vertical position to prevent the player model from clipping through the view during sprinting, ensuring arms remain visible. The default is set for a 21:9, 3440x1440 monitor."); val.PatchAll(typeof(PlayerControllerBPatches)); val.PatchAll(typeof(HUDManagerPatches)); } } public static class PlayerControllerBPatches { [HarmonyPatch(typeof(PlayerControllerB), "Start")] [HarmonyPrefix] private static void PlayerControllerInit(PlayerControllerB __instance) { //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_02c5: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02f1: Unknown result type (might be due to invalid IL or missing references) //IL_0307: Unknown result type (might be due to invalid IL or missing references) //IL_0353: Unknown result type (might be due to invalid IL or missing references) if (LethallyWide2.useCustomDimensions.Value) { LethallyWide2.dimensions = new Vector2((float)Mathf.RoundToInt((float)(LethallyWide2.customW.Value / LethallyWide2.resdiv_cfg.Value)), (float)Mathf.RoundToInt((float)(LethallyWide2.customH.Value / LethallyWide2.resdiv_cfg.Value))); LethallyWide2.log.LogInfo((object)("Using cfg dimensions. " + LethallyWide2.dimensions.x + "/" + LethallyWide2.dimensions.y)); } else { LethallyWide2.dimensions = new Vector2((float)(Screen.width / LethallyWide2.resdiv_cfg.Value), (float)(Screen.height / LethallyWide2.resdiv_cfg.Value)); LethallyWide2.log.LogInfo((object)("Using auto detected dimensions. " + LethallyWide2.dimensions.x + "/" + LethallyWide2.dimensions.y)); } LethallyWide2.aspect = LethallyWide2.dimensions.x / LethallyWide2.dimensions.y; LethallyWide2.log.LogInfo((object)("Using game aspect " + LethallyWide2.aspect)); if ((double)LethallyWide2.aspect < 2.3) { LethallyWide2.log.LogInfo((object)"No ultrawide resolution in config, or game is not running on an ultrawide monitor. Exiting."); return; } LethallyWide2.log.LogInfo((object)"Finished initializing dimensions. Ultrawide detected."); RenderTexture targetTexture = __instance.gameplayCamera.targetTexture; LethallyWide2.log.LogInfo((object)"Found gameplayCamera targetTexture"); GameObject val = GameObject.Find("Systems/UI/Canvas/Panel"); GameObject val2 = GameObject.Find("Systems/UI/Canvas"); GameObject val3 = GameObject.Find("Systems/UI/Canvas/IngamePlayerHUD"); GameObject val4 = GameObject.Find("Systems/UI/Canvas/IngamePlayerHUD/Inventory"); LethallyWide2.log.LogInfo((object)"Found all game objects."); ((Texture)targetTexture).width = (int)LethallyWide2.dimensions.x; ((Texture)targetTexture).height = (int)LethallyWide2.dimensions.y; LethallyWide2.log.LogInfo((object)"Set target texture dimensions."); AspectRatioFitter val5 = default(AspectRatioFitter); if ((Object)(object)val != (Object)null && val.TryGetComponent<AspectRatioFitter>(ref val5)) { val5.aspectRatio = LethallyWide2.aspect; LethallyWide2.log.LogInfo((object)"Set UI panel fitter."); } Canvas val6 = default(Canvas); if (val2.TryGetComponent<Canvas>(ref val6)) { val6.scaleFactor = LethallyWide2.uiScale.Value; LethallyWide2.log.LogInfo((object)"Set system UI canvas scale factor."); } AspectRatioFitter val7 = default(AspectRatioFitter); if ((Object)(object)val3 != (Object)null && val3.TryGetComponent<AspectRatioFitter>(ref val7)) { val7.aspectRatio = LethallyWide2.uiAspect.Value; LethallyWide2.log.LogInfo((object)"Set in game player HUD fitter."); } RectTransform val8 = default(RectTransform); if ((Object)(object)val4 != (Object)null && val4.TryGetComponent<RectTransform>(ref val8)) { val8.anchoredPosition = Vector2.zero; val8.anchorMax = new Vector2(0.5f, 0f); val8.anchorMin = new Vector2(0.5f, 0.5f); val8.pivot = new Vector2(0.5f, 0f); LethallyWide2.log.LogInfo((object)"Anchored inventory HUD rect."); } if (!LethallyWide2.visorEnabled.Value) { Vector3 localScale = default(Vector3); ((Vector3)(ref localScale))..ctor(0f, 0f, 0f); __instance.localVisor.localScale = localScale; } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] private static void Update_Postfix(PlayerControllerB __instance) { //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) if (LethallyWide2.useCustomFOV.Value && __instance.gameplayCamera.fieldOfView != (float)LethallyWide2.targetFOV_cfg.Value && (float)LethallyWide2.targetFOV_cfg.Value > 66f) { if (__instance.inTerminalMenu) { __instance.gameplayCamera.fieldOfView = Mathf.Lerp(__instance.gameplayCamera.fieldOfView, (float)LethallyWide2.terminalFOV_cfg.Value, 3f * Time.deltaTime); ((Component)__instance.gameplayCamera).transform.localPosition = new Vector3(LethallyWide2.startGameCamLocalPos.x, LethallyWide2.startGameCamLocalPos.y, LethallyWide2.startGameCamLocalPos.z + LethallyWide2.posmod_zt_cfg.Value); } else { __instance.gameplayCamera.fieldOfView = LethallyWide2.targetFOV_cfg.Value; ((Component)__instance.gameplayCamera).transform.localPosition = new Vector3(LethallyWide2.startGameCamLocalPos.x, LethallyWide2.startGameCamLocalPos.y + LethallyWide2.posmod_y_cfg.Value, LethallyWide2.startGameCamLocalPos.z + LethallyWide2.posmod_z_cfg.Value); } Vector3 localPosition = ((Component)__instance.gameplayCamera).transform.localPosition; if (localPosition.z != LethallyWide2.startGameCamLocalPos.z + LethallyWide2.posmod_z_cfg.Value && !__instance.inTerminalMenu) { Vector3 localPosition2 = default(Vector3); ((Vector3)(ref localPosition2))..ctor(LethallyWide2.startGameCamLocalPos.x, LethallyWide2.startGameCamLocalPos.y, LethallyWide2.startGameCamLocalPos.z + LethallyWide2.posmod_z_cfg.Value); ((Component)__instance.gameplayCamera).transform.localPosition = localPosition2; } } } } public class HUDManagerPatches { [HarmonyPatch(typeof(HUDManager), "UpdateScanNodes")] [HarmonyPostfix] private static void HUDManagerUpdateScanNodes(PlayerControllerB playerScript, HUDManager __instance) { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) RectTransform[] scanElements = __instance.scanElements; Dictionary<RectTransform, ScanNodeProperties> dictionary = Traverse.Create((object)__instance).Field("scanNodes").GetValue() as Dictionary<RectTransform, ScanNodeProperties>; RectTransform val = default(RectTransform); if (!GameObject.Find("Systems/UI/Canvas/Panel/GameObject/PlayerScreen").TryGetComponent<RectTransform>(ref val)) { return; } Rect rect = val.rect; for (int i = 0; i < scanElements.Length; i++) { if (dictionary.TryGetValue(scanElements[i], out var value)) { Vector3 val2 = playerScript.gameplayCamera.WorldToViewportPoint(((Component)value).transform.position); scanElements[i].anchoredPosition = new Vector2(((Rect)(ref rect)).xMin + ((Rect)(ref rect)).width * val2.x, ((Rect)(ref rect)).yMin + ((Rect)(ref rect)).height * val2.y); } } } }
plugins/MetalPipeSFX-HornMoan/HornMoan.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("HornMoan")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("HornMoan")] [assembly: AssemblyTitle("HornMoan")] [assembly: AssemblyVersion("1.0.0.0")] 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; } } } namespace HornMoan { [BepInPlugin("MetalPipeSFX.HornMoan", "HornMoan", "2.0.0")] public class HornMoanBase : BaseUnityPlugin { private const string modGUID = "MetalPipeSFX.HornMoan"; private const string modName = "HornMoan"; private const string modVersion = "2.0.0"; private static HornMoanBase Instance; private readonly Harmony harmony = new Harmony("MetalPipeSFX.HornMoan"); internal ManualLogSource mls = null; public void Awake() { mls = Logger.CreateLogSource("MetalPipeSFX.HornMoan"); mls.LogInfo((object)"The Moaning is Loading"); if ((Object)(object)Instance == (Object)null) { Instance = this; } harmony.PatchAll(); mls.LogInfo((object)"Loaded The Moaning Successfully"); } } [HarmonyPatch(typeof(GrabbableObject))] internal class PipePatch { private static List<string> audios = new List<string> { "Moaning1.mp3", "MoaningFar.mp3" }; private static List<AudioClip> clips = new List<AudioClip>(); private static string uPath = Path.Combine(Paths.PluginPath + "\\MetalPipeSFX-HornMoan\\"); [HarmonyPatch("Start")] [HarmonyPostfix] private static void AudioPatch(GrabbableObject __instance) { ManualLogSource val = Logger.CreateLogSource("MetalPipeSFX.HornMoan"); for (int i = 0; i < audios.Count; i++) { LoadAudioClip(uPath + audios[i]); } if ((Object)(object)__instance != (Object)null && (Object)(object)((Component)__instance).GetComponent<NoisemakerProp>() != (Object)null && ((Object)__instance.itemProperties).name == "Airhorn") { val.LogMessage((object)"We found an Airhorn!!"); ((Component)__instance).GetComponent<NoisemakerProp>().noiseSFX[0] = clips[0]; ((Component)__instance).GetComponent<NoisemakerProp>().noiseSFXFar[0] = clips[1]; val.LogMessage((object)((Object)((Component)__instance).GetComponent<NoisemakerProp>().noiseSFX[0]).name); val.LogMessage((object)((Object)((Component)__instance).GetComponent<NoisemakerProp>().noiseSFXFar[0]).name); } } private static void LoadAudioClip(string filepath) { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Invalid comparison between Unknown and I4 ManualLogSource val = Logger.CreateLogSource("MetalPipeSFX.HornMoan"); UnityWebRequest audioClip = UnityWebRequestMultimedia.GetAudioClip(filepath, (AudioType)13); audioClip.SendWebRequest(); while (!audioClip.isDone) { } if (audioClip.error != null) { val.LogError((object)("Error loading sounds: " + filepath + "\n" + audioClip.error)); } AudioClip content = DownloadHandlerAudioClip.GetContent(audioClip); if (Object.op_Implicit((Object)(object)content) && (int)content.loadState == 2) { val.LogInfo((object)("Loaded " + filepath)); ((Object)content).name = Path.GetFileName(filepath); clips.Add(content); } } } }
plugins/monkes_mods-JumpDelayPatch/JumpDelayPatch.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using HarmonyLib; using Microsoft.CodeAnalysis; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("JumpDelayPatch")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("JumpDelayPatch")] [assembly: AssemblyTitle("JumpDelayPatch")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace JumpDelayPatch { [BepInPlugin("monke.lc.jumpdelay", "Jump Delay Patch", "0.0.0.1")] public class monkeDelayPatch : BaseUnityPlugin { [HarmonyPatch(/*Could not decode attribute arguments.*/)] internal class PlayerControllerB_PlayerJump { private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Expected O, but got Unknown List<CodeInstruction> list = instructions.ToList(); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldc_R4) { list[i] = new CodeInstruction(OpCodes.Ldc_R4, (object)0f); } } return list; } } private void Awake() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin JumpDelayPatch is loaded!"); Harmony val = new Harmony("monke.lc.jumpdelay"); val.PatchAll(); } } public static class PluginInfo { public const string PLUGIN_GUID = "JumpDelayPatch"; public const string PLUGIN_NAME = "JumpDelayPatch"; public const string PLUGIN_VERSION = "1.0.0"; } }
plugins/no00ob-LCSoundTool/LC_SoundTool.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using LCSoundTool.Patches; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("LC_SoundTool")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Various audio related functions. Mainly logs all sounds that are playing and what type of playback they're into the BepInEx console.")] [assembly: AssemblyFileVersion("1.2.2.0")] [assembly: AssemblyInformationalVersion("1.2.2")] [assembly: AssemblyProduct("LC_SoundTool")] [assembly: AssemblyTitle("LC_SoundTool")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.2.2.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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace LCSoundTool { public class AudioSourceExtension : MonoBehaviour { public AudioSource audioSource; public bool playOnAwake = false; public bool loop = false; private void Awake() { if (!((Object)(object)audioSource == (Object)null) && !((Object)(object)audioSource.clip == (Object)null) && !audioSource.isPlaying) { if (playOnAwake) { audioSource.Play(); } SoundTool.Instance.logger.LogDebug((object)$"Started playback of {audioSource} with clip {audioSource.clip} in Awake function!"); } } private void Start() { if (!((Object)(object)audioSource == (Object)null) && !((Object)(object)audioSource.clip == (Object)null) && !audioSource.isPlaying) { if (playOnAwake) { audioSource.Play(); } SoundTool.Instance.logger.LogDebug((object)$"Started playback of {audioSource} with clip {audioSource.clip} in Start function!"); } } } [BepInPlugin("LCSoundTool", "LC Sound Tool", "1.2.2")] public class SoundTool : BaseUnityPlugin { private const string PLUGIN_GUID = "LCSoundTool"; private const string PLUGIN_NAME = "LC Sound Tool"; private const string PLUGIN_VERSION = "1.2.2"; private readonly Harmony harmony = new Harmony("LCSoundTool"); public static SoundTool Instance; internal ManualLogSource logger; public KeyboardShortcut toggleAudioSourceDebugLog; public KeyboardShortcut toggleIndepthDebugLog; public bool wasKeyDown; public bool wasKeyDown2; public static bool debugAudioSources; public static bool indepthDebugging; private GameObject soundToolGameObject; public SoundToolUpdater updater { get; private set; } public static Dictionary<string, AudioClip> replacedClips { get; private set; } public static void ReplaceAudioClip(string originalName, AudioClip newClip) { if (string.IsNullOrEmpty(originalName)) { Instance.logger.LogWarning((object)"Plugin LCSoundTool is trying to replace an audio clip without original clip specified! This is not allowed."); } else if ((Object)(object)newClip == (Object)null) { Instance.logger.LogWarning((object)"Plugin LCSoundTool is trying to replace an audio clip without new clip specified! This is not allowed."); } else if (replacedClips.ContainsKey(originalName)) { Instance.logger.LogWarning((object)"Plugin LCSoundTool is trying to replace an audio clip that already has been replaced! This is not allowed."); } else { replacedClips.Add(originalName, newClip); } } public static void ReplaceAudioClip(AudioClip originalClip, AudioClip newClip) { if ((Object)(object)originalClip == (Object)null) { Instance.logger.LogWarning((object)"Plugin LCSoundTool is trying to replace an audio clip without original clip specified! This is not allowed."); } else if ((Object)(object)newClip == (Object)null) { Instance.logger.LogWarning((object)"Plugin LCSoundTool is trying to replace an audio clip without new clip specified! This is not allowed."); } else { ReplaceAudioClip(((Object)originalClip).name, newClip); } } public static void RestoreAudioClip(string name) { if (string.IsNullOrEmpty(name)) { Instance.logger.LogWarning((object)"Plugin LCSoundTool is trying to restore an audio clip without original clip specified! This is not allowed."); } else if (!replacedClips.ContainsKey(name)) { Instance.logger.LogWarning((object)"Plugin LCSoundTool is trying to restore an audio clip that does not exist! This is not allowed."); } else { replacedClips.Remove(name); } } public static void RestoreAudioClip(AudioClip clip) { if ((Object)(object)clip == (Object)null) { Instance.logger.LogWarning((object)"Plugin LCSoundTool is trying to restore an audio clip without original clip specified! This is not allowed."); } else { RestoreAudioClip(((Object)clip).name); } } private void Awake() { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)Instance == (Object)null) { Instance = this; logger = Logger.CreateLogSource("LCSoundTool"); logger.LogInfo((object)"Plugin LCSoundTool is loaded!"); toggleAudioSourceDebugLog = new KeyboardShortcut((KeyCode)286, (KeyCode[])(object)new KeyCode[0]); toggleIndepthDebugLog = new KeyboardShortcut((KeyCode)286, (KeyCode[])(object)new KeyCode[1] { (KeyCode)308 }); debugAudioSources = false; indepthDebugging = false; replacedClips = new Dictionary<string, AudioClip>(); harmony.PatchAll(typeof(AudioSourcePatch)); harmony.PatchAll(typeof(NetworkSceneManagerPatch)); SoundToolUpdater(); } } private void Update() { SoundToolUpdater(); } private void OnDestroy() { SoundToolUpdater(); } private void SoundToolUpdater() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown if ((Object)(object)soundToolGameObject == (Object)null) { GameObject val = GameObject.Find("SoundToolUpdater"); if ((Object)(object)val != (Object)null) { Object.Destroy((Object)(object)val); } soundToolGameObject = new GameObject("SoundToolUpdater"); updater = soundToolGameObject.AddComponent<SoundToolUpdater>(); updater.originSoundTool = this; if ((Object)(object)Instance != (Object)null && (Object)(object)Instance != (Object)(object)this) { Object.Destroy((Object)(object)Instance); Instance = this; } else if ((Object)(object)Instance == (Object)null) { Instance = this; } } } public static AudioClip GetAudioClip(string modFolder, string soundName) { return GetAudioClip(modFolder, string.Empty, soundName); } public static AudioClip GetAudioClip(string modFolder, string subFolder, string soundName) { bool flag = true; string text = " "; string text2 = Path.Combine(Paths.PluginPath, modFolder, subFolder, soundName); string text3 = Path.Combine(Paths.PluginPath, modFolder, soundName); string path = Path.Combine(Paths.PluginPath, modFolder, subFolder); string text4 = Path.Combine(Paths.PluginPath, subFolder, soundName); string path2 = Path.Combine(Paths.PluginPath, subFolder); if (!Directory.Exists(path)) { if (!string.IsNullOrEmpty(subFolder)) { Instance.logger.LogWarning((object)("Requested directory at BepInEx/Plugins/" + modFolder + "/" + subFolder + " does not exist!")); } else { Instance.logger.LogWarning((object)("Requested directory at BepInEx/Plugins/" + modFolder + " does not exist!")); if (!modFolder.Contains("-")) { Instance.logger.LogWarning((object)"This sound mod might not be compatable with mod managers. You should contact the sound mod's author."); } } flag = false; } if (!File.Exists(text2)) { Instance.logger.LogWarning((object)("Requested audio file does not exist at path " + text2 + "!")); flag = false; Instance.logger.LogDebug((object)("Looking for audio file from mod root instead at " + text3 + "...")); if (File.Exists(text3)) { Instance.logger.LogDebug((object)("Found audio file at path " + text3 + "!")); text2 = text3; flag = true; } else { Instance.logger.LogWarning((object)("Requested audio file does not exist at mod root path " + text3 + "!")); } } if (Directory.Exists(path2)) { if (!string.IsNullOrEmpty(subFolder)) { Instance.logger.LogWarning((object)("Legacy directory location at BepInEx/Plugins/" + subFolder + " found!")); } else if (!modFolder.Contains("-")) { Instance.logger.LogWarning((object)"Legacy directory location at BepInEx/Plugins found!"); } } if (File.Exists(text4)) { Instance.logger.LogWarning((object)("Legacy path contains the requested audio file at path " + text4 + "!")); text = " legacy "; text2 = text4; flag = true; } AudioClip val = null; if (flag) { Instance.logger.LogDebug((object)("Loading AudioClip " + soundName + " from" + text + "path: " + text2)); val = LoadClip(text2); Instance.logger.LogDebug((object)$"Finished loading AudioClip {soundName} with length of {val.length}!"); } else { Instance.logger.LogWarning((object)("Failed to load AudioClip " + soundName + " from invalid" + text + "path at " + text2 + "!")); } return val; } private static AudioClip LoadClip(string path) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Invalid comparison between Unknown and I4 AudioClip result = null; UnityWebRequest audioClip = UnityWebRequestMultimedia.GetAudioClip(path, (AudioType)20); try { audioClip.SendWebRequest(); try { while (!audioClip.isDone) { } if ((int)audioClip.result != 1) { Instance.logger.LogError((object)("Failed to load AudioClip from path: " + path + " Full error: " + audioClip.error)); } else { result = DownloadHandlerAudioClip.GetContent(audioClip); } } catch (Exception ex) { Instance.logger.LogError((object)(ex.Message + ", " + ex.StackTrace)); } } finally { ((IDisposable)audioClip)?.Dispose(); } return result; } } public class SoundToolUpdater : MonoBehaviour { [HideInInspector] public SoundTool originSoundTool; public void Update() { if ((Object)(object)originSoundTool != (Object)null && (Object)(object)originSoundTool != (Object)(object)SoundTool.Instance) { Object.Destroy((Object)(object)((Component)originSoundTool).gameObject); return; } if (((KeyboardShortcut)(ref originSoundTool.toggleIndepthDebugLog)).IsDown() && !originSoundTool.wasKeyDown2) { originSoundTool.wasKeyDown2 = true; originSoundTool.wasKeyDown = false; } if (((KeyboardShortcut)(ref originSoundTool.toggleIndepthDebugLog)).IsUp() && originSoundTool.wasKeyDown2) { originSoundTool.wasKeyDown2 = false; originSoundTool.wasKeyDown = false; SoundTool.debugAudioSources = !SoundTool.debugAudioSources; SoundTool.indepthDebugging = SoundTool.debugAudioSources; SoundTool.Instance.logger.LogDebug((object)$"Toggling in-depth AudioSource debug logs {SoundTool.debugAudioSources}!"); return; } if (!originSoundTool.wasKeyDown2 && !((KeyboardShortcut)(ref originSoundTool.toggleIndepthDebugLog)).IsDown() && ((KeyboardShortcut)(ref originSoundTool.toggleAudioSourceDebugLog)).IsDown() && !originSoundTool.wasKeyDown) { originSoundTool.wasKeyDown = true; originSoundTool.wasKeyDown2 = false; } if (((KeyboardShortcut)(ref originSoundTool.toggleAudioSourceDebugLog)).IsUp() && originSoundTool.wasKeyDown) { originSoundTool.wasKeyDown = false; originSoundTool.wasKeyDown2 = false; SoundTool.debugAudioSources = !SoundTool.debugAudioSources; SoundTool.Instance.logger.LogDebug((object)$"Toggling AudioSource debug logs {SoundTool.debugAudioSources}!"); } } public AudioSource[] GetAllPlayOnAwakeAudioSources() { AudioSource[] array = Object.FindObjectsOfType<AudioSource>(true); List<AudioSource> list = new List<AudioSource>(); for (int i = 0; i < array.Length; i++) { if (array[i].playOnAwake) { list.Add(array[i]); } } return list.ToArray(); } } public static class PluginInfo { public const string PLUGIN_GUID = "LC_SoundTool"; public const string PLUGIN_NAME = "LC_SoundTool"; public const string PLUGIN_VERSION = "1.2.2"; } } namespace LCSoundTool.Patches { [HarmonyPatch(typeof(AudioSource))] internal class AudioSourcePatch { private static Dictionary<string, AudioClip> originalClips = new Dictionary<string, AudioClip>(); [HarmonyPatch("Play", new Type[] { })] [HarmonyPrefix] public static void Play_Patch(AudioSource __instance) { RunDynamicClipReplacement(__instance); DebugPlayMethod(__instance); } [HarmonyPatch("Play", new Type[] { typeof(ulong) })] [HarmonyPrefix] public static void Play_UlongPatch(AudioSource __instance) { RunDynamicClipReplacement(__instance); DebugPlayMethod(__instance); } [HarmonyPatch("Play", new Type[] { typeof(double) })] [HarmonyPrefix] public static void Play_DoublePatch(AudioSource __instance) { RunDynamicClipReplacement(__instance); DebugPlayMethod(__instance); } [HarmonyPatch("PlayDelayed", new Type[] { typeof(float) })] [HarmonyPrefix] public static void PlayDelayed_Patch(AudioSource __instance) { RunDynamicClipReplacement(__instance); DebugPlayDelayedMethod(__instance); } [HarmonyPatch("PlayClipAtPoint", new Type[] { typeof(AudioClip), typeof(Vector3), typeof(float) })] [HarmonyPrefix] public static bool PlayClipAtPoint_Patch(AudioClip clip, Vector3 position, float volume) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject("One shot audio"); val.transform.position = position; AudioSource val2 = val.AddComponent<AudioSource>(); val2.clip = clip; val2.spatialBlend = 1f; val2.volume = volume; RunDynamicClipReplacement(val2); val2.Play(); DebugPlayClipAtPointMethod(val2, position); Object.Destroy((Object)(object)val, clip.length * ((Time.timeScale < 0.01f) ? 0.01f : Time.timeScale)); return false; } [HarmonyPatch("PlayOneShotHelper", new Type[] { typeof(AudioSource), typeof(AudioClip), typeof(float) })] [HarmonyPrefix] public static void PlayOneShotHelper_Patch(AudioSource source, ref AudioClip clip, float volumeScale) { clip = ReplaceClipWithNew(clip); DebugPlayOneShotMethod(source, clip); } private static void DebugPlayMethod(AudioSource instance) { if (SoundTool.debugAudioSources && !SoundTool.indepthDebugging && (Object)(object)instance != (Object)null) { SoundTool.Instance.logger.LogDebug((object)$"{instance} at {((Component)instance).transform.root} is playing {((Object)instance.clip).name}"); } else if (SoundTool.indepthDebugging && (Object)(object)instance != (Object)null) { SoundTool.Instance.logger.LogDebug((object)$"{instance} is playing {((Object)instance.clip).name} at"); Transform val = ((Component)instance).transform; while ((Object)(object)val.parent != (Object)null || (Object)(object)val != (Object)(object)((Component)instance).transform.root) { SoundTool.Instance.logger.LogDebug((object)$"--- {val.parent}"); val = val.parent; } if ((Object)(object)val == (Object)(object)((Component)instance).transform.root) { SoundTool.Instance.logger.LogDebug((object)$"--- {((Component)instance).transform.root}"); } } } private static void DebugPlayDelayedMethod(AudioSource instance) { if (SoundTool.debugAudioSources && !SoundTool.indepthDebugging && (Object)(object)instance != (Object)null) { SoundTool.Instance.logger.LogDebug((object)$"{instance} at {((Component)instance).transform.root} is playing {((Object)instance.clip).name} with delay"); } else if (SoundTool.indepthDebugging && (Object)(object)instance != (Object)null) { SoundTool.Instance.logger.LogDebug((object)$"{instance} is playing {((Object)instance.clip).name} with delay at"); Transform val = ((Component)instance).transform; while ((Object)(object)val.parent != (Object)null || (Object)(object)val != (Object)(object)((Component)instance).transform.root) { SoundTool.Instance.logger.LogDebug((object)$"--- {val.parent}"); val = val.parent; } if ((Object)(object)val == (Object)(object)((Component)instance).transform.root) { SoundTool.Instance.logger.LogDebug((object)$"--- {((Component)instance).transform.root}"); } } } private static void DebugPlayClipAtPointMethod(AudioSource audioSource, Vector3 position) { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) if (SoundTool.debugAudioSources && !SoundTool.indepthDebugging && (Object)(object)audioSource != (Object)null) { SoundTool.Instance.logger.LogDebug((object)$"{audioSource} at {((Component)audioSource).transform.root} is playing {((Object)audioSource.clip).name} at point {position}"); } else if (SoundTool.indepthDebugging && (Object)(object)audioSource != (Object)null) { SoundTool.Instance.logger.LogDebug((object)$"{audioSource} is playing {((Object)audioSource.clip).name} located at point {position} within "); Transform val = ((Component)audioSource).transform; while ((Object)(object)val.parent != (Object)null || (Object)(object)val != (Object)(object)((Component)audioSource).transform.root) { SoundTool.Instance.logger.LogDebug((object)$"--- {val.parent}"); val = val.parent; } if ((Object)(object)val == (Object)(object)((Component)audioSource).transform.root) { SoundTool.Instance.logger.LogDebug((object)$"--- {((Component)audioSource).transform.root}"); } } } private static void DebugPlayOneShotMethod(AudioSource source, AudioClip clip) { if (SoundTool.debugAudioSources && !SoundTool.indepthDebugging && (Object)(object)source != (Object)null) { SoundTool.Instance.logger.LogDebug((object)$"{source} at {((Component)source).transform.root} is playing one shot {((Object)clip).name}"); } else if (SoundTool.indepthDebugging && (Object)(object)source != (Object)null) { SoundTool.Instance.logger.LogDebug((object)$"{source} is playing one shot {((Object)clip).name} at"); Transform val = ((Component)source).transform; while ((Object)(object)val.parent != (Object)null || (Object)(object)val != (Object)(object)((Component)source).transform.root) { SoundTool.Instance.logger.LogDebug((object)$"--- {val.parent}"); val = val.parent; } if ((Object)(object)val == (Object)(object)((Component)source).transform.root) { SoundTool.Instance.logger.LogDebug((object)$"--- {((Component)source).transform.root}"); } } } private static void RunDynamicClipReplacement(AudioSource instance) { if ((Object)(object)instance == (Object)null || (Object)(object)instance.clip == (Object)null) { return; } string name = instance.clip.GetName(); if (SoundTool.replacedClips.ContainsKey(name)) { if (!originalClips.ContainsKey(name)) { originalClips.Add(name, instance.clip); } instance.clip = SoundTool.replacedClips[name]; } else if (originalClips.ContainsKey(name)) { instance.clip = originalClips[name]; originalClips.Remove(name); } } private static AudioClip ReplaceClipWithNew(AudioClip original) { if ((Object)(object)original == (Object)null) { return original; } string name = original.GetName(); if (SoundTool.replacedClips.ContainsKey(name)) { if (!originalClips.ContainsKey(name)) { originalClips.Add(name, original); } return SoundTool.replacedClips[name]; } if (originalClips.ContainsKey(name)) { AudioClip result = originalClips[name]; originalClips.Remove(name); return result; } return original; } } [HarmonyPatch(typeof(NetworkSceneManager))] internal class NetworkSceneManagerPatch { [HarmonyPatch("OnSceneLoaded")] [HarmonyPostfix] public static void OnSceneLoaded_Patch() { if ((Object)(object)SoundTool.Instance.updater == (Object)null) { return; } SoundTool.Instance.logger.LogDebug((object)"Grabbing all playOnAwake AudioSources..."); AudioSource[] allPlayOnAwakeAudioSources = SoundTool.Instance.updater.GetAllPlayOnAwakeAudioSources(); SoundTool.Instance.logger.LogDebug((object)$"Found {allPlayOnAwakeAudioSources.Length} playOnAwake AudioSources!"); SoundTool.Instance.logger.LogDebug((object)$"Starting setup on {allPlayOnAwakeAudioSources.Length - 3} compatable playOnAwake AudioSources..."); AudioSource[] array = allPlayOnAwakeAudioSources; AudioSourceExtension audioSourceExtension = default(AudioSourceExtension); foreach (AudioSource val in array) { if (!((Object)val).name.Contains("ThrusterCloseAudio") && !((Object)val).name.Contains("ThrusterAmbientAudio") && !((Object)val).name.Contains("Ship3dSFX")) { if (((Component)((Component)val).transform).TryGetComponent<AudioSourceExtension>(ref audioSourceExtension)) { audioSourceExtension.playOnAwake = true; audioSourceExtension.audioSource = val; audioSourceExtension.loop = val.loop; val.playOnAwake = false; SoundTool.Instance.logger.LogDebug((object)$"-Set- {Array.IndexOf(allPlayOnAwakeAudioSources, val) + 1} {val} done!"); } else { AudioSourceExtension audioSourceExtension2 = ((Component)val).gameObject.AddComponent<AudioSourceExtension>(); audioSourceExtension2.audioSource = val; audioSourceExtension2.playOnAwake = true; audioSourceExtension2.loop = val.loop; val.playOnAwake = false; SoundTool.Instance.logger.LogDebug((object)$"-Add- {Array.IndexOf(allPlayOnAwakeAudioSources, val) + 1} {val} done!"); } } } SoundTool.Instance.logger.LogDebug((object)$"Done setting up {allPlayOnAwakeAudioSources.Length - 3} compatable playOnAwake AudioSources!"); } } }
plugins/Obsidians_Modding-ScannablePlayers/ScannablePlayersModv1.dll
Decompiled 2 years agousing System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("ScannablePlayersModv1")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ScannablePlayersModv1")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("6965a26d-1c21-438e-936b-c7d11bb0522f")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace ScannablePlayersMod { [BepInPlugin("Obsidian.Lithium.ScannablePlayers", "Lithium", "1.0.0")] public class ModBase : BaseUnityPlugin { private const string modGUID = "Obsidian.Lithium.ScannablePlayers"; private const string modName = "Lithium"; private const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("Obsidian.Lithium.ScannablePlayers"); private static ModBase Instance; internal ManualLogSource mls; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } harmony.PatchAll(Assembly.GetExecutingAssembly()); } } } namespace LethalCompanyMods.Patches { [HarmonyPatch(typeof(PlayerControllerB))] internal class PlayerControllerBPatch { [HarmonyPatch("Update")] [HarmonyPostfix] private static void ScannablePlayers() { List<int> list = new List<int>(); GameObject[] array = GameObject.FindGameObjectsWithTag("Player"); foreach (GameObject val in array) { if (!list.Contains(((Object)val).GetInstanceID())) { val.AddComponent<ScanNodeProperties>(); Object.Instantiate<GameObject>(GameObject.Find("ScanNode")).transform.parent = val.transform; val.GetComponent<ScanNodeProperties>().headerText = ((Object)val).name; val.GetComponent<ScanNodeProperties>().scrapValue = 0; val.GetComponent<ScanNodeProperties>().requiresLineOfSight = false; val.GetComponent<ScanNodeProperties>().subText = ((Object)val).name; list.Add(((Object)val).GetInstanceID()); } } } } }
plugins/OrtonLongGaming-FNaFEndoCoilhead/FNaFEndoCoilhead.dll
Decompiled 2 years agousing System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("FNaFEndoCoilhead")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("FNaFEndoCoilhead")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("ff34eb67-3d0a-4bb2-aef9-43bedc4dc294")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace FNaFEndoCoilhead { [BepInPlugin("FNaFEndoCoilhead", "FNaFEndoCoilhead", "1.0.1")] public class Plugin : BaseUnityPlugin { public static GameObject Visuals; public static AudioClip Audio; private void Awake() { ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin FNaFEndoCoilhead is loaded!"); Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null); string text = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "endo.bundle"); AssetBundle val = AssetBundle.LoadFromFile(text); Visuals = val.LoadAsset<GameObject>("assets/prefabs/endo.prefab"); Audio = val.LoadAsset<AudioClip>("assets/prefabs/audio.wav"); Renderer[] componentsInChildren = Visuals.GetComponentsInChildren<Renderer>(true); foreach (Renderer val2 in componentsInChildren) { ((Component)val2).gameObject.layer = LayerMask.NameToLayer("Enemies"); } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "FNaFEndoCoilhead"; public const string PLUGIN_NAME = "FNaFEndoCoilhead"; public const string PLUGIN_VERSION = "1.0.1"; } } namespace FNaFEndoCoilhead.Patches { [HarmonyPatch(typeof(SpringManAI), "Update")] internal class SpringManPatch { private static void Postfix(SpringManAI __instance) { //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)Plugin.Visuals == (Object)null)) { Transform val = ((Component)__instance).transform.Find("SpringManModel"); SkinnedMeshRenderer val2 = ((val != null) ? ((Component)val.Find("Body")).GetComponent<SkinnedMeshRenderer>() : null); if (!((Object)(object)val2 == (Object)null) && ((Renderer)val2).enabled) { ((Renderer)val2).enabled = false; MeshRenderer val3 = ((val != null) ? ((Component)val.Find("Head")).GetComponent<MeshRenderer>() : null); Transform val4 = ((val != null) ? val.Find("AnimContainer").Find("metarig") : null); ((Renderer)val3).enabled = false; GameObject val5 = Object.Instantiate<GameObject>(Plugin.Visuals); val5.transform.SetParent(val); val5.transform.localPosition = Vector3.zero; val5.transform.localRotation = Quaternion.identity; val5.transform.localScale = Vector3.one; Transform val6 = val5.transform.Find("Container/RIG_Endo.001"); Transform val7 = val5.transform.Find("Container/metarig"); val7.SetParent(val4.parent, true); ((Component)val7).transform.localScale = ((Component)val4).transform.localScale; ((Component)val7).transform.localRotation = ((Component)val4).transform.localRotation; ((Component)val7).transform.localPosition = ((Component)val4).transform.localPosition; SkinnedMeshRenderer component = ((Component)val6).GetComponent<SkinnedMeshRenderer>(); component.rootBone = val7; ((Object)val4).name = "old-metarig"; ((Component)__instance).GetComponent<SpringManAI>().springNoises = (AudioClip[])(object)new AudioClip[1]; ((Component)__instance).GetComponent<SpringManAI>().springNoises[0] = Plugin.Audio; } } } } }
plugins/OrtonLongGaming-FreddyBracken/FreddyBracken.dll
Decompiled 2 years agousing System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("FreddyBracken")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("FreddyBracken")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("2ed810b2-476e-4150-b015-645ee4681b3d")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace FreddyBracken { public static class MyPluginInfo { public const string PLUGIN_GUID = "FreddyBracken"; public const string PLUGIN_NAME = "FreddyBracken"; public const string PLUGIN_VERSION = "1.0.2"; } [BepInPlugin("FreddyBracken", "FreddyBracken", "1.0.2")] public class Plugin : BaseUnityPlugin { public static GameObject Visuals; public static AudioClip NeckCrackAudio; public static AudioClip AngeredAudio; private void Awake() { ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin FreddyBracken is loaded!"); Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null); string text = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "freddy.bundle"); AssetBundle val = AssetBundle.LoadFromFile(text); Visuals = val.LoadAsset<GameObject>("assets/prefabs/freddy.prefab"); NeckCrackAudio = val.LoadAsset<AudioClip>("assets/prefabs/freddycrackneck.wav"); AngeredAudio = val.LoadAsset<AudioClip>("assets/prefabs/freddyangered.wav"); Renderer[] componentsInChildren = Visuals.GetComponentsInChildren<Renderer>(true); foreach (Renderer val2 in componentsInChildren) { ((Component)val2).gameObject.layer = LayerMask.NameToLayer("Enemies"); } } } } namespace FreddyBracken.Patches { [HarmonyPatch(typeof(FlowermanAI), "Start")] internal class FlowermanPatch { private static void Postfix(FlowermanAI __instance) { //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)Plugin.Visuals == (Object)null) { return; } Transform val = ((Component)__instance).transform.Find("FlowermanModel"); object obj; if (val == null) { obj = null; } else { Transform obj2 = val.Find("LOD1"); obj = ((obj2 != null) ? ((Component)obj2).GetComponent<SkinnedMeshRenderer>() : null); } SkinnedMeshRenderer val2 = (SkinnedMeshRenderer)obj; object obj3; if (val == null) { obj3 = null; } else { Transform obj4 = val.Find("AnimContainer"); obj3 = ((obj4 != null) ? obj4.Find("metarig") : null); } Transform val3 = (Transform)obj3; if (!((Object)(object)val2 == (Object)null) && ((Renderer)val2).enabled) { ((Renderer)val2).enabled = false; Renderer[] componentsInChildren = ((Component)val3).gameObject.GetComponentsInChildren<Renderer>(); foreach (Renderer val4 in componentsInChildren) { val4.enabled = false; } GameObject val5 = Object.Instantiate<GameObject>(Plugin.Visuals); val5.transform.SetParent(val); val5.transform.localPosition = Vector3.zero; val5.transform.localRotation = Quaternion.identity; val5.transform.localScale = Vector3.one; Transform val6 = val5.transform.Find("Container/Body_Geo"); Transform val7 = val5.transform.Find("Container/metarig"); val7.SetParent(val3.parent, true); ((Component)val7).transform.localScale = ((Component)val3).transform.localScale; ((Component)val7).transform.localRotation = ((Component)val3).transform.localRotation; ((Component)val7).transform.localPosition = ((Component)val3).transform.localPosition; SkinnedMeshRenderer component = ((Component)val6).GetComponent<SkinnedMeshRenderer>(); component.rootBone = val7; ((Object)val3).name = "old-metarig"; __instance.crackNeckSFX = Plugin.NeckCrackAudio; __instance.creatureAngerVoice.clip = Plugin.AngeredAudio; } } } }
plugins/Owen3H-IntroTweaks/IntroTweaks.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using IntroTweaks.Core; using Microsoft.CodeAnalysis; using TMPro; using UnityEngine; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = "")] [assembly: AssemblyCompany("IntroTweaks")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Configurable, seamless skipping of intro menus in Lethal Company.")] [assembly: AssemblyFileVersion("1.2.0.0")] [assembly: AssemblyInformationalVersion("1.2.0+71a29930e7f9220b53014e971700a3402c0a5f37")] [assembly: AssemblyProduct("IntroTweaks")] [assembly: AssemblyTitle("IntroTweaks")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.2.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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace IntroTweaks { [BepInPlugin("io.github.IntroTweaks", "IntroTweaks", "1.2.0")] public class Plugin : BaseUnityPlugin { internal static string SelectedMode; private Harmony patcher; internal static ManualLogSource Logger { get; private set; } public static PluginConfig Config { get; private set; } private void Awake() { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown Logger = ((BaseUnityPlugin)this).Logger; Config = new PluginConfig(((BaseUnityPlugin)this).Config); if (!PluginEnabled(logDisabled: true)) { return; } Config.InitBindings(); SelectedMode = Config.AUTO_SELECT_MODE.ToLower(); try { patcher = new Harmony("io.github.IntroTweaks"); patcher.PatchAll(); Logger.LogInfo((object)"Plugin loaded."); } catch (Exception ex) { Logger.LogError((object)ex); } } public bool PluginEnabled(bool logDisabled = false) { bool pLUGIN_ENABLED = Config.PLUGIN_ENABLED; if (!pLUGIN_ENABLED && logDisabled) { Logger.LogInfo((object)"IntroTweaks disabled globally."); } return pLUGIN_ENABLED; } } public static class MyPluginInfo { public const string PLUGIN_GUID = "IntroTweaks"; public const string PLUGIN_NAME = "IntroTweaks"; public const string PLUGIN_VERSION = "1.2.0"; } } namespace IntroTweaks.Patches { [HarmonyPatch(typeof(InitializeGame))] internal class InitializeGamePatch { [HarmonyPrefix] [HarmonyPatch("Start")] private static void DisableBootAnimation(ref bool __runOriginal) { if (Plugin.Config.SKIP_BOOT_ANIMATION) { SceneManager.LoadScene("MainMenu"); __runOriginal = false; } } } [HarmonyPatch(typeof(MenuManager))] internal class MenuManagerPatch { public static int gameVer { get; private set; } public static TextMeshProUGUI versionText { get; private set; } [HarmonyPrefix] [HarmonyPatch("ClickHostButton")] private static void DisableMenuOnHost(MenuManager __instance) { __instance.menuButtons.SetActive(false); ((Component)((TMP_Text)versionText).transform).gameObject.SetActive(false); } [HarmonyPrefix] [HarmonyPatch("Awake")] private static bool ReplaceVersionText(MenuManager __instance) { GameObject gameObject = ((Component)((TMP_Text)__instance.versionNumberText).transform).gameObject; GameObject val = Object.Instantiate<GameObject>(gameObject, __instance.menuButtons.transform); gameObject.SetActive(false); ((Object)val).name = "VersionNumberText"; versionText = InitTextMesh(val.GetComponent<TextMeshProUGUI>()); AnchorToBottom(val.GetComponent<RectTransform>()); return true; } [HarmonyPostfix] [HarmonyPatch("Start")] private static void StartPatch(MenuManager __instance) { if (Plugin.Config.REMOVE_NEWS_PANEL) { Object.Destroy((Object)(object)__instance.NewsPanel); } if (Plugin.Config.REMOVE_LAN_WARNING) { Object.Destroy((Object)(object)__instance.lanWarningContainer); } if (Plugin.Config.REMOVE_LAUNCHED_IN_LAN) { Object.Destroy((Object)(object)((Component)((TMP_Text)__instance.launchedInLanModeText).transform).gameObject); } if (Plugin.Config.AUTO_SELECT_HOST) { __instance.ClickHostButton(); } } [HarmonyPostfix] [HarmonyPatch("Update")] private static void UpdatePatch(MenuManager __instance) { ((TMP_Text)versionText).text = ((TMP_Text)versionText).text.Replace("$VERSION", gameVer.ToString()); } private static TextMeshProUGUI InitTextMesh(TextMeshProUGUI tmp) { gameVer = GameNetworkManager.Instance.gameVersionNum - 16440; ((TMP_Text)tmp).text = Plugin.Config.VERSION_TEXT; float fontSize = (((TMP_Text)tmp).fontSizeMin = 22f); ((TMP_Text)tmp).fontSize = fontSize; ((TMP_Text)tmp).alignment = (TextAlignmentOptions)514; ((TMP_Text)tmp).enableWordWrapping = false; return tmp; } private static void AnchorToBottom(RectTransform rect) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //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) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) rect.anchorMin = new Vector2(0.5f, 0f); rect.anchorMax = new Vector2(0.5f, 0f); rect.anchoredPosition = Vector2.zero; rect.anchoredPosition3D = Vector3.zero; ((Transform)rect).rotation = Quaternion.identity; ((Transform)rect).position = new Vector3(Plugin.Config.VERSION_TEXT_X, Plugin.Config.VERSION_TEXT_Y, -37f); } } [HarmonyPatch(typeof(PreInitSceneScript))] internal class PreSceneInitPatch { [HarmonyPrefix] [HarmonyPatch("SkipToFinalSetting")] private static bool OverrideSkipToFinal() { return false; } [HarmonyPostfix] [HarmonyPatch("Start")] private static void SkipToOnline(PreInitSceneScript __instance, ref bool ___choseLaunchOption) { if (!Plugin.SelectedMode.Equals("off")) { CollectionExtensions.Do<GameObject>((IEnumerable<GameObject>)__instance.LaunchSettingsPanels, (Action<GameObject>)delegate(GameObject p) { p.gameObject.SetActive(false); }); __instance.currentLaunchSettingPanel = 0; ((TMP_Text)__instance.headerText).text = ""; ((Component)__instance.blackTransition).gameObject.SetActive(false); __instance.continueButton.gameObject.SetActive(false); ___choseLaunchOption = true; __instance.mainAudio.PlayOneShot(__instance.selectSFX); IngamePlayerSettings.Instance.SetPlayerFinishedLaunchOptions(); IngamePlayerSettings.Instance.SaveChangedSettings(); if (!IngamePlayerSettings.Instance.encounteredErrorDuringSave) { SceneManager.LoadScene(Plugin.SelectedMode.Equals("online") ? "InitScene" : "InitSceneLANMode"); } } } } } namespace IntroTweaks.Core { public class PluginConfig { private readonly ConfigFile configFile; public bool PLUGIN_ENABLED { get; private set; } public string AUTO_SELECT_MODE { get; private set; } public bool AUTO_SELECT_HOST { get; private set; } public bool SKIP_BOOT_ANIMATION { get; private set; } public bool REMOVE_LAN_WARNING { get; private set; } public bool REMOVE_LAUNCHED_IN_LAN { get; private set; } public bool REMOVE_NEWS_PANEL { get; private set; } public string VERSION_TEXT { get; private set; } public float VERSION_TEXT_X { get; private set; } public float VERSION_TEXT_Y { get; private set; } public PluginConfig(ConfigFile cfg) { configFile = cfg; PLUGIN_ENABLED = NewEntry("bEnabled", defaultVal: true, "Enable or disable the plugin globally."); } private T NewEntry<T>(string key, T defaultVal, string description) { return configFile.Bind<T>("io.github.IntroTweaks", key, defaultVal, description).Value; } public void InitBindings() { AUTO_SELECT_MODE = NewEntry("sAutoSelectMode", "ONLINE", "Which mode to automatically enter into after the splash screen.\nValid options: ONLINE, LAN, OFF"); AUTO_SELECT_HOST = NewEntry("bAutoSelectHost", defaultVal: false, "Whether the 'Host' button is automatically selected when the Online/LAN menu loads."); SKIP_BOOT_ANIMATION = NewEntry("bSkipBootAnimation", defaultVal: true, "If the loading animation (booting OS) should be skipped."); REMOVE_LAN_WARNING = NewEntry("bRemoveLanWarning", defaultVal: true, "Remove the warning popup when hosting a LAN session."); REMOVE_LAUNCHED_IN_LAN = NewEntry("bRemoveLaunchedInLanText", defaultVal: true, "Remove the 'Launched in LAN mode' text below the Quit button."); REMOVE_NEWS_PANEL = NewEntry("bRemoveNewsPanel", defaultVal: false, "Remove the panel that displays news such as game updates."); VERSION_TEXT = NewEntry("sVersionText", "v$VERSION\n[MODDED]", "Replace the game's version text with this custom text in the main menu.\nTo insert the version number, use the $VERSION syntax. E.g. Ver69 would be Ver$VERSION"); VERSION_TEXT_X = NewEntry("fVersionTextXPos", 1089.9f, "The position on the horizontal axis where the version text should be placed.\nPositive = Right, Negative = Left"); VERSION_TEXT_Y = NewEntry("fVersionTextYPos", 555f, "The position on the vertical axis where the version text should be placed.\nPositive = Up, Negative = Down"); } } internal static class Metadata { public const string GUID = "io.github.IntroTweaks"; public const string NAME = "IntroTweaks"; public const string VERSION = "1.2.0"; } }
plugins/PopleZoo-BetterItemScan/BetterItemScan.dll
Decompiled 2 years agousing System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using TMPro; using UnityEngine; using UnityEngine.InputSystem; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("BetterItemScan")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("BetterItemScan")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("04cd6816-7aba-4c14-a9a7-bf328df25692")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace BetterItemScan { [BepInPlugin("PopleZoo.BetterItemScan", "Better Item Scan", "1.0.0.1")] public class BetterItemScanModBase : BaseUnityPlugin { private const string modGUID = "PopleZoo.BetterItemScan"; private const string modName = "Better Item Scan"; private const string modVersion = "1.0.0.1"; private readonly Harmony harmony = new Harmony("PopleZoo.BetterItemScan"); public static BetterItemScanModBase Instance; public ManualLogSource mls; public static ConfigEntry<float> Config_ItemScanRadius; public static ConfigEntry<bool> ShowDebugMode; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("PopleZoo.BetterItemScan"); mls.LogInfo((object)"Plugin BetterItemScan is loaded!"); LoadConfigs(); harmony.PatchAll(); } private void LoadConfigs() { ShowDebugMode = ((BaseUnityPlugin)this).Config.Bind<bool>("Bool for showing Radius of the scan in game", "Show DebugMode", false, "shows the change in width of the area to scan"); Config_ItemScanRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Radius for scanning items", "Radius for scanning items", 20f, "The default value is 20"); } } } namespace BetterItemScan.Patches { [HarmonyPatch] internal class HudManagerPatch_UI { private static GameObject _totalCounter; private static TextMeshProUGUI _textMesh; private static float _displayTimeLeft; private static float Totalsum; private static float Totalship; private const float DisplayTime = 5f; public static List<ScanNodeProperties> scannedNodeObjects = new List<ScanNodeProperties>(); [HarmonyPrefix] [HarmonyPatch(typeof(HUDManager), "PingScan_performed")] private static void OnScan(HUDManager __instance, CallbackContext context) { if (!Object.op_Implicit((Object)(object)_totalCounter)) { CopyValueCounter(); } List<ScanNodeProperties> source = CalculateLootItems(); string text = string.Join("\n", source.Select((ScanNodeProperties item) => $"{item.headerText}: ${item.scrapValue}")); ((TMP_Text)_textMesh).text = text; TextMeshProUGUI textMesh = _textMesh; ((TMP_Text)textMesh).text = ((TMP_Text)textMesh).text + "\nTotal Scanned: " + Totalsum + " Ship Total: " + Totalship; _displayTimeLeft = 5f; if (!_totalCounter.activeSelf) { ((MonoBehaviour)GameNetworkManager.Instance).StartCoroutine(ValueCoroutine()); } } private static List<ScanNodeProperties> CalculateLootItems() { List<GrabbableObject> source = (from obj in GameObject.Find("/Environment/HangarShip").GetComponentsInChildren<GrabbableObject>() where ((Object)obj).name != "ClipboardManual" && ((Object)obj).name != "StickyNoteItem" select obj).ToList(); List<ScanNodeProperties> list = scannedNodeObjects.Where((ScanNodeProperties obj) => obj.headerText != "ClipboardManual" && obj.headerText != "StickyNoteItem" && obj.scrapValue != 0).ToList(); Totalsum = list.Sum((ScanNodeProperties scrap) => scrap.scrapValue); Totalship = source.Sum((GrabbableObject scrap) => scrap.scrapValue); return list; } private static IEnumerator ValueCoroutine() { _totalCounter.SetActive(true); while ((double)_displayTimeLeft > 0.0) { float displayTimeLeft = _displayTimeLeft; _displayTimeLeft = 0f; yield return (object)new WaitForSeconds(displayTimeLeft); } _totalCounter.SetActive(false); } private static void CopyValueCounter() { //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) GameObject val = GameObject.Find("/Systems/UI/Canvas/IngamePlayerHUD/BottomMiddle/ValueCounter"); if (!Object.op_Implicit((Object)(object)val)) { BetterItemScanModBase.Instance.mls.LogError((object)"Failed to find ValueCounter object to copy!"); } _totalCounter = Object.Instantiate<GameObject>(val.gameObject, val.transform.parent, false); _totalCounter.transform.Translate(0f, -60f, 0f); Vector3 localPosition = _totalCounter.transform.localPosition; _totalCounter.transform.localPosition = new Vector3(localPosition.x + 50f, -100f, localPosition.z); _textMesh = _totalCounter.GetComponentInChildren<TextMeshProUGUI>(); ((TMP_Text)_textMesh).alignment = (TextAlignmentOptions)1025; RectTransform rectTransform = ((TMP_Text)_textMesh).rectTransform; rectTransform.anchorMin = new Vector2(0.5f, 2f); rectTransform.anchorMax = new Vector2(0.5f, 2f); rectTransform.pivot = new Vector2(0.5f, 0f); Vector3 localPosition2 = ((Transform)rectTransform).localPosition; ((Transform)rectTransform).localPosition = new Vector3(localPosition2.x, localPosition2.y - 140f, localPosition2.z); } } [HarmonyPatch] public class PlayerControllerBPatch_A { private static LineRenderer lineRenderer; private static GameObject lineObject; private static float maxDistance = 80f; [HarmonyPrefix] [HarmonyPatch(typeof(HUDManager), "AssignNewNodes")] private static bool AssignNewNodes_patch(HUDManager __instance, PlayerControllerB playerScript) { //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0101: 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) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0173: 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_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0192: 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_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) HudManagerPatch_UI.scannedNodeObjects.Clear(); if ((Object)(object)lineRenderer == (Object)null) { lineObject = new GameObject("LineObject"); lineRenderer = lineObject.AddComponent<LineRenderer>(); lineRenderer.positionCount = 2; lineObject.SetActive(false); } FieldInfo field = typeof(HUDManager).GetField("nodesOnScreen", BindingFlags.Instance | BindingFlags.NonPublic); List<ScanNodeProperties> list = field.GetValue(__instance) as List<ScanNodeProperties>; FieldInfo field2 = typeof(HUDManager).GetField("scannedScrapNum", BindingFlags.Instance | BindingFlags.NonPublic); object value = field2.GetValue(__instance); FieldInfo field3 = typeof(HUDManager).GetField("scanNodesHit", BindingFlags.Instance | BindingFlags.NonPublic); RaycastHit[] array = field3.GetValue(__instance) as RaycastHit[]; MethodInfo method = typeof(HUDManager).GetMethod("AttemptScanNode", BindingFlags.Instance | BindingFlags.NonPublic); int num = Physics.SphereCastNonAlloc(new Ray(((Component)playerScript.gameplayCamera).transform.position + ((Component)playerScript.gameplayCamera).transform.forward * 20f, ((Component)playerScript.gameplayCamera).transform.forward), BetterItemScanModBase.Config_ItemScanRadius.Value, array, maxDistance, 4194304); Vector3 val = new Vector3(((Component)playerScript.gameplayCamera).transform.position.x, ((Component)playerScript.gameplayCamera).transform.position.y - 2f, ((Component)playerScript.gameplayCamera).transform.position.z) + ((Component)playerScript.gameplayCamera).transform.forward; Vector3 forward = ((Component)playerScript.gameplayCamera).transform.forward; if (BetterItemScanModBase.ShowDebugMode.Value) { lineObject.SetActive(true); lineRenderer.SetPosition(0, val); lineRenderer.SetPosition(1, val + forward * maxDistance); LineRenderer obj = lineRenderer; float startWidth = (lineRenderer.endWidth = BetterItemScanModBase.Config_ItemScanRadius.Value); obj.startWidth = startWidth; } if (num > __instance.scanElements.Length) { num = __instance.scanElements.Length; } list.Clear(); value = 0; if (num > __instance.scanElements.Length) { for (int i = 0; i < num; i++) { ScanNodeProperties component = ((Component)((RaycastHit)(ref array[i])).transform).gameObject.GetComponent<ScanNodeProperties>(); HudManagerPatch_UI.scannedNodeObjects.Add(component); if (component.nodeType == 1 || component.nodeType == 2) { object[] parameters = new object[3] { component, i, playerScript }; method.Invoke(__instance, parameters); } } } if (list.Count < __instance.scanElements.Length) { for (int j = 0; j < num; j++) { ScanNodeProperties component2 = ((Component)((RaycastHit)(ref array[j])).transform).gameObject.GetComponent<ScanNodeProperties>(); object[] parameters2 = new object[3] { component2, j, playerScript }; method.Invoke(__instance, parameters2); } } return false; } } [HarmonyPatch] public class PlayerControllerBPatch_B { [HarmonyPrefix] [HarmonyPatch(typeof(HUDManager), "AttemptScanNode")] private static bool AttemptScanNode_patch(HUDManager __instance, ScanNodeProperties node, int i, PlayerControllerB playerScript) { MethodInfo method = typeof(HUDManager).GetMethod("MeetsScanNodeRequirements", BindingFlags.Instance | BindingFlags.NonPublic); MethodInfo method2 = typeof(HUDManager).GetMethod("AssignNodeToUIElement", BindingFlags.Instance | BindingFlags.NonPublic); FieldInfo field = typeof(HUDManager).GetField("nodesOnScreen", BindingFlags.Instance | BindingFlags.NonPublic); List<ScanNodeProperties> list = field.GetValue(__instance) as List<ScanNodeProperties>; FieldInfo field2 = typeof(HUDManager).GetField("scannedScrapNum", BindingFlags.Instance | BindingFlags.NonPublic); int num = (int)field2.GetValue(__instance); FieldInfo field3 = typeof(HUDManager).GetField("playerPingingScan", BindingFlags.Instance | BindingFlags.NonPublic); float num2 = (float)field3.GetValue(__instance); object[] parameters = new object[2] { node, playerScript }; object[] parameters2 = new object[1] { node }; if (!(bool)method.Invoke(__instance, parameters)) { return false; } if (node.nodeType == 2) { num++; } if (!list.Contains(node)) { list.Add(node); } if (node.creatureScanID == -1) { HudManagerPatch_UI.scannedNodeObjects.Add(node); } if ((double)num2 < 0.0) { return false; } method2.Invoke(__instance, parameters2); return false; } } [HarmonyPatch] public class PlayerControllerBPatch_C { [HarmonyPostfix] [HarmonyPatch(typeof(HUDManager), "Update")] private static void Update_patch(HUDManager __instance) { FieldInfo field = typeof(HUDManager).GetField("addingToDisplayTotal", BindingFlags.Instance | BindingFlags.NonPublic); object value = field.GetValue(__instance); ((Component)((TMP_Text)__instance.totalValueText).transform.parent).gameObject.SetActive(false); value = false; } } }
plugins/QuokkaCrew-MoreMonsters/MoreMonsters.dll
Decompiled 2 years agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("MoreMonsters")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("MoreMonsters")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("aa6861f1-1ec5-446c-b28c-3f2b07cd05f8")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace MoreMonsters; [BepInPlugin("Quokka.MoreMonsters", "MoreMonsters", "1.0.0")] public class MoreMonstersBase : BaseUnityPlugin { private const string modGUID = "Quokka.MoreMonsters"; private const string modName = "MoreMonsters"; private const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("Quokka.MoreMonsters"); private static MoreMonstersBase Instance; public static ManualLogSource mls; private static RoundManager currentRound; public static bool firstTier; public static bool secondTier; public static bool thirdTier; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("Quokka.MoreMonsters"); harmony.PatchAll(typeof(MoreMonstersBase)); } [HarmonyPatch(typeof(RoundManager), "LoadNewLevel")] [HarmonyPostfix] private static void ModifyLevel(ref SelectableLevel newLevel) { currentRound = RoundManager.Instance; } [HarmonyPatch(typeof(RoundManager), "SpawnInsideEnemiesFromVentsIfReady")] [HarmonyPostfix] private static void SpawnInsideEnemiesFromVentsIfReadyPatch() { //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) currentRound = RoundManager.Instance; currentRound.timeScript.globalTimeSpeedMultiplier = 1f; currentRound.currentLevel.maxEnemyPowerCount = 250; int connectedPlayersAmount = currentRound.playersManager.connectedPlayersAmount; int num = (int)(0.75 * (double)connectedPlayersAmount); if (connectedPlayersAmount < 4) { num = 6; } for (int i = 0; i < currentRound.allEnemyVents.Length; i++) { if (currentRound.currentEnemySpawnIndex < num && currentRound.timeScript.currentDayTime / currentRound.timeScript.totalTime > 0.185f) { Vector3 position = currentRound.allEnemyVents[i].floorNode.position; float y = currentRound.allEnemyVents[i].floorNode.eulerAngles.y; int j; for (j = (i * (int)currentRound.timeScript.currentDayTime + 19 * (i + 3)) % 8; currentRound.currentLevel.Enemies[j].enemyType.numberSpawned > 4; j++) { } currentRound.SpawnEnemyOnServer(position, y, j); RoundManager obj = currentRound; obj.currentEnemySpawnIndex++; EnemyType enemyType = currentRound.currentLevel.Enemies[j].enemyType; enemyType.numberSpawned++; if (currentRound.valueOfFoundScrapItems > (int)(0.25 * (double)currentRound.totalScrapValueInLevel) && !firstTier) { num++; firstTier = true; } if (currentRound.valueOfFoundScrapItems > (int)(0.5 * (double)currentRound.totalScrapValueInLevel) && !secondTier) { num++; secondTier = true; } if (currentRound.valueOfFoundScrapItems > (int)(0.75 * (double)currentRound.totalScrapValueInLevel) && !thirdTier) { num++; thirdTier = true; } } } } }
plugins/Renegades-FlashlightToggle/FlashlightToggle.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Control")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Control")] [assembly: AssemblyTitle("Control")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Control { public static class PluginInfo { public const string PLUGIN_GUID = "Control"; public const string PLUGIN_NAME = "Control"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace Flashlight { [BepInPlugin("rr.Flashlight", "Flashlight", "1.3.1")] public class Plugin : BaseUnityPlugin { private Harmony _harmony = new Harmony("Flashlight"); private void Awake() { _harmony.PatchAll(typeof(Plugin)); ((BaseUnityPlugin)this).Logger.LogInfo((object)"------Flashlight done.------"); } [HarmonyPatch(typeof(PlayerControllerB), "SpawnPlayerAnimation")] [HarmonyPostfix] public static void ClearFlashlight(PlayerControllerB __instance) { __instance.pocketedFlashlight = null; } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] public static void ReadInput(PlayerControllerB __instance) { if (((!((NetworkBehaviour)__instance).IsOwner || !__instance.isPlayerControlled || (((NetworkBehaviour)__instance).IsServer && !__instance.isHostPlayerObject)) && !__instance.isTestingPlayer) || __instance.inTerminalMenu || __instance.isTypingChat || !Application.isFocused) { return; } if (__instance.currentlyHeldObjectServer is FlashlightItem && (Object)(object)__instance.currentlyHeldObjectServer != (Object)(object)__instance.pocketedFlashlight) { __instance.pocketedFlashlight = __instance.currentlyHeldObjectServer; } if ((Object)(object)__instance.pocketedFlashlight == (Object)null || !((ButtonControl)Keyboard.current.fKey).wasPressedThisFrame || !(__instance.pocketedFlashlight is FlashlightItem) || !__instance.pocketedFlashlight.isHeld) { return; } try { __instance.pocketedFlashlight.UseItemOnClient(true); if (!(__instance.currentlyHeldObjectServer is FlashlightItem)) { GrabbableObject pocketedFlashlight = __instance.pocketedFlashlight; ((Behaviour)((FlashlightItem)((pocketedFlashlight is FlashlightItem) ? pocketedFlashlight : null)).flashlightBulbGlow).enabled = false; GrabbableObject pocketedFlashlight2 = __instance.pocketedFlashlight; ((Behaviour)((FlashlightItem)((pocketedFlashlight2 is FlashlightItem) ? pocketedFlashlight2 : null)).flashlightBulb).enabled = false; GrabbableObject pocketedFlashlight3 = __instance.pocketedFlashlight; if (((pocketedFlashlight3 is FlashlightItem) ? pocketedFlashlight3 : null).isBeingUsed) { ((Behaviour)__instance.helmetLight).enabled = true; GrabbableObject pocketedFlashlight4 = __instance.pocketedFlashlight; ((FlashlightItem)((pocketedFlashlight4 is FlashlightItem) ? pocketedFlashlight4 : null)).usingPlayerHelmetLight = true; GrabbableObject pocketedFlashlight5 = __instance.pocketedFlashlight; ((FlashlightItem)((pocketedFlashlight5 is FlashlightItem) ? pocketedFlashlight5 : null)).PocketFlashlightServerRpc(true); } else { ((Behaviour)__instance.helmetLight).enabled = false; GrabbableObject pocketedFlashlight6 = __instance.pocketedFlashlight; ((FlashlightItem)((pocketedFlashlight6 is FlashlightItem) ? pocketedFlashlight6 : null)).usingPlayerHelmetLight = false; GrabbableObject pocketedFlashlight7 = __instance.pocketedFlashlight; ((FlashlightItem)((pocketedFlashlight7 is FlashlightItem) ? pocketedFlashlight7 : null)).PocketFlashlightServerRpc(false); } } } catch { } } } }
plugins/Renegades-FlashlightToggle/FlashlightToggle_v1.2.0.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Control")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Control")] [assembly: AssemblyTitle("Control")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Control { public static class PluginInfo { public const string PLUGIN_GUID = "Control"; public const string PLUGIN_NAME = "Control"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace Flashlight { [BepInPlugin("rr.Flashlight", "Flashlight", "1.2.0")] public class Plugin : BaseUnityPlugin { private Harmony _harmony = new Harmony("Flashlight"); private void Awake() { _harmony.PatchAll(typeof(Plugin)); ((BaseUnityPlugin)this).Logger.LogInfo((object)"------Flashlight done.------"); } [HarmonyPatch(typeof(PlayerControllerB), "SpawnPlayerAnimation")] [HarmonyPostfix] public static void ClearFlashlight(PlayerControllerB __instance) { __instance.pocketedFlashlight = null; } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] public static void ReadInput(PlayerControllerB __instance) { if ((!((NetworkBehaviour)__instance).IsOwner || !__instance.isPlayerControlled || (((NetworkBehaviour)__instance).IsServer && !__instance.isHostPlayerObject)) && !__instance.isTestingPlayer) { return; } if (__instance.currentlyHeldObjectServer is FlashlightItem && (Object)(object)__instance.currentlyHeldObjectServer != (Object)(object)__instance.pocketedFlashlight) { __instance.pocketedFlashlight = __instance.currentlyHeldObjectServer; } if ((Object)(object)__instance.pocketedFlashlight == (Object)null || !((ButtonControl)Keyboard.current.fKey).wasPressedThisFrame || !(__instance.pocketedFlashlight is FlashlightItem) || !__instance.pocketedFlashlight.isHeld) { return; } __instance.pocketedFlashlight.UseItemOnClient(true); if (!(__instance.currentlyHeldObjectServer is FlashlightItem)) { GrabbableObject pocketedFlashlight = __instance.pocketedFlashlight; ((Behaviour)((FlashlightItem)((pocketedFlashlight is FlashlightItem) ? pocketedFlashlight : null)).flashlightBulbGlow).enabled = false; GrabbableObject pocketedFlashlight2 = __instance.pocketedFlashlight; ((Behaviour)((FlashlightItem)((pocketedFlashlight2 is FlashlightItem) ? pocketedFlashlight2 : null)).flashlightBulb).enabled = false; GrabbableObject pocketedFlashlight3 = __instance.pocketedFlashlight; if (((pocketedFlashlight3 is FlashlightItem) ? pocketedFlashlight3 : null).isBeingUsed) { ((Behaviour)__instance.helmetLight).enabled = true; GrabbableObject pocketedFlashlight4 = __instance.pocketedFlashlight; ((FlashlightItem)((pocketedFlashlight4 is FlashlightItem) ? pocketedFlashlight4 : null)).usingPlayerHelmetLight = true; GrabbableObject pocketedFlashlight5 = __instance.pocketedFlashlight; ((FlashlightItem)((pocketedFlashlight5 is FlashlightItem) ? pocketedFlashlight5 : null)).PocketFlashlightServerRpc(true); } else { ((Behaviour)__instance.helmetLight).enabled = false; GrabbableObject pocketedFlashlight6 = __instance.pocketedFlashlight; ((FlashlightItem)((pocketedFlashlight6 is FlashlightItem) ? pocketedFlashlight6 : null)).usingPlayerHelmetLight = false; GrabbableObject pocketedFlashlight7 = __instance.pocketedFlashlight; ((FlashlightItem)((pocketedFlashlight7 is FlashlightItem) ? pocketedFlashlight7 : null)).PocketFlashlightServerRpc(false); } } } } }
plugins/Renegades-WalkieUse/Walkie.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Walkie")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Walkie")] [assembly: AssemblyTitle("Walkie")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Walkie { [BepInPlugin("rr.Walkie", "WalkieUse", "1.0.1")] [HarmonyPatch(typeof(PlayerControllerB))] public class WalkieToggle : BaseUnityPlugin { private Harmony _harmony = new Harmony("Flashlight"); private void Awake() { _harmony.PatchAll(typeof(WalkieToggle)); ((BaseUnityPlugin)this).Logger.LogInfo((object)"------Walkie done.------"); } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] public static void ReadInput(PlayerControllerB __instance) { GrabbableObject val = null; if ((!((NetworkBehaviour)__instance).IsOwner || !__instance.isPlayerControlled || (((NetworkBehaviour)__instance).IsServer && !__instance.isHostPlayerObject)) && !__instance.isTestingPlayer) { return; } for (int i = 0; i < __instance.ItemSlots.Length; i++) { if (__instance.ItemSlots[i] is WalkieTalkie && __instance.ItemSlots[i].isBeingUsed) { val = __instance.ItemSlots[i]; break; } } if ((Object)(object)val == (Object)null) { return; } if (((ButtonControl)Keyboard.current.rKey).wasPressedThisFrame) { if (__instance.currentlyHeldObjectServer is WalkieTalkie) { __instance.currentlyHeldObjectServer.UseItemOnClient(true); } else if ((Object)(object)val != (Object)null) { val.UseItemOnClient(true); } } if (((ButtonControl)Keyboard.current.rKey).wasReleasedThisFrame) { if (__instance.currentlyHeldObjectServer is WalkieTalkie) { __instance.currentlyHeldObjectServer.UseItemOnClient(false); } else if ((Object)(object)val != (Object)null) { val.UseItemOnClient(false); } } } } public static class PluginInfo { public const string PLUGIN_GUID = "Walkie"; public const string PLUGIN_NAME = "Walkie"; public const string PLUGIN_VERSION = "1.0.0"; } }
plugins/RickArg-Helmet_Cameras/HelmetCamera.dll
Decompiled 2 years agousing System; using System.Collections; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using UnityEngine; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("HelmetCamera")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("HelmetCamera")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("b99c4d46-5f13-47b3-a5af-5e3f37772e77")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace HelmetCamera { [BepInPlugin("RickArg.lethalcompany.helmetcameras", "Helmet_Cameras", "2.1.0")] public class PluginInit : BaseUnityPlugin { public static Harmony _harmony; public static ConfigEntry<int> config_isHighQuality; public static ConfigEntry<int> config_renderDistance; public static ConfigEntry<int> config_cameraFps; private void Awake() { //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected O, but got Unknown config_isHighQuality = ((BaseUnityPlugin)this).Config.Bind<int>("MONITOR QUALITY", "monitorResolution", 0, "Low FPS affection. High Quality mode. 0 - vanilla (48x48), 1 - vanilla+ (128x128), 2 - mid quality (256x256), 3 - high quality (512x512), 4 - Very High Quality (1024x1024)"); config_renderDistance = ((BaseUnityPlugin)this).Config.Bind<int>("MONITOR QUALITY", "renderDistance", 20, "Low FPS affection. Render distance for helmet camera."); config_cameraFps = ((BaseUnityPlugin)this).Config.Bind<int>("MONITOR QUALITY", "cameraFps", 30, "Very high FPS affection. FPS for helmet camera. To increase YOUR fps, you should low cameraFps value."); _harmony = new Harmony("HelmetCamera"); _harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin Helmet_Cameras is loaded with version 2.1.0!"); ((BaseUnityPlugin)this).Logger.LogInfo((object)"--------Helmet camera patch done.---------"); } } public static class PluginInfo { public const string PLUGIN_GUID = "RickArg.lethalcompany.helmetcameras"; public const string PLUGIN_NAME = "Helmet_Cameras"; public const string PLUGIN_VERSION = "2.1.0"; } public class Plugin : MonoBehaviour { private RenderTexture renderTexture; private bool isMonitorChanged = false; private GameObject helmetCameraNew; private bool isSceneLoaded = false; private bool isCoroutineStarted = false; private int currentTransformIndex; private int resolution = 0; private int renderDistance = 50; private float cameraFps = 30f; private float elapsed; private void Awake() { //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Expected O, but got Unknown //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Expected O, but got Unknown //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Expected O, but got Unknown //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Expected O, but got Unknown //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Expected O, but got Unknown resolution = PluginInit.config_isHighQuality.Value; renderDistance = PluginInit.config_renderDistance.Value; cameraFps = PluginInit.config_cameraFps.Value; switch (resolution) { case 0: renderTexture = new RenderTexture(48, 48, 24); break; case 1: renderTexture = new RenderTexture(128, 128, 24); break; case 2: renderTexture = new RenderTexture(256, 256, 24); break; case 3: renderTexture = new RenderTexture(512, 512, 24); break; case 4: renderTexture = new RenderTexture(1024, 1024, 24); break; } } public void Start() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: 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_0063: Unknown result type (might be due to invalid IL or missing references) isCoroutineStarted = false; while ((Object)(object)helmetCameraNew == (Object)null) { helmetCameraNew = new GameObject("HelmetCamera"); } Scene activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name != "MainMenu") { activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name != "InitScene") { activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name != "InitSceneLaunchOptions") { isSceneLoaded = true; Debug.Log((object)"[HELMET_CAMERAS] Starting coroutine..."); ((MonoBehaviour)this).StartCoroutine(LoadSceneEnter()); return; } } } isSceneLoaded = false; isMonitorChanged = false; } private IEnumerator LoadSceneEnter() { Debug.Log((object)"[HELMET_CAMERAS] 5 seconds for init mode... Please wait..."); yield return (object)new WaitForSeconds(5f); isCoroutineStarted = true; if ((Object)(object)GameObject.Find("Environment/HangarShip/Cameras/ShipCamera") != (Object)null) { Debug.Log((object)"[HELMET_CAMERAS] Ship camera founded..."); if (!isMonitorChanged) { ((Renderer)GameObject.Find("Environment/HangarShip/ShipModels2b/MonitorWall/Cube").GetComponent<MeshRenderer>()).materials[2].mainTexture = ((Renderer)GameObject.Find("Environment/HangarShip/ShipModels2b/MonitorWall/Cube.001").GetComponent<MeshRenderer>()).materials[2].mainTexture; ((Renderer)GameObject.Find("Environment/HangarShip/ShipModels2b/MonitorWall/Cube.001").GetComponent<MeshRenderer>()).materials[2].mainTexture = (Texture)(object)renderTexture; helmetCameraNew.AddComponent<Camera>(); ((Behaviour)helmetCameraNew.GetComponent<Camera>()).enabled = false; helmetCameraNew.GetComponent<Camera>().targetTexture = renderTexture; helmetCameraNew.GetComponent<Camera>().cullingMask = 20649983; helmetCameraNew.GetComponent<Camera>().farClipPlane = renderDistance; helmetCameraNew.GetComponent<Camera>().nearClipPlane = 0.05f; isMonitorChanged = true; Debug.Log((object)"[HELMET_CAMERAS] Monitors were changed..."); } } } public void Update() { //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) if (!isSceneLoaded || !isCoroutineStarted) { return; } elapsed += Time.deltaTime; if (elapsed > 1f / cameraFps) { elapsed = 0f; helmetCameraNew.GetComponent<Camera>().Render(); } GameObject val = GameObject.Find("Environment/HangarShip/ShipModels2b/MonitorWall/Cube.001/CameraMonitorScript"); currentTransformIndex = val.GetComponent<ManualCameraRenderer>().targetTransformIndex; TransformAndName val2 = val.GetComponent<ManualCameraRenderer>().radarTargets[currentTransformIndex]; if (!val2.isNonPlayer) { try { helmetCameraNew.transform.SetPositionAndRotation(val2.transform.Find("ScavengerModel/metarig/CameraContainer/MainCamera/HelmetLights").position + new Vector3(0f, 0f, 0f), val2.transform.Find("ScavengerModel/metarig/CameraContainer/MainCamera/HelmetLights").rotation * Quaternion.Euler(0f, 0f, 0f)); DeadBodyInfo[] array = Object.FindObjectsOfType<DeadBodyInfo>(); for (int i = 0; i < array.Length; i++) { if (array[i].playerScript.playerUsername == val2.name) { helmetCameraNew.transform.SetPositionAndRotation(((Component)array[i]).gameObject.transform.Find("spine.001/spine.002/spine.003").position, ((Component)array[i]).gameObject.transform.Find("spine.001/spine.002/spine.003").rotation * Quaternion.Euler(0f, 0f, 0f)); } } return; } catch (NullReferenceException) { Debug.Log((object)"[HELMET_CAMERAS] ERROR NULL REFERENCE"); return; } } helmetCameraNew.transform.SetPositionAndRotation(val2.transform.position + new Vector3(0f, 1.6f, 0f), val2.transform.rotation * Quaternion.Euler(0f, -90f, 0f)); } } } namespace HelmetCamera.Patches { [HarmonyPatch] internal class HelmetCamera { public static void InitCameras() { GameObject val = GameObject.Find("Environment/HangarShip/Cameras/ShipCamera"); val.AddComponent<Plugin>(); } [HarmonyPatch(typeof(StartOfRound), "Start")] [HarmonyPostfix] public static void InitCamera(ref ManualCameraRenderer __instance) { InitCameras(); } } }
plugins/Rozebud-FOV_Adjust/FovAdjust.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("FovAdjust")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("FovAdjust")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("dfb6681a-9f25-4737-a7fe-10b3c23f65b3")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace FovAdjust; [BepInPlugin("Rozebud.FovAdjust", "FOV Adjust", "1.1.0")] public class FovAdjustBase : BaseUnityPlugin { private const string modGUID = "Rozebud.FovAdjust"; private const string modName = "FOV Adjust"; private const string modVer = "1.1.0"; private readonly Harmony harmony = new Harmony("Rozebud.FovAdjust"); private static FovAdjustBase Instance; public static ManualLogSource log; public static ConfigEntry<float> configFov; public static ConfigEntry<bool> configHideVisor; public static bool inDebugMode; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } log = Logger.CreateLogSource("Rozebud.FovAdjust"); log.LogInfo((object)"Starting."); configFov = ((BaseUnityPlugin)this).Config.Bind<float>("General", "fov", 66f, "Change the field of view of the camera. Clamped from 66 to 130 for my sanity. Also keep in mind that this is vertical FOV."); configHideVisor = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "hideVisor", false, "Changes whether the first person visor is visible."); PlayerControllerBPatches.newTargetFovBase = Mathf.Clamp(configFov.Value, 66f, 130f); PlayerControllerBPatches.hideVisor = configHideVisor.Value; log.LogInfo((object)"Configs DONE!"); harmony.PatchAll(typeof(PlayerControllerBPatches)); harmony.PatchAll(typeof(HUDManagerPatches)); log.LogInfo((object)"All FOV Adjust patches have loaded successfully."); } } public class PlayerControllerBPatches { public static float newTargetFovBase = 66f; private static float prefixCamFov = 0f; public static bool hideVisor = false; private static Vector3 visorScale; public static Vector3 visorScaleBottom = new Vector3(0.68f, 0.8f, 0.95f); public static Vector3 visorScaleTop = new Vector3(0.68f, 0.35f, 0.99f); public static float linToSinLerp = 0.6f; public static float visorScaleTopRefFOV = 130f; [HarmonyPatch(typeof(PlayerControllerB), "Awake")] [HarmonyPostfix] private static void Awake_Postfix(PlayerControllerB __instance) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) FovAdjustBase.log.LogMessage((object)__instance.localVisor.localScale); calculateVisorStuff(); __instance.localVisor.localScale = visorScale; } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPrefix] private static void Update_Prefix(PlayerControllerB __instance) { //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) prefixCamFov = __instance.gameplayCamera.fieldOfView; if (FovAdjustBase.inDebugMode) { if (((ButtonControl)Keyboard.current.minusKey).wasPressedThisFrame) { visorScale.x -= 0.00049999997f; FovAdjustBase.log.LogMessage((object)visorScale); } else if (((ButtonControl)Keyboard.current.equalsKey).wasPressedThisFrame) { visorScale.x += 0.00049999997f; FovAdjustBase.log.LogMessage((object)visorScale); } if (((ButtonControl)Keyboard.current.leftBracketKey).wasPressedThisFrame) { visorScale.y -= 0.00049999997f; FovAdjustBase.log.LogMessage((object)visorScale); } else if (((ButtonControl)Keyboard.current.rightBracketKey).wasPressedThisFrame) { visorScale.y += 0.00049999997f; FovAdjustBase.log.LogMessage((object)visorScale); } if (((ButtonControl)Keyboard.current.semicolonKey).wasPressedThisFrame) { visorScale.z -= 0.00049999997f; FovAdjustBase.log.LogMessage((object)visorScale); } else if (((ButtonControl)Keyboard.current.quoteKey).wasPressedThisFrame) { visorScale.z += 0.00049999997f; FovAdjustBase.log.LogMessage((object)visorScale); } } if (__instance.localVisor.localScale != visorScale) { __instance.localVisor.localScale = visorScale; } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] private static void Update_Postfix(PlayerControllerB __instance) { float num = newTargetFovBase; if (__instance.inTerminalMenu) { num = 60f; } else if (__instance.IsInspectingItem) { num = 46f; } else if (__instance.isSprinting) { num *= 1.03f; } __instance.gameplayCamera.fieldOfView = Mathf.Lerp(prefixCamFov, num, 6f * Time.deltaTime); } [HarmonyPatch(typeof(PlayerControllerB), "LateUpdate")] [HarmonyPostfix] private static void lateUpdatePostfix(PlayerControllerB __instance) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) if (newTargetFovBase > 66f || FovAdjustBase.inDebugMode) { __instance.localVisor.position = __instance.localVisor.position + __instance.localVisor.rotation * new Vector3(0f, 0f, -0.003f); } } private static float easeOutSine(float x) { return Mathf.Sin(x * (float)Math.PI / 2f); } public static void calculateVisorStuff() { //IL_001a: 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_005f: 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_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) if (hideVisor) { visorScale = new Vector3(0f, 0f, 0f); } else if (FovAdjustBase.inDebugMode) { float num = (newTargetFovBase - 66f) / (visorScaleTopRefFOV - 66f); num = Mathf.Lerp(num, easeOutSine(num), linToSinLerp); visorScale = Vector3.LerpUnclamped(visorScaleBottom, visorScaleTop, num); } else if (newTargetFovBase > 66f) { float num2 = (newTargetFovBase - 66f) / (visorScaleTopRefFOV - 66f); num2 = Mathf.Lerp(num2, easeOutSine(num2), linToSinLerp); visorScale = Vector3.LerpUnclamped(visorScaleBottom, visorScaleTop, num2); } else { visorScale = new Vector3(0.36f, 0.49f, 0.49f); } } } public class HUDManagerPatches { [HarmonyPatch(typeof(HUDManager), "SubmitChat_performed")] [HarmonyPrefix] public static bool SubmitChat_performed_Prefix(HUDManager __instance) { //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) string text = __instance.chatTextField.text; if (text.StartsWith("/fov")) { string[] array = text.Split(new char[1] { ' ' }); if (array.Length > 1 && float.TryParse(array[1], out var result)) { result = Mathf.Clamp(result, 66f, 130f); PlayerControllerBPatches.newTargetFovBase = result; if (!FovAdjustBase.inDebugMode) { PlayerControllerBPatches.calculateVisorStuff(); } } } else if (text.StartsWith("/toggleVisor")) { PlayerControllerBPatches.hideVisor = !PlayerControllerBPatches.hideVisor; PlayerControllerBPatches.calculateVisorStuff(); } else if (text.StartsWith("/recalcVisor") && FovAdjustBase.inDebugMode) { PlayerControllerBPatches.calculateVisorStuff(); } else if (text.StartsWith("/setScaleBottom") && FovAdjustBase.inDebugMode) { string[] array2 = text.Split(new char[1] { ' ' }); PlayerControllerBPatches.visorScaleBottom = new Vector3(float.Parse(array2[1]), float.Parse(array2[2]), float.Parse(array2[3])); } else if (text.StartsWith("/setScaleTop") && FovAdjustBase.inDebugMode) { string[] array3 = text.Split(new char[1] { ' ' }); PlayerControllerBPatches.visorScaleTop = new Vector3(float.Parse(array3[1]), float.Parse(array3[2]), float.Parse(array3[3])); } else if (text.StartsWith("/setSinAmount") && FovAdjustBase.inDebugMode) { string[] array4 = text.Split(new char[1] { ' ' }); PlayerControllerBPatches.linToSinLerp = float.Parse(array4[1]); } else if (text.StartsWith("/setTopRef") && FovAdjustBase.inDebugMode) { string[] array5 = text.Split(new char[1] { ' ' }); PlayerControllerBPatches.visorScaleTopRefFOV = float.Parse(array5[1]); } else { if (!text.StartsWith("/gimmeMyValues") || !FovAdjustBase.inDebugMode) { return true; } ManualLogSource log = FovAdjustBase.log; Vector3 val = PlayerControllerBPatches.visorScaleBottom; log.LogMessage((object)("visorScaleBottom: " + ((object)(Vector3)(ref val)).ToString())); ManualLogSource log2 = FovAdjustBase.log; val = PlayerControllerBPatches.visorScaleTop; log2.LogMessage((object)("visorScaleTop: " + ((object)(Vector3)(ref val)).ToString())); FovAdjustBase.log.LogMessage((object)("linToSinLerp: " + PlayerControllerBPatches.linToSinLerp)); FovAdjustBase.log.LogMessage((object)("visorScaleTopRefFOV: " + PlayerControllerBPatches.visorScaleTopRefFOV)); } __instance.localPlayer = GameNetworkManager.Instance.localPlayerController; __instance.localPlayer.isTypingChat = false; __instance.chatTextField.text = ""; EventSystem.current.SetSelectedGameObject((GameObject)null); ((Behaviour)__instance.typingIndicator).enabled = false; return false; } }
plugins/Sligili-More_Emotes/MoreEmotes-v0.1.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using GameNetcodeStuff; using HarmonyLib; using MoreEmotes.Patch; using Tools; using Unity.Netcode; using UnityEngine; using UnityEngine.InputSystem; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("FuckYouMod")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("FuckYouMod")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("5ecc2bf2-af12-4e83-a6f1-cf2eacbf3060")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace Tools { public class Reflection { public static object GetInstanceField(Type type, object instance, string fieldName) { BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic; FieldInfo field = type.GetField(fieldName, bindingAttr); return field.GetValue(instance); } public static object CallMethod(object instance, string methodName, params object[] args) { MethodInfo method = instance.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic); if (method != null) { return method.Invoke(instance, args); } return null; } } } namespace MoreEmotes { [BepInPlugin("MoreEmotes", "MoreEmotes-Sligili", "0.1.0")] public class FuckYouModInitialization : BaseUnityPlugin { private Harmony _harmony; private ConfigEntry<string> config_KeyEmote3; private void Awake() { //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown ((BaseUnityPlugin)this).Logger.LogInfo((object)"MoreEmotes loaded"); EmotePatch.animationsBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "MoreEmotes/animationsbundle")); EmotePatch.animatorBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "MoreEmotes/animatorbundle")); EmotePatch.local = EmotePatch.animatorBundle.LoadAsset<RuntimeAnimatorController>("Assets/MoreEmotes/NEWmetarig.controller"); EmotePatch.others = EmotePatch.animatorBundle.LoadAsset<RuntimeAnimatorController>("Assets/MoreEmotes/NEWmetarigOtherPlayers.controller"); ConfigFile(); _harmony = new Harmony("MoreEmotes"); _harmony.PatchAll(typeof(EmotePatch)); } private void ConfigFile() { config_KeyEmote3 = ((BaseUnityPlugin)this).Config.Bind<string>("KEYBINDS", "Emote3", "3", "SUPPORTED KEYS A-Z | 0-9 | F1-F12 "); EmotePatch.keyBind_Emote3 = config_KeyEmote3.Value; } } public static class PluginInfo { public const string Guid = "MoreEmotes"; public const string Name = "MoreEmotes-Sligili"; public const string Ver = "0.1.0"; } } namespace MoreEmotes.Patch { internal class EmotePatch { public static AssetBundle animationsBundle; public static AssetBundle animatorBundle; private static int emote3ID = 3; private static bool keyFlag_Emote3; public static string keyBind_Emote3; private static CallbackContext context; public static RuntimeAnimatorController local; public static RuntimeAnimatorController others; [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] private static void UpdatePrefix(PlayerControllerB __instance) { //IL_0092: Unknown result type (might be due to invalid IL or missing references) if (!__instance.isPlayerControlled || !((NetworkBehaviour)__instance).IsOwner) { __instance.playerBodyAnimator.runtimeAnimatorController = others; return; } if ((Object)(object)__instance.playerBodyAnimator != (Object)(object)local) { __instance.playerBodyAnimator.runtimeAnimatorController = local; } if (InputControlExtensions.IsPressed(((InputControl)Keyboard.current)[keyBind_Emote3], 0f) && !keyFlag_Emote3) { Debug.Log((object)"Pressed the Emote3 key"); keyFlag_Emote3 = true; __instance.PerformEmote(context, emote3ID); } else if (!InputControlExtensions.IsPressed(((InputControl)Keyboard.current)[keyBind_Emote3], 0f)) { keyFlag_Emote3 = false; } } [HarmonyPatch(typeof(PlayerControllerB), "PerformEmote")] [HarmonyPrefix] private static void PerformEmotePrefix(CallbackContext context, int emoteID, PlayerControllerB __instance) { if ((emoteID >= 3 || ((CallbackContext)(ref context)).performed) && ((((NetworkBehaviour)__instance).IsOwner && __instance.isPlayerControlled && (!((NetworkBehaviour)__instance).IsServer || __instance.isHostPlayerObject)) || __instance.isTestingPlayer) && (bool)Reflection.CallMethod(__instance, "CheckConditionsForEmote") && !(__instance.timeSinceStartingEmote < 0.5f)) { __instance.timeSinceStartingEmote = 0f; __instance.performingEmote = true; __instance.playerBodyAnimator.SetInteger("emoteNumber", emoteID); __instance.StartPerformingEmoteServerRpc(); } } } }
plugins/SOULFUL-BetterBrutalEvent/BetterBrutalEvent.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using BrutalEvent.Common; using BrutalEvent.Enums; using BrutalEvent.Models; using BrutalEvent.Services; using BrutalEvent.Services.Abstract; using BrutalEvent.Services.Abstract.Interface; using BrutalEvent.Services.Events; using HarmonyLib; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("BrutalEvent")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("BrutalEvent")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("0a74de6b-63ee-4bb8-93f7-ed2e9b5480b9")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace BrutalEvent { [HarmonyPatch(typeof(TimeOfDay), "Awake")] public class QuotaAjuster { [HarmonyPostfix] private static void Prefix(TimeOfDay __instance) { Configuration.mls.LogWarning((object)"Changing quota variables in patch!"); __instance.quotaVariables.startingQuota = Plugin._config.StartingQuota.Value; __instance.quotaVariables.startingCredits = Plugin._config.StartingCredits.Value; __instance.quotaVariables.baseIncrease = Plugin._config.BaseIncrease.Value; __instance.quotaVariables.deadlineDaysAmount = Plugin._config.DeadlineDaysAmount.Value; } } [BepInPlugin("Liquid.BetterBrutalEvent", "BetterBrutalEvent", "1.0.0")] public class Plugin : BaseUnityPlugin { private const string MyGUID = "Liquid.BetterBrutalEvent"; private const string PluginName = "BetterBrutalEvent"; private const string VersionString = "1.0.0"; private Harmony _harmony = new Harmony("BetterBrutalEvent"); public static ConfigValues _config; private static EventFactory _eventFactory; private static MasterEnviroment _masterEnviroment; public static Plugin Instance { get; set; } private void Awake() { Instance = this; _config = new LoadConfig().BindConfigSettings(); _eventFactory = new EventFactory(); _masterEnviroment = new MasterEnviroment(); Configuration.mls = Logger.CreateLogSource("BrutalEvent"); _harmony.PatchAll(typeof(Plugin)); Configuration.mls = ((BaseUnityPlugin)this).Logger; Configuration.mls.LogInfo((object)"Loaded NEW Brutal Company and applying patches."); } [HarmonyPatch(typeof(RoundManager), "LoadNewLevel")] [HarmonyPrefix] private static bool ModifyLevel(ref SelectableLevel newLevel) { ShowLogo(); if (!((NetworkBehaviour)RoundManager.Instance).IsHost) { Configuration.mls.LogWarning((object)" YOU ARE NOT A HOST! (>_<)"); Configuration.mls.LogWarning((object)" BRUTAL EVENT DIDN'T LOADING"); return false; } Configuration.RarityLevelValue.TryGetValue(newLevel, out var value); Configuration.mls.LogInfo((object)"NORMALIZATION ENEMIES"); _masterEnviroment.NormalizeEnemiesRarity(newLevel); Configuration.mls.LogInfo((object)"GENERATE EVENT"); LevelEvent levelEvent = ((newLevel.sceneName == "CompanyBuilding") ? _eventFactory.CreateEvent(EventEnum.None) : _eventFactory.GetRandomEvent()); _masterEnviroment.SetupRateLimit(newLevel, _eventFactory.EventEnum, _config); UpdateHUDAndCredits(newLevel, value); Configuration.mls.LogInfo((object)"SETUP SCRAP LIMIT"); _masterEnviroment.SetupLevelScrap(newLevel, _config); Configuration.mls.LogInfo((object)"ON LOAD NEW LEVEL"); levelEvent.OnLoadNewLevel(ref newLevel, _config, value); Configuration.mls.LogInfo((object)"RARITY BY LEVEL[newLevel]"); Configuration.RarityLevelValue[newLevel] = Mathf.Clamp(value + 15f, 0f, _config.MaxRate.Value); HUDManager.Instance.AddTextToChatOnServer(levelEvent.GetEventName() ?? "", -1); Configuration.mls.LogWarning((object)("EVENT : " + levelEvent.GetEventName())); Configuration.mls.LogInfo((object)"ShowEnemyRarirty"); _masterEnviroment.ShowEnemyRarirty(newLevel, value); return true; } private static void UpdateHUDAndCredits(SelectableLevel newLevel, float currentEventRate) { //IL_007c: Unknown result type (might be due to invalid IL or missing references) HUDManager.Instance.AddTextToChatOnServer($"<color=yellow>MOON IS AT {currentEventRate} %RATE</color>", -1); if (currentEventRate > _config.LimitRate.Value) { HUDManager.Instance.AddTextToChatOnServer($"<color=red>HEAT LEVEL IS DANGEROUSLY HIGH : {currentEventRate} " + "<color=white>\nVISIT OTHER MOONS TO LOWER HEAT LEVEL.</color>", -1); } if (!newLevel.sceneName.Contains("CompanyBuilding")) { Terminal val = (Terminal)(((object)Object.FindObjectOfType<Terminal>()) ?? ((object)new Terminal())); val.groupCredits += _config.AddCredits.Value; val.SyncGroupCreditsServerRpc(val.groupCredits, val.numberOfItemsInDropship); } } public static void ShowLogo() { Configuration.mls.LogInfo((object)"\r\n______ _ _ ______ _ _ _____ _ \r\n| ___ \\ | | | | | ___ \\ | | | | | ___| | | \r\n| |_/ / ___| |_| |_ ___ _ __ | |_/ /_ __ _ _| |_ __ _| | | |____ _____ _ __ | |_ \r\n| ___ \\/ _ \\ __| __/ _ \\ '__| | ___ \\ '__| | | | __/ _` | | | __\\ \\ / / _ \\ '_ \\| __|\r\n| |_/ / __/ |_| || __/ | | |_/ / | | |_| | || (_| | | | |___\\ V / __/ | | | |_ \r\n\\____/ \\___|\\__|\\__\\___|_| \\____/|_| \\__,_|\\__\\__,_|_| \\____/ \\_/ \\___|_| |_|\\__|\r\n \r\n \r\n"); } private static void Update() { } } } namespace BrutalEvent.Services { public class EventFactory : IEventFactory { private Random random = new Random(); public EventEnum EventEnum { get; set; } = EventEnum.None; public LevelEvent GetRandomEvent() { EventEnum = (EventEnum)random.Next(Enum.GetValues(typeof(EventEnum)).Length); return CreateEvent(EventEnum); } public LevelEvent GetCustomEvent(EventEnum eventEnum) { return CreateEvent(eventEnum); } public LevelEvent CreateEvent(EventEnum gameEvent) { if (1 == 0) { } LevelEvent result = gameEvent switch { EventEnum.None => new NoneEvent(), EventEnum.All => new AllEvent(), EventEnum.Chaos => new ChaosEvent(), EventEnum.Unfair => new UnFairEvent(), EventEnum.Landmine => new LandMineEvent(), EventEnum.Kleptomania => new KleptomaniaEvent(), EventEnum.Arachnophobia => new ArachnophobiaEvent(), EventEnum.SecuritySystem => new SecurityEvent(), EventEnum.AllSnareFlea => new AllSnareEvent(), EventEnum.BrackenAndCoil => new BrackerAndCoilEvent(), EventEnum.BlobApocalypsis => new BlobApocalypsis(), EventEnum.WhoLetTheDogsOut => new WhoLetTheDogEvent(), EventEnum.DidYouSeeHer => new DidYouSeeHerEvent(), EventEnum.Tremors => new TremorsEvent(), EventEnum.GoToRent => new GoToRentEvent(), EventEnum.Delivery => new DeliveryEvent(), EventEnum.LetsFly => new LetsFlyEvent(), EventEnum.ReplaceItems => new ReplaceItemsEvent(), _ => new NoneEvent(), }; if (1 == 0) { } return result; } } public class NormalDistributionService : INormalDistributionService { public float CalculateRarity(SelectableLevel currentLevel, float currentRate) { int count = RoundManager.Instance.playersManager.ClientPlayerList.Count; float num = (float)Math.Pow(Math.PI, count); float mu = currentRate + (float)count * num; float sigma = currentRate / (float)count; float num2 = NormalDistribution(mu, sigma, count); return Mathf.Clamp(num2, 0f, 100f); } public float NormalDistribution(float mu, float sigma, int players) { float num = 0f; List<float> list = new List<float>(); for (int i = 0; i < players; i++) { list.Add(Random.Range(0f, 1f)); num += list.LastOrDefault(); } float num2 = num - list.Sum() / (float)list.Count; return mu + sigma * num2; } } } namespace BrutalEvent.Services.Events { internal class AllEvent : LevelEvent { private EventFactory eventFactory; public AllEvent() { eventFactory = new EventFactory(); } public override string GetEventName() { return "<color=red>LEAVE THIS MOON! NOW!</color>"; } public override LevelEvent CreateEvent() { return new AllEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { foreach (object value in Enum.GetValues(typeof(EventEnum))) { eventFactory.CreateEvent((EventEnum)value); } } } internal class AllSnareEvent : LevelEvent { public override string GetEventName() { return "<color=orange>WATCH YOUR HEAD!</color>"; } public override LevelEvent CreateEvent() { return new AllSnareEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { _enviroment.SetupEnemyChance(newLevel, currentRate, configs.Multiplier.Value); _enviroment.GenerateEnemiesEvent<CentipedeAI>(newLevel, currentRate, 2f); } public override void OnLoadNewLevelCleanup(ref SelectableLevel newLevel) { newLevel.enemySpawnChanceThroughoutDay = oldAnimationCurve; } } internal class ArachnophobiaEvent : LevelEvent { public override string GetEventName() { return "<color=red>ARACHNOPHOBIA!</color>"; } public override LevelEvent CreateEvent() { return new ArachnophobiaEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { _enviroment.SetupEnemyChance(newLevel, currentRate, configs.Multiplier.Value); _enviroment.GenerateEnemiesEvent<SandSpiderAI>(newLevel, currentRate, 2f); } } internal class BlobApocalypsis : LevelEvent { public override string GetEventName() { return "<color=orange>BLOBAPOCALYPSIS</color>"; } public override LevelEvent CreateEvent() { return new BlobApocalypsis(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { _enviroment.SetupEnemyChance(newLevel, currentRate, configs.Multiplier.Value); _enviroment.GenerateEnemiesEvent<BlobAI>(newLevel, currentRate, 3f); } } internal class BrackerAndCoilEvent : LevelEvent { public override string GetEventName() { return "<color=red>THE HUNT BEGIN!</color>"; } public override LevelEvent CreateEvent() { return new BrackerAndCoilEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { _enviroment.ResetEnemiesRarity(newLevel); _enviroment.SetupEnemyChance(newLevel, currentRate, configs.Multiplier.Value); _enviroment.GenerateEnemiesEvent<FlowermanAI>(newLevel, currentRate, 2f); _enviroment.GenerateEnemiesEvent<CrawlerAI>(newLevel, currentRate, 2f); } } internal class ChaosEvent : LevelEvent { public override string GetEventName() { return "<color=red>LEAVE THIS MOON! CHAOS!</color>"; } public override LevelEvent CreateEvent() { return new ChaosEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { _enviroment.SetupEnemyChance(newLevel, currentRate, configs.Multiplier.Value); _enviroment.GenerateEnemiesEvent<FlowermanAI>(newLevel, currentRate, 1f); _enviroment.GenerateEnemiesEvent<BlobAI>(newLevel, currentRate, 1f); _enviroment.GenerateEnemiesEvent<SandSpiderAI>(newLevel, currentRate, 1f); _enviroment.GenerateEnemiesEvent<CentipedeAI>(newLevel, currentRate, 1f); _enviroment.GenerateEnemiesEvent<CrawlerAI>(newLevel, currentRate, 1f); _enviroment.GenerateEnemiesEvent<HoarderBugAI>(newLevel, currentRate, 2f); _enviroment.GenerateEnemiesEvent<SpringManAI>(newLevel, currentRate, 1f); } } internal class DeliveryEvent : LevelEvent { public override string GetEventName() { return "<color=green>EZ DELIVERY!</color>"; } public override LevelEvent CreateEvent() { return new DeliveryEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { _enviroment.SetupEnemyChance(newLevel, currentRate, configs.Multiplier.Value); Terminal val = Object.FindObjectOfType<Terminal>(); int num = Random.Range(3, 9); for (int i = 0; i < num; i++) { int item = Random.Range(0, 6); val.orderedItemsFromTerminal.Add(item); } } } internal class DidYouSeeHerEvent : LevelEvent { public override string GetEventName() { return "<color=red>DID YOU SEE HER?!</color>"; } public override LevelEvent CreateEvent() { return new DidYouSeeHerEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { _enviroment.SetupEnemyChance(newLevel, currentRate, configs.Multiplier.Value); _enviroment.GenerateEnemiesEvent<DressGirlAI>(newLevel, currentRate, 1f); } } internal class GoToRentEvent : LevelEvent { public override string GetEventName() { return "<color=green>GO TO RENT!</color>"; } public override LevelEvent CreateEvent() { return new GoToRentEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { Terminal val = Object.FindObjectOfType<Terminal>(); Item[] buyableItemsList = val.buyableItemsList; foreach (Item val2 in buyableItemsList) { val2.creditsWorth += (int)((double)currentRate + (double)val2.creditsWorth * 0.5); } } } internal class KleptomaniaEvent : LevelEvent { public override string GetEventName() { return "<color=orange>KLEPTOMANIA!</color>"; } public override LevelEvent CreateEvent() { return new KleptomaniaEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { _enviroment.SetupEnemyChance(newLevel, currentRate, configs.Multiplier.Value); _enviroment.GenerateEnemiesEvent<HoarderBugAI>(newLevel, currentRate, 2.5f); } } internal class LandMineEvent : LevelEvent { public override string GetEventName() { return "<color=red>MINE MINE MINE!</color>"; } public override LevelEvent CreateEvent() { return new LandMineEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { _enviroment.SetupEnemyChance(newLevel, currentRate, configs.Multiplier.Value); SpawnableMapObject[] spawnableMapObjects = newLevel.spawnableMapObjects; foreach (SpawnableMapObject val in spawnableMapObjects) { if ((Object)(object)val.prefabToSpawn.GetComponentInChildren<Landmine>() != (Object)null) { val.numberToSpawn = _curveGenerator.CreateSpawnCurve(new float[2] { 0f, 25f * configs.Multiplier.Value }, new float[2] { 100f, 500f + currentRate * 3f }); } } } } internal class LetsFlyEvent : LevelEvent { public override string GetEventName() { return "<color=green>ITS A FLY?! NO ITS A PLANE!</color>"; } public override LevelEvent CreateEvent() { return new LetsFlyEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { int item = 9; Terminal val = Object.FindObjectOfType<Terminal>(); for (int i = 0; i < 5; i++) { val.orderedItemsFromTerminal.Add(item); } } } public class NoneEvent : LevelEvent { public override string GetEventName() { return "<color=green>NONE EVENT</color>"; } public override LevelEvent CreateEvent() { return new NoneEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { _enviroment.NormalizeEnemiesRarity(newLevel); } } internal class ReplaceItemsEvent : LevelEvent { public override string GetEventName() { return "<color=orange>DID YOU BUY FLASHLIGHT? RIGHT?</color>"; } public override LevelEvent CreateEvent() { return new ReplaceItemsEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { _enviroment.SetupEnemyChance(newLevel, currentRate, configs.Multiplier.Value); Terminal val = Object.FindObjectOfType<Terminal>(); int num = val.buyableItemsList.Length; Item[] array = val.buyableItemsList.ToArray(); val.buyableItemsList = null; for (int num2 = num; num2 > 0; num2--) { CollectionExtensions.AddItem<Item>((IEnumerable<Item>)val.buyableItemsList, array[num2]); } } } internal class SecurityEvent : LevelEvent { public override string GetEventName() { return "<color=orange>COMPANY SECURITY SYSTEM! GLHF :)</color>"; } public override LevelEvent CreateEvent() { return new SecurityEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { _enviroment.SetupEnemyChance(newLevel, currentRate, configs.Multiplier.Value); SpawnableMapObject[] spawnableMapObjects = newLevel.spawnableMapObjects; SpawnableMapObject[] array = spawnableMapObjects; foreach (SpawnableMapObject val in array) { if ((Object)(object)val.prefabToSpawn.GetComponentInChildren<Turret>() != (Object)null) { val.numberToSpawn = _curveGenerator.CreateSpawnCurve(new float[2] { 0f, 25f + currentRate }, new float[2] { 100f, 100f + currentRate * 3f }); } } } } internal class TremorsEvent : LevelEvent { public override string GetEventName() { return "<color=red>DID YOU SAW THIS MOVIE?)</color>"; } public override LevelEvent CreateEvent() { return new TremorsEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { SpawnableMapObject[] spawnableMapObjects = newLevel.spawnableMapObjects; for (int i = 0; i < newLevel.outsideEnemySpawnChanceThroughDay.length; i++) { if (newLevel.OutsideEnemies[i].enemyType.enemyName != "SandWormAI") { newLevel.OutsideEnemies[i].rarity = 0; } } SpawnableMapObject[] array = spawnableMapObjects; foreach (SpawnableMapObject val in array) { if ((Object)(object)val.prefabToSpawn.GetComponentInChildren<SandWormAI>() != (Object)null) { val.numberToSpawn = _curveGenerator.CreateSpawnCurve(new float[2] { 0f, 15f }, new float[2] { 0.5f, 50f + currentRate * 3f }); } } } } internal class UnFairEvent : LevelEvent { public override string GetEventName() { return "<color=green>THIS IS UNFAIR! :(</color>"; } public override LevelEvent CreateEvent() { return new UnFairEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { _enviroment.SetupLevelScrap(newLevel, configs, 2.5f); _enviroment.ResetEnemiesRarity(newLevel); } } internal class WhoLetTheDogEvent : LevelEvent { public override string GetEventName() { return "<color=red>WHO LET THE DOGS OUT, WOOF WOOF</color>"; } public override LevelEvent CreateEvent() { return new WhoLetTheDogEvent(); } public override void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate) { SpawnableMapObject[] spawnableMapObjects = newLevel.spawnableMapObjects; for (int i = 0; i < newLevel.outsideEnemySpawnChanceThroughDay.length; i++) { if (newLevel.OutsideEnemies[i].enemyType.enemyName != "MouthDogAI") { newLevel.OutsideEnemies[i].rarity = 0; } } SpawnableMapObject[] array = spawnableMapObjects; foreach (SpawnableMapObject val in array) { if ((Object)(object)val.prefabToSpawn.GetComponentInChildren<MouthDogAI>() != (Object)null) { val.numberToSpawn = _curveGenerator.CreateSpawnCurve(new float[2] { 0f, 50f }, new float[2] { 100f, 100f + currentRate * 3f }); } } } } } namespace BrutalEvent.Services.Abstract { public class MasterEnviroment { private const int AdditionalMaxScrap = 45; private const int MaxEnemyPowerIncrement = 10; private const int MaxOutsideEnemyPowerIncrement = 5; private const int MaxDaytimeEnemyPowerIncrement = 10; private readonly SpawnCurveGenerator _curveGenerator; public MasterEnviroment() { _curveGenerator = new SpawnCurveGenerator(); } public void GenerateEnemiesEvent<T>(SelectableLevel currentLevel, float currentRate, float multiplier = 1f) where T : EnemyAI { if (multiplier < 1f || multiplier > 3f) { multiplier = 1f; } currentRate = ((currentRate == 0f) ? 1f : currentRate); float num = new NormalDistributionService().CalculateRarity(currentLevel, currentRate); for (int i = 0; i < currentLevel.Enemies.Count; i++) { SpawnableEnemyWithRarity enemy = currentLevel.Enemies[i]; if ((Object)(object)enemy.enemyType.enemyPrefab.GetComponent<T>() != (Object)null) { int rarity = ((IEnumerable<SpawnableEnemyWithRarity>)Configuration.OriginalEnemiesRarities[currentLevel]).FirstOrDefault((Func<SpawnableEnemyWithRarity, bool>)((SpawnableEnemyWithRarity x) => x.enemyType.enemyName.Equals(enemy.enemyType.enemyName))).rarity; enemy.rarity = (int)(num * multiplier) + rarity; EnemyType enemyType = enemy.enemyType; enemyType.MaxCount += (int)(num * multiplier); enemy.enemyType.probabilityCurve = _curveGenerator.CreateSpawnCurve(new float[2] { 0f, 40f + multiplier * currentRate }, new float[2] { 100f, 100f + multiplier * currentRate + (float)rarity }); } } } public void NormalizeEnemiesRarity(SelectableLevel currentLevel, List<string> typesEnemyCollection = null) { if (!Configuration.OriginalEnemiesRarities.ContainsKey(currentLevel)) { Configuration.mls.LogInfo((object)"START METHOD NORMALIZATION ENEMIES"); List<SpawnableEnemyWithRarity> list = new List<SpawnableEnemyWithRarity>(((IEnumerable<SpawnableEnemyWithRarity>)currentLevel.Enemies).Select((Func<SpawnableEnemyWithRarity, SpawnableEnemyWithRarity>)((SpawnableEnemyWithRarity e) => new SpawnableEnemyWithRarity { enemyType = e.enemyType, rarity = e.rarity }))); Configuration.mls.LogInfo((object)$"ORIGINAL ENEMIES : {list.Count}"); Configuration.OriginalEnemiesRarities[currentLevel] = list; } Configuration.mls.LogInfo((object)"MID METHOD NORMALIZATION ENEMIES"); List<SpawnableEnemyWithRarity> source = Configuration.OriginalEnemiesRarities[currentLevel]; foreach (SpawnableEnemyWithRarity enemy in currentLevel.Enemies) { if (typesEnemyCollection == null || typesEnemyCollection.Contains(enemy.enemyType.enemyName)) { SpawnableEnemyWithRarity val = ((IEnumerable<SpawnableEnemyWithRarity>)source).FirstOrDefault((Func<SpawnableEnemyWithRarity, bool>)((SpawnableEnemyWithRarity x) => x.enemyType.enemyName == enemy.enemyType.enemyName)); if (val != null) { enemy.rarity = val.rarity; } } } } public void ResetEnemiesRarity(SelectableLevel currentLevel, List<string> typesEnemyCollection = null) { HashSet<string> hashSet = ((typesEnemyCollection != null) ? new HashSet<string>(typesEnemyCollection) : null); foreach (SpawnableEnemyWithRarity enemy in currentLevel.Enemies) { if (hashSet == null || hashSet.Contains(enemy.enemyType.enemyName)) { enemy.rarity = 0; } } } public void SetupRateLimit(SelectableLevel currentLevel, EventEnum eventEnum, ConfigValues config) { if (!Configuration.RarityLevelValue.ContainsKey(currentLevel)) { Configuration.RarityLevelValue.Add(currentLevel, 0f); } if (Configuration.Enemies == null) { Configuration.Enemies = new Dictionary<SelectableLevel, List<SpawnableEnemyWithRarity>>(); } if (!Configuration.Enemies.ContainsKey(currentLevel)) { Configuration.mls.LogInfo((object)("Initializing enemies for level " + (((currentLevel != null) ? ((Object)currentLevel).name : null) ?? "NULL"))); List<SpawnableEnemyWithRarity> value = currentLevel?.Enemies?.Select((Func<SpawnableEnemyWithRarity, SpawnableEnemyWithRarity>)((SpawnableEnemyWithRarity enemy) => new SpawnableEnemyWithRarity { enemyType = enemy.enemyType, rarity = enemy.rarity })).ToList() ?? new List<SpawnableEnemyWithRarity>(); Configuration.Enemies[currentLevel] = value; } Configuration.Enemies[currentLevel] = ((IEnumerable<SpawnableEnemyWithRarity>)Configuration.Enemies[currentLevel]).Select((Func<SpawnableEnemyWithRarity, SpawnableEnemyWithRarity>)((SpawnableEnemyWithRarity enemy) => new SpawnableEnemyWithRarity { enemyType = enemy.enemyType, rarity = enemy.rarity })).ToList(); foreach (SelectableLevel item in Configuration.RarityLevelValue.Keys.ToList()) { if (Configuration.RarityLevelValue.TryGetValue(item, out var value2)) { float value3 = Mathf.Clamp(value2, config.RarityMin.Value, config.RarityMax.Value); if (eventEnum == EventEnum.All) { Configuration.RarityLevelValue[item] = 0f; } else { Configuration.RarityLevelValue[item] = value3; } } } } public SelectableLevel SetupLevelScrap(SelectableLevel newLevel, ConfigValues config, float multiplier = 1f) { if (!Configuration.levelsModified.Contains(newLevel)) { Configuration.levelsModified.Add(newLevel); ModifyDaySettings(newLevel, config, multiplier); } return newLevel; } public void ModifyDaySettings(SelectableLevel level, ConfigValues config, float multiplier = 1f) { level.maxScrap += (int)(45f * multiplier); level.maxTotalScrapValue += (int)(Random.Range(config.MinScrap.Value, config.MaxScrap.Value) * multiplier); level.maxEnemyPowerCount += 10; level.maxOutsideEnemyPowerCount += 5; level.maxDaytimeEnemyPowerCount += 10; } public void ShowEnemyRarirty(SelectableLevel newLevel, float currentEventRate) { Configuration.mls.LogWarning((object)("|" + new string('-', 4) + "All ENEMIES RARITY" + new string('-', 4) + "|")); Configuration.mls.LogWarning((object)$"| Current Rate: {currentEventRate}% |"); foreach (SpawnableEnemyWithRarity enemy in newLevel.Enemies) { Configuration.mls.LogInfo((object)$"| {enemy.enemyType.enemyName,17} : {enemy.rarity,-3}% |"); } Configuration.mls.LogWarning((object)("|" + new string('-', 26) + "|")); } public SelectableLevel SetupEnemyChance(SelectableLevel newLevel, float currentEventRate, float multiplier = 1f) { if (multiplier < 1f || multiplier > 3f) { multiplier = 1f; } newLevel.daytimeEnemySpawnChanceThroughDay = _curveGenerator.CreateSpawnCurve(new float[2] { 0f, 1f * multiplier }, new float[2] { 5f, 25f + currentEventRate * multiplier }); newLevel.enemySpawnChanceThroughoutDay = _curveGenerator.CreateSpawnCurve(new float[2] { 0f, 1f * multiplier }, new float[2] { 0.4f, 33f + currentEventRate * multiplier }); newLevel.outsideEnemySpawnChanceThroughDay = _curveGenerator.CreateSpawnCurve(new float[2] { 0f, -10f }, new float[2] { 0.8f, 10f + currentEventRate }); return newLevel; } } public class SpawnCurveGenerator { public AnimationCurve CreateSpawnCurve(float[] times, float[] values) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown if (times.Length != values.Length) { throw new ArgumentException("Times and values arrays must have the same length."); } Keyframe[] array = (Keyframe[])(object)new Keyframe[times.Length]; for (int i = 0; i < times.Length; i++) { array[i] = new Keyframe(times[i], values[i]); } return new AnimationCurve(array); } } public abstract class LevelEvent { protected MasterEnviroment _enviroment; protected AnimationCurve oldAnimationCurve; protected readonly SpawnCurveGenerator _curveGenerator; public LevelEvent() { _enviroment = new MasterEnviroment(); _curveGenerator = new SpawnCurveGenerator(); } public abstract string GetEventName(); public abstract LevelEvent CreateEvent(); public abstract void OnLoadNewLevel(ref SelectableLevel newLevel, ConfigValues configs, float currentRate); public virtual void OnLoadNewLevelCleanup(ref SelectableLevel newLevel) { } public virtual bool IsValid(ref SelectableLevel newLevel) { return true; } } } namespace BrutalEvent.Services.Abstract.Interface { public interface IEventFactory { LevelEvent CreateEvent(EventEnum eventEnum); } public interface INormalDistributionService { float CalculateRarity(SelectableLevel currentLevel, float currentRate); float NormalDistribution(float mu, float sigma, int players); } } namespace BrutalEvent.Models { public class ConfigValues { public ConfigEntry<float> MinScrap { get; set; } public ConfigEntry<float> MaxScrap { get; set; } public ConfigEntry<float> LimitRate { get; set; } public ConfigEntry<float> MaxRate { get; set; } public ConfigEntry<float> RarityMin { get; set; } public ConfigEntry<float> RarityMax { get; set; } public ConfigEntry<int> AddCredits { get; set; } public ConfigEntry<int> StartingQuota { get; set; } public ConfigEntry<int> StartingCredits { get; set; } public ConfigEntry<float> BaseIncrease { get; set; } public ConfigEntry<float> Multiplier { get; set; } public ConfigEntry<int> DeadlineDaysAmount { get; set; } } public static class Configuration { public static bool loaded { get; set; } public static List<SelectableLevel> levelsModified { get; set; } = new List<SelectableLevel>(); public static Dictionary<SelectableLevel, float> RarityLevelValue { get; set; } = new Dictionary<SelectableLevel, float>(); public static Dictionary<SelectableLevel, List<SpawnableEnemyWithRarity>> Enemies { get; set; } = new Dictionary<SelectableLevel, List<SpawnableEnemyWithRarity>>(); public static Dictionary<SelectableLevel, List<SpawnableEnemyWithRarity>> OriginalEnemiesRarities { get; set; } = new Dictionary<SelectableLevel, List<SpawnableEnemyWithRarity>>(); public static ManualLogSource mls { get; set; } } } namespace BrutalEvent.Common { public class LoadConfig { private string _sectionName = "BrutalEventSettings"; public ConfigValues BindConfigSettings() { ConfigValues configValues = new ConfigValues(); configValues.MinScrap = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>(_sectionName, "MinScrap", 250f, "MinScrap"); configValues.MaxScrap = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>(_sectionName, "MaxScrap", 650f, "MaxScrap"); configValues.LimitRate = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>(_sectionName, "LimitRate", 50f, "LimitRate"); configValues.MaxRate = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>(_sectionName, "MaxRate", 100f, "MaxRate"); configValues.RarityMin = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>(_sectionName, "RarityMin", 10f, "RarityMin"); configValues.RarityMax = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>(_sectionName, "RarityMax", 100f, "RarityMax"); configValues.AddCredits = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<int>(_sectionName, "AddCredits", 45, "Additional credits on each mission"); configValues.StartingQuota = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<int>(_sectionName ?? "", "StartingQuota", 299, "StartingQuota Value"); configValues.StartingCredits = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<int>(_sectionName ?? "", "StartingCredits", 150, "StartingCredits Value"); configValues.BaseIncrease = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>(_sectionName ?? "", "BaseIncrease", 51f, "Increase Quota value each round"); configValues.Multiplier = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<float>(_sectionName ?? "", "RandomizerMultiplier", 1f, "Multiplier spawnable chance Value [1.0 .. 3.0]"); configValues.DeadlineDaysAmount = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<int>(_sectionName ?? "", "DeadlineDaysAmount", 5, "Deadline Days Amount"); return configValues; } } } namespace BrutalEvent.Enums { public enum EventEnum { None, All, Chaos, Unfair, Landmine, Kleptomania, Arachnophobia, SecuritySystem, AllSnareFlea, BrackenAndCoil, BlobApocalypsis, WhoLetTheDogsOut, DidYouSeeHer, Tremors, GoToRent, Delivery, LetsFly, ReplaceItems } }
plugins/SteamBlizzard-Tyler1Bracken/Tyler1Bracken.dll
Decompiled 2 years agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("Tyler1Bracken")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Tyler1Bracken")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("9d426624-dc22-4a43-898c-22e980a41a73")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace Tyler1Bracken; [BepInPlugin("SteamBlizzard.Tyler1Bracken", "Tyler1Bracken", "1.0.0.0")] public class T1BrackenBase : BaseUnityPlugin { private const string modGUID = "SteamBlizzard.Tyler1Bracken"; private const string modName = "Tyler1Bracken"; private const string modVersion = "1.0.0.0"; private static T1BrackenBase Instance; private readonly Harmony harmony = new Harmony("SteamBlizzard.Tyler1Bracken"); internal ManualLogSource mls; public void Awake() { mls = Logger.CreateLogSource("SteamBlizzard.Tyler1Bracken"); mls.LogInfo((object)"Tyler1Bracken loading..."); if ((Object)(object)Instance == (Object)null) { Instance = this; } harmony.PatchAll(); mls.LogInfo((object)"Loaded and patches applied."); } } [HarmonyPatch(typeof(FlowermanAI))] internal class T1BrackenPatch { [HarmonyPatch("Start")] [HarmonyPostfix] private static void AudioPatch(FlowermanAI __instance) { //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Invalid comparison between Unknown and I4 if ((Object)(object)__instance != (Object)null) { ManualLogSource val = Logger.CreateLogSource("SteamBlizzard.Tyler1Items"); val.LogInfo((object)"Patching audio..."); string text = "file://" + Paths.PluginPath + "\\SteamBlizzard-Tyler1Bracken\\tyler1_help.mp3"; UnityWebRequest audioClip = UnityWebRequestMultimedia.GetAudioClip(text, (AudioType)13); audioClip.SendWebRequest(); val.LogMessage((object)"Accessing..."); while (!audioClip.isDone) { } val.LogMessage((object)"Accessed."); if ((int)audioClip.result == 1) { __instance.crackNeckSFX = DownloadHandlerAudioClip.GetContent(audioClip); val.LogMessage((object)"Audio clip assigned to drop SFX."); } else { val.LogError((object)"Failed to access audio clip."); } } } }
plugins/Steven-Custom_Boombox_Music/CustomBoomboxTracks.dll
Decompiled 2 years agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using CustomBoomboxTracks.Configuration; using CustomBoomboxTracks.Managers; using CustomBoomboxTracks.Utilities; using HarmonyLib; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("CustomBoomboxTracks")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.3.1.0")] [assembly: AssemblyInformationalVersion("1.3.1")] [assembly: AssemblyProduct("CustomBoomboxTracks")] [assembly: AssemblyTitle("CustomBoomboxTracks")] [assembly: AssemblyVersion("1.3.1.0")] namespace CustomBoomboxTracks { [BepInPlugin("com.steven.lethalcompany.boomboxmusic", "Custom Boombox Music", "1.3.1")] public class BoomboxPlugin : BaseUnityPlugin { private const string GUID = "com.steven.lethalcompany.boomboxmusic"; private const string NAME = "Custom Boombox Music"; private const string VERSION = "1.3.1"; private static BoomboxPlugin Instance; private void Awake() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) Instance = this; LogInfo("Loading..."); AudioManager.GenerateFolders(); Config.Init(); new Harmony("com.steven.lethalcompany.boomboxmusic").PatchAll(); LogInfo("Loading Complete!"); } internal static void LogDebug(string message) { Instance.Log(message, (LogLevel)32); } internal static void LogInfo(string message) { Instance.Log(message, (LogLevel)16); } internal static void LogWarning(string message) { Instance.Log(message, (LogLevel)4); } internal static void LogError(string message) { Instance.Log(message, (LogLevel)2); } internal static void LogError(Exception ex) { Instance.Log(ex.Message + "\n" + ex.StackTrace, (LogLevel)2); } private void Log(string message, LogLevel logLevel) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) ((BaseUnityPlugin)this).Logger.Log(logLevel, (object)message); } } } namespace CustomBoomboxTracks.Utilities { public class SharedCoroutineStarter : MonoBehaviour { private static SharedCoroutineStarter _instance; public static Coroutine StartCoroutine(IEnumerator routine) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_instance == (Object)null) { _instance = new GameObject("Shared Coroutine Starter").AddComponent<SharedCoroutineStarter>(); Object.DontDestroyOnLoad((Object)(object)_instance); } return ((MonoBehaviour)_instance).StartCoroutine(routine); } } } namespace CustomBoomboxTracks.Patches { [HarmonyPatch(typeof(BoomboxItem), "PocketItem")] internal class BoomboxItem_PocketItem { private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = instructions.ToList(); bool flag = false; for (int i = 0; i < list.Count; i++) { if (!flag) { if (list[i].opcode == OpCodes.Call) { flag = true; } continue; } if (list[i].opcode == OpCodes.Ret) { break; } list[i].opcode = OpCodes.Nop; } return list; } } [HarmonyPatch(typeof(BoomboxItem), "Start")] internal class BoomboxItem_Start { private static void Postfix(BoomboxItem __instance) { if (AudioManager.FinishedLoading) { AudioManager.ApplyClips(__instance); return; } AudioManager.OnAllSongsLoaded += delegate { AudioManager.ApplyClips(__instance); }; } } [HarmonyPatch(typeof(BoomboxItem), "StartMusic")] internal class BoomboxItem_StartMusic { private static void Postfix(BoomboxItem __instance, bool startMusic) { if (startMusic) { BoomboxPlugin.LogInfo("Playing " + ((Object)__instance.boomboxAudio.clip).name); } } } [HarmonyPatch(typeof(StartOfRound), "Awake")] internal class StartOfRound_Awake { private static void Prefix() { AudioManager.Load(); } } } namespace CustomBoomboxTracks.Managers { internal static class AudioManager { private static string[] allSongPaths; private static List<AudioClip> clips = new List<AudioClip>(); private static bool firstRun = true; private static bool finishedLoading = false; private static readonly string directory = Path.Combine(Paths.BepInExRootPath, "Custom Songs", "Boombox Music"); public static bool FinishedLoading => finishedLoading; public static bool HasNoSongs => allSongPaths.Length == 0; public static event Action OnAllSongsLoaded; public static void GenerateFolders() { Directory.CreateDirectory(directory); } public static void Load() { if (!firstRun) { return; } firstRun = false; allSongPaths = Directory.GetFiles(directory); if (allSongPaths.Length == 0) { BoomboxPlugin.LogWarning("No songs found!"); return; } BoomboxPlugin.LogInfo("Preparing to load AudioClips..."); List<Coroutine> list = new List<Coroutine>(); string[] array = allSongPaths; for (int i = 0; i < array.Length; i++) { Coroutine item = SharedCoroutineStarter.StartCoroutine(LoadAudioClip(array[i])); list.Add(item); } SharedCoroutineStarter.StartCoroutine(WaitForAllClips(list)); } private static IEnumerator LoadAudioClip(string filePath) { BoomboxPlugin.LogInfo("Loading " + filePath + "!"); if ((int)GetAudioType(filePath) == 0) { BoomboxPlugin.LogError("Failed to load AudioClip from " + filePath + "\nUnsupported file extension!"); yield break; } UnityWebRequest loader = UnityWebRequestMultimedia.GetAudioClip(filePath, GetAudioType(filePath)); if (Config.StreamFromDisk) { DownloadHandler downloadHandler = loader.downloadHandler; ((DownloadHandlerAudioClip)((downloadHandler is DownloadHandlerAudioClip) ? downloadHandler : null)).streamAudio = true; } loader.SendWebRequest(); while (!loader.isDone) { yield return null; } if (loader.error != null) { BoomboxPlugin.LogError("Error loading clip from path: " + filePath + "\n" + loader.error); BoomboxPlugin.LogError(loader.error); yield break; } AudioClip content = DownloadHandlerAudioClip.GetContent(loader); if (Object.op_Implicit((Object)(object)content) && (int)content.loadState == 2) { BoomboxPlugin.LogInfo("Loaded " + filePath); ((Object)content).name = Path.GetFileName(filePath); clips.Add(content); } else { BoomboxPlugin.LogError("Failed to load clip at: " + filePath + "\nThis might be due to an mismatch between the audio codec and the file extension!"); } } private static IEnumerator WaitForAllClips(List<Coroutine> coroutines) { foreach (Coroutine coroutine in coroutines) { yield return coroutine; } finishedLoading = true; AudioManager.OnAllSongsLoaded?.Invoke(); AudioManager.OnAllSongsLoaded = null; } public static void ApplyClips(BoomboxItem __instance) { BoomboxPlugin.LogInfo("Applying clips!"); if (Config.UseDefaultSongs) { __instance.musicAudios = __instance.musicAudios.Concat(clips).ToArray(); } else { __instance.musicAudios = clips.ToArray(); } BoomboxPlugin.LogInfo($"Total Clip Count: {__instance.musicAudios.Length}"); } private static AudioType GetAudioType(string path) { string text = Path.GetExtension(path).ToLower(); switch (text) { case ".wav": return (AudioType)20; case ".ogg": return (AudioType)14; case ".mp3": return (AudioType)13; default: BoomboxPlugin.LogError("Unsupported extension type: " + text); return (AudioType)0; } } } } namespace CustomBoomboxTracks.Configuration { internal static class Config { private const string CONFIG_FILE_NAME = "boombox.cfg"; private static ConfigFile _config; private static ConfigEntry<bool> _useDefaultSongs; private static ConfigEntry<bool> _streamAudioFromDisk; public static bool UseDefaultSongs { get { if (!_useDefaultSongs.Value) { return AudioManager.HasNoSongs; } return true; } } public static bool StreamFromDisk => _streamAudioFromDisk.Value; public static void Init() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown BoomboxPlugin.LogInfo("Initializing config..."); _config = new ConfigFile(Path.Combine(Paths.ConfigPath, "boombox.cfg"), true); _useDefaultSongs = _config.Bind<bool>("Config", "Use Default Songs", false, "Include the default songs in the rotation."); _streamAudioFromDisk = _config.Bind<bool>("Config", "Stream Audio From Disk", false, "Requires less memory and takes less time to load, but prevents playing the same song twice at once."); BoomboxPlugin.LogInfo("Config initialized!"); } private static void PrintConfig() { BoomboxPlugin.LogInfo($"Use Default Songs: {_useDefaultSongs.Value}"); BoomboxPlugin.LogInfo($"Stream From Disk: {_streamAudioFromDisk}"); } } }
plugins/sunnobunno-BonkHitSFX/BonkHitSFX.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using BonkHitSFX.Patches; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: AssemblyCompany("BonkHitSFX")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("BonkHitSFX")] [assembly: AssemblyTitle("BonkHitSFX")] [assembly: AssemblyVersion("1.0.0.0")] 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; } } } namespace BonkHitSFX { [BepInPlugin("sunnobunno.bonkhitsfx", "Bonk Hit SFX", "1.0.1")] public class BonkHitSFXBase : BaseUnityPlugin { private const string modGUID = "sunnobunno.bonkhitsfx"; private const string modName = "Bonk Hit SFX"; private const string modVersion = "1.0.1"; private readonly Harmony harmony = new Harmony("sunnobunno.bonkhitsfx"); private static BonkHitSFXBase? Instance; private static PluginInfo pluginInfo; internal ManualLogSource? mls; internal static AudioClip[]? newHitSFX; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("sunnobunno.bonkhitsfx"); mls.LogInfo((object)"BonkHitSFX is loading."); string location = ((BaseUnityPlugin)Instance).Info.Location; string text = "BonkHitSFX.dll"; string text2 = location.TrimEnd(text.ToCharArray()); string text3 = text2 + "bonkhitsfx"; mls.LogInfo((object)text3); AssetBundle val = AssetBundle.LoadFromFile(text3); if ((Object)(object)val == (Object)null) { mls.LogError((object)"Failed to load audio assets!"); return; } newHitSFX = val.LoadAssetWithSubAssets<AudioClip>("Assets/bonkhitsfx.mp3"); harmony.PatchAll(typeof(HitSFXPatch)); mls.LogInfo((object)"BonkHitSFX is loaded. Ow."); } } } namespace BonkHitSFX.Patches { [HarmonyPatch(typeof(Shovel))] internal class HitSFXPatch { [HarmonyPatch("ItemActivate")] [HarmonyPostfix] public static void hitSFXPatch(ref AudioClip[] ___hitSFX) { AudioClip[] newHitSFX = BonkHitSFXBase.newHitSFX; ___hitSFX = newHitSFX; } } }
plugins/sunnobunno-ScalingStartCredits/ScalingStartCredits.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("ScalingStartCredits")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("ScalingStartCredits")] [assembly: AssemblyTitle("ScalingStartCredits")] [assembly: AssemblyVersion("1.0.0.0")] 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; } } } namespace ScalingStartCredits { [BepInPlugin("sunnobunno.scalingstartcredits", "Scaling Start Credits", "1.0.0")] public class ScalingStartCreditsBase : BaseUnityPlugin { public const string modGUID = "sunnobunno.scalingstartcredits"; public const string modName = "Scaling Start Credits"; public const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("sunnobunno.scalingstartcredits"); public static ScalingStartCreditsBase? Instance; internal ManualLogSource? mls; public ConfigEntry<int> configCreditIncrement; public ConfigEntry<int> configPlayerCountThreshold; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } BindConfiguration(); mls = Logger.CreateLogSource("sunnobunno.scalingstartcredits"); mls.LogInfo((object)"sunnobunno.scalingstartcredits is loading."); harmony.PatchAll(); mls.LogInfo((object)"sunnobunno.scalingstartcredits is loaded."); } private void BindConfiguration() { configCreditIncrement = ((BaseUnityPlugin)this).Config.Bind<int>("General", "Credit Increment", 15, "The amount of credits per player added to the starting group credits"); configPlayerCountThreshold = ((BaseUnityPlugin)this).Config.Bind<int>("General", "Player Threshold", 4, "The number of players required in the lobby before credits are added per new player."); } } } namespace ScalingStartCredits.Patches { [HarmonyPatch(typeof(StartMatchLever))] internal class StartingCreditsPatch { private static ManualLogSource mls = Logger.CreateLogSource("sunnobunno.scalingstartcredits"); private static int groupCreditIncreaseIncrement; private static int playerThreshold; private static int playerCount; private static int days; private static HUDManager hudManager; [HarmonyPatch("StartGame")] [HarmonyPrefix] private static void StartMatchLeverPatch(ref StartOfRound ___playersManager) { //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Expected O, but got Unknown //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Expected O, but got Unknown groupCreditIncreaseIncrement = ScalingStartCreditsBase.Instance.configCreditIncrement.Value; playerThreshold = ScalingStartCreditsBase.Instance.configPlayerCountThreshold.Value; playerCount = ___playersManager.fullyLoadedPlayers.Count; days = ___playersManager.daysPlayersSurvivedInARow; bool flag = true; mls.LogInfo((object)$"Days: {days}"); mls.LogInfo((object)$"Player Count: {playerCount}"); if (days != 0) { mls.LogInfo((object)"No longer first day. Aborting"); flag = false; } if (playerCount <= playerThreshold && flag) { mls.LogInfo((object)"Player threshold not met. Aborting"); flag = false; } if (flag) { hudManager = (HUDManager)Object.FindObjectOfType(typeof(HUDManager)); Terminal val = (Terminal)Object.FindObjectOfType(typeof(Terminal)); int num = playerCount - playerThreshold; int num2 = num * groupCreditIncreaseIncrement; int num3 = val.groupCredits + num2; val.SyncGroupCreditsServerRpc(num3, val.numberOfItemsInDropship); mls.LogInfo((object)$"Credits Added for {num} players above threshold of {playerThreshold}: {num2}"); mls.LogInfo((object)$"Group Credits: {val.groupCredits}"); hudManager.AddTextToChatOnServer($"Credits Added for {num} players above threshold of {playerThreshold}: {num2}", -1); hudManager.AddTextToChatOnServer($"Group Credits: {val.groupCredits}", -1); } } } }
plugins/sunnobunno-YippeeMod/YippeeMod.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; using YippeeMod.Patches; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: AssemblyCompany("YippeeMod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("YippeeMod")] [assembly: AssemblyTitle("YippeeMod")] [assembly: AssemblyVersion("1.0.0.0")] 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; } } } namespace YippeeMod { [BepInPlugin("sunnobunno.YippeeMod", "Yippee tbh mod", "1.2.1")] public class YippeeModBase : BaseUnityPlugin { private const string modGUID = "sunnobunno.YippeeMod"; private const string modName = "Yippee tbh mod"; private const string modVersion = "1.2.1"; private readonly Harmony harmony = new Harmony("sunnobunno.YippeeMod"); private static YippeeModBase? Instance; internal ManualLogSource? mls; internal static AudioClip[]? newSFX; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("sunnobunno.YippeeMod"); mls.LogInfo((object)"Yippee Mod is loading."); string location = ((BaseUnityPlugin)Instance).Info.Location; string text = "YippeeMod.dll"; string text2 = location.TrimEnd(text.ToCharArray()); string text3 = text2 + "yippeesound"; mls.LogInfo((object)text3); AssetBundle val = AssetBundle.LoadFromFile(text3); if ((Object)(object)val == (Object)null) { mls.LogError((object)"Failed to load audio assets!"); return; } newSFX = val.LoadAssetWithSubAssets<AudioClip>("assets/yippee-tbh.mp3"); harmony.PatchAll(typeof(HoarderBugPatch)); mls.LogInfo((object)"Yippee Mod is loaded. Yippee!!!"); } } } namespace YippeeMod.Patches { [HarmonyPatch(typeof(HoarderBugAI))] internal class HoarderBugPatch { [HarmonyPatch("Start")] [HarmonyPostfix] public static void hoarderBugAudioPatch(ref AudioClip[] ___chitterSFX) { AudioClip[] newSFX = YippeeModBase.newSFX; ___chitterSFX = newSFX; } } }
plugins/Suskitech-AlwaysHearActiveWalkies/AlwaysHearWalkie.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using LCAlwaysHearWalkieMod.Patches; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("AlwaysHearWalkie")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.4.2.0")] [assembly: AssemblyInformationalVersion("1.4.2+4173bc4d88b293dfbed3e97cfc3a082065ce4da9")] [assembly: AssemblyProduct("Always Hear Active Walkies")] [assembly: AssemblyTitle("AlwaysHearWalkie")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.4.2.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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace BepInEx5.PluginTemplate { [BepInPlugin("suskitech.LCAlwaysHearActiveWalkie", "LC Always Hear Active Walkies", "1.4.2")] public class LCAlwaysHearWalkieMod : BaseUnityPlugin { public static ManualLogSource Log; private const string modGUID = "suskitech.LCAlwaysHearActiveWalkie"; private const string modName = "LC Always Hear Active Walkies"; private const string modVersion = "1.4.2"; private readonly Harmony harmony = new Harmony("suskitech.LCAlwaysHearActiveWalkie"); private static LCAlwaysHearWalkieMod Instance; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } Log = Logger.CreateLogSource("suskitech.LCAlwaysHearActiveWalkie"); Log.LogInfo((object)"\\ /"); Log.LogInfo((object)"/|\\"); Log.LogInfo((object)" |----|"); Log.LogInfo((object)" |[__]| Always Hear Active Walkies"); Log.LogInfo((object)" |. .| Version 1.4.2 Loaded"); Log.LogInfo((object)" |____|"); harmony.PatchAll(typeof(LCAlwaysHearWalkieMod)); harmony.PatchAll(typeof(PlayerControllerBPatch)); harmony.PatchAll(typeof(WalkieTalkiePatch)); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "AlwaysHearWalkie"; public const string PLUGIN_NAME = "Always Hear Active Walkies"; public const string PLUGIN_VERSION = "1.4.2"; } } namespace LCAlwaysHearWalkieMod.Patches { [HarmonyPatch(typeof(PlayerControllerB))] internal class PlayerControllerBPatch { private static float AudibleDistance = 20f; private static float throttleInterval = 0.4f; private static float throttle = 0f; private static float AverageDistanceToHeldWalkie = 2f; private static float WalkieRecordingRange = 20f; private static float PlayerToPlayerSpatialHearingRange = 20f; [HarmonyPatch("Update")] [HarmonyPostfix] private static void alwaysHearWalkieTalkiesPatch(ref bool ___holdingWalkieTalkie, ref PlayerControllerB __instance) { //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_0327: Unknown result type (might be due to invalid IL or missing references) //IL_0371: Unknown result type (might be due to invalid IL or missing references) //IL_037d: Unknown result type (might be due to invalid IL or missing references) throttle += Time.deltaTime; if (throttle < throttleInterval) { return; } throttle = 0f; if ((Object)(object)__instance == (Object)null || (Object)(object)GameNetworkManager.Instance == (Object)null || (Object)(object)__instance != (Object)(object)GameNetworkManager.Instance.localPlayerController || (Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null || GameNetworkManager.Instance.localPlayerController.isPlayerDead) { return; } List<WalkieTalkie> list = new List<WalkieTalkie>(); List<WalkieTalkie> list2 = new List<WalkieTalkie>(); for (int i = 0; i < WalkieTalkie.allWalkieTalkies.Count; i++) { float num = Vector3.Distance(((Component)WalkieTalkie.allWalkieTalkies[i]).transform.position, ((Component)__instance).transform.position); if (num <= AudibleDistance) { if (((GrabbableObject)WalkieTalkie.allWalkieTalkies[i]).isBeingUsed) { list.Add(WalkieTalkie.allWalkieTalkies[i]); } } else { list2.Add(WalkieTalkie.allWalkieTalkies[i]); } } bool flag = list.Count > 0; if (flag != __instance.holdingWalkieTalkie) { ___holdingWalkieTalkie = flag; for (int j = 0; j < list2.Count; j++) { if (j < list.Count) { list2[j].thisAudio.Stop(); } } } if (!flag) { return; } PlayerControllerB val = ((!GameNetworkManager.Instance.localPlayerController.isPlayerDead || !((Object)(object)GameNetworkManager.Instance.localPlayerController.spectatedPlayerScript != (Object)null)) ? GameNetworkManager.Instance.localPlayerController : GameNetworkManager.Instance.localPlayerController.spectatedPlayerScript); for (int k = 0; k < StartOfRound.Instance.allPlayerScripts.Length; k++) { if ((!StartOfRound.Instance.allPlayerScripts[k].isPlayerControlled && !StartOfRound.Instance.allPlayerScripts[k].isPlayerDead) || (Object)(object)StartOfRound.Instance.allPlayerScripts[k] == (Object)(object)GameNetworkManager.Instance.localPlayerController || StartOfRound.Instance.allPlayerScripts[k].isPlayerDead) { continue; } PlayerControllerB val2 = StartOfRound.Instance.allPlayerScripts[k]; if (!val2.holdingWalkieTalkie) { continue; } float num2 = Vector3.Distance(((Component)val).transform.position, ((Component)val2).transform.position); float num3 = float.MaxValue; float num4 = float.MaxValue; for (int l = 0; l < WalkieTalkie.allWalkieTalkies.Count; l++) { if (!((GrabbableObject)WalkieTalkie.allWalkieTalkies[l]).isBeingUsed) { continue; } float num5 = Vector3.Distance(((Component)WalkieTalkie.allWalkieTalkies[l].target).transform.position, ((Component)val).transform.position); if (num5 < num4) { num4 = num5; } if (!WalkieTalkie.allWalkieTalkies[l].speakingIntoWalkieTalkie) { float num6 = Vector3.Distance(((Component)WalkieTalkie.allWalkieTalkies[l]).transform.position, ((Component)val2).transform.position); if (num6 < num3) { num3 = num6; } } } float num7 = Mathf.Min(1f - Mathf.InverseLerp(AverageDistanceToHeldWalkie, WalkieRecordingRange, num3), 1f - Mathf.InverseLerp(AverageDistanceToHeldWalkie, WalkieRecordingRange, num4)); float num8 = 1f - Mathf.InverseLerp(0f, PlayerToPlayerSpatialHearingRange, num2); val2.voicePlayerState.Volume = Mathf.Max(num7, num8); } } } [HarmonyPatch(typeof(WalkieTalkie))] internal class WalkieTalkiePatch { [HarmonyPatch("EnableWalkieTalkieListening")] [HarmonyPrefix] private static bool alwaysHearWalkieTalkiesEnableWalkieTalkieListeningPatch(bool enable) { if (!enable) { return false; } return true; } } }
plugins/TheBeeTeam-PersistentPurchases/Assembly-CSharp.dll
Decompiled 2 years ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Text; using System.Text.RegularExpressions; using System.Threading; using DigitalRuby.ThunderAndLightning; using Dissonance; using Dissonance.Audio.Playback; using Dissonance.Datastructures; using Dissonance.Extensions; using Dissonance.Integrations.Unity_NFGO; using Dissonance.Networking; using DunGen; using DunGen.Analysis; using DunGen.Graph; using DunGen.Tags; using GameNetcodeStuff; using JetBrains.Annotations; using Netcode.Transports.Facepunch; using Steamworks; using Steamworks.Data; using Steamworks.ServerList; using TMPro; using Unity.AI.Navigation; using Unity.Collections; using Unity.Netcode; using Unity.Netcode.Components; using Unity.Netcode.Samples; using Unity.Netcode.Transports.UTP; using UnityEngine; using UnityEngine.AI; using UnityEngine.Animations.Rigging; using UnityEngine.Audio; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; using UnityEngine.InputSystem.Utilities; using UnityEngine.Rendering; using UnityEngine.Rendering.HighDefinition; using UnityEngine.SceneManagement; using UnityEngine.Serialization; using UnityEngine.Tilemaps; using UnityEngine.UI; using UnityEngine.VFX; using UnityEngine.Video; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] public class AlarmButton : MonoBehaviour { private Animator buttonAnimator; public float timeSincePushing; public void PushAlarmButton() { if (!(timeSincePushing < 1f)) { buttonAnimator.SetTrigger("press"); HUDManager.Instance.TriggerAlarmHornEffect(); } } private void Update() { if (timeSincePushing <= 5f) { timeSincePushing += Time.deltaTime; } } } public class AnimatedItem : GrabbableObject { public string grabItemBoolString; public string dropItemTriggerString; public bool makeAnimationWhenDropping; public Animator itemAnimator; public AudioSource itemAudio; public AudioClip grabAudio; public AudioClip dropAudio; public bool loopGrabAudio; public bool loopDropAudio; [Range(0f, 100f)] public int chanceToTriggerAnimation = 100; public int chanceToTriggerAlternateMesh; public Mesh alternateMesh; private Mesh normalMesh; private Random itemRandomChance; public float noiseRange; public float noiseLoudness; private int timesPlayedInOneSpot; private float makeNoiseInterval; private Vector3 lastPosition; public AudioLowPassFilter itemAudioLowPassFilter; private bool wasInPocket; public override void Start() { base.Start(); itemRandomChance = new Random(StartOfRound.Instance.randomMapSeed + StartOfRound.Instance.currentLevelID + itemProperties.itemId); Debug.Log((object)$"Seed: {StartOfRound.Instance.randomMapSeed} + {StartOfRound.Instance.currentLevelID} + {itemProperties.itemId}"); if (chanceToTriggerAlternateMesh > 0) { normalMesh = ((Component)this).gameObject.GetComponent<MeshFilter>().mesh; } } public override void EquipItem() { base.EquipItem(); if ((Object)(object)itemAudioLowPassFilter != (Object)null) { itemAudioLowPassFilter.cutoffFrequency = 20000f; } itemAudio.volume = 1f; if (chanceToTriggerAlternateMesh > 0) { if (itemRandomChance.Next(0, 100) < chanceToTriggerAlternateMesh) { ((Component)this).gameObject.GetComponent<MeshFilter>().mesh = alternateMesh; itemAudio.Stop(); return; } ((Component)this).gameObject.GetComponent<MeshFilter>().mesh = normalMesh; } if (!wasInPocket) { if (itemRandomChance.Next(0, 100) > chanceToTriggerAnimation) { itemAudio.Stop(); return; } } else { wasInPocket = false; } if ((Object)(object)itemAnimator != (Object)null) { itemAnimator.SetBool(grabItemBoolString, true); } if ((Object)(object)itemAudio != (Object)null) { itemAudio.clip = grabAudio; itemAudio.loop = loopGrabAudio; itemAudio.Play(); } } public override void DiscardItem() { base.DiscardItem(); if ((Object)(object)itemAnimator != (Object)null) { itemAnimator.SetBool(grabItemBoolString, false); } if (chanceToTriggerAlternateMesh > 0) { ((Component)this).gameObject.GetComponent<MeshFilter>().mesh = normalMesh; } if (!makeAnimationWhenDropping) { itemAudio.Stop(); return; } if (itemRandomChance.Next(0, 100) < chanceToTriggerAnimation) { itemAudio.Stop(); return; } if ((Object)(object)itemAnimator != (Object)null) { itemAnimator.SetTrigger(dropItemTriggerString); } if ((Object)(object)itemAudio != (Object)null) { itemAudio.loop = loopDropAudio; itemAudio.clip = dropAudio; itemAudio.Play(); if ((Object)(object)itemAudioLowPassFilter != (Object)null) { itemAudioLowPassFilter.cutoffFrequency = 20000f; } itemAudio.volume = 1f; } } public override void PocketItem() { base.PocketItem(); wasInPocket = true; if ((Object)(object)itemAudio != (Object)null) { if ((Object)(object)itemAudioLowPassFilter != (Object)null) { itemAudioLowPassFilter.cutoffFrequency = 1700f; } itemAudio.volume = 0.5f; } } public override void Update() { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) base.Update(); if ((Object)(object)itemAudio == (Object)null || !itemAudio.isPlaying) { return; } if (makeNoiseInterval <= 0f) { makeNoiseInterval = 0.75f; if (Vector3.Distance(lastPosition, ((Component)this).transform.position) < 4f) { timesPlayedInOneSpot++; } else { timesPlayedInOneSpot = 0; } if (isPocketed) { RoundManager.Instance.PlayAudibleNoise(((Component)this).transform.position, noiseRange / 2f, noiseLoudness / 2f, timesPlayedInOneSpot, isInElevator && StartOfRound.Instance.hangarDoorsClosed); } else { RoundManager.Instance.PlayAudibleNoise(((Component)this).transform.position, noiseRange, noiseLoudness, timesPlayedInOneSpot, isInElevator && StartOfRound.Instance.hangarDoorsClosed); } } else { makeNoiseInterval -= Time.deltaTime; } } protected override void __initializeVariables() { base.__initializeVariables(); } protected internal override string __getTypeName() { return "AnimatedItem"; } } public class AnimatedTextureUV : MonoBehaviour { private Material[] setMaterials; public MeshRenderer meshRenderer; public SkinnedMeshRenderer skinnedMeshRenderer; public int materialIndex; public int columns = 1; public int rows = 1; public float waitFrameTime = 0.005f; private float horizontalOffset; private float verticalOffset; private Coroutine animateMaterial; private bool skinnedMesh; private void OnEnable() { if (animateMaterial == null) { Debug.Log((object)"Animating material now"); animateMaterial = ((MonoBehaviour)this).StartCoroutine(AnimateUV()); } } private void OnDisable() { if (animateMaterial != null) { ((MonoBehaviour)this).StopCoroutine(animateMaterial); } } private IEnumerator AnimateUV() { yield return null; if ((Object)(object)skinnedMeshRenderer != (Object)null) { setMaterials = ((Renderer)skinnedMeshRenderer).materials; skinnedMesh = true; } else { setMaterials = ((Renderer)meshRenderer).materials; } float maxVertical = 1f - 1f / (float)columns; float maxHorizontal = 1f - 1f / (float)rows; while (((Behaviour)this).enabled) { yield return (object)new WaitForSeconds(waitFrameTime); horizontalOffset += 1f / (float)rows; if (horizontalOffset > maxHorizontal) { horizontalOffset = 0f; verticalOffset += 1f / (float)columns; if (verticalOffset > maxVertical) { verticalOffset = 0f; } } setMaterials[materialIndex].SetTextureOffset("_BaseColorMap", new Vector2(horizontalOffset, verticalOffset)); if (skinnedMesh) { ((Renderer)skinnedMeshRenderer).materials = setMaterials; } else { ((Renderer)skinnedMeshRenderer).materials = setMaterials; } } } } public class AnimationStopPoints : MonoBehaviour { public bool canAnimationStop; public int animationPosition = 1; public void SetAnimationStopPosition1() { canAnimationStop = true; animationPosition = 1; } public void SetAnimationGo() { canAnimationStop = false; } public void SetAnimationStopPosition2() { canAnimationStop = true; animationPosition = 2; } } public class AudioReverbPresets : MonoBehaviour { public AudioReverbTrigger[] audioPresets; } public class AutoParentToShip : NetworkBehaviour { public bool disableObject; public Vector3 positionOffset; public Vector3 rotationOffset; [HideInInspector] public Vector3 startingPosition; [HideInInspector] public Vector3 startingRotation; public bool overrideOffset; private void Awake() { //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_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: 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_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: 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_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) if (!overrideOffset) { positionOffset = StartOfRound.Instance.elevatorTransform.InverseTransformPoint(((Component)this).transform.position); rotationOffset = StartOfRound.Instance.elevatorTransform.InverseTransformDirection(((Component)this).transform.eulerAngles); } MoveToOffset(); PlaceableShipObject component = ((Component)this).gameObject.GetComponent<PlaceableShipObject>(); if ((Object)(object)component != (Object)null && (Object)(object)component.parentObjectSecondary != (Object)null) { startingPosition = component.parentObjectSecondary.position; startingRotation = component.parentObjectSecondary.eulerAngles; } else { startingPosition = positionOffset; startingRotation = rotationOffset; } } private void LateUpdate() { //IL_002a: Unknown result type (might be due to invalid IL or missing references) if (!StartOfRound.Instance.suckingFurnitureOutOfShip) { if (disableObject) { ((Component)this).transform.position = new Vector3(800f, -100f, 0f); } else { MoveToOffset(); } } } public void StartSuckingOutOfShip() { ((MonoBehaviour)this).StartCoroutine(SuckObjectOutOfShip()); } private IEnumerator SuckObjectOutOfShip() { Vector3 dir = Vector3.Normalize((StartOfRound.Instance.middleOfSpaceNode.position - ((Component)this).transform.position) * 10000f); Debug.Log((object)dir); Quaternion randomRotation = Random.rotation; while (StartOfRound.Instance.suckingFurnitureOutOfShip) { yield return null; ((Component)this).transform.position = ((Component)this).transform.position + dir * (Time.deltaTime * Mathf.Clamp(StartOfRound.Instance.suckingPower, 1.1f, 100f) * 17f); ((Component)this).transform.rotation = Quaternion.Lerp(((Component)this).transform.rotation, ((Component)this).transform.rotation * randomRotation, Time.deltaTime * StartOfRound.Instance.suckingPower); Debug.DrawRay(((Component)this).transform.position + Vector3.up * 0.2f, StartOfRound.Instance.middleOfSpaceNode.position - ((Component)this).transform.position, Color.blue); Debug.DrawRay(((Component)this).transform.position, dir, Color.green); } } public void MoveToOffset() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_003b: 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_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) ((Component)this).transform.rotation = StartOfRound.Instance.elevatorTransform.rotation; ((Component)this).transform.Rotate(rotationOffset); ((Component)this).transform.position = StartOfRound.Instance.elevatorTransform.position; Vector3 val = positionOffset; val = StartOfRound.Instance.elevatorTransform.rotation * val; Transform transform = ((Component)this).transform; transform.position += val; } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected internal override string __getTypeName() { return "AutoParentToShip"; } } public class BaboonBirdAI : EnemyAI { public Dictionary<Transform, Threat> threats = new Dictionary<Transform, Threat>(); public Transform focusedThreatTransform; public Threat focusedThreat; public bool focusingOnThreat; public bool focusedThreatIsInView; private int focusLevel; private float fearLevel; private float fearLevelNoDistComparison; private Vector3 agentLocalVelocity; private float velX; private float velZ; private Vector3 previousPosition; public Transform animationContainer; public MultiAimConstraint headLookRig; public Transform headLookTarget; private Ray lookRay; public float fov; public float visionDistance; private int visibleThreatsMask = 524296; private int scrapMask = 64; private int leadershipLevel; private int previousBehaviourState = -1; public BaboonHawkGroup scoutingGroup; private float miscAnimationTimer; private int currentMiscAnimation; private Vector3 lookTarget; private Vector3 peekTarget; private float peekTimer; public AISearchRoutine scoutingSearchRoutine; public static Vector3 baboonCampPosition; public float scoutTimer; public float timeToScout; private float timeSinceRestWhileScouting; private float restingDuringScouting; private bool eyesClosed; private bool restingAtCamp; private float restAtCampTimer; private float chosenDistanceToCamp = 1f; private float timeSincePingingBirdInterest; private float timeSinceLastMiscAnimation; private int aggressiveMode; private int previousAggressiveMode; private float fightTimer; public AudioSource aggressionAudio; private Vector3 debugSphere; public Collider ownCollider; private float timeSinceAggressiveDisplay; private float timeSpentFocusingOnThreat; private float timeSinceFighting; private bool doingKillAnimation; private Coroutine killAnimCoroutine; private float timeSinceHitting; public Transform deadBodyPoint; public AudioClip[] cawScreamSFX; public AudioClip[] cawLaughSFX; private float noiseTimer; private float noiseInterval; public GrabbableObject focusedScrap; public GrabbableObject heldScrap; public bool movingToScrap; public Transform grabTarget; public TwoBoneIKConstraint leftArmRig; public TwoBoneIKConstraint rightArmRig; private bool oddAIInterval; private DeadBodyInfo killAnimationBody; private float timeSinceBeingAttackedByPlayer; private float timeSinceJoiningOrLeavingScoutingGroup; private BaboonBirdAI biggestBaboon; public override void Start() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0069: 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_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) base.Start(); if (!((NetworkBehaviour)this).IsOwner) { return; } Random random = new Random(StartOfRound.Instance.randomMapSeed + thisEnemyIndex); leadershipLevel = random.Next(0, 500); if (baboonCampPosition == Vector3.zero) { List<GameObject> list = new List<GameObject>(); for (int i = 0; i < RoundManager.Instance.outsideAINodes.Length - 2; i += 2) { if (Vector3.Distance(RoundManager.Instance.outsideAINodes[i].transform.position, StartOfRound.Instance.elevatorTransform.position) > 30f && !PathIsIntersectedByLineOfSight(RoundManager.Instance.outsideAINodes[i].transform.position, calculatePathDistance: false, avoidLineOfSight: false)) { list.Add(RoundManager.Instance.outsideAINodes[i]); } } baboonCampPosition = RoundManager.Instance.GetRandomNavMeshPositionInBoxPredictable(list[random.Next(0, list.Count)].transform.position, 15f, RoundManager.Instance.navHit, random); } SyncInitialValuesServerRpc(leadershipLevel, baboonCampPosition); } [ServerRpc] public void SyncInitialValuesServerRpc(int syncLeadershipLevel, Vector3 campPosition) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Invalid comparison between Unknown and I4 //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3452382367u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, syncLeadershipLevel); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref campPosition); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3452382367u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { SyncInitialValuesClientRpc(syncLeadershipLevel, campPosition); } } [ClientRpc] public void SyncInitialValuesClientRpc(int syncLeadershipLevel, Vector3 campPosition) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3856685904u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, syncLeadershipLevel); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref campPosition); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3856685904u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { leadershipLevel = syncLeadershipLevel; baboonCampPosition = campPosition; ((Component)this).transform.localScale = ((Component)this).transform.localScale * Mathf.Max((float)leadershipLevel / 200f * 0.6f, 0.9f); } } } public void LateUpdate() { //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) if ((!inSpecialAnimation && ((Object)(object)focusedThreatTransform == (Object)null || currentBehaviourStateIndex != 2) && peekTimer < 0f) || isEnemyDead) { agent.angularSpeed = 300f; ((RigConstraint<MultiAimConstraintJob, MultiAimConstraintData, MultiAimConstraintJobBinder<MultiAimConstraintData>>)(object)headLookRig).weight = Mathf.Lerp(((RigConstraint<MultiAimConstraintJob, MultiAimConstraintData, MultiAimConstraintJobBinder<MultiAimConstraintData>>)(object)headLookRig).weight, 0f, Time.deltaTime * 10f); return; } agent.angularSpeed = 0f; ((RigConstraint<MultiAimConstraintJob, MultiAimConstraintData, MultiAimConstraintJobBinder<MultiAimConstraintData>>)(object)headLookRig).weight = Mathf.Lerp(((RigConstraint<MultiAimConstraintJob, MultiAimConstraintData, MultiAimConstraintJobBinder<MultiAimConstraintData>>)(object)headLookRig).weight, 1f, Time.deltaTime * 10f); if (peekTimer >= 0f) { peekTimer -= Time.deltaTime; AnimateLooking(peekTarget); } else { AnimateLooking(lookTarget); } } public override void OnCollideWithPlayer(Collider other) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: 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_002f: 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_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0049: 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_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) base.OnCollideWithPlayer(other); if (timeSinceHitting < 0.5f) { return; } Vector3 val = Vector3.Normalize(((Component)this).transform.position + Vector3.up * 0.7f - (((Component)other).transform.position + Vector3.up * 0.4f)) * 0.5f; if (Physics.Linecast(((Component)this).transform.position + Vector3.up * 0.7f + val, ((Component)other).transform.position + Vector3.up * 0.4f, StartOfRound.Instance.collidersAndRoomMaskAndDefault, (QueryTriggerInteraction)1)) { return; } PlayerControllerB playerControllerB = MeetsStandardPlayerCollisionConditions(other, inSpecialAnimation || doingKillAnimation); if ((Object)(object)playerControllerB != (Object)null) { timeSinceHitting = 0f; playerControllerB.DamagePlayer(30); if (playerControllerB.isPlayerDead) { StabPlayerDeathAnimServerRpc((int)playerControllerB.playerClientId); return; } creatureAnimator.ResetTrigger("Hit"); creatureAnimator.SetTrigger("Hit"); creatureSFX.PlayOneShot(enemyType.audioClips[5]); WalkieTalkie.TransmitOneShotAudio(creatureSFX, enemyType.audioClips[5]); RoundManager.Instance.PlayAudibleNoise(((Component)creatureSFX).transform.position, 8f, 0.7f); } } public override void OnCollideWithEnemy(Collider other, EnemyAI enemyScript = null) { //IL_00b5: Unknown result type (might be due to invalid IL or missing references) base.OnCollideWithEnemy(other); if (!((Object)(object)enemyScript.enemyType == (Object)(object)enemyType) && !(timeSinceHitting < 0.75f) && ((NetworkBehaviour)this).IsOwner && enemyScript.enemyType.canDie) { timeSinceHitting = 0f; creatureAnimator.ResetTrigger("Hit"); creatureAnimator.SetTrigger("Hit"); creatureSFX.PlayOneShot(enemyType.audioClips[5]); WalkieTalkie.TransmitOneShotAudio(creatureSFX, enemyType.audioClips[5]); RoundManager.Instance.PlayAudibleNoise(((Component)creatureSFX).transform.position, 8f, 0.7f); enemyScript.HitEnemy(1, null, playHitSFX: true); } } public override void HitEnemy(int force = 1, PlayerControllerB playerWhoHit = null, bool playHitSFX = false) { base.HitEnemy(force, playerWhoHit, playHitSFX); if (isEnemyDead) { return; } creatureAnimator.SetTrigger("TakeDamage"); if ((Object)(object)playerWhoHit != (Object)null) { timeSinceBeingAttackedByPlayer = 0f; if (threats.TryGetValue(((Component)playerWhoHit).transform, out var value)) { value.hasAttacked = true; } } enemyHP -= force; if (((NetworkBehaviour)this).IsOwner && enemyHP <= 0 && !isEnemyDead) { KillEnemyOnOwnerClient(); } StopKillAnimation(); } public override void KillEnemy(bool destroy = false) { base.KillEnemy(destroy); creatureAnimator.SetBool("IsDead", true); if ((Object)(object)heldScrap != (Object)null && ((NetworkBehaviour)this).IsOwner) { DropHeldItemAndSync(); } StopKillAnimation(); } public void StopKillAnimation() { if (killAnimCoroutine != null) { ((MonoBehaviour)this).StopCoroutine(killAnimCoroutine); } agent.acceleration = 17f; inSpecialAnimation = false; doingKillAnimation = false; if ((Object)(object)killAnimationBody != (Object)null) { killAnimationBody.attachedLimb = null; killAnimationBody.attachedTo = null; killAnimationBody = null; } } [ServerRpc(RequireOwnership = false)] public void StabPlayerDeathAnimServerRpc(int playerObject) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2476579270u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerObject); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2476579270u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost) && !doingKillAnimation) { if (((NetworkBehaviour)this).IsOwner && (Object)(object)heldScrap != (Object)null) { DropHeldItemAndSync(); } doingKillAnimation = true; StabPlayerDeathAnimClientRpc(playerObject); } } [ClientRpc] public void StabPlayerDeathAnimClientRpc(int playerObject) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3749667856u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerObject); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3749667856u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { doingKillAnimation = true; inSpecialAnimation = true; agent.acceleration = 70f; agent.speed = 0f; if (killAnimCoroutine != null) { ((MonoBehaviour)this).StopCoroutine(killAnimCoroutine); } killAnimCoroutine = ((MonoBehaviour)this).StartCoroutine(killPlayerAnimation(playerObject)); } } private IEnumerator killPlayerAnimation(int playerObject) { PlayerControllerB killedPlayer = StartOfRound.Instance.allPlayerScripts[playerObject]; creatureAnimator.ResetTrigger("KillAnimation"); creatureAnimator.SetTrigger("KillAnimation"); creatureVoice.PlayOneShot(enemyType.audioClips[4]); WalkieTalkie.TransmitOneShotAudio(creatureVoice, enemyType.audioClips[4]); float startTime = Time.realtimeSinceStartup; yield return (object)new WaitUntil((Func<bool>)(() => Time.realtimeSinceStartup - startTime > 1f || (Object)(object)killedPlayer.deadBody != (Object)null)); if ((Object)(object)killedPlayer.deadBody != (Object)null) { killAnimationBody = killedPlayer.deadBody; killAnimationBody.attachedLimb = killedPlayer.deadBody.bodyParts[5]; killAnimationBody.attachedTo = deadBodyPoint; killAnimationBody.matchPositionExactly = true; killAnimationBody.canBeGrabbedBackByPlayers = false; yield return (object)new WaitForSeconds(1.7f); killAnimationBody.attachedLimb = null; killAnimationBody.attachedTo = null; } agent.acceleration = 17f; inSpecialAnimation = false; doingKillAnimation = false; } private void InteractWithScrap() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: 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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)heldScrap != (Object)null) { focusedScrap = null; if (Vector3.Distance(((Component)this).transform.position, baboonCampPosition) < Random.Range(1f, 7f) || heldScrap.isHeld) { DropHeldItemAndSync(); } } else if ((Object)(object)focusedScrap != (Object)null) { if (debugEnemyAI) { Debug.DrawRay(((Component)focusedScrap).transform.position, Vector3.up * 3f, Color.yellow); } if (!CanGrabScrap(focusedScrap)) { focusedScrap = null; } else if (Vector3.Distance(((Component)this).transform.position, ((Component)focusedScrap).transform.position) < 0.4f && !Physics.Linecast(((Component)this).transform.position, ((Component)focusedScrap).transform.position + Vector3.up * 0.5f, StartOfRound.Instance.collidersAndRoomMaskAndDefault, (QueryTriggerInteraction)1)) { GrabItemAndSync(((NetworkBehaviour)focusedScrap).NetworkObject); } } } private bool CanGrabScrap(GrabbableObject scrap) { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) if (scrap.itemProperties.itemId == 1531) { return false; } if (scrap.isInShipRoom && !isInsidePlayerShip) { return false; } if (isEnemyDead) { return false; } if (!scrap.heldByPlayerOnServer && !scrap.isHeld && ((Object)(object)scrap == (Object)(object)heldScrap || !scrap.isHeldByEnemy)) { return Vector3.Distance(((Component)scrap).transform.position, baboonCampPosition) > 8f; } return false; } private void DropHeldItemAndSync() { //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)heldScrap == (Object)null) { Debug.LogError((object)$"Baboon #{thisEnemyIndex} Error: DropItemAndSync called when baboon has no scrap!"); } NetworkObject networkObject = ((NetworkBehaviour)heldScrap).NetworkObject; if ((Object)(object)networkObject == (Object)null) { Debug.LogError((object)$"Baboon #{thisEnemyIndex} Error: No network object in held scrap {((Object)((Component)heldScrap).gameObject).name}"); } Vector3 itemFloorPosition = heldScrap.GetItemFloorPosition(); DropScrap(networkObject, itemFloorPosition); DropScrapServerRpc(NetworkObjectReference.op_Implicit(networkObject), itemFloorPosition, (int)GameNetworkManager.Instance.localPlayerController.playerClientId); } [ServerRpc] public void DropScrapServerRpc(NetworkObjectReference item, Vector3 targetFloorPosition, int clientWhoSentRPC) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Invalid comparison between Unknown and I4 //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1418775270u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref item, default(ForNetworkSerializable)); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref targetFloorPosition); BytePacker.WriteValueBitPacked(val2, clientWhoSentRPC); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1418775270u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { DropScrapClientRpc(item, targetFloorPosition, clientWhoSentRPC); } } [ClientRpc] public void DropScrapClientRpc(NetworkObjectReference item, Vector3 targetFloorPosition, int clientWhoSentRPC) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1865475504u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref item, default(ForNetworkSerializable)); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref targetFloorPosition); BytePacker.WriteValueBitPacked(val2, clientWhoSentRPC); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1865475504u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && clientWhoSentRPC != (int)GameNetworkManager.Instance.localPlayerController.playerClientId) { NetworkObject item2 = default(NetworkObject); if (((NetworkObjectReference)(ref item)).TryGet(ref item2, (NetworkManager)null)) { DropScrap(item2, targetFloorPosition); } else { Debug.LogError((object)$"Baboon #{thisEnemyIndex}; Error, was not able to get network object from dropped item client rpc"); } } } private void DropScrap(NetworkObject item, Vector3 targetFloorPosition) { //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)heldScrap == (Object)null) { Debug.LogError((object)"Baboon: my held item is null when attempting to drop it!!"); return; } if (heldScrap.isHeld) { heldScrap.DiscardItemFromEnemy(); heldScrap.isHeldByEnemy = false; heldScrap = null; Debug.Log((object)$"Baboon #{thisEnemyIndex}: Dropped item which was held by a player"); return; } heldScrap.parentObject = null; ((Component)heldScrap).transform.SetParent(StartOfRound.Instance.propsContainer, true); heldScrap.EnablePhysics(enable: true); heldScrap.fallTime = 0f; heldScrap.startFallingPosition = ((Component)heldScrap).transform.parent.InverseTransformPoint(((Component)heldScrap).transform.position); heldScrap.targetFloorPosition = ((Component)heldScrap).transform.parent.InverseTransformPoint(targetFloorPosition); heldScrap.floorYRot = -1; heldScrap.DiscardItemFromEnemy(); heldScrap.isHeldByEnemy = false; heldScrap = null; Debug.Log((object)$"Baboon #{thisEnemyIndex}: Dropped item"); } private void GrabItemAndSync(NetworkObject item) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)heldScrap != (Object)null) { Debug.LogError((object)$"Baboon #{thisEnemyIndex} Error: GrabItemAndSync called when baboon is already carrying scrap!"); } GrabScrap(item); GrabScrapServerRpc(NetworkObjectReference.op_Implicit(item), (int)GameNetworkManager.Instance.localPlayerController.playerClientId); } [ServerRpc] public void GrabScrapServerRpc(NetworkObjectReference item, int clientWhoSentRPC) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 //IL_016b: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(869682226u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref item, default(ForNetworkSerializable)); BytePacker.WriteValueBitPacked(val2, clientWhoSentRPC); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 869682226u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { NetworkObject val3 = default(NetworkObject); if (!((NetworkObjectReference)(ref item)).TryGet(ref val3, (NetworkManager)null)) { Debug.LogError((object)$"Baboon #{thisEnemyIndex} error: Could not get grabbed network object from reference on server"); } else if (Object.op_Implicit((Object)(object)((Component)val3).GetComponent<GrabbableObject>()) && !((Component)val3).GetComponent<GrabbableObject>().heldByPlayerOnServer) { GrabScrapClientRpc(item, clientWhoSentRPC); } } } [ClientRpc] public void GrabScrapClientRpc(NetworkObjectReference item, int clientWhoSentRPC) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1564051222u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref item, default(ForNetworkSerializable)); BytePacker.WriteValueBitPacked(val2, clientWhoSentRPC); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1564051222u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && clientWhoSentRPC != (int)GameNetworkManager.Instance.localPlayerController.playerClientId) { NetworkObject item2 = default(NetworkObject); if (((NetworkObjectReference)(ref item)).TryGet(ref item2, (NetworkManager)null)) { GrabScrap(item2); } else { Debug.LogError((object)$"Baboon #{thisEnemyIndex}; Error, was not able to get id from grabbed item client rpc"); } } } private void GrabScrap(NetworkObject item) { //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) Debug.Log((object)$"held item null: {(Object)(object)heldScrap == (Object)null}"); if ((Object)(object)heldScrap != (Object)null) { Debug.Log((object)$"Baboon #{thisEnemyIndex}: Trying to grab another item ({((Object)((Component)item).gameObject).name}) while hands are already full with item ({((Object)((Component)heldScrap).gameObject).name}). Dropping the currently held one."); DropScrap(((Component)heldScrap).GetComponent<NetworkObject>(), heldScrap.GetItemFloorPosition()); } GrabbableObject grabbableObject = (heldScrap = ((Component)item).gameObject.GetComponent<GrabbableObject>()); grabbableObject.parentObject = grabTarget; grabbableObject.hasHitGround = false; grabbableObject.GrabItemFromEnemy(); grabbableObject.isHeldByEnemy = true; grabbableObject.EnablePhysics(enable: false); Debug.Log((object)$"Baboon #{thisEnemyIndex}: Grabbing item!!! {((Object)((Component)heldScrap).gameObject).name}"); } public override void ReachedNodeInSearch() { base.ReachedNodeInSearch(); if (currentSearch.nodesEliminatedInCurrentSearch > 14 && timeSinceRestWhileScouting > 17f && timeSinceAggressiveDisplay > 6f) { timeSinceRestWhileScouting = 0f; restingDuringScouting = 12f; } } public override void DoAIInterval() { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_05d2: Unknown result type (might be due to invalid IL or missing references) //IL_05c3: Unknown result type (might be due to invalid IL or missing references) //IL_05e4: Unknown result type (might be due to invalid IL or missing references) //IL_05e9: Unknown result type (might be due to invalid IL or missing references) //IL_07b7: Unknown result type (might be due to invalid IL or missing references) //IL_07c2: Unknown result type (might be due to invalid IL or missing references) //IL_02c8: Unknown result type (might be due to invalid IL or missing references) //IL_0389: Unknown result type (might be due to invalid IL or missing references) //IL_039e: Unknown result type (might be due to invalid IL or missing references) //IL_03f9: Unknown result type (might be due to invalid IL or missing references) //IL_040e: Unknown result type (might be due to invalid IL or missing references) //IL_03c0: Unknown result type (might be due to invalid IL or missing references) //IL_049a: Unknown result type (might be due to invalid IL or missing references) //IL_04af: Unknown result type (might be due to invalid IL or missing references) //IL_04e4: Unknown result type (might be due to invalid IL or missing references) //IL_04f3: Unknown result type (might be due to invalid IL or missing references) //IL_04f8: Unknown result type (might be due to invalid IL or missing references) //IL_0a76: Unknown result type (might be due to invalid IL or missing references) //IL_0a86: Unknown result type (might be due to invalid IL or missing references) //IL_0a90: Unknown result type (might be due to invalid IL or missing references) //IL_0a95: Unknown result type (might be due to invalid IL or missing references) //IL_0a9a: Unknown result type (might be due to invalid IL or missing references) //IL_0a9c: Unknown result type (might be due to invalid IL or missing references) //IL_0a9e: Unknown result type (might be due to invalid IL or missing references) //IL_0aa8: Unknown result type (might be due to invalid IL or missing references) //IL_0aad: Unknown result type (might be due to invalid IL or missing references) //IL_0ac5: Unknown result type (might be due to invalid IL or missing references) //IL_0aca: Unknown result type (might be due to invalid IL or missing references) //IL_0ad4: Unknown result type (might be due to invalid IL or missing references) //IL_0ad9: Unknown result type (might be due to invalid IL or missing references) //IL_0ae4: Unknown result type (might be due to invalid IL or missing references) //IL_0ae9: Unknown result type (might be due to invalid IL or missing references) //IL_0af3: Unknown result type (might be due to invalid IL or missing references) //IL_0af8: Unknown result type (might be due to invalid IL or missing references) //IL_0afd: Unknown result type (might be due to invalid IL or missing references) //IL_0aff: Unknown result type (might be due to invalid IL or missing references) //IL_0b09: Unknown result type (might be due to invalid IL or missing references) //IL_0b0e: Unknown result type (might be due to invalid IL or missing references) //IL_0b18: Unknown result type (might be due to invalid IL or missing references) //IL_0921: Unknown result type (might be due to invalid IL or missing references) //IL_0931: Unknown result type (might be due to invalid IL or missing references) //IL_093b: Unknown result type (might be due to invalid IL or missing references) //IL_0940: Unknown result type (might be due to invalid IL or missing references) //IL_0945: Unknown result type (might be due to invalid IL or missing references) //IL_0947: Unknown result type (might be due to invalid IL or missing references) //IL_0949: Unknown result type (might be due to invalid IL or missing references) //IL_0953: Unknown result type (might be due to invalid IL or missing references) //IL_0958: Unknown result type (might be due to invalid IL or missing references) //IL_0969: Unknown result type (might be due to invalid IL or missing references) //IL_0b60: Unknown result type (might be due to invalid IL or missing references) //IL_0b6a: Unknown result type (might be due to invalid IL or missing references) //IL_0b75: Unknown result type (might be due to invalid IL or missing references) //IL_0b7a: Unknown result type (might be due to invalid IL or missing references) //IL_0b38: Unknown result type (might be due to invalid IL or missing references) //IL_0b42: Unknown result type (might be due to invalid IL or missing references) //IL_0b4d: Unknown result type (might be due to invalid IL or missing references) //IL_0b52: Unknown result type (might be due to invalid IL or missing references) //IL_0a61: Unknown result type (might be due to invalid IL or missing references) //IL_0b7c: Unknown result type (might be due to invalid IL or missing references) //IL_0b7e: Unknown result type (might be due to invalid IL or missing references) //IL_0b83: Unknown result type (might be due to invalid IL or missing references) //IL_0b98: Unknown result type (might be due to invalid IL or missing references) //IL_0bbc: Unknown result type (might be due to invalid IL or missing references) //IL_0bce: Unknown result type (might be due to invalid IL or missing references) //IL_0bd0: Unknown result type (might be due to invalid IL or missing references) //IL_0ba3: Unknown result type (might be due to invalid IL or missing references) //IL_0ba5: Unknown result type (might be due to invalid IL or missing references) base.DoAIInterval(); if (isEnemyDead) { agent.speed = 0f; if (scoutingSearchRoutine.inProgress) { StopSearch(scoutingSearchRoutine, clear: false); } return; } if (stunNormalizedTimer > 0f || miscAnimationTimer > 0f) { agent.speed = 0f; if ((Object)(object)heldScrap != (Object)null && ((NetworkBehaviour)this).IsOwner) { DropHeldItemAndSync(); } if ((Object)(object)stunnedByPlayer != (Object)null) { PingBaboonInterest(((Component)stunnedByPlayer.gameplayCamera).transform.position, 4); } } if (inSpecialAnimation) { agent.speed = 0f; return; } if (!eyesClosed) { DoLOSCheck(); } InteractWithScrap(); switch (currentBehaviourStateIndex) { case 0: if (previousBehaviourState != currentBehaviourStateIndex) { timeToScout = Random.Range(25, 70); scoutTimer = 0f; Debug.Log((object)$"Baboon #{thisEnemyIndex} changed to state 0; set time to scout: {timeToScout}"); restingAtCamp = false; restAtCampTimer = 0f; SetAggressiveMode(0); previousBehaviourState = currentBehaviourStateIndex; } if (!((NetworkBehaviour)this).IsOwner) { break; } if ((Object)(object)focusedScrap != (Object)null) { SetDestinationToPosition(((Component)focusedScrap).transform.position); } if (scoutingGroup == null || (Object)(object)scoutingGroup.leader == (Object)(object)this || !scoutingGroup.members.Contains(this)) { Debug.Log((object)$"{((Object)((Component)this).gameObject).name}: scouting group null?: {scoutingGroup == null};"); if (scoutingGroup != null) { Debug.Log((object)$"Scouting group not null. Leader: {((Object)((Component)scoutingGroup.leader).gameObject).name}; members contains this: {!scoutingGroup.members.Contains(this)}"); } if (restingDuringScouting >= 0f) { if (scoutingSearchRoutine.inProgress) { StopSearch(scoutingSearchRoutine, clear: false); } if (!creatureAnimator.GetBool("sit")) { EnemyEnterRestModeServerRpc(sleep: false, atCamp: false); } creatureAnimator.SetBool("sit", true); restingDuringScouting -= AIIntervalTime; agent.speed = 0f; } else { if (!scoutingSearchRoutine.inProgress && (Object)(object)focusedScrap == (Object)null) { StartSearch(baboonCampPosition, scoutingSearchRoutine); } if (creatureAnimator.GetBool("sit")) { EnemyGetUpServerRpc(); creatureAnimator.SetBool("sit", false); } agent.speed = 10f; } } else { if (scoutingSearchRoutine.inProgress) { Debug.Log((object)$"Baboon #{thisEnemyIndex} joined a group; Stopping scouting."); StopSearch(scoutingSearchRoutine); } if (creatureAnimator.GetBool("sit")) { EnemyGetUpServerRpc(); creatureAnimator.SetBool("sit", false); } agent.speed = 12f; if (Vector3.Distance(((Component)this).transform.position, ((Component)scoutingGroup.leader).transform.position) > 60f || PathIsIntersectedByLineOfSight(((Component)scoutingGroup.leader).transform.position, calculatePathDistance: false, avoidLineOfSight: false)) { Debug.Log((object)$"Baboon #{thisEnemyIndex} leaving group with leader {scoutingGroup.leader.thisEnemyIndex}; distance: {Vector3.Distance(((Component)this).transform.position, ((Component)scoutingGroup.leader).transform.position)}"); LeaveCurrentScoutingGroup(sync: true); } else { Debug.Log((object)$"Baboon #{thisEnemyIndex}: following leader. {scoutingGroup == null}; {(Object)(object)scoutingGroup.leader == (Object)(object)this}; {scoutingGroup.members.Contains(this)}"); if (Vector3.Distance(destination, ((Component)scoutingGroup.leader).transform.position) > 8f && (Object)(object)focusedScrap == (Object)null) { SetDestinationToPosition(RoundManager.Instance.GetRandomNavMeshPositionInRadiusSpherical(((Component)scoutingGroup.leader).transform.position, 6f, RoundManager.Instance.navHit)); } } } if (scoutTimer < timeToScout && (Object)(object)heldScrap == (Object)null) { scoutTimer += AIIntervalTime; } else { SwitchToBehaviourState(1); } break; case 1: if (previousBehaviourState != currentBehaviourStateIndex) { restingDuringScouting = 0f; scoutTimer = 0f; chosenDistanceToCamp = Random.Range(1f, 7f); LeaveCurrentScoutingGroup(sync: true); SetAggressiveMode(0); previousBehaviourState = currentBehaviourStateIndex; } if (scoutingSearchRoutine.inProgress) { StopSearch(scoutingSearchRoutine); } if ((Object)(object)focusedScrap != (Object)null) { SetDestinationToPosition(((Component)focusedScrap).transform.position); } else { SetDestinationToPosition(baboonCampPosition); } if (Vector3.Distance(((Component)this).transform.position, baboonCampPosition) < chosenDistanceToCamp && peekTimer < 0f) { if (!restingAtCamp) { restingAtCamp = true; restAtCampTimer = Random.Range(15f, 30f); if ((Object)(object)heldScrap != (Object)null) { DropHeldItemAndSync(); } bool sleep = false; if (Random.Range(0, 100) < 35) { sleep = true; } EnemyEnterRestModeServerRpc(sleep, atCamp: true); } else if (restAtCampTimer <= 0f) { SwitchToBehaviourState(0); } else { restAtCampTimer -= AIIntervalTime; } agent.speed = 0f; } else { if (restingAtCamp) { restingAtCamp = false; EnemyGetUpServerRpc(); } creatureAnimator.SetBool("sit", false); creatureAnimator.SetBool("sleep", false); agent.speed = 9f; } break; case 2: { if (previousBehaviourState != currentBehaviourStateIndex) { timeSpentFocusingOnThreat = 0f; creatureAnimator.SetBool("sleep", false); creatureAnimator.SetBool("sit", false); EnemyGetUpServerRpc(); previousBehaviourState = currentBehaviourStateIndex; } if (focusedThreat == null || !focusingOnThreat) { StopFocusingThreat(); } if (scoutingSearchRoutine.inProgress) { StopSearch(scoutingSearchRoutine, clear: false); } agent.speed = 9f; float num = fearLevelNoDistComparison * 2f; if (focusedThreat.interestLevel <= 0 || enemyHP <= 3) { num = Mathf.Max(num, 1f); } float num2 = GetComfortableDistanceToThreat(focusedThreat) + num; float num3 = Vector3.Distance(((Component)this).transform.position, focusedThreat.lastSeenPosition); bool flag = false; float num4 = Time.realtimeSinceStartup - focusedThreat.timeLastSeen; if (num4 > 5f) { SetThreatInView(inView: false); focusLevel = 0; StopFocusingThreat(); break; } if (num4 > 3f) { SetThreatInView(inView: false); focusLevel = 1; if (num2 - num3 > 2f) { StopFocusingThreat(); break; } } else if (num4 > 1f) { flag = true; focusedThreatIsInView = false; SetThreatInView(inView: false); focusLevel = 2; SetAggressiveMode(0); } else if (num4 < 0.55f) { flag = true; SetThreatInView(inView: true); } bool flag2 = fearLevel > 0f || focusedThreat.interestLevel > 0 || fearLevel < -6f || focusedThreat.hasAttacked; if (aggressiveMode == 2) { focusLevel = 3; if ((Object)(object)heldScrap != (Object)null) { DropHeldItemAndSync(); focusedScrap = heldScrap; } Debug.Log((object)("Baboon: Entered fight mode with threat '" + ((Object)focusedThreat.threatScript.GetThreatTransform()).name + "'")); Debug.Log((object)$"Fight timer: {fightTimer}"); Vector3 val = focusedThreat.threatScript.GetThreatTransform().position + focusedThreat.threatScript.GetThreatVelocity() * 10f; Debug.DrawRay(val, Vector3.up * 5f, Color.red, AIIntervalTime); SetDestinationToPosition(val, checkForPath: true); if (fightTimer > 4f || timeSinceBeingAttackedByPlayer < 4f || (fightTimer > 2f && (fearLevel >= 1f || !flag2)) || (enemyHP <= 3 && !flag2)) { scoutTimer = timeToScout - 20f; fightTimer = -7f; SetAggressiveMode(1); } else if (num3 > 4f) { fightTimer += AIIntervalTime * 2f; } else if (num3 > 1f) { fightTimer += AIIntervalTime; } else { fightTimer += AIIntervalTime / 2f; } break; } bool flag3 = false; if ((Object)(object)focusedScrap != (Object)null && (!flag || fearLevel <= 0f)) { SetDestinationToPosition(((Component)focusedScrap).transform.position); flag3 = true; } Vector3 val2 = focusedThreat.lastSeenPosition + focusedThreat.threatScript.GetThreatVelocity() * -17f; Debug.DrawRay(val2, Vector3.up * 3f, Color.red, AIIntervalTime); Ray val3 = default(Ray); ((Ray)(ref val3))..ctor(((Component)this).transform.position + Vector3.up * 0.5f, Vector3.Normalize((((Component)this).transform.position + Vector3.up * 0.5f - val2) * 100f)); RaycastHit val4 = default(RaycastHit); Vector3 val5 = ((!Physics.Raycast(val3, ref val4, num2 - num3, StartOfRound.Instance.collidersAndRoomMaskAndDefault, (QueryTriggerInteraction)1)) ? RoundManager.Instance.GetNavMeshPosition(((Ray)(ref val3)).GetPoint(num2 - num3), RoundManager.Instance.navHit, 8f) : RoundManager.Instance.GetNavMeshPosition(((RaycastHit)(ref val4)).point, RoundManager.Instance.navHit, 8f)); Debug.DrawRay(val5, Vector3.up, Color.blue, AIIntervalTime); if (!flag3) { if (SetDestinationToPosition(val5, checkForPath: true)) { debugSphere = val5; } else { Debug.Log((object)$"Baboon #{thisEnemyIndex}: Could not get path to avoidance position at {val5}"); debugSphere = val5; } } if (fightTimer > 7f && timeSinceFighting > 4f) { fightTimer = -6f; SetAggressiveMode(2); break; } bool flag4 = false; if (scoutingGroup != null) { for (int i = 0; i < scoutingGroup.members.Count; i++) { if (scoutingGroup.members[i].aggressiveMode == 2) { flag4 = true; } } } float num5 = GetComfortableDistanceToThreat(focusedThreat) - num3; if (fearLevel < -5f && flag2) { if (noiseTimer >= noiseInterval) { noiseInterval = Random.Range(0.2f, 0.7f); noiseTimer = 0f; RoundManager.PlayRandomClip(creatureVoice, cawLaughSFX, randomize: true, 1f, 1105); } else { noiseTimer += Time.deltaTime; } } if ((flag && ((num5 > 8f && flag2) || num3 < 5f)) || timeSinceBeingAttackedByPlayer < 2.5f) { if (timeSinceFighting > 5f) { fightTimer += AIIntervalTime * 10.6f / (focusedThreat.distanceToThreat * 0.3f); } SetAggressiveMode(1); } else if (num5 > 4f && fearLevel < 3f && flag2) { fightTimer += AIIntervalTime * 7.4f / (focusedThreat.distanceToThreat * 0.3f); SetAggressiveMode(1); } else { if (!(num5 < 2f)) { break; } if (timeSinceAggressiveDisplay > 2.5f) { SetAggressiveMode(0); } fightTimer -= Mathf.Max(-6f, AIIntervalTime * 0.2f); if (timeSpentFocusingOnThreat > 4f + (float)focusedThreat.interestLevel * 8f && !flag4) { if (fightTimer > 4f) { fightTimer -= Mathf.Max(-6f, AIIntervalTime * 0.5f * (focusedThreat.distanceToThreat * 0.1f)); } else { StopFocusingThreat(); } } } break; } } } private void StopFocusingThreat() { if (currentBehaviourStateIndex == 2) { Debug.Log((object)$"Stopped focusing on threat '{focusedThreat.threatScript.GetThreatTransform()}'"); aggressiveMode = 0; focusingOnThreat = false; focusedThreatIsInView = false; focusedThreatTransform = null; focusedThreat = null; if ((Object)(object)heldScrap == (Object)null) { SwitchToBehaviourStateOnLocalClient(0); } else { SwitchToBehaviourStateOnLocalClient(1); } StopFocusingThreatServerRpc((Object)(object)heldScrap == (Object)null); } } [ServerRpc] public void StopFocusingThreatServerRpc(bool enterScoutingMode) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1546030380u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref enterScoutingMode, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1546030380u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { StopFocusingThreatClientRpc(enterScoutingMode); } } [ClientRpc] public void StopFocusingThreatClientRpc(bool enterScoutingMode) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3360048400u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref enterScoutingMode, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3360048400u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && !((NetworkBehaviour)this).IsOwner) { aggressiveMode = 0; focusedThreatTransform = null; focusedThreat = null; if (enterScoutingMode) { SwitchToBehaviourStateOnLocalClient(0); } else { SwitchToBehaviourStateOnLocalClient(1); } } } private void SetAggressiveMode(int mode) { if (aggressiveMode != mode) { if (mode == 2) { Debug.Log((object)"Baboon entering fight mode (aggressive mode 2)"); } aggressiveMode = mode; SetAggressiveModeServerRpc(mode); } } [ServerRpc] public void SetAggressiveModeServerRpc(int mode) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(443869275u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, mode); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 443869275u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { SetAggressiveModeClientRpc(mode); } } [ClientRpc] public void SetAggressiveModeClientRpc(int mode) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1782649174u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, mode); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1782649174u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && !((NetworkBehaviour)this).IsOwner) { aggressiveMode = mode; } } } private void SetThreatInView(bool inView) { if (focusedThreatIsInView != inView) { focusedThreatIsInView = inView; SetThreatInViewServerRpc(inView); } } [ServerRpc] public void SetThreatInViewServerRpc(bool inView) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3428942850u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref inView, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3428942850u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { SetThreatInViewClientRpc(inView); } } [ClientRpc] public void SetThreatInViewClientRpc(bool inView) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2073937320u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref inView, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2073937320u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && !((NetworkBehaviour)this).IsOwner) { focusedThreatIsInView = inView; } } } [ServerRpc] public void EnemyEnterRestModeServerRpc(bool sleep, bool atCamp) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1806580287u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref sleep, default(ForPrimitives)); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref atCamp, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1806580287u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { EnemyEnterRestModeClientRpc(sleep, atCamp); } } [ClientRpc] public void EnemyEnterRestModeClientRpc(bool sleep, bool atCamp) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1567928363u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref sleep, default(ForPrimitives)); ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref atCamp, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1567928363u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { restingAtCamp = atCamp; if (sleep) { eyesClosed = true; creatureAnimator.SetBool("sleep", true); creatureAnimator.SetBool("sit", false); } else { eyesClosed = false; creatureAnimator.SetBool("sleep", false); creatureAnimator.SetBool("sit", true); } } } [ServerRpc] public void EnemyGetUpServerRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3614203845u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3614203845u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { EnemyGetUpClientRpc(); } } [ClientRpc] public void EnemyGetUpClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1155909339u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1155909339u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && !((NetworkBehaviour)this).IsOwner) { creatureAnimator.SetBool("sit", false); } } } public override void OnDrawGizmos() { //IL_001a: 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_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0071: 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_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) if (!debugEnemyAI) { return; } if (currentBehaviourStateIndex == 1) { Gizmos.DrawCube(((Component)this).transform.position + Vector3.up * 2f, new Vector3(0.2f, 0.2f, 0.2f)); } else if (scoutingGroup != null) { if ((Object)(object)scoutingGroup.leader == (Object)(object)this) { Gizmos.DrawSphere(((Component)this).transform.position + Vector3.up * 2f, 0.6f); return; } Gizmos.DrawLine(((Component)scoutingGroup.leader).transform.position + Vector3.up * 2f, ((Component)this).transform.position + Vector3.up * 2f); Gizmos.DrawSphere(((Component)this).transform.position + Vector3.up * 2f, 0.1f); } } public override void DetectNoise(Vector3 noisePosition, float noiseLoudness, int timesPlayedInOneSpot = 0, int noiseID = 0) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: 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_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) if (!((NetworkBehaviour)this).IsOwner || isEnemyDead) { return; } base.DetectNoise(noisePosition, noiseLoudness, timesPlayedInOneSpot, noiseID); if (Vector3.Distance(noisePosition, ((Component)this).transform.position + Vector3.up * 0.4f) < 0.75f || noiseID == 1105 || noiseID == 24751) { return; } Debug.Log((object)"Detected noise"); float num = Vector3.Distance(noisePosition, ((Component)this).transform.position); float num2 = noiseLoudness / num; Debug.Log((object)$"noise relative loudness: {noiseLoudness / num}"); if (eyesClosed) { num2 *= 0.75f; } if (num2 < 0.12f && peekTimer >= 0f && focusLevel > 0) { return; } if (focusLevel >= 3) { if (num > 3f || num2 <= 0.06f) { return; } } else if (focusLevel == 2) { if (num > 25f || num2 <= 0.05f) { return; } } else if (focusLevel == 1 && (num > 40f || num2 <= 0.05f)) { return; } PingBaboonInterest(noisePosition, focusLevel); } private void AnimateLooking(Vector3 lookAtPosition) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //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) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) headLookTarget.position = Vector3.Lerp(headLookTarget.position, lookAtPosition, 15f * Time.deltaTime); Vector3 position = headLookTarget.position; position.y = ((Component)this).transform.position.y; if (Vector3.Angle(((Component)this).transform.forward, position - ((Component)this).transform.position) > 30f) { RoundManager.Instance.tempTransform.position = ((Component)this).transform.position; RoundManager.Instance.tempTransform.LookAt(position); ((Component)this).transform.rotation = Quaternion.Lerp(((Component)this).transform.rotation, RoundManager.Instance.tempTransform.rotation, 4f * Time.deltaTime); ((Component)this).transform.eulerAngles = new Vector3(0f, ((Component)this).transform.eulerAngles.y, 0f); } } public override void Update() { //IL_0525: Unknown result type (might be due to invalid IL or missing references) //IL_052a: Unknown result type (might be due to invalid IL or missing references) base.Update(); if (isEnemyDead) { return; } timeSinceHitting += Time.deltaTime; if (stunNormalizedTimer > 0f || miscAnimationTimer > 0f) { agent.speed = 0f; } creatureAnimator.SetBool("stunned", stunNormalizedTimer > 0f); if (miscAnimationTimer <= 0f) { currentMiscAnimation = -1; } else { miscAnimationTimer -= Time.deltaTime; } CalculateAnimationDirection(2f); timeSinceLastMiscAnimation += Time.deltaTime; timeSincePingingBirdInterest += Time.deltaTime; timeSinceBeingAttackedByPlayer += Time.deltaTime; timeSinceJoiningOrLeavingScoutingGroup += Time.deltaTime; if (debugEnemyAI) { if (focusedThreat != null && focusingOnThreat) { HUDManager.Instance.SetDebugText(string.Format("{0}; {1}; \n Focused threat level: {2}", fearLevel.ToString("0.0"), fearLevelNoDistComparison.ToString("0.0"), focusedThreat.threatLevel)); } else { HUDManager.Instance.SetDebugText(fearLevel.ToString("0.0") + "; " + fearLevelNoDistComparison.ToString("0.0")); } } if ((Object)(object)heldScrap != (Object)null && !isEnemyDead) { creatureAnimator.SetLayerWeight(1, Mathf.Lerp(creatureAnimator.GetLayerWeight(1), 1f, 12f * Time.deltaTime)); ((RigConstraint<TwoBoneIKConstraintJob, TwoBoneIKConstraintData, TwoBoneIKConstraintJobBinder<TwoBoneIKConstraintData>>)(object)rightArmRig).weight = Mathf.Lerp(((RigConstraint<TwoBoneIKConstraintJob, TwoBoneIKConstraintData, TwoBoneIKConstraintJobBinder<TwoBoneIKConstraintData>>)(object)rightArmRig).weight, 0f, 12f * Time.deltaTime); ((RigConstraint<TwoBoneIKConstraintJob, TwoBoneIKConstraintData, TwoBoneIKConstraintJobBinder<TwoBoneIKConstraintData>>)(object)leftArmRig).weight = Mathf.Lerp(((RigConstraint<TwoBoneIKConstraintJob, TwoBoneIKConstraintData, TwoBoneIKConstraintJobBinder<TwoBoneIKConstraintData>>)(object)leftArmRig).weight, 0f, 12f * Time.deltaTime); } else { creatureAnimator.SetLayerWeight(1, Mathf.Lerp(creatureAnimator.GetLayerWeight(1), 0f, 12f * Time.deltaTime)); ((RigConstraint<TwoBoneIKConstraintJob, TwoBoneIKConstraintData, TwoBoneIKConstraintJobBinder<TwoBoneIKConstraintData>>)(object)rightArmRig).weight = Mathf.Lerp(((RigConstraint<TwoBoneIKConstraintJob, TwoBoneIKConstraintData, TwoBoneIKConstraintJobBinder<TwoBoneIKConstraintData>>)(object)rightArmRig).weight, 1f, 12f * Time.deltaTime); ((RigConstraint<TwoBoneIKConstraintJob, TwoBoneIKConstraintData, TwoBoneIKConstraintJobBinder<TwoBoneIKConstraintData>>)(object)leftArmRig).weight = Mathf.Lerp(((RigConstraint<TwoBoneIKConstraintJob, TwoBoneIKConstraintData, TwoBoneIKConstraintJobBinder<TwoBoneIKConstraintData>>)(object)leftArmRig).weight, 1f, 12f * Time.deltaTime); } switch (aggressiveMode) { case 0: if (previousAggressiveMode != aggressiveMode) { creatureAnimator.SetBool("aggressiveDisplay", false); creatureAnimator.SetBool("fighting", false); previousAggressiveMode = aggressiveMode; } if (aggressionAudio.volume <= 0f) { aggressionAudio.Stop(); } else { aggressionAudio.volume = Mathf.Max(aggressionAudio.volume - Time.deltaTime * 5f, 0f); } timeSinceAggressiveDisplay = 0f; break; case 1: if (previousAggressiveMode != aggressiveMode) { creatureAnimator.SetBool("aggressiveDisplay", true); creatureAnimator.SetBool("fighting", false); RoundManager.PlayRandomClip(creatureVoice, cawScreamSFX, randomize: true, 1f, 1105); WalkieTalkie.TransmitOneShotAudio(creatureVoice, enemyType.audioClips[1]); aggressionAudio.clip = enemyType.audioClips[2]; aggressionAudio.Play(); previousAggressiveMode = aggressiveMode; } timeSinceAggressiveDisplay += Time.deltaTime; aggressionAudio.volume = Mathf.Min(aggressionAudio.volume + Time.deltaTime * 4f, 1f); break; case 2: if (previousAggressiveMode != aggressiveMode) { creatureAnimator.SetBool("fighting", true); aggressionAudio.clip = enemyType.audioClips[3]; aggressionAudio.Play(); previousAggressiveMode = aggressiveMode; } timeSinceAggressiveDisplay += Time.deltaTime; aggressionAudio.volume = Mathf.Min(aggressionAudio.volume + Time.deltaTime * 5f, 1f); break; } switch (currentBehaviourStateIndex) { case 0: creatureAnimator.SetBool("sleep", false); restingAtCamp = false; eyesClosed = false; focusedThreatTransform = null; break; case 1: focusedThreatTransform = null; break; case 2: if ((Object)(object)focusedThreatTransform != (Object)null && focusedThreatIsInView) { lookTarget = focusedThreatTransform.position; } timeSpentFocusingOnThreat += Time.deltaTime; timeSinceFighting += Time.deltaTime; break; } } private float GetComfortableDistanceToThreat(Threat focusedThreat) { return Mathf.Min((float)focusedThreat.threatLevel * 6f, 25f); } private void ReactToThreat(Threat closestThreat) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) if (Vector3.Distance(closestThreat.lastSeenPosition, baboonCampPosition) < 18f) { closestThreat.interestLevel++; } if (closestThreat != focusedThreat && (focusedThreat == null || focusedThreat.threatLevel <= closestThreat.threatLevel) && closestThreat.distanceToThreat < GetComfortableDistanceToThreat(closestThreat)) { Transform threatTransform = closestThreat.threatScript.GetThreatTransform(); NetworkObject component = ((Component)threatTransform).gameObject.GetComponent<NetworkObject>(); if ((Object)(object)component == (Object)null) { Debug.LogError((object)"Baboon: Error, threat did not contain network object. All objects implementing IVisibleThreat must have a NetworkObject"); return; } Debug.Log((object)("Focusing on new threat: '" + ((Object)threatTransform).name + "'")); fightTimer = 0f; focusingOnThreat = true; StartFocusOnThreatServerRpc(NetworkObjectReference.op_Implicit(component)); focusedThreat = closestThreat; focusedThreatTransform = closestThreat.threatScript.GetThreatLookTransform(); } } [ServerRpc] public void StartFocusOnThreatServerRpc(NetworkObjectReference netObject) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Invalid comparison between Unknown and I4 //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result
plugins/TheBeeTeam-PersistentPurchases/Assembly-CSharp-firstpass.dll
Decompiled 2 years ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; 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.Numerics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Serialization; using System.Security.Cryptography; using System.Text; using ES3Internal; using ES3Types; using Unity.Collections; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Experimental.Rendering; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.SceneManagement; using UnityEngine.Scripting; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field)] public class ES3Serializable : Attribute { } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field)] public class ES3NonSerializable : Attribute { } public class ES3AutoSave : MonoBehaviour, ISerializationCallbackReceiver { public bool saveLayer = true; public bool saveTag = true; public bool saveName = true; public bool saveHideFlags = true; public bool saveActive = true; public bool saveChildren; private bool isQuitting; public List<Component> componentsToSave = new List<Component>(); public void Reset() { saveLayer = false; saveTag = false; saveName = false; saveHideFlags = false; saveActive = false; saveChildren = false; } public void Awake() { if ((Object)(object)ES3AutoSaveMgr.Current == (Object)null) { ES3Debug.LogWarning("<b>No GameObjects in this scene will be autosaved</b> because there is no Easy Save 3 Manager. To add a manager to this scene, exit playmode and go to Assets > Easy Save 3 > Add Manager to Scene.", (Object)(object)this); } else { ES3AutoSaveMgr.AddAutoSave(this); } } public void OnApplicationQuit() { isQuitting = true; } public void OnDestroy() { if (!isQuitting) { ES3AutoSaveMgr.RemoveAutoSave(this); } } public void OnBeforeSerialize() { } public void OnAfterDeserialize() { componentsToSave.RemoveAll((Component c) => (Object)(object)c == (Object)null || ((object)c).GetType() == typeof(Component)); } } public class ES3AutoSaveMgr : MonoBehaviour { public enum LoadEvent { None, Awake, Start } public enum SaveEvent { None, OnApplicationQuit, OnApplicationPause } public static ES3AutoSaveMgr _current; public string key = Guid.NewGuid().ToString(); public SaveEvent saveEvent = SaveEvent.OnApplicationQuit; public LoadEvent loadEvent = LoadEvent.Awake; public ES3SerializableSettings settings = new ES3SerializableSettings("AutoSave.es3", ES3.Location.Cache); public HashSet<ES3AutoSave> autoSaves = new HashSet<ES3AutoSave>(); public static ES3AutoSaveMgr Current { get { //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) if ((Object)(object)_current == (Object)null) { Scene activeScene = SceneManager.GetActiveScene(); GameObject[] rootGameObjects = ((Scene)(ref activeScene)).GetRootGameObjects(); GameObject[] array = rootGameObjects; foreach (GameObject val in array) { if (((Object)val).name == "Easy Save 3 Manager") { return _current = val.GetComponent<ES3AutoSaveMgr>(); } } array = rootGameObjects; for (int i = 0; i < array.Length; i++) { if ((Object)(object)(_current = array[i].GetComponentInChildren<ES3AutoSaveMgr>()) != (Object)null) { return _current; } } } return _current; } } public static ES3AutoSaveMgr Instance => Current; public void Save() { if (autoSaves == null || autoSaves.Count == 0) { return; } if (settings.location == ES3.Location.Cache && !ES3.FileExists(settings)) { ES3.CacheFile(settings); } if (autoSaves == null || autoSaves.Count == 0) { ES3.DeleteKey(key, settings); } else { List<GameObject> list = new List<GameObject>(); foreach (ES3AutoSave autoSafe in autoSaves) { if ((Object)(object)autoSafe != (Object)null && ((Behaviour)autoSafe).enabled) { list.Add(((Component)autoSafe).gameObject); } } ES3.Save(key, list.OrderBy((GameObject x) => GetDepth(x.transform)).ToArray(), settings); } if (settings.location == ES3.Location.Cache && ES3.FileExists(settings)) { ES3.StoreCachedFile(settings); } } public void Load() { try { if (settings.location == ES3.Location.Cache && !ES3.FileExists(settings)) { ES3.CacheFile(settings); } } catch { } ES3.Load(key, (GameObject[])(object)new GameObject[0], settings); } private void Start() { if (loadEvent == LoadEvent.Start) { Load(); } } public void Awake() { GetAutoSaves(); if (loadEvent == LoadEvent.Awake) { Load(); } } private void OnApplicationQuit() { if (saveEvent == SaveEvent.OnApplicationQuit) { Save(); } } private void OnApplicationPause(bool paused) { if ((saveEvent == SaveEvent.OnApplicationPause || (Application.isMobilePlatform && saveEvent == SaveEvent.OnApplicationQuit)) && paused) { Save(); } } public static void AddAutoSave(ES3AutoSave autoSave) { if ((Object)(object)Current != (Object)null) { Current.autoSaves.Add(autoSave); } } public static void RemoveAutoSave(ES3AutoSave autoSave) { if ((Object)(object)Current != (Object)null) { Current.autoSaves.Remove(autoSave); } } public void GetAutoSaves() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) autoSaves = new HashSet<ES3AutoSave>(); Scene scene = ((Component)this).gameObject.scene; GameObject[] rootGameObjects = ((Scene)(ref scene)).GetRootGameObjects(); foreach (GameObject val in rootGameObjects) { autoSaves.UnionWith(val.GetComponentsInChildren<ES3AutoSave>(true)); } } private static int GetDepth(Transform t) { int num = 0; while ((Object)(object)t.parent != (Object)null) { t = t.parent; num++; } return num; } } public class ES3 { public enum Location { File, PlayerPrefs, InternalMS, Resources, Cache } public enum Directory { PersistentDataPath, DataPath } public enum EncryptionType { None, AES } public enum CompressionType { None, Gzip } public enum Format { JSON } public enum ReferenceMode { ByRef, ByValue, ByRefAndValue } public enum ImageType { JPEG, PNG } public static void Save(string key, object value) { ES3.Save<object>(key, value, new ES3Settings()); } public static void Save(string key, object value, string filePath) { ES3.Save<object>(key, value, new ES3Settings(filePath)); } public static void Save(string key, object value, string filePath, ES3Settings settings) { ES3.Save<object>(key, value, new ES3Settings(filePath, settings)); } public static void Save(string key, object value, ES3Settings settings) { ES3.Save<object>(key, value, settings); } public static void Save<T>(string key, T value) { Save(key, value, new ES3Settings()); } public static void Save<T>(string key, T value, string filePath) { Save(key, value, new ES3Settings(filePath)); } public static void Save<T>(string key, T value, string filePath, ES3Settings settings) { Save(key, value, new ES3Settings(filePath, settings)); } public static void Save<T>(string key, T value, ES3Settings settings) { if (settings.location == Location.Cache) { ES3File.GetOrCreateCachedFile(settings).Save(key, value); return; } using ES3Writer eS3Writer = ES3Writer.Create(settings); eS3Writer.Write<T>(key, value); eS3Writer.Save(); } public static void SaveRaw(byte[] bytes) { SaveRaw(bytes, new ES3Settings()); } public static void SaveRaw(byte[] bytes, string filePath) { SaveRaw(bytes, new ES3Settings(filePath)); } public static void SaveRaw(byte[] bytes, string filePath, ES3Settings settings) { SaveRaw(bytes, new ES3Settings(filePath, settings)); } public static void SaveRaw(byte[] bytes, ES3Settings settings) { if (settings.location == Location.Cache) { ES3File.GetOrCreateCachedFile(settings).SaveRaw(bytes, settings); return; } using (Stream stream = ES3Stream.CreateStream(settings, ES3FileMode.Write)) { stream.Write(bytes, 0, bytes.Length); } ES3IO.CommitBackup(settings); } public static void SaveRaw(string str) { SaveRaw(str, new ES3Settings()); } public static void SaveRaw(string str, string filePath) { SaveRaw(str, new ES3Settings(filePath)); } public static void SaveRaw(string str, string filePath, ES3Settings settings) { SaveRaw(str, new ES3Settings(filePath, settings)); } public static void SaveRaw(string str, ES3Settings settings) { SaveRaw(settings.encoding.GetBytes(str), settings); } public static void AppendRaw(byte[] bytes) { AppendRaw(bytes, new ES3Settings()); } public static void AppendRaw(byte[] bytes, string filePath, ES3Settings settings) { AppendRaw(bytes, new ES3Settings(filePath, settings)); } public static void AppendRaw(byte[] bytes, ES3Settings settings) { if (settings.location == Location.Cache) { ES3File.GetOrCreateCachedFile(settings).AppendRaw(bytes); return; } using Stream stream = ES3Stream.CreateStream(new ES3Settings(settings.path, settings) { encryptionType = EncryptionType.None, compressionType = CompressionType.None }, ES3FileMode.Append); stream.Write(bytes, 0, bytes.Length); } public static void AppendRaw(string str) { AppendRaw(str, new ES3Settings()); } public static void AppendRaw(string str, string filePath) { AppendRaw(str, new ES3Settings(filePath)); } public static void AppendRaw(string str, string filePath, ES3Settings settings) { AppendRaw(str, new ES3Settings(filePath, settings)); } public static void AppendRaw(string str, ES3Settings settings) { byte[] bytes = settings.encoding.GetBytes(str); ES3Settings eS3Settings = new ES3Settings(settings.path, settings); eS3Settings.encryptionType = EncryptionType.None; eS3Settings.compressionType = CompressionType.None; if (settings.location == Location.Cache) { ES3File.GetOrCreateCachedFile(settings).SaveRaw(bytes); return; } using Stream stream = ES3Stream.CreateStream(eS3Settings, ES3FileMode.Append); stream.Write(bytes, 0, bytes.Length); } public static void SaveImage(Texture2D texture, string imagePath) { SaveImage(texture, new ES3Settings(imagePath)); } public static void SaveImage(Texture2D texture, string imagePath, ES3Settings settings) { SaveImage(texture, new ES3Settings(imagePath, settings)); } public static void SaveImage(Texture2D texture, ES3Settings settings) { SaveImage(texture, 75, settings); } public static void SaveImage(Texture2D texture, int quality, string imagePath) { SaveImage(texture, quality, new ES3Settings(imagePath)); } public static void SaveImage(Texture2D texture, int quality, string imagePath, ES3Settings settings) { SaveImage(texture, quality, new ES3Settings(imagePath, settings)); } public static void SaveImage(Texture2D texture, int quality, ES3Settings settings) { string text = ES3IO.GetExtension(settings.path).ToLower(); if (string.IsNullOrEmpty(text)) { throw new ArgumentException("File path must have a file extension when using ES3.SaveImage."); } byte[] bytes; switch (text) { case ".jpg": case ".jpeg": bytes = ImageConversion.EncodeToJPG(texture, quality); break; case ".png": bytes = ImageConversion.EncodeToPNG(texture); break; default: throw new ArgumentException("File path must have extension of .png, .jpg or .jpeg when using ES3.SaveImage."); } SaveRaw(bytes, settings); } public static byte[] SaveImageToBytes(Texture2D texture, int quality, ImageType imageType) { if (imageType == ImageType.JPEG) { return ImageConversion.EncodeToJPG(texture, quality); } return ImageConversion.EncodeToPNG(texture); } public static object Load(string key) { return Load<object>(key, new ES3Settings()); } public static object Load(string key, string filePath) { return Load<object>(key, new ES3Settings(filePath)); } public static object Load(string key, string filePath, ES3Settings settings) { return Load<object>(key, new ES3Settings(filePath, settings)); } public static object Load(string key, ES3Settings settings) { return Load<object>(key, settings); } public static object Load(string key, object defaultValue) { return ES3.Load<object>(key, defaultValue, new ES3Settings()); } public static object Load(string key, string filePath, object defaultValue) { return ES3.Load<object>(key, defaultValue, new ES3Settings(filePath)); } public static object Load(string key, string filePath, object defaultValue, ES3Settings settings) { return ES3.Load<object>(key, defaultValue, new ES3Settings(filePath, settings)); } public static object Load(string key, object defaultValue, ES3Settings settings) { return ES3.Load<object>(key, defaultValue, settings); } public static T Load<T>(string key) { return Load<T>(key, new ES3Settings()); } public static T Load<T>(string key, string filePath) { return Load<T>(key, new ES3Settings(filePath)); } public static T Load<T>(string key, string filePath, ES3Settings settings) { return Load<T>(key, new ES3Settings(filePath, settings)); } public static T Load<T>(string key, ES3Settings settings) { if (settings.location == Location.Cache) { return ES3File.GetOrCreateCachedFile(settings).Load<T>(key); } using ES3Reader eS3Reader = ES3Reader.Create(settings); if (eS3Reader == null) { throw new FileNotFoundException("File \"" + settings.FullPath + "\" could not be found."); } return eS3Reader.Read<T>(key); } public static T Load<T>(string key, T defaultValue) { return Load(key, defaultValue, new ES3Settings()); } public static T Load<T>(string key, string filePath, T defaultValue) { return Load(key, defaultValue, new ES3Settings(filePath)); } public static T Load<T>(string key, string filePath, T defaultValue, ES3Settings settings) { return Load(key, defaultValue, new ES3Settings(filePath, settings)); } public static T Load<T>(string key, T defaultValue, ES3Settings settings) { if (settings.location == Location.Cache) { return ES3File.GetOrCreateCachedFile(settings).Load(key, defaultValue); } using ES3Reader eS3Reader = ES3Reader.Create(settings); if (eS3Reader == null) { return defaultValue; } return eS3Reader.Read(key, defaultValue); } public static void LoadInto<T>(string key, object obj) where T : class { ES3.LoadInto<object>(key, obj, new ES3Settings()); } public static void LoadInto(string key, string filePath, object obj) { ES3.LoadInto<object>(key, obj, new ES3Settings(filePath)); } public static void LoadInto(string key, string filePath, object obj, ES3Settings settings) { ES3.LoadInto<object>(key, obj, new ES3Settings(filePath, settings)); } public static void LoadInto(string key, object obj, ES3Settings settings) { ES3.LoadInto<object>(key, obj, settings); } public static void LoadInto<T>(string key, T obj) where T : class { LoadInto(key, obj, new ES3Settings()); } public static void LoadInto<T>(string key, string filePath, T obj) where T : class { LoadInto(key, obj, new ES3Settings(filePath)); } public static void LoadInto<T>(string key, string filePath, T obj, ES3Settings settings) where T : class { LoadInto(key, obj, new ES3Settings(filePath, settings)); } public static void LoadInto<T>(string key, T obj, ES3Settings settings) where T : class { if (ES3Reflection.IsValueType(obj.GetType())) { throw new InvalidOperationException("ES3.LoadInto can only be used with reference types, but the data you're loading is a value type. Use ES3.Load instead."); } if (settings.location == Location.Cache) { ES3File.GetOrCreateCachedFile(settings).LoadInto(key, obj); return; } if (settings == null) { settings = new ES3Settings(); } using ES3Reader eS3Reader = ES3Reader.Create(settings); if (eS3Reader == null) { throw new FileNotFoundException("File \"" + settings.FullPath + "\" could not be found."); } eS3Reader.ReadInto(key, obj); } public static string LoadString(string key, string defaultValue, ES3Settings settings) { return Load(key, null, defaultValue, settings); } public static string LoadString(string key, string defaultValue, string filePath = null, ES3Settings settings = null) { return Load(key, filePath, defaultValue, settings); } public static byte[] LoadRawBytes() { return LoadRawBytes(new ES3Settings()); } public static byte[] LoadRawBytes(string filePath) { return LoadRawBytes(new ES3Settings(filePath)); } public static byte[] LoadRawBytes(string filePath, ES3Settings settings) { return LoadRawBytes(new ES3Settings(filePath, settings)); } public static byte[] LoadRawBytes(ES3Settings settings) { if (settings.location == Location.Cache) { return ES3File.GetOrCreateCachedFile(settings).LoadRawBytes(); } using Stream stream = ES3Stream.CreateStream(settings, ES3FileMode.Read); if (stream == null) { throw new FileNotFoundException("File " + settings.path + " could not be found"); } if (stream.GetType() == typeof(GZipStream)) { GZipStream source = (GZipStream)stream; using MemoryStream memoryStream = new MemoryStream(); ES3Stream.CopyTo(source, memoryStream); return memoryStream.ToArray(); } byte[] array = new byte[stream.Length]; stream.Read(array, 0, array.Length); return array; } public static string LoadRawString() { return LoadRawString(new ES3Settings()); } public static string LoadRawString(string filePath) { return LoadRawString(new ES3Settings(filePath)); } public static string LoadRawString(string filePath, ES3Settings settings) { return LoadRawString(new ES3Settings(filePath, settings)); } public static string LoadRawString(ES3Settings settings) { byte[] array = LoadRawBytes(settings); return settings.encoding.GetString(array, 0, array.Length); } public static Texture2D LoadImage(string imagePath) { return LoadImage(new ES3Settings(imagePath)); } public static Texture2D LoadImage(string imagePath, ES3Settings settings) { return LoadImage(new ES3Settings(imagePath, settings)); } public static Texture2D LoadImage(ES3Settings settings) { return LoadImage(LoadRawBytes(settings)); } public static Texture2D LoadImage(byte[] bytes) { //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_000e: Expected O, but got Unknown //IL_0010: Expected O, but got Unknown Texture2D val = new Texture2D(1, 1); ImageConversion.LoadImage(val, bytes); return val; } public static AudioClip LoadAudio(string audioFilePath, AudioType audioType) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return LoadAudio(audioFilePath, audioType, new ES3Settings()); } public static AudioClip LoadAudio(string audioFilePath, AudioType audioType, ES3Settings settings) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Invalid comparison between Unknown and I4 //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Invalid comparison between Unknown and I4 //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Invalid comparison between Unknown and I4 //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Invalid comparison between Unknown and I4 //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Invalid comparison between Unknown and I4 //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Invalid comparison between Unknown and I4 if (settings.location != 0) { throw new InvalidOperationException("ES3.LoadAudio can only be used with the File save location"); } if ((int)Application.platform == 17) { throw new InvalidOperationException("You cannot use ES3.LoadAudio with WebGL"); } string text = ES3IO.GetExtension(audioFilePath).ToLower(); if (text == ".mp3" && ((int)Application.platform == 2 || (int)Application.platform == 1)) { throw new InvalidOperationException("You can only load Ogg, WAV, XM, IT, MOD or S3M on Unity Standalone"); } if (text == ".ogg" && ((int)Application.platform == 8 || (int)Application.platform == 11 || (int)Application.platform == 20)) { throw new InvalidOperationException("You can only load MP3, WAV, XM, IT, MOD or S3M on Unity Standalone"); } ES3Settings eS3Settings = new ES3Settings(audioFilePath, settings); UnityWebRequest audioClip = UnityWebRequestMultimedia.GetAudioClip("file://" + eS3Settings.FullPath, audioType); try { audioClip.SendWebRequest(); while (!audioClip.isDone) { } if (ES3WebClass.IsNetworkError(audioClip)) { throw new Exception(audioClip.error); } return DownloadHandlerAudioClip.GetContent(audioClip); } finally { ((IDisposable)audioClip)?.Dispose(); } } public static byte[] Serialize<T>(T value, ES3Settings settings = null) { return Serialize(value, ES3TypeMgr.GetOrCreateES3Type(typeof(T)), settings); } internal static byte[] Serialize(object value, ES3Type type, ES3Settings settings = null) { if (settings == null) { settings = new ES3Settings(); } using MemoryStream memoryStream = new MemoryStream(); using Stream stream = ES3Stream.CreateStream(memoryStream, settings, ES3FileMode.Write); using (ES3Writer eS3Writer = ES3Writer.Create(stream, settings, writeHeaderAndFooter: false, overwriteKeys: false)) { eS3Writer.Write(value, type, settings.referenceMode); } return memoryStream.ToArray(); } public static T Deserialize<T>(byte[] bytes, ES3Settings settings = null) { return (T)Deserialize(ES3TypeMgr.GetOrCreateES3Type(typeof(T)), bytes, settings); } internal static object Deserialize(ES3Type type, byte[] bytes, ES3Settings settings = null) { if (settings == null) { settings = new ES3Settings(); } using MemoryStream stream = new MemoryStream(bytes, writable: false); using Stream stream2 = ES3Stream.CreateStream(stream, settings, ES3FileMode.Read); using ES3Reader eS3Reader = ES3Reader.Create(stream2, settings, readHeaderAndFooter: false); return eS3Reader.Read<object>(type); } public static void DeserializeInto<T>(byte[] bytes, T obj, ES3Settings settings = null) where T : class { DeserializeInto(ES3TypeMgr.GetOrCreateES3Type(typeof(T)), bytes, obj, settings); } public static void DeserializeInto<T>(ES3Type type, byte[] bytes, T obj, ES3Settings settings = null) where T : class { if (settings == null) { settings = new ES3Settings(); } using MemoryStream stream = new MemoryStream(bytes, writable: false); using ES3Reader eS3Reader = ES3Reader.Create(stream, settings, readHeaderAndFooter: false); eS3Reader.ReadInto<T>(obj, type); } public static byte[] EncryptBytes(byte[] bytes, string password = null) { if (string.IsNullOrEmpty(password)) { password = ES3Settings.defaultSettings.encryptionPassword; } return new AESEncryptionAlgorithm().Encrypt(bytes, password, ES3Settings.defaultSettings.bufferSize); } public static byte[] DecryptBytes(byte[] bytes, string password = null) { if (string.IsNullOrEmpty(password)) { password = ES3Settings.defaultSettings.encryptionPassword; } return new AESEncryptionAlgorithm().Decrypt(bytes, password, ES3Settings.defaultSettings.bufferSize); } public static string EncryptString(string str, string password = null) { return Convert.ToBase64String(EncryptBytes(ES3Settings.defaultSettings.encoding.GetBytes(str), password)); } public static string DecryptString(string str, string password = null) { return ES3Settings.defaultSettings.encoding.GetString(DecryptBytes(Convert.FromBase64String(str), password)); } public static byte[] CompressBytes(byte[] bytes) { using MemoryStream memoryStream = new MemoryStream(); ES3Settings eS3Settings = new ES3Settings(); eS3Settings.location = Location.InternalMS; eS3Settings.compressionType = CompressionType.Gzip; eS3Settings.encryptionType = EncryptionType.None; using (Stream stream = ES3Stream.CreateStream(memoryStream, eS3Settings, ES3FileMode.Write)) { stream.Write(bytes, 0, bytes.Length); } return memoryStream.ToArray(); } public static byte[] DecompressBytes(byte[] bytes) { using MemoryStream stream = new MemoryStream(bytes); ES3Settings eS3Settings = new ES3Settings(); eS3Settings.location = Location.InternalMS; eS3Settings.compressionType = CompressionType.Gzip; eS3Settings.encryptionType = EncryptionType.None; using MemoryStream memoryStream = new MemoryStream(); using (Stream source = ES3Stream.CreateStream(stream, eS3Settings, ES3FileMode.Read)) { ES3Stream.CopyTo(source, memoryStream); } return memoryStream.ToArray(); } public static string CompressString(string str) { return Convert.ToBase64String(CompressBytes(ES3Settings.defaultSettings.encoding.GetBytes(str))); } public static string DecompressString(string str) { return ES3Settings.defaultSettings.encoding.GetString(DecompressBytes(Convert.FromBase64String(str))); } public static void DeleteFile() { DeleteFile(new ES3Settings()); } public static void DeleteFile(string filePath) { DeleteFile(new ES3Settings(filePath)); } public static void DeleteFile(string filePath, ES3Settings settings) { DeleteFile(new ES3Settings(filePath, settings)); } public static void DeleteFile(ES3Settings settings) { if (settings.location == Location.File) { ES3IO.DeleteFile(settings.FullPath); } else if (settings.location == Location.PlayerPrefs) { PlayerPrefs.DeleteKey(settings.FullPath); } else if (settings.location == Location.Cache) { ES3File.RemoveCachedFile(settings); } else if (settings.location == Location.Resources) { throw new NotSupportedException("Deleting files from Resources is not possible."); } } public static void CopyFile(string oldFilePath, string newFilePath) { CopyFile(new ES3Settings(oldFilePath), new ES3Settings(newFilePath)); } public static void CopyFile(string oldFilePath, string newFilePath, ES3Settings oldSettings, ES3Settings newSettings) { CopyFile(new ES3Settings(oldFilePath, oldSettings), new ES3Settings(newFilePath, newSettings)); } public static void CopyFile(ES3Settings oldSettings, ES3Settings newSettings) { if (oldSettings.location != newSettings.location) { throw new InvalidOperationException("Cannot copy file from " + oldSettings.location.ToString() + " to " + newSettings.location.ToString() + ". Location must be the same for both source and destination."); } if (oldSettings.location == Location.File) { if (ES3IO.FileExists(oldSettings.FullPath)) { string directoryPath = ES3IO.GetDirectoryPath(newSettings.FullPath); if (!ES3IO.DirectoryExists(directoryPath)) { ES3IO.CreateDirectory(directoryPath); } else { ES3IO.DeleteFile(newSettings.FullPath); } ES3IO.CopyFile(oldSettings.FullPath, newSettings.FullPath); } } else if (oldSettings.location == Location.PlayerPrefs) { PlayerPrefs.SetString(newSettings.FullPath, PlayerPrefs.GetString(oldSettings.FullPath)); } else if (oldSettings.location == Location.Cache) { ES3File.CopyCachedFile(oldSettings, newSettings); } else if (oldSettings.location == Location.Resources) { throw new NotSupportedException("Modifying files from Resources is not allowed."); } } public static void RenameFile(string oldFilePath, string newFilePath) { RenameFile(new ES3Settings(oldFilePath), new ES3Settings(newFilePath)); } public static void RenameFile(string oldFilePath, string newFilePath, ES3Settings oldSettings, ES3Settings newSettings) { RenameFile(new ES3Settings(oldFilePath, oldSettings), new ES3Settings(newFilePath, newSettings)); } public static void RenameFile(ES3Settings oldSettings, ES3Settings newSettings) { if (oldSettings.location != newSettings.location) { throw new InvalidOperationException("Cannot rename file in " + oldSettings.location.ToString() + " to " + newSettings.location.ToString() + ". Location must be the same for both source and destination."); } if (oldSettings.location == Location.File) { if (ES3IO.FileExists(oldSettings.FullPath)) { ES3IO.DeleteFile(newSettings.FullPath); ES3IO.MoveFile(oldSettings.FullPath, newSettings.FullPath); } } else if (oldSettings.location == Location.PlayerPrefs) { PlayerPrefs.SetString(newSettings.FullPath, PlayerPrefs.GetString(oldSettings.FullPath)); PlayerPrefs.DeleteKey(oldSettings.FullPath); } else if (oldSettings.location == Location.Cache) { ES3File.CopyCachedFile(oldSettings, newSettings); ES3File.RemoveCachedFile(oldSettings); } else if (oldSettings.location == Location.Resources) { throw new NotSupportedException("Modifying files from Resources is not allowed."); } } public static void CopyDirectory(string oldDirectoryPath, string newDirectoryPath) { CopyDirectory(new ES3Settings(oldDirectoryPath), new ES3Settings(newDirectoryPath)); } public static void CopyDirectory(string oldDirectoryPath, string newDirectoryPath, ES3Settings oldSettings, ES3Settings newSettings) { CopyDirectory(new ES3Settings(oldDirectoryPath, oldSettings), new ES3Settings(newDirectoryPath, newSettings)); } public static void CopyDirectory(ES3Settings oldSettings, ES3Settings newSettings) { if (oldSettings.location != 0) { throw new InvalidOperationException("ES3.CopyDirectory can only be used when the save location is 'File'"); } if (!DirectoryExists(oldSettings)) { throw new DirectoryNotFoundException("Directory " + oldSettings.FullPath + " not found"); } if (!DirectoryExists(newSettings)) { ES3IO.CreateDirectory(newSettings.FullPath); } string[] files = GetFiles(oldSettings); foreach (string fileOrDirectoryName in files) { CopyFile(ES3IO.CombinePathAndFilename(oldSettings.path, fileOrDirectoryName), ES3IO.CombinePathAndFilename(newSettings.path, fileOrDirectoryName)); } files = GetDirectories(oldSettings); foreach (string fileOrDirectoryName2 in files) { CopyDirectory(ES3IO.CombinePathAndFilename(oldSettings.path, fileOrDirectoryName2), ES3IO.CombinePathAndFilename(newSettings.path, fileOrDirectoryName2)); } } public static void RenameDirectory(string oldDirectoryPath, string newDirectoryPath) { RenameDirectory(new ES3Settings(oldDirectoryPath), new ES3Settings(newDirectoryPath)); } public static void RenameDirectory(string oldDirectoryPath, string newDirectoryPath, ES3Settings oldSettings, ES3Settings newSettings) { RenameDirectory(new ES3Settings(oldDirectoryPath, oldSettings), new ES3Settings(newDirectoryPath, newSettings)); } public static void RenameDirectory(ES3Settings oldSettings, ES3Settings newSettings) { if (oldSettings.location == Location.File) { if (ES3IO.DirectoryExists(oldSettings.FullPath)) { ES3IO.DeleteDirectory(newSettings.FullPath); ES3IO.MoveDirectory(oldSettings.FullPath, newSettings.FullPath); } return; } if (oldSettings.location == Location.PlayerPrefs || oldSettings.location == Location.Cache) { throw new NotSupportedException("Directories cannot be renamed when saving to Cache, PlayerPrefs, tvOS or using WebGL."); } if (oldSettings.location != Location.Resources) { return; } throw new NotSupportedException("Modifying files from Resources is not allowed."); } public static void DeleteDirectory(string directoryPath) { DeleteDirectory(new ES3Settings(directoryPath)); } public static void DeleteDirectory(string directoryPath, ES3Settings settings) { DeleteDirectory(new ES3Settings(directoryPath, settings)); } public static void DeleteDirectory(ES3Settings settings) { if (settings.location == Location.File) { ES3IO.DeleteDirectory(settings.FullPath); return; } if (settings.location == Location.PlayerPrefs || settings.location == Location.Cache) { throw new NotSupportedException("Deleting Directories using Cache or PlayerPrefs is not supported."); } if (settings.location != Location.Resources) { return; } throw new NotSupportedException("Deleting directories from Resources is not allowed."); } public static void DeleteKey(string key) { DeleteKey(key, new ES3Settings()); } public static void DeleteKey(string key, string filePath) { DeleteKey(key, new ES3Settings(filePath)); } public static void DeleteKey(string key, string filePath, ES3Settings settings) { DeleteKey(key, new ES3Settings(filePath, settings)); } public static void DeleteKey(string key, ES3Settings settings) { if (settings.location == Location.Resources) { throw new NotSupportedException("Modifying files in Resources is not allowed."); } if (settings.location == Location.Cache) { ES3File.DeleteKey(key, settings); } else if (FileExists(settings)) { using (ES3Writer eS3Writer = ES3Writer.Create(settings)) { eS3Writer.MarkKeyForDeletion(key); eS3Writer.Save(); } } } public static bool KeyExists(string key) { return KeyExists(key, new ES3Settings()); } public static bool KeyExists(string key, string filePath) { return KeyExists(key, new ES3Settings(filePath)); } public static bool KeyExists(string key, string filePath, ES3Settings settings) { return KeyExists(key, new ES3Settings(filePath, settings)); } public static bool KeyExists(string key, ES3Settings settings) { if (settings.location == Location.Cache) { return ES3File.KeyExists(key, settings); } using ES3Reader eS3Reader = ES3Reader.Create(settings); return eS3Reader?.Goto(key) ?? false; } public static bool FileExists() { return FileExists(new ES3Settings()); } public static bool FileExists(string filePath) { return FileExists(new ES3Settings(filePath)); } public static bool FileExists(string filePath, ES3Settings settings) { return FileExists(new ES3Settings(filePath, settings)); } public static bool FileExists(ES3Settings settings) { if (settings.location == Location.File) { return ES3IO.FileExists(settings.FullPath); } if (settings.location == Location.PlayerPrefs) { return PlayerPrefs.HasKey(settings.FullPath); } if (settings.location == Location.Cache) { return ES3File.FileExists(settings); } if (settings.location == Location.Resources) { return Resources.Load(settings.FullPath) != (Object)null; } return false; } public static bool DirectoryExists(string folderPath) { return DirectoryExists(new ES3Settings(folderPath)); } public static bool DirectoryExists(string folderPath, ES3Settings settings) { return DirectoryExists(new ES3Settings(folderPath, settings)); } public static bool DirectoryExists(ES3Settings settings) { if (settings.location == Location.File) { return ES3IO.DirectoryExists(settings.FullPath); } if (settings.location == Location.PlayerPrefs || settings.location == Location.Cache) { throw new NotSupportedException("Directories are not supported for the Cache and PlayerPrefs location."); } if (settings.location == Location.Resources) { throw new NotSupportedException("Checking existence of folder in Resources not supported."); } return false; } public static string[] GetKeys() { return GetKeys(new ES3Settings()); } public static string[] GetKeys(string filePath) { return GetKeys(new ES3Settings(filePath)); } public static string[] GetKeys(string filePath, ES3Settings settings) { return GetKeys(new ES3Settings(filePath, settings)); } public static string[] GetKeys(ES3Settings settings) { if (settings.location == Location.Cache) { return ES3File.GetKeys(settings); } List<string> list = new List<string>(); using (ES3Reader eS3Reader = ES3Reader.Create(settings)) { foreach (string property in eS3Reader.Properties) { list.Add(property); eS3Reader.Skip(); } } return list.ToArray(); } public static string[] GetFiles() { ES3Settings eS3Settings = new ES3Settings(); if (eS3Settings.location == Location.File) { if (eS3Settings.directory == Directory.PersistentDataPath) { eS3Settings.path = ES3IO.persistentDataPath; } else { eS3Settings.path = ES3IO.dataPath; } } return GetFiles(new ES3Settings()); } public static string[] GetFiles(string directoryPath) { return GetFiles(new ES3Settings(directoryPath)); } public static string[] GetFiles(string directoryPath, ES3Settings settings) { return GetFiles(new ES3Settings(directoryPath, settings)); } public static string[] GetFiles(ES3Settings settings) { if (settings.location == Location.Cache) { return ES3File.GetFiles(); } if (settings.location != 0) { throw new NotSupportedException("ES3.GetFiles can only be used when the location is set to File or Cache."); } return ES3IO.GetFiles(settings.FullPath, getFullPaths: false); } public static string[] GetDirectories() { return GetDirectories(new ES3Settings()); } public static string[] GetDirectories(string directoryPath) { return GetDirectories(new ES3Settings(directoryPath)); } public static string[] GetDirectories(string directoryPath, ES3Settings settings) { return GetDirectories(new ES3Settings(directoryPath, settings)); } public static string[] GetDirectories(ES3Settings settings) { if (settings.location != 0) { throw new NotSupportedException("ES3.GetDirectories can only be used when the location is set to File."); } return ES3IO.GetDirectories(settings.FullPath, getFullPaths: false); } public static void CreateBackup() { CreateBackup(new ES3Settings()); } public static void CreateBackup(string filePath) { CreateBackup(new ES3Settings(filePath)); } public static void CreateBackup(string filePath, ES3Settings settings) { CreateBackup(new ES3Settings(filePath, settings)); } public static void CreateBackup(ES3Settings settings) { ES3Settings newSettings = new ES3Settings(settings.path + ".bac", settings); CopyFile(settings, newSettings); } public static bool RestoreBackup(string filePath) { return RestoreBackup(new ES3Settings(filePath)); } public static bool RestoreBackup(string filePath, ES3Settings settings) { return RestoreBackup(new ES3Settings(filePath, settings)); } public static bool RestoreBackup(ES3Settings settings) { ES3Settings eS3Settings = new ES3Settings(settings.path + ".bac", settings); if (!FileExists(eS3Settings)) { return false; } RenameFile(eS3Settings, settings); return true; } public static DateTime GetTimestamp() { return GetTimestamp(new ES3Settings()); } public static DateTime GetTimestamp(string filePath) { return GetTimestamp(new ES3Settings(filePath)); } public static DateTime GetTimestamp(string filePath, ES3Settings settings) { return GetTimestamp(new ES3Settings(filePath, settings)); } public static DateTime GetTimestamp(ES3Settings settings) { if (settings.location == Location.File) { return ES3IO.GetTimestamp(settings.FullPath); } if (settings.location == Location.PlayerPrefs) { return new DateTime(long.Parse(PlayerPrefs.GetString("timestamp_" + settings.FullPath, "0")), DateTimeKind.Utc); } if (settings.location == Location.Cache) { return ES3File.GetTimestamp(settings); } return new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); } public static void StoreCachedFile() { ES3File.Store(); } public static void StoreCachedFile(string filePath) { StoreCachedFile(new ES3Settings(filePath)); } public static void StoreCachedFile(string filePath, ES3Settings settings) { StoreCachedFile(new ES3Settings(filePath, settings)); } public static void StoreCachedFile(ES3Settings settings) { ES3File.Store(settings); } public static void CacheFile() { CacheFile(new ES3Settings()); } public static void CacheFile(string filePath) { CacheFile(new ES3Settings(filePath)); } public static void CacheFile(string filePath, ES3Settings settings) { CacheFile(new ES3Settings(filePath, settings)); } public static void CacheFile(ES3Settings settings) { ES3File.CacheFile(settings); } public static void Init() { _ = ES3Settings.defaultSettings; _ = ES3IO.persistentDataPath; ES3TypeMgr.Init(); } } public class ES3File { [EditorBrowsable(EditorBrowsableState.Never)] public static Dictionary<string, ES3File> cachedFiles = new Dictionary<string, ES3File>(); public ES3Settings settings; private Dictionary<string, ES3Data> cache = new Dictionary<string, ES3Data>(); private bool syncWithFile; private DateTime timestamp = DateTime.UtcNow; public ES3File() : this(new ES3Settings(), syncWithFile: true) { } public ES3File(string filePath) : this(new ES3Settings(filePath), syncWithFile: true) { } public ES3File(string filePath, ES3Settings settings) : this(new ES3Settings(filePath, settings), syncWithFile: true) { } public ES3File(ES3Settings settings) : this(settings, syncWithFile: true) { } public ES3File(bool syncWithFile) : this(new ES3Settings(), syncWithFile) { } public ES3File(string filePath, bool syncWithFile) : this(new ES3Settings(filePath), syncWithFile) { } public ES3File(string filePath, ES3Settings settings, bool syncWithFile) : this(new ES3Settings(filePath, settings), syncWithFile) { } public ES3File(ES3Settings settings, bool syncWithFile) { this.settings = settings; this.syncWithFile = syncWithFile; if (!syncWithFile) { return; } ES3Settings eS3Settings = (ES3Settings)settings.Clone(); eS3Settings.typeChecking = true; using (ES3Reader eS3Reader = ES3Reader.Create(eS3Settings)) { if (eS3Reader == null) { return; } foreach (KeyValuePair<string, ES3Data> item in eS3Reader.RawEnumerator) { cache[item.Key] = item.Value; } } timestamp = ES3.GetTimestamp(eS3Settings); } public ES3File(byte[] bytes, ES3Settings settings = null) { if (settings == null) { this.settings = new ES3Settings(); } else { this.settings = settings; } syncWithFile = true; SaveRaw(bytes, settings); } public void Sync() { Sync(settings); } public void Sync(string filePath, ES3Settings settings = null) { Sync(new ES3Settings(filePath, settings)); } public void Sync(ES3Settings settings = null) { if (settings == null) { settings = new ES3Settings(); } if (cache.Count == 0) { ES3.DeleteFile(settings); return; } using ES3Writer eS3Writer = ES3Writer.Create(settings, writeHeaderAndFooter: true, !syncWithFile, append: false); foreach (KeyValuePair<string, ES3Data> item in cache) { eS3Writer.Write(type: (item.Value.type != null) ? item.Value.type.type : typeof(object), key: item.Key, value: item.Value.bytes); } eS3Writer.Save(!syncWithFile); } public void Clear() { cache.Clear(); } public string[] GetKeys() { Dictionary<string, ES3Data>.KeyCollection keys = cache.Keys; string[] array = new string[keys.Count]; keys.CopyTo(array, 0); return array; } public void Save<T>(string key, T value) { ES3Settings eS3Settings = (ES3Settings)settings.Clone(); eS3Settings.encryptionType = ES3.EncryptionType.None; eS3Settings.compressionType = ES3.CompressionType.None; Type type = ((value != null) ? value.GetType() : typeof(T)); cache[key] = new ES3Data(ES3TypeMgr.GetOrCreateES3Type(type), ES3.Serialize(value, eS3Settings)); } public void SaveRaw(byte[] bytes, ES3Settings settings = null) { if (settings == null) { settings = new ES3Settings(); } ES3Settings eS3Settings = (ES3Settings)settings.Clone(); eS3Settings.typeChecking = true; using ES3Reader eS3Reader = ES3Reader.Create(bytes, eS3Settings); if (eS3Reader == null) { return; } foreach (KeyValuePair<string, ES3Data> item in eS3Reader.RawEnumerator) { cache[item.Key] = item.Value; } } public void AppendRaw(byte[] bytes, ES3Settings settings = null) { if (settings == null) { settings = new ES3Settings(); } SaveRaw(bytes, settings); } public object Load(string key) { return Load<object>(key); } public object Load(string key, object defaultValue) { return this.Load<object>(key, defaultValue); } public T Load<T>(string key) { if (!cache.TryGetValue(key, out var value)) { throw new KeyNotFoundException("Key \"" + key + "\" was not found in this ES3File. Use Load<T>(key, defaultValue) if you want to return a default value if the key does not exist."); } ES3Settings eS3Settings = (ES3Settings)settings.Clone(); eS3Settings.encryptionType = ES3.EncryptionType.None; eS3Settings.compressionType = ES3.CompressionType.None; if (typeof(T) == typeof(object)) { return (T)ES3.Deserialize(value.type, value.bytes, eS3Settings); } return ES3.Deserialize<T>(value.bytes, eS3Settings); } public T Load<T>(string key, T defaultValue) { if (!cache.TryGetValue(key, out var value)) { return defaultValue; } ES3Settings eS3Settings = (ES3Settings)settings.Clone(); eS3Settings.encryptionType = ES3.EncryptionType.None; eS3Settings.compressionType = ES3.CompressionType.None; if (typeof(T) == typeof(object)) { return (T)ES3.Deserialize(value.type, value.bytes, eS3Settings); } return ES3.Deserialize<T>(value.bytes, eS3Settings); } public void LoadInto<T>(string key, T obj) where T : class { if (!cache.TryGetValue(key, out var value)) { throw new KeyNotFoundException("Key \"" + key + "\" was not found in this ES3File. Use Load<T>(key, defaultValue) if you want to return a default value if the key does not exist."); } ES3Settings eS3Settings = (ES3Settings)settings.Clone(); eS3Settings.encryptionType = ES3.EncryptionType.None; eS3Settings.compressionType = ES3.CompressionType.None; if (typeof(T) == typeof(object)) { ES3.DeserializeInto(value.type, value.bytes, obj, eS3Settings); } else { ES3.DeserializeInto(value.bytes, obj, eS3Settings); } } public byte[] LoadRawBytes() { ES3Settings eS3Settings = (ES3Settings)settings.Clone(); if (!eS3Settings.postprocessRawCachedData) { eS3Settings.encryptionType = ES3.EncryptionType.None; eS3Settings.compressionType = ES3.CompressionType.None; } return GetBytes(eS3Settings); } public string LoadRawString() { if (cache.Count == 0) { return ""; } return settings.encoding.GetString(LoadRawBytes()); } internal byte[] GetBytes(ES3Settings settings = null) { if (cache.Count == 0) { return new byte[0]; } if (settings == null) { settings = this.settings; } using MemoryStream memoryStream = new MemoryStream(); ES3Settings eS3Settings = (ES3Settings)settings.Clone(); eS3Settings.location = ES3.Location.InternalMS; if (!eS3Settings.postprocessRawCachedData) { eS3Settings.encryptionType = ES3.EncryptionType.None; eS3Settings.compressionType = ES3.CompressionType.None; } using (ES3Writer eS3Writer = ES3Writer.Create(ES3Stream.CreateStream(memoryStream, eS3Settings, ES3FileMode.Write), eS3Settings, writeHeaderAndFooter: true, overwriteKeys: false)) { foreach (KeyValuePair<string, ES3Data> item in cache) { eS3Writer.Write(item.Key, item.Value.type.type, item.Value.bytes); } eS3Writer.Save(overwriteKeys: false); } return memoryStream.ToArray(); } public void DeleteKey(string key) { cache.Remove(key); } public bool KeyExists(string key) { return cache.ContainsKey(key); } public int Size() { int num = 0; foreach (KeyValuePair<string, ES3Data> item in cache) { num += item.Value.bytes.Length; } return num; } public Type GetKeyType(string key) { if (!cache.TryGetValue(key, out var value)) { throw new KeyNotFoundException("Key \"" + key + "\" was not found in this ES3File. Use Load<T>(key, defaultValue) if you want to return a default value if the key does not exist."); } return value.type.type; } [EditorBrowsable(EditorBrowsableState.Never)] internal static ES3File GetOrCreateCachedFile(ES3Settings settings) { if (!cachedFiles.TryGetValue(settings.path, out var value)) { value = new ES3File(settings, syncWithFile: false); cachedFiles.Add(settings.path, value); value.syncWithFile = true; } value.settings = settings; return value; } internal static void CacheFile(ES3Settings settings) { if (settings.location == ES3.Location.Cache) { settings = (ES3Settings)settings.Clone(); settings.location = ((ES3Settings.defaultSettings.location != ES3.Location.Cache) ? ES3Settings.defaultSettings.location : ES3.Location.File); } if (ES3.FileExists(settings)) { ES3Settings eS3Settings = (ES3Settings)settings.Clone(); eS3Settings.compressionType = ES3.CompressionType.None; eS3Settings.encryptionType = ES3.EncryptionType.None; cachedFiles[settings.path] = new ES3File(ES3.LoadRawBytes(eS3Settings), settings); } } [EditorBrowsable(EditorBrowsableState.Never)] internal static void Store(ES3Settings settings = null) { if (settings == null) { settings = new ES3Settings(ES3.Location.File); } else if (settings.location == ES3.Location.Cache) { settings = (ES3Settings)settings.Clone(); settings.location = ((ES3Settings.defaultSettings.location != ES3.Location.Cache) ? ES3Settings.defaultSettings.location : ES3.Location.File); } if (!cachedFiles.TryGetValue(settings.path, out var value)) { throw new FileNotFoundException("The file '" + settings.path + "' could not be stored because it could not be found in the cache."); } value.Sync(settings); } [EditorBrowsable(EditorBrowsableState.Never)] internal static void RemoveCachedFile(ES3Settings settings) { cachedFiles.Remove(settings.path); } [EditorBrowsable(EditorBrowsableState.Never)] internal static void CopyCachedFile(ES3Settings oldSettings, ES3Settings newSettings) { if (!cachedFiles.TryGetValue(oldSettings.path, out var value)) { throw new FileNotFoundException("The file '" + oldSettings.path + "' could not be copied because it could not be found in the cache."); } if (cachedFiles.ContainsKey(newSettings.path)) { throw new InvalidOperationException("Cannot copy file '" + oldSettings.path + "' to '" + newSettings.path + "' because '" + newSettings.path + "' already exists"); } cachedFiles.Add(newSettings.path, (ES3File)value.MemberwiseClone()); } [EditorBrowsable(EditorBrowsableState.Never)] internal static void DeleteKey(string key, ES3Settings settings) { if (cachedFiles.TryGetValue(settings.path, out var value)) { value.DeleteKey(key); } } [EditorBrowsable(EditorBrowsableState.Never)] internal static bool KeyExists(string key, ES3Settings settings) { if (cachedFiles.TryGetValue(settings.path, out var value)) { return value.KeyExists(key); } return false; } [EditorBrowsable(EditorBrowsableState.Never)] internal static bool FileExists(ES3Settings settings) { return cachedFiles.ContainsKey(settings.path); } [EditorBrowsable(EditorBrowsableState.Never)] internal static string[] GetKeys(ES3Settings settings) { if (!cachedFiles.TryGetValue(settings.path, out var value)) { throw new FileNotFoundException("Could not get keys from the file '" + settings.path + "' because it could not be found in the cache."); } return value.cache.Keys.ToArray(); } [EditorBrowsable(EditorBrowsableState.Never)] internal static string[] GetFiles() { return cachedFiles.Keys.ToArray(); } internal static DateTime GetTimestamp(ES3Settings settings) { if (!cachedFiles.TryGetValue(settings.path, out var value)) { return new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); } return value.timestamp; } } [ExecuteInEditMode] public class ES3GameObject : MonoBehaviour { public List<Component> components = new List<Component>(); private void Update() { _ = Application.isPlaying; } } public class ES3InspectorInfo : MonoBehaviour { } public class ES3ReferenceMgr : ES3ReferenceMgrBase { } public class ES3Spreadsheet { protected struct Index { public int col; public int row; public Index(int col, int row) { this.col = col; this.row = row; } } private int cols; private int rows; private Dictionary<Index, string> cells = new Dictionary<Index, string>(); private const string QUOTE = "\""; private const char QUOTE_CHAR = '"'; private const char COMMA_CHAR = ','; private const char NEWLINE_CHAR = '\n'; private const string ESCAPED_QUOTE = "\"\""; private static char[] CHARS_TO_ESCAPE = new char[4] { ',', '"', '\n', ' ' }; public int ColumnCount => cols; public int RowCount => rows; public int GetColumnLength(int col) { if (col >= cols) { return 0; } int num = -1; foreach (Index key in cells.Keys) { if (key.col == col && key.row > num) { num = key.row; } } return num + 1; } public int GetRowLength(int row) { if (row >= rows) { return 0; } int num = -1; foreach (Index key in cells.Keys) { if (key.row == row && key.col > num) { num = key.col; } } return num + 1; } public void SetCell(int col, int row, object value) { Type type = value.GetType(); if (type == typeof(string)) { SetCellString(col, row, (string)value); return; } ES3Settings eS3Settings = new ES3Settings(); if (ES3Reflection.IsPrimitive(type)) { SetCellString(col, row, value.ToString()); } else { SetCellString(col, row, eS3Settings.encoding.GetString(ES3.Serialize(value, ES3TypeMgr.GetOrCreateES3Type(type)))); } if (col >= cols) { cols = col + 1; } if (row >= rows) { rows = row + 1; } } private void SetCellString(int col, int row, string value) { cells[new Index(col, row)] = value; if (col >= cols) { cols = col + 1; } if (row >= rows) { rows = row + 1; } } public T GetCell<T>(int col, int row) { object cell = GetCell(typeof(T), col, row); if (cell == null) { return default(T); } return (T)cell; } public object GetCell(Type type, int col, int row) { if (col >= cols || row >= rows) { throw new IndexOutOfRangeException("Cell (" + col + ", " + row + ") is out of bounds of spreadsheet (" + cols + ", " + rows + ")."); } if (!cells.TryGetValue(new Index(col, row), out var value) || value == null) { return null; } if (type == typeof(string)) { return value; } ES3Settings eS3Settings = new ES3Settings(); return ES3.Deserialize(ES3TypeMgr.GetOrCreateES3Type(type), eS3Settings.encoding.GetBytes(value), eS3Settings); } public void Load(string filePath) { Load(new ES3Settings(filePath)); } public void Load(string filePath, ES3Settings settings) { Load(new ES3Settings(filePath, settings)); } public void Load(ES3Settings settings) { Load(ES3Stream.CreateStream(settings, ES3FileMode.Read), settings); } public void LoadRaw(string str) { Load(new MemoryStream(new ES3Settings().encoding.GetBytes(str)), new ES3Settings()); } public void LoadRaw(string str, ES3Settings settings) { Load(new MemoryStream(settings.encoding.GetBytes(str)), settings); } private void Load(Stream stream, ES3Settings settings) { using StreamReader streamReader = new StreamReader(stream); string text = ""; int num = 0; int num2 = 0; while (true) { int num3 = streamReader.Read(); char c = (char)num3; if (c == '"') { while (true) { c = (char)streamReader.Read(); if (c == '"') { if ((ushort)streamReader.Peek() != 34) { break; } c = (char)streamReader.Read(); } text += c; } } else if (c == ',' || c == '\n' || num3 == -1) { SetCell(num, num2, text); text = ""; switch (c) { case ',': num++; break; case '\n': num = 0; num2++; break; default: return; } } else { text += c; } } } public void Save(string filePath) { Save(new ES3Settings(filePath), append: false); } public void Save(string filePath, ES3Settings settings) { Save(new ES3Settings(filePath, settings), append: false); } public void Save(ES3Settings settings) { Save(settings, append: false); } public void Save(string filePath, bool append) { Save(new ES3Settings(filePath), append); } public void Save(string filePath, ES3Settings settings, bool append) { Save(new ES3Settings(filePath, settings), append); } public void Save(ES3Settings settings, bool append) { using (StreamWriter streamWriter = new StreamWriter(ES3Stream.CreateStream(settings, (!append) ? ES3FileMode.Write : ES3FileMode.Append))) { if (append && ES3.FileExists(settings)) { streamWriter.Write('\n'); } string[,] array = ToArray(); for (int i = 0; i < rows; i++) { if (i != 0) { streamWriter.Write('\n'); } for (int j = 0; j < cols; j++) { if (j != 0) { streamWriter.Write(','); } streamWriter.Write(Escape(array[j, i])); } } } if (!append) { ES3IO.CommitBackup(settings); } } private static string Escape(string str, bool isAlreadyWrappedInQuotes = false) { if (str == "") { return "\"\""; } if (str == null) { return null; } if (str.Contains("\"")) { str = str.Replace("\"", "\"\""); } if (str.IndexOfAny(CHARS_TO_ESCAPE) > -1) { str = "\"" + str + "\""; } return str; } private static string Unescape(string str) { if (str.StartsWith("\"") && str.EndsWith("\"")) { str = str.Substring(1, str.Length - 2); if (str.Contains("\"\"")) { str = str.Replace("\"\"", "\""); } } return str; } private string[,] ToArray() { string[,] array = new string[cols, rows]; foreach (KeyValuePair<Index, string> cell in cells) { array[cell.Key.col, cell.Key.row] = cell.Value; } return array; } } public abstract class ES3Reader : IDisposable { [EditorBrowsable(EditorBrowsableState.Never)] public class ES3ReaderPropertyEnumerator { public ES3Reader reader; public ES3ReaderPropertyEnumerator(ES3Reader reader) { this.reader = reader; } public IEnumerator GetEnumerator() { while (true) { if (reader.overridePropertiesName != null) { string overridePropertiesName = reader.overridePropertiesName; reader.overridePropertiesName = null; yield return overridePropertiesName; continue; } string text; if ((text = reader.ReadPropertyName()) == null) { break; } yield return text; } } } [EditorBrowsable(EditorBrowsableState.Never)] public class ES3ReaderRawEnumerator { public ES3Reader reader; public ES3ReaderRawEnumerator(ES3Reader reader) { this.reader = reader; } public IEnumerator GetEnumerator() { while (true) { string text = reader.ReadPropertyName(); if (text == null) { break; } Type type = reader.ReadTypeFromHeader<object>(); byte[] bytes = reader.ReadElement(); reader.ReadKeySuffix(); if (type != null) { yield return new KeyValuePair<string, ES3Data>(text, new ES3Data(type, bytes)); } } } } public ES3Settings settings; protected int serializationDepth; internal string overridePropertiesName; public virtual ES3ReaderPropertyEnumerator Properties => new ES3ReaderPropertyEnumerator(this); internal virtual ES3ReaderRawEnumerator RawEnumerator => new ES3ReaderRawEnumerator(this); internal abstract int Read_int(); internal abstract float Read_float(); internal abstract bool Read_bool(); internal abstract char Read_char(); internal abstract decimal Read_decimal(); internal abstract double Read_double(); internal abstract long Read_long(); internal abstract ulong Read_ulong(); internal abstract byte Read_byte(); internal abstract sbyte Read_sbyte(); internal abstract short Read_short(); internal abstract ushort Read_ushort(); internal abstract uint Read_uint(); internal abstract string Read_string(); internal abstract byte[] Read_byteArray(); internal abstract long Read_ref(); [EditorBrowsable(EditorBrowsableState.Never)] public abstract string ReadPropertyName(); protected abstract Type ReadKeyPrefix(bool ignore = false); protected abstract void ReadKeySuffix(); internal abstract byte[] ReadElement(bool skip = false); public abstract void Dispose(); internal virtual bool Goto(string key) { if (key == null) { throw new ArgumentNullException("Key cannot be NULL when loading data."); } string text; while ((text = ReadPropertyName()) != key) { if (text == null) { return false; } Skip(); } return true; } internal virtual bool StartReadObject() { serializationDepth++; return false; } internal virtual void EndReadObject() { serializationDepth--; } internal abstract bool StartReadDictionary(); internal abstract void EndReadDictionary(); internal abstract bool StartReadDictionaryKey(); internal abstract void EndReadDictionaryKey(); internal abstract void StartReadDictionaryValue(); internal abstract bool EndReadDictionaryValue(); internal abstract bool StartReadCollection(); internal abstract void EndReadCollection(); internal abstract bool StartReadCollectionItem(); internal abstract bool EndReadCollectionItem(); internal ES3Reader(ES3Settings settings, bool readHeaderAndFooter = true) { this.settings = settings; } [EditorBrowsable(EditorBrowsableState.Never)] public virtual void Skip() { ReadElement(skip: true); } public virtual T Read<T>() { return Read<T>(ES3TypeMgr.GetOrCreateES3Type(typeof(T))); } public virtual void ReadInto<T>(object obj) { ReadInto<T>(obj, ES3TypeMgr.GetOrCreateES3Type(typeof(T))); } [EditorBrowsable(EditorBrowsableState.Never)] public T ReadProperty<T>() { return ReadProperty<T>(ES3TypeMgr.GetOrCreateES3Type(typeof(T))); } [EditorBrowsable(EditorBrowsableState.Never)] public T ReadProperty<T>(ES3Type type) { ReadPropertyName(); return Read<T>(type); } [EditorBrowsable(EditorBrowsableState.Never)] public long ReadRefProperty() { ReadPropertyName(); return Read_ref(); } internal Type ReadType() { return ES3Reflection.GetType(Read<string>(ES3Type_string.Instance)); } public object SetPrivateProperty(string name, object value, object objectContainingProperty) { ES3Reflection.ES3ReflectedMember eS3ReflectedProperty = ES3Reflection.GetES3ReflectedProperty(objectContainingProperty.GetType(), name); if (eS3ReflectedProperty.IsNull) { throw new MissingMemberException("A private property named " + name + " does not exist in the type " + objectContainingProperty.GetType()); } eS3ReflectedProperty.SetValue(objectContainingProperty, value); return objectContainingProperty; } public object SetPrivateField(string name, object value, object objectContainingField) { ES3Reflection.ES3ReflectedMember eS3ReflectedMember = ES3Reflection.GetES3ReflectedMember(objectContainingField.GetType(), name); if (eS3ReflectedMember.IsNull) { throw new MissingMemberException("A private field named " + name + " does not exist in the type " + objectContainingField.GetType()); } eS3ReflectedMember.SetValue(objectContainingField, value); return objectContainingField; } public virtual T Read<T>(string key) { if (!Goto(key)) { throw new KeyNotFoundException("Key \"" + key + "\" was not found in file \"" + settings.FullPath + "\". Use Load<T>(key, defaultValue) if you want to return a default value if the key does not exist."); } Type type = ReadTypeFromHeader<T>(); return Read<T>(ES3TypeMgr.GetOrCreateES3Type(type)); } public virtual T Read<T>(string key, T defaultValue) { if (!Goto(key)) { return defaultValue; } Type type = ReadTypeFromHeader<T>(); return Read<T>(ES3TypeMgr.GetOrCreateES3Type(type)); } public virtual void ReadInto<T>(string key, T obj) where T : class { if (!Goto(key)) { throw new KeyNotFoundException("Key \"" + key + "\" was not found in file \"" + settings.FullPath + "\""); } Type type = ReadTypeFromHeader<T>(); ReadInto<T>(obj, ES3TypeMgr.GetOrCreateES3Type(type)); } protected virtual void ReadObject<T>(object obj, ES3Type type) { if (!StartReadObject()) { type.ReadInto<T>(this, obj); EndReadObject(); } } protected virtual T ReadObject<T>(ES3Type type) { if (StartReadObject()) { return default(T); } object obj = type.Read<T>(this); EndReadObject(); return (T)obj; } [EditorBrowsable(EditorBrowsableState.Never)] public virtual T Read<T>(ES3Type type) { if (type == null || type.isUnsupported) { throw new NotSupportedException("Type of " + type?.ToString() + " is not currently supported, and could not be loaded using reflection."); } if (type.isPrimitive) { return (T)type.Read<T>(this); } if (type.isCollection) { return (T)((ES3CollectionType)type).Read(this); } if (type.isDictionary) { return (T)((ES3DictionaryType)type).Read(this); } return ReadObject<T>(type); } [EditorBrowsable(EditorBrowsableState.Never)] public virtual void ReadInto<T>(object obj, ES3Type type) { if (type == null || type.isUnsupported) { throw new NotSupportedException("Type of " + obj.GetType()?.ToString() + " is not currently supported, and could not be loaded using reflection."); } if (type.isCollection) { ((ES3CollectionType)type).ReadInto(this, obj); } else if (type.isDictionary) { ((ES3DictionaryType)type).ReadInto(this, obj); } else { ReadObject<T>(obj, type); } } [EditorBrowsable(EditorBrowsableState.Never)] internal Type ReadTypeFromHeader<T>() { if (typeof(T) == typeof(object)) { return ReadKeyPrefix(); } if (settings.typeChecking) { Type type = ReadKeyPrefix(); if (type != typeof(T)) { throw new InvalidOperationException("Trying to load data of type " + typeof(T)?.ToString() + ", but data contained in file is type of " + type?.ToString() + "."); } return type; } ReadKeyPrefix(ignore: true); return typeof(T); } public static ES3Reader Create() { return Create(new ES3Settings()); } public static ES3Reader Create(string filePath) { return Create(new ES3Settings(filePath)); } public static ES3Reader Create(string filePath, ES3Settings settings) { return Create(new ES3Settings(filePath, settings)); } public static ES3Reader Create(ES3Settings settings) { Stream stream = ES3Stream.CreateStream(settings, ES3FileMode.Read); if (stream == null) { return null; } if (settings.format == ES3.Format.JSON) { return new ES3JSONReader(stream, settings); } return null; } public static ES3Reader Create(byte[] bytes) { return Create(bytes, new ES3Settings()); } public static ES3Reader Create(byte[] bytes, ES3Settings settings) { Stream stream = ES3Stream.CreateStream(new MemoryStream(bytes), settings, ES3FileMode.Read); if (stream == null) { return null; } if (settings.format == ES3.Format.JSON) { return new ES3JSONReader(stream, settings); } return null; } internal static ES3Reader Create(Stream stream, ES3Settings settings) { stream = ES3Stream.CreateStream(stream, settings, ES3FileMode.Read); if (settings.format == ES3.Format.JSON) { return new ES3JSONReader(stream, settings); } return null; } internal static ES3Reader Create(Stream stream, ES3Settings settings, bool readHeaderAndFooter) { if (settings.format == ES3.Format.JSON) { return new ES3JSONReader(stream, settings, readHeaderAndFooter); } return null; } } public class ES3XMLReader { } public class ES3Defaults : ScriptableObject { [SerializeField] public ES3SerializableSettings settings = new ES3SerializableSettings(); public bool addMgrToSceneAutomatically; public bool autoUpdateReferences = true; public bool addAllPrefabsToManager = true; public int collectDependenciesDepth = 4; public int collectDependenciesTimeout = 10; public bool updateReferencesWhenSceneChanges = true; public bool updateReferencesWhenSceneIsSaved = true; public bool updateReferencesWhenSceneIsOpened = true; [Tooltip("Folders listed here will be searched for references every time the reference manager is refreshed. Path should be relative to the project folder.")] public string[] referenceFolders = new string[0]; public bool logDebugInfo; public bool logWarnings = true; public bool logErrors = true; } public class ES3Settings : ICloneable { private static ES3Settings _defaults = null; private static ES3Defaults _defaultSettingsScriptableObject; private const string defaultSettingsPath = "ES3/ES3Defaults"; private static ES3Settings _unencryptedUncompressedSettings = null; private static readonly string[] resourcesExtensions = new string[9] { ".txt", ".htm", ".html", ".xml", ".bytes", ".json", ".csv", ".yaml", ".fnt" }; [SerializeField] private ES3.Location _location; public string path = "SaveFile.es3"; public ES3.EncryptionType encryptionType; public ES3.CompressionType compressionType; public string encryptionPassword = "password"; public ES3.Directory directory; public ES3.Format format; public bool prettyPrint = true; public int bufferSize = 2048; public Encoding encoding = Encoding.UTF8; public bool saveChildren = true; public bool postprocessRawCachedData; [EditorBrowsable(EditorBrowsableState.Never)] public bool typeChecking = true; [EditorBrowsable(EditorBrowsableState.Never)] public bool safeReflection = true; [EditorBrowsable(EditorBrowsableState.Never)] public ES3.ReferenceMode memberReferenceMode; [EditorBrowsable(EditorBrowsableState.Never)] public ES3.ReferenceMode referenceMode = ES3.ReferenceMode.ByRefAndValue; [EditorBrowsable(EditorBrowsableState.Never)] public int serializationDepthLimit = 64; [EditorBrowsable(EditorBrowsableState.Never)] public string[] assemblyNames = new string[2] { "Assembly-CSharp-firstpass", "Assembly-CSharp" }; public static ES3Defaults defaultSettingsScriptableObject { get { if ((Object)(object)_defaultSettingsScriptableObject == (Object)null) { _defaultSettingsScriptableObject = Resources.Load<ES3Defaults>("ES3/ES3Defaults"); } return _defaultSettingsScriptableObject; } } public static ES3Settings defaultSettings { get { if (_defaults == null && (Object)(object)defaultSettingsScriptableObject != (Object)null) { _defaults = defaultSettingsScriptableObject.settings; } return _defaults; } } internal static ES3Settings unencryptedUncompressedSettings { get { if (_unencryptedUncompressedSettings == null) { _unencryptedUncompressedSettings = new ES3Settings(ES3.EncryptionType.None, ES3.CompressionType.None); } return _unencryptedUncompressedSettings; } } public ES3.Location location { get { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Invalid comparison between Unknown and I4 //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Invalid comparison between Unknown and I4 if (_location == ES3.Location.File && ((int)Application.platform == 17 || (int)Application.platform == 31)) { return ES3.Location.PlayerPrefs; } return _location; } set { _location = value; } } public string FullPath { get { if (path == null) { throw new NullReferenceException("The 'path' field of this ES3Settings is null, indicating that it was not possible to load the default settings from Resources. Please check that the ES3 Default Settings.prefab exists in Assets/Plugins/Resources/ES3/"); } if (IsAbsolute(path)) { return path; } if (location == ES3.Location.File) { if (directory == ES3.Directory.PersistentDataPath) { return ES3IO.persistentDataPath + "/" + path; } if (directory == ES3.Directory.DataPath) { return Application.dataPath + "/" + path; } throw new NotImplementedException("File directory \"" + directory.ToString() + "\" has not been implemented."); } if (location == ES3.Location.Resources) { string extension = Path.GetExtension(path); bool flag = false; string[] array = resourcesExtensions; foreach (string text in array) { if (extension == text) { flag = true; break; } } if (!flag) { throw new ArgumentException("Extension of file in Resources must be .json, .bytes, .txt, .csv, .htm, .html, .xml, .yaml or .fnt, but path given was \"" + path + "\""); } return path.Replace(extension, ""); } return path; } } public ES3Settings(string path = null, ES3Settings settings = null) : this(applyDefaults: true) { settings?.CopyInto(this); if (path != null) { this.path = path; } } public ES3Settings(string path, params Enum[] enums) : this(enums) { if (path != null) { this.path = path; } } public ES3Settings(params Enum[] enums) : this(applyDefaults: true) { foreach (Enum @enum in enums) { if (@enum is ES3.EncryptionType) { encryptionType = (ES3.EncryptionType)(object)@enum; } else if (@enum is ES3.Location) { location = (ES3.Location)(object)@enum; } else if (@enum is ES3.CompressionType) { compressionType = (ES3.CompressionType)(object)@enum; } else if (@enum is ES3.ReferenceMode) { referenceMode = (ES3.ReferenceMode)(object)@enum; } else if (@enum is ES3.Format) { format = (ES3.Format)(object)@enum; } else if (@enum is ES3.Directory) { directory = (ES3.Directory)(object)@enum; } } } public ES3Settings(ES3.EncryptionType encryptionType, string encryptionPassword) : this(applyDefaults: true) { this.encryptionType = encryptionType; this.encryptionPassword = encryptionPassword; } public ES3Settings(string path, ES3.EncryptionType encryptionType, string encryptionPassword, ES3Settings settings = null) : this(path, settings) { this.encryptionType = encryptionType; this.encryptionPassword = encryptionPassword; } [EditorBrowsable(EditorBrowsableState.Never)] public ES3Settings(bool applyDefaults) { if (applyDefaults && defaultSettings != null) { _defaults.CopyInto(this); } } private static bool IsAbsolute(string path) { if (path.Length > 0 && (path[0] == '/' || path[0] == '\\')) { return true; } if (path.Length > 1 && path[1] == ':') { return true; } return false; } [EditorBrowsable(EditorBrowsableState.Never)] public object Clone() { ES3Settings eS3Settings = new ES3Settings(); CopyInto(eS3Settings); return eS3Settings; } private void CopyInto(ES3Settings newSettings) { newSettings._location = _location; newSettings.directory = directory; newSettings.format = format; newSettings.prettyPrint = prettyPrint; newSettings.path = path; newSettings.encryptionType = encryptionType; newSettings.encryptionPassword = encryptionPassword; newSettings.compressionType = compressionType; newSettings.bufferSize = bufferSize; newSettings.encoding = encoding; newSettings.typeChecking = typeChecking; newSettings.safeReflection = safeReflection; newSettings.referenceMode = referenceMode; newSettings.memberReferenceMode = memberReferenceMode; newSettings.assemblyNames = assemblyNames; newSettings.saveChildren = saveChildren; newSettings.serializationDepthLimit = serializationDepthLimit; newSettings.postprocessRawCachedData = postprocessRawCachedData; } } [Serializable] [EditorBrowsable(EditorBrowsableState.Never)] public class ES3SerializableSettings : ES3Settings { public ES3SerializableSettings() : base(applyDefaults: false) { } public ES3SerializableSettings(bool applyDefaults) : base(applyDefaults) { } public ES3SerializableSettings(string path) : base(applyDefaults: false) { base.path = path; } public ES3SerializableSettings(string path, ES3.Location location) : base(applyDefaults: false) { base.location = location; } } public class ES3Ref { public long id; public ES3Ref(long id) { this.id = id; } } public class UnityObjectType : MonoBehaviour { public List<Object> objs; private void Start() { if (!ES3.KeyExists("this")) { ES3.Save("this", this); } else { ES3.LoadInto("this", this); } foreach (Object obj in objs) { Debug.Log((object)obj); } } } public class ES3Cloud : ES3WebClass { private int timeout = 20; public Encoding encoding = Encoding.UTF8; private byte[] _data; public byte[] data => _data; public string text { get { if (data == null) { return null; } return encoding.GetString(data); } } public string[] filenames { get { if (data == null || data.Length == 0) { return new string[0]; } return text.Split(new char[1] { ';' }, StringSplitOptions.RemoveEmptyEntries); } } public DateTime timestamp { get { if (data == null || data.Length == 0) { return new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); } if (!double.TryParse(text, out var result)) { throw new FormatException("Could not convert downloaded data to a timestamp. Data downloaded was: " + text); } return new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(result); } } public ES3Cloud(string url, string apiKey) : base(url, apiKey) { } public ES3Cloud(string url, string apiKey, int timeout) : base(url, apiKey) { this.timeout = timeout; } public IEnumerator Sync() { return Sync(new ES3Settings(), "", ""); } public IEnumerator Sync(string filePath) { return Sync(new ES3Settings(filePath), "", ""); } public IEnumerator Sync(string filePath, string user) { return Sync(new ES3Settings(filePath), user, ""); } public IEnumerator Sync(string filePath, string user, string password) { return Sync(new ES3Settings(filePath), user, password); } public IEnumerator Sync(string filePath, ES3Settings settings) { return Sync(new ES3Settings(filePath, settings), "", ""); } public IEnumerator Sync(string filePath, string user, ES3Settings settings) { return Sync(new ES3Settings(filePath, settings), user, ""); } public IEnumerator Sync(string filePath, string user, string password, ES3Settings settings) { return Sync(new ES3Settings(filePath, settings), user, password); } private IEnumerator Sync(ES3Settings settings, string user, string password) { Reset(); yield return DownloadFile(settings, user, password, GetFileTimestamp(settings)); if (errorCode == 3) { Reset(); if (ES3.FileExists(settings)) { yield return UploadFile(settings, user, password); } } isDone = true; } public IEnumerator UploadFile() { return UploadFile(new ES3Settings(), "", ""); } public IEnumerator UploadFile(string filePath) { return UploadFile(new ES3Settings(filePath), "", ""); } public IEnumerator UploadFile(string filePath, string user) { return UploadFile(new ES3Settings(filePath), user, ""); } public IEnumerator UploadFile(string filePath, string user, string password) { return UploadFile(new ES3Settings(filePath), user, password); } public IEnumerator UploadFile(string filePath, ES3Settings settings) { return UploadFile(new ES3Settings(filePath, settings), "", ""); } public IEnumerator UploadFile(string filePath, string user, ES3Settings settings) { return UploadFile(new ES3Settings(filePath, settings), user, ""); } public IEnumerator UploadFile(string filePath, string user, string password, ES3Settings settings) { return UploadFile(new ES3Settings(filePath, settings), user, password); } public IEnumerator UploadFile(ES3File es3File) { return UploadFile(es3File.GetBytes(), es3File.settings, "", "", DateTimeToUnixTimestamp(DateTime.Now)); } public IEnumerator UploadFile(ES3File es3File, string user) { return UploadFile(es3File.GetBytes(), es3File.settings, user, "", DateTimeToUnixTimestamp(DateTime.Now)); } public IEnumerator UploadFile(ES3File es3File, string user, string password) { return UploadFile(es3File.GetBytes(), es3File.settings, user, password, DateTimeToUnixTimestamp(DateTime.Now)); } public IEnumerator UploadFile(ES3Settings settings, string user, string password) { return UploadFile(ES3.LoadRawBytes(settings), settings, user, password); } public IEnumerator UploadFile(byte[] bytes, ES3Settings settings, string user, string password) { return UploadFile(bytes, settings, user, password, DateTimeToUnixTimestamp(ES3.GetTimestamp(settings))); } private IEnumerator UploadFile(byte[] bytes, ES3Settings settings, string user, string password, long fileTimestamp) { Reset(); WWWForm val = CreateWWWForm(); val.AddField("apiKey", apiKey); val.AddField("putFile", settings.path); val.AddField("timestamp", fileTimestamp.ToString()); val.AddField("user", GetUser(user, password)); val.AddBinaryData("data", bytes, "data.dat", "multipart/form-data"); UnityWebRequest webRequest = UnityWebRequest.Post(url, val); try { webRequest.timeout = timeout; yield return SendWebRequest(webRequest); HandleError(webRequest, errorIfDataIsDownloaded: true); } finally { ((IDisposable)webRequest)?.Dispose(); } isDone = true; } public IEnumerator DownloadFile() { return DownloadFile(new ES3Settings(), "", "", 0L); } public IEnumerator DownloadFile(string filePath) { return DownloadFile(new ES3Settings(filePath), "", "", 0L); } public IEnumerator DownloadFile(string filePath, string user) { return DownloadFile(new ES3Settings(filePath), user, "", 0L); } public IEnumerator DownloadFile(string filePath, string user, string password) { return DownloadFile(new ES3Settings(filePath), user, password, 0L); } public IEnumerator DownloadFile(string filePath, ES3Settings settings) { return DownloadFile(new ES3Settings(filePath, settings), "", "", 0L); } public IEnumerator DownloadFile(string filePath, string user, ES3Settings settings) { return DownloadFile(new ES3Settings(filePath, settings), user, "", 0L); } public IEnumerator DownloadFile(string filePath, string user, string password, ES3Settings settings) { return DownloadFile(new ES3Settings(filePath, settings), user, password, 0L); } public IEnumerator DownloadFile(ES3File es3File) { return DownloadFile(es3File, "", "", 0L); } public IEnumerator DownloadFile(ES3File es3File, string user) { return DownloadFile(es3File, user, "", 0L); } public IEnumerator DownloadFile(ES3File es3File, string user, string password) { return DownloadFile(es3File, user, password, 0L); } private IEnumerator DownloadFile(ES3File es3File, string user, string password, long timestamp) { Reset(); WWWForm val = CreateWWWForm(); val.AddField("apiKey", apiKey); val.AddField("getFile", es3File.settings.path); val.AddField("user", GetUser(user, password)); if (timestamp > 0) { val.AddField("timestamp", timestamp.ToString()); } UnityWebRequest webRequest = UnityWebRequest.Post(url, val); try { webRequest.timeout = timeout; yield return SendWebRequest(webRequest); if (!HandleError(webRequest, errorIfDataIsDownloaded: false)) { if (webRequest.downloadedBytes != 0) { es3File.Clear(); es3File.SaveRaw(webRequest.downloadHandler.data); } else { error = $"File {es3File.settings.path} was not found on the server."; errorCode = 3L; } } } finally { ((IDisposable)webRequest)?.Dispose(); } isDone = true; } private IEnumerator DownloadFile(ES3Settings settings, string user, string password, long timestamp) { Reset(); WWWForm val = CreateWWWForm(); val.AddField("apiKey", apiKey); val.AddField("getFile", settings.path); val.AddField("user", GetUser(user, password)); if (timestamp > 0) { val.AddField("timestamp", timestamp.ToString()); } UnityWebRequest webRequest = UnityWebRequest.Post(url, val); try { webRequest.timeout = timeout; yield return SendWebRequest(webRequest); if (!HandleError(webRequest, errorIfDataIsDownloaded: false)) { if (webRequest.downloadedBytes != 0) { ES3.SaveRaw(webRequest.downloadHandler.data, settings); } else { error = $"File {settings.path} was not found on the server."; errorCode = 3L; } } } finally { ((IDisposable)webRequest)?.Dispose(); } isDone = true; } public IEnumerator DeleteFile() { return DeleteFile(new ES3Settings(), "", ""); } public IEnumerator DeleteFile(string filePath) { return DeleteFile(new ES3Settings(filePath), "", ""); } public IEnumerator DeleteFile(string filePath, string user) { return DeleteFile(new ES3Settings(filePath), user, ""); } public IEnumerator DeleteFile(string filePath, string user, string password) { return DeleteFile(new ES3Settings(filePath), user, password); } public IEnumerator DeleteFile(string filePath, ES3Settings settings) { return DeleteFile(new ES3Settings(filePath, settings), "", ""); } public IEnumerator DeleteFile(string filePath, string user, ES3Settings settings) { return DeleteFile(new ES3Settings(filePath, settings), user, ""); } public IEnumerator DeleteFile(string filePath, string user, string password, ES3Settings settings) { return DeleteFile(new ES3Settings(filePath, settings), user, password); } private IEnumerator DeleteFile(ES3Settings settings, string user, string password) { Reset(); WWWForm val = CreateWWWForm(); val.AddField("apiKey", apiKey); val.AddField("deleteFile", settings.path); val.AddField("user", GetUser(user, password)); UnityWebRequest webRequest = UnityWebRequest.Post(url, val); try { webRequest.timeout = timeout; yield return SendWebRequest(webRequest); HandleError(webRequest, errorIfDataIsDownloaded: true); } finally { ((IDisposable)webRequest)?.Dispose(); } isDone = true; } public IEnumerator RenameFile(string filePath, string newFilePath) { return RenameFile(new ES3Settings(filePath), new ES3Settings(newFilePath), "", ""); } public IEnumerator RenameFile(string filePath, string newFilePath, string user) { return RenameFile(new ES3Settings(filePath), new ES3Settings(newFilePath), user, ""); } public IEnumerator RenameFile(string filePath, string newFilePath, string user, string password) { return RenameFile(new ES3Settings(filePath), new ES3Settings(newFilePath), user, password); } public IEnumerator RenameFile(string filePath, string newFilePath, ES3Settings settings) { return RenameFile(new ES3Settings(filePath, settings), new ES3Settings(newFilePath, settings), "", ""); } public IEnumerator RenameFile(string filePath, string newFilePath, string user, ES3Settings settings) { return RenameFile(new ES3Settings(filePath, settings), new ES3Settings(newFilePath, settings), user, ""); } public IEnumerator RenameFile(string filePath, string newFilePath, string user, string password, ES3Settings settings) { return RenameFile(new ES3Settings(filePath, settings), new ES3Settings(newFilePath, settings), user, password); } private IEnumerator RenameFile(ES3Settings settings, ES3Settings newSettings, string user, string password) { Reset(); WWWForm val = CreateWWWForm(); val.AddField("apiKey", apiKey); val.AddField("renameFile", settings.path); val.AddField("newFilename", newSettings.path); val.AddField("user", GetUser(user, password)); UnityWebRequest webRequest = UnityWebRequest.Post(url, val); try { webRequest.timeout = timeout; yield return SendWebRequest(webRequest); HandleError(webRequest, errorIfDataIsDownloaded: true); } finally { ((IDisposable)webRequest)?.Dispose(); } isDone = true; } public IEnumerator DownloadFilenames(string user = "", string password = "") { Reset(); WWWForm val = CreateWWWForm(); val.AddField("apiKey", apiKey); val.AddField("getFilenames", ""); val.AddField("user", GetUser(user, password)); UnityWebRequest webRequest = UnityWebRequest.Post(url, val); try { webRequest.timeout = timeout; yield return SendWebRequest(webRequest); if (!HandleError(webRequest, errorIfDataIsDownloaded: false)) { _data = webRequest.downloadHandler.data; } } finally { ((IDisposable)webRequest)?.Dispose(); } isDone = true; } public IEnumerator SearchFilenames(string searchPattern, string user = "", string password = "") { Reset(); WWWForm val = CreateWWWForm(); val.AddField("apiKey", apiKey); val.AddField("getFilenames", ""); val.AddField("user", GetUser(user, password)); if (!string.IsNullOrEmpty(searchPattern)) { val.AddField("pattern", searchPattern); } UnityWebRequest webRequest = UnityWebRequest.Post(url, val); try { webRequest.timeout = timeout; yield return SendWebRequest(webRequest); if (!HandleError(webRequest, errorIfDataIsDownloaded: false)) { _data = webRequest.downloadHandler.data; } } finally { ((IDisposable)webRequest)?.Dispose(); } isDone = true; } public IEnumerator DownloadTimestamp() { return DownloadTimestamp(new ES3Settings(), "", ""); } public IEnumerator DownloadTimestamp(string filePath) { return DownloadTimestamp(new ES3Settings(filePath), "", ""); } public IEnumerator DownloadTimestamp(string filePath, string user) { return DownloadTimestamp(new ES3Settings(filePath), user, ""); } public IEnumerator DownloadTimestamp(string filePath, string user, string password) { return DownloadTimestamp(new ES3Settings(filePath), user, password); } public IEnumerator DownloadTimestamp(string filePath, ES3Settings settings) { return DownloadTimestamp(new ES3Settings(filePath, settings), "", ""); } public IEnumerator DownloadTimestamp(string filePath, string user, ES3Settings settings) { return DownloadTimestamp(new ES3Settings(filePath, settings), user, ""); } public IEnumerator DownloadTimestamp(string filePath, string user, string password, ES3Settings settings) { return DownloadTimestamp(new ES3Settings(filePath, settings), user, password); } private IEnumerator DownloadTimestamp(ES3Settings settings, string user, string password) { Reset(); WWWForm val = CreateWWWForm(); val.AddField("apiKey", apiKey); val.AddField("getTimestamp", settings.path); val.AddField("user", GetUser(user, password)); UnityWebRequest webRequest = UnityWebRequest.Post(url, val); try { webRequest.timeout = timeout; yield return SendWebRequest(webRequest); if (!HandleError(webRequest, errorIfDataIsDownloaded: false)) { _data = webRequest.downloadHandler.data; } } finally { ((IDisposable)webRequest)?.Dispose(); } isDone = true; } private long DateTimeToUnixTimestamp(DateTime dt) { return Convert.ToInt64((dt.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds); } private long GetFileTimestamp(ES3Settings settings) { return DateTimeToUnixTimestamp(ES3.GetTimestamp(settings)); } protected override void Reset() { _data = null; base.Reset(); } } public abstract class ES3Writer : IDisposable { public ES3Settings settings; protected HashSet<string> keysToDelete = new HashSet<string>(); internal bool writeHeaderAndFooter = true; internal bool overwriteKeys = true; protected int serializationDepth; internal abstract void WriteNull(); internal virtual void StartWriteFile() { serializationDepth++; } internal virtual void EndWriteFile() { serializationDepth--; } internal virtual void StartWriteObject(string name) { serializationDepth++; } internal virtual void EndWriteObject(string name) { serializationDepth--; } internal virtual void StartWriteProperty(string name) { if (name == null) { throw new ArgumentNullException("Key or field name cannot be NULL when saving data."); } ES3Debug.Log("<b>" + name + "</b> (writing property)", null, serializationDepth); } internal virtual void EndWriteProperty(string name) { } internal virtual void StartWriteCollection() { serializationDepth++; } internal virtual void EndWriteCollection() { serializationDepth--; } internal abstract void StartWriteCollectionItem(int index); internal abstract void EndWriteCollectionItem(int index); internal abstract void StartWriteDictionary(); internal abstract void EndWriteDictionary(); internal abstract void StartWriteDictionaryKey(int index); internal abstract void EndWriteDictionaryKey(int index); internal abstract void StartWriteDictionaryValue(int index); internal abstract void EndWriteDictionaryValue(int index); public abstract void Dispose(); internal abstract void WriteRawProperty(string name, byte[] bytes); internal abstract void WritePrimitive(int value); internal abstract void WritePrimitive(float value); internal abstract void WritePrimitive(bool value); internal abstract void WritePrimitive(decimal value); internal abstract void WritePrimitive(double value); internal abstract void WritePrimitive(long value); internal abstract void WritePrimitive(ulong value); internal abstract void WritePrimitive(uint value); internal abstract void WritePrimitive(byte value); internal abstract void WritePrimitive(sbyte value); internal abstract void WritePrimitive(short value); internal abstract void WritePrimitive(ushort value); internal abstract void WritePrimitive(char value); internal abstract void WritePrimitive(string value); internal abstract void WritePrimitive(byte[] value); protected ES3Writer(ES3Settings settings, bool writeHeaderAndFooter, bool overwriteKeys) { this.settings = settings; this.writeHeaderAndFooter = writeHeaderAndFooter; this.overwriteKeys = overwriteKeys; } internal virtual void Write(string key, Type type, byte[] value) { StartWriteProperty(key); StartWriteObject(key); WriteType(type); WriteRawProperty("value", value); EndWriteObject(key); EndWriteProperty(key); MarkKeyForDeletion(key); } public virtual void Write<T>(string key, object value) { if (typeof(T) == typeof(object)) { Write(value.GetType(), key, value); } else { Write(typeof(T), key, value); } } [EditorBrowsable(EditorBrowsableState.Never)] public virtual void Write(Type type, string key, object value) { StartWriteProperty(key); StartWriteObject(key); WriteType(type); WriteProperty("value", value, ES3TypeMgr.GetOrCreateES3Type(type), settings.referenceMode); EndWriteObject(key); EndWriteProperty(key); MarkKeyForDeletion(key); } [EditorBrowsable(EditorBrowsableState.Never)] public virtual void Write(object value, ES3.ReferenceMode memberReferenceMode = ES3.ReferenceMode.ByRef) { if (value == null) { WriteNull(); return; } ES3Type orCreateES3Type = ES3TypeMgr.GetOrCreateES3Type(value.GetType()); Write(value, orCreateES3Type, memberReferenceMode); } [EditorBrowsable(EditorBrowsableState.Never)] public virtual void Write(object value, ES3Type type, ES3.ReferenceMode memberReferenceMode = ES3.ReferenceMode.ByRef) { if (value == null || (ES3Reflection.IsAssignableFrom(typeof(Object), value.GetType()) && (Object)((value is Object) ? value : null) == (Object)null)) { WriteNull(); return; } if (type == null || type.type == typeof(object)) { Type type2 = value.GetType(); type = ES3TypeMgr.GetOrCreateES3Type(type2); if (type == null) { throw new NotSupportedException("Types of " + type2?.ToString() + " are not supported. Please see the Supported Types guide for more information: https://docs.moodkie.com/easy-save-3/es3-supported-types/"); } if (!type.isCollection && !type.isDictionary) { StartWriteObject(null); WriteType(type2); type.Write(value, this); EndWriteObject(null); return; } } if (type == null) { throw new ArgumentNullException("ES3Type argument cannot be null."); } if (type.isUnsupported) { if (type.isCollection || type.isDictionary) { throw new NotSupportedException(type.type?.ToString() + " is not supported because it's element type is not supported. Please see the Supported Types guide for more information: https://docs.moodkie.com/easy-save-3/es3-supported-types/"); } throw new NotSupportedException("Types of " + type.type?.ToString() + " are not supported. Please see the Supported Types guide for more information: https://docs.moodkie.com/easy-save-3/es3-supported-types/"); } if (type.isPrimitive || type.isEnum) { type.Write(value, this); return; } if (type.isCollection) { StartWriteCollection(); ((ES3CollectionType)type).Write(value, this, memberReferenceMode); EndWriteCollection(); return; } if (type.isDictionary) { StartWriteDictionary(); ((ES3DictionaryType)type).Write(value, this, memberReferenceMode); EndWriteDictionary(); return; } if (type.type == typeof(GameObject)) { ((ES3Type_GameObject)type).saveChildren = settings.saveChildren; } StartWriteObject(null); if (type.isES3TypeUnityObject) { ((ES3UnityObjectType)type).WriteObject(value, this, memberReferenceMode); } else { type.Write(value, this); } EndWriteObject(null); } internal virtual void WriteRef(Object obj) { ES3ReferenceMgrBase current = ES3ReferenceMgrBase.Current; if ((Object)(object)current == (Object)null) { throw new InvalidOperationException("An Easy Save 3 Manager is required to save references. To add one to your scene, exit playmode and go to Tools > Easy Save 3 > Add Manager to Scene"); } long num = current.Get(obj); if (num == -1) { num = current.Add(obj); } WriteProperty("_ES3Ref", num.ToString()); } public virtual void WriteProperty(string name, object value) { WriteProperty(name, value, settings.memberReferenceMode); } public virtual void WriteProperty(string name, object value, ES3.ReferenceMode memberReferenceMode) { if (!SerializationDepthLimitExceeded()) { StartWriteProperty(name); Write(value, memberReferenceMode); EndWriteProperty(name); } } public virtual void WriteProperty<T>(string name, object value) { WriteProperty(name, value, ES3TypeMgr.GetOrCreateES3Type(typeof(T)), settings.memberReferenceMode); } [EditorBrowsable(EditorBrowsableState.Never)] public virtual void WriteProperty(string name, object value, ES3Type type) { WriteProperty(name, value, type, settings.memberReferenceMode); } [EditorBrowsable(EditorBrowsableState.Never)] public virtual void WriteProperty(string name, object value, ES3Type type, ES3.ReferenceMode memberReferenceMode) { if (!SerializationDepthLimitExceeded()) { StartWriteProperty(name); Write(value, type, memberReferenceMode); EndWriteProperty(name); } } [EditorBrowsable(EditorBrowsableState.Never)] public virtual void WritePropertyByRef(string name, Object value) { if (!SerializationDepthLimitExceeded()) { StartWriteProperty(name); if (value == (Object)null) { WriteNull(); return; } StartWriteObject(name); WriteRef(value); EndWriteObject(name); EndWriteProperty(name); } } public void WritePrivateProperty(string name, object objectContainingProperty) { ES3Reflection.ES3ReflectedMember eS3ReflectedProperty = ES3Reflection.GetES3ReflectedProperty(objectContainingProperty.GetType(), name); if (eS3ReflectedProperty.IsNull) { throw new MissingMemberException("A private property named " + name + " does not exist in the type " + objectContainingProperty.GetType()); } WriteProperty(name, eS3ReflectedProperty.GetValue(objectContainingProperty), ES3TypeMgr.GetOrCreateES3Type(eS3ReflectedProperty.MemberType)); } public void WritePrivateField(string name, object objectContainingField) { ES3Reflection.ES3ReflectedMember eS3ReflectedMember = ES3Reflection.GetES3ReflectedMember(objectContainingField.GetType(), name); if (eS3ReflectedMember.IsNull) { throw new MissingMemberException("A private field named " + name + " does not exist in the type " + objectContainingField.GetType()); } WriteProperty(name, eS3ReflectedMember.GetValue(objectContainingField), ES3TypeMgr.GetOrCreateES3Type(eS3ReflectedMember.MemberType)); } [EditorBrowsable(EditorBrowsableState.Never)] public void WritePrivateProperty(string name, object objectContainingProperty, ES3Type type) { ES3Reflection.ES3ReflectedMember eS3ReflectedProperty = ES3Reflection.GetES3ReflectedProperty(objectContainingProperty.GetType(), name); if (eS3ReflectedProperty.IsNull) { throw new MissingMemberException("A private property named " + name + " does not exist in the type " + objectContainingProperty.GetType()); } WriteProperty(name, eS3ReflectedProperty.GetValue(objectContainingProperty), type); } [EditorBrowsable(EditorBrowsableState.Never)] public void WritePrivateField(string name, object objectContainingField, ES3Type type) { ES3Reflection.ES3ReflectedMember eS3ReflectedMember = ES3Reflection.GetES3ReflectedMember(objectContainingField.GetType(), name); if (eS3ReflectedMember.IsNull
plugins/TheBeeTeam-PersistentPurchases/PersistentPurchases.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using PersistentPurchases; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("PersistentPurchases")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Bought cosmetics never leave you")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+4a8442857e1475ac32499afc4cc163843fc31aac")] [assembly: AssemblyProduct("PersistentPurchases")] [assembly: AssemblyTitle("PersistentPurchases")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } [HarmonyPatch] public class Patches { [HarmonyPrefix] [HarmonyPatch(typeof(GameNetworkManager), "ResetUnlockablesListValues")] public static bool dontResetAnything() { //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: 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_0084: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)StartOfRound.Instance != (Object)null) { Debug.Log((object)"CONDITIONALLY resetting unlockables list!"); List<UnlockableItem> unlockables = StartOfRound.Instance.unlockablesList.unlockables; for (int i = 0; i < unlockables.Count; i++) { if (Plugin.shouldReset(i, "dontResetAnything")) { unlockables[i].hasBeenUnlockedByPlayer = false; if (unlockables[i].unlockableType == 1) { unlockables[i].placedPosition = Vector3.zero; unlockables[i].placedRotation = Vector3.zero; unlockables[i].hasBeenMoved = false; unlockables[i].inStorage = false; } } } } return false; } [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "ResetSavedGameValues")] public static void okayMaybeDoALittleResetting() { if (!ES3.KeyExists("UnlockedShipObjects", GameNetworkManager.Instance.currentSaveFileName)) { return; } int[] source = ES3.Load<int[]>("UnlockedShipObjects", GameNetworkManager.Instance.currentSaveFileName); source = source.Where((int id) => !Plugin.shouldReset(id, "okayMaybeDoALittleResetting1")).ToArray(); ES3.Save<int[]>("UnlockedShipObjects", source, GameNetworkManager.Instance.currentSaveFileName); for (int i = 0; i < StartOfRound.Instance.unlockablesList.unlockables.Count; i++) { UnlockableItem val = StartOfRound.Instance.unlockablesList.unlockables[i]; if (Plugin.shouldReset(i, "okayMaybeDoALittleResetting2") && val.unlockableType == 1) { ES3.DeleteKey("ShipUnlockMoved_" + val.unlockableName, GameNetworkManager.Instance.currentSaveFileName); ES3.DeleteKey("ShipUnlockStored_" + val.unlockableName, GameNetworkManager.Instance.currentSaveFileName); ES3.DeleteKey("ShipUnlockPos_" + val.unlockableName, GameNetworkManager.Instance.currentSaveFileName); ES3.DeleteKey("ShipUnlockRot_" + val.unlockableName, GameNetworkManager.Instance.currentSaveFileName); } } } [HarmonyPostfix] [HarmonyPatch(typeof(StartOfRound), "ResetShip")] public static void unfuckObjects() { PlaceableShipObject[] array = Object.FindObjectsOfType<PlaceableShipObject>(); for (int i = 0; i < array.Length; i++) { if ((Object)(object)array[i].parentObject == (Object)null) { Debug.Log((object)("Error! No parentObject for placeable object: " + StartOfRound.Instance.unlockablesList.unlockables[array[i].unlockableID].unlockableName)); } if (StartOfRound.Instance.unlockablesList.unlockables[array[i].unlockableID].spawnPrefab) { Collider[] componentsInChildren = ((Component)array[i].parentObject).GetComponentsInChildren<Collider>(); for (int j = 0; j < componentsInChildren.Length; j++) { componentsInChildren[j].enabled = true; } } } } } [HarmonyPatch(typeof(GameNetworkManager), "ResetSavedGameValues")] public class ResetSavedGameValues { private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { Plugin.log.LogWarning((object)"Beginning transpilation of GameNetworkManager.ResetSavedGameValues()"); List<CodeInstruction> list = new List<CodeInstruction>(instructions); int num = -1; List<int> list2 = new List<int>(); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldstr) { if (list[i].operand.ToString() == "UnlockedShipObjects") { num = i; Plugin.log.LogInfo((object)$"Found ship object opcode at {i}"); } else if (list[i].operand.ToString().EndsWith("_")) { list2.Add(i); Plugin.log.LogInfo((object)$"Found placeable ship object data opcode at {i}"); } } } for (int num2 = list2.Count - 1; num2 >= 0; num2--) { list.RemoveRange(list2[num2], 11); } if (num >= 0) { list.RemoveRange(num, 4); } return list.AsEnumerable(); } } [HarmonyPatch(typeof(StartOfRound), "ResetShip")] public class ResetShip { private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { //IL_0225: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Expected O, but got Unknown //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Expected O, but got Unknown //IL_025a: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Expected O, but got Unknown Plugin.log.LogWarning((object)"Beginning transpilation of StartOfRound.ResetShip()"); List<CodeInstruction> list = new List<CodeInstruction>(instructions); int num = -1; CodeInstruction val = null; int num2 = -1; CodeInstruction val2 = null; int num3 = -1; for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldfld && list[i].operand.ToString() == "System.Boolean spawnPrefab") { if (num == -1) { num = i + 2; val = list[i + 1].Clone(); val.opcode = OpCodes.Brfalse_S; Plugin.log.LogInfo((object)$"Found ship object prefab opcode at {i} (1)"); } else if (num2 == -1) { num2 = i + 2; val2 = list[i + 1].Clone(); val2.opcode = OpCodes.Br; Plugin.log.LogInfo((object)$"Found ship object prefab opcode at {i} (1)"); } } if (list[i].opcode == OpCodes.Call && list[i].operand.ToString() == "Void SwitchSuitForPlayer(GameNetcodeStuff.PlayerControllerB, Int32, Boolean)") { num3 = i; Plugin.log.LogInfo((object)$"Found suit reset opcode at {i}"); } if (list[i].opcode == OpCodes.Stfld && list[i].operand.ToString() == "System.Boolean disableObject") { list[i - 1].opcode = OpCodes.Ldc_I4_1; } } if (num3 >= 0) { list.RemoveRange(num3 - 6, 7); } if (num2 >= 0) { list.Insert(num2, val2); } if (num >= 0) { list.InsertRange(num, (IEnumerable<CodeInstruction>)(object)new CodeInstruction[4] { new CodeInstruction(OpCodes.Ldloc_3, (object)null), new CodeInstruction(OpCodes.Ldstr, (object)"StartOfRound1"), new CodeInstruction(OpCodes.Call, (object)AccessTools.Method(typeof(Plugin), "shouldReset", (Type[])null, (Type[])null)), val }); } return list.AsEnumerable(); } } namespace PersistentPurchases { [BepInPlugin("beeisyou.PersistentPurchases", "Persistent Purchases", "1.0.0")] public class Plugin : BaseUnityPlugin { public static ManualLogSource log = new ManualLogSource("Persistent Purchases"); public static Harmony harmony = new Harmony("beeisyou.PersistentPurchases"); public static int[] suits = new int[4] { 0, 1, 2, 3 }; public static int[] upgrades = new int[3] { 5, 18, 19 }; private void Awake() { Logger.Sources.Add((ILogSource)(object)log); harmony.PatchAll(typeof(Patches)); harmony.PatchAll(typeof(ResetSavedGameValues)); harmony.PatchAll(typeof(ResetShip)); log.LogMessage((object)"Plugin Persistent Purchases is loaded!"); } public static bool shouldReset(int id, string debugType) { if (suits.Contains(id)) { return false; } if (upgrades.Contains(id)) { return true; } return false; } } public static class PluginInfo { public const string PLUGIN_GUID = "PersistentPurchases"; public const string PLUGIN_NAME = "PersistentPurchases"; public const string PLUGIN_VERSION = "1.0.0"; } }
plugins/TheBeeTeam-PersistentPurchases/Unity.InputSystem.dll
Decompiled 2 years ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using Unity.Collections; using Unity.Collections.LowLevel.Unsafe; using Unity.XR.GoogleVr; using Unity.XR.Oculus.Input; using Unity.XR.OpenVR; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.Experimental.Rendering; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Composites; using UnityEngine.InputSystem.Controls; using UnityEngine.InputSystem.DualShock; using UnityEngine.InputSystem.DualShock.LowLevel; using UnityEngine.InputSystem.HID; using UnityEngine.InputSystem.Haptics; using UnityEngine.InputSystem.Interactions; using UnityEngine.InputSystem.Layouts; using UnityEngine.InputSystem.LowLevel; using UnityEngine.InputSystem.Processors; using UnityEngine.InputSystem.Switch; using UnityEngine.InputSystem.Switch.LowLevel; using UnityEngine.InputSystem.UI; using UnityEngine.InputSystem.Users; using UnityEngine.InputSystem.Utilities; using UnityEngine.InputSystem.XInput; using UnityEngine.InputSystem.XInput.LowLevel; using UnityEngine.InputSystem.XR; using UnityEngine.InputSystem.XR.Haptics; using UnityEngine.Networking.PlayerConnection; using UnityEngine.Pool; using UnityEngine.Scripting; using UnityEngine.Serialization; using UnityEngine.UI; using UnityEngine.UIElements; using UnityEngine.XR; using UnityEngine.XR.WindowsMR.Input; using UnityEngineInternal.Input; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: InternalsVisibleTo("Unity.InputSystem.TestFramework")] [assembly: InternalsVisibleTo("Unity.InputSystem.Tests.Editor")] [assembly: InternalsVisibleTo("Unity.InputSystem.Tests")] [assembly: InternalsVisibleTo("Unity.InputSystem.IntegrationTests")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.7.0.0")] [module: UnverifiableCode] internal static class UISupport { public static void Initialize() { InputSystem.RegisterLayout("\n {\n \"name\" : \"VirtualMouse\",\n \"extend\" : \"Mouse\"\n }\n "); } } [CompilerGenerated] [EditorBrowsable(EditorBrowsableState.Never)] [GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)] internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1 { private struct MonoScriptData { public byte[] FilePathsData; public byte[] TypesData; public int TotalTypes; public int TotalFiles; public bool IsEditorOnly; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static MonoScriptData Get() { MonoScriptData result = default(MonoScriptData); result.FilePathsData = new byte[24040] { 0, 0, 0, 1, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 67, 111, 109, 112, 111, 115, 105, 116, 101, 115, 92, 65, 120, 105, 115, 67, 111, 109, 112, 111, 115, 105, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 67, 111, 109, 112, 111, 115, 105, 116, 101, 115, 92, 66, 117, 116, 116, 111, 110, 87, 105, 116, 104, 79, 110, 101, 77, 111, 100, 105, 102, 105, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 106, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 67, 111, 109, 112, 111, 115, 105, 116, 101, 115, 92, 66, 117, 116, 116, 111, 110, 87, 105, 116, 104, 84, 119, 111, 77, 111, 100, 105, 102, 105, 101, 114, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 104, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 67, 111, 109, 112, 111, 115, 105, 116, 101, 115, 92, 79, 110, 101, 77, 111, 100, 105, 102, 105, 101, 114, 67, 111, 109, 112, 111, 115, 105, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 67, 111, 109, 112, 111, 115, 105, 116, 101, 115, 92, 84, 119, 111, 77, 111, 100, 105, 102, 105, 101, 114, 115, 67, 111, 109, 112, 111, 115, 105, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 67, 111, 109, 112, 111, 115, 105, 116, 101, 115, 92, 86, 101, 99, 116, 111, 114, 50, 67, 111, 109, 112, 111, 115, 105, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 67, 111, 109, 112, 111, 115, 105, 116, 101, 115, 92, 86, 101, 99, 116, 111, 114, 51, 67, 111, 109, 112, 111, 115, 105, 116, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 73, 110, 112, 117, 116, 65, 99, 116, 105, 111, 110, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 73, 110, 112, 117, 116, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 84, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 65, 99, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 65, 99, 116, 105, 111, 110, 65, 115, 115, 101, 116, 46, 99, 115, 0, 0, 0, 11, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 65, 99, 116, 105, 111, 110, 77, 97, 112, 46, 99, 115, 0, 0, 0, 5, 0, 0, 0, 94, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 65, 99, 116, 105, 111, 110, 80, 97, 114, 97, 109, 101, 116, 101, 114, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 65, 99, 116, 105, 111, 110, 80, 114, 111, 112, 101, 114, 116, 121, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 103, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 65, 99, 116, 105, 111, 110, 82, 101, 98, 105, 110, 100, 105, 110, 103, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 65, 99, 116, 105, 111, 110, 82, 101, 102, 101, 114, 101, 110, 99, 101, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 65, 99, 116, 105, 111, 110, 83, 101, 116, 117, 112, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 7, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 65, 99, 116, 105, 111, 110, 83, 116, 97, 116, 101, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 65, 99, 116, 105, 111, 110, 84, 114, 97, 99, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 66, 105, 110, 100, 105, 110, 103, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 94, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 66, 105, 110, 100, 105, 110, 103, 67, 111, 109, 112, 111, 115, 105, 116, 101, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 66, 105, 110, 100, 105, 110, 103, 67, 111, 109, 112, 111, 115, 105, 116, 101, 67, 111, 110, 116, 101, 120, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 66, 105, 110, 100, 105, 110, 103, 82, 101, 115, 111, 108, 118, 101, 114, 46, 99, 115, 0, 0, 0, 7, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 67, 111, 110, 116, 114, 111, 108, 83, 99, 104, 101, 109, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 112, 117, 116, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 67, 111, 110, 116, 101, 120, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 115, 92, 72, 111, 108, 100, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 115, 92, 77, 117, 108, 116, 105, 84, 97, 112, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 102, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 115, 92, 80, 114, 101, 115, 115, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 104, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 115, 92, 83, 108, 111, 119, 84, 97, 112, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 99, 116, 105, 111, 110, 115, 92, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 115, 92, 84, 97, 112, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 77, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 65, 115, 115, 101, 109, 98, 108, 121, 73, 110, 102, 111, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 65, 110, 121, 75, 101, 121, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 65, 120, 105, 115, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 66, 117, 116, 116, 111, 110, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 67, 111, 109, 109, 111, 110, 85, 115, 97, 103, 101, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 68, 101, 108, 116, 97, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 68, 105, 115, 99, 114, 101, 116, 101, 66, 117, 116, 116, 111, 110, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 68, 111, 117, 98, 108, 101, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 85, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 68, 112, 97, 100, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 73, 110, 112, 117, 116, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 73, 110, 112, 117, 116, 67, 111, 110, 116, 114, 111, 108, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 5, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 73, 110, 112, 117, 116, 67, 111, 110, 116, 114, 111, 108, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 13, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 73, 110, 112, 117, 116, 67, 111, 110, 116, 114, 111, 108, 76, 97, 121, 111, 117, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 73, 110, 112, 117, 116, 67, 111, 110, 116, 114, 111, 108, 76, 97, 121, 111, 117, 116, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 73, 110, 112, 117, 116, 67, 111, 110, 116, 114, 111, 108, 76, 105, 115, 116, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 73, 110, 112, 117, 116, 67, 111, 110, 116, 114, 111, 108, 80, 97, 116, 104, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 73, 110, 112, 117, 116, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 73, 110, 116, 101, 103, 101, 114, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 84, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 75, 101, 121, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 106, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 65, 120, 105, 115, 68, 101, 97, 100, 122, 111, 110, 101, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 67, 108, 97, 109, 112, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 113, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 67, 111, 109, 112, 101, 110, 115, 97, 116, 101, 68, 105, 114, 101, 99, 116, 105, 111, 110, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 112, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 67, 111, 109, 112, 101, 110, 115, 97, 116, 101, 82, 111, 116, 97, 116, 105, 111, 110, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 73, 110, 118, 101, 114, 116, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 107, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 73, 110, 118, 101, 114, 116, 86, 101, 99, 116, 111, 114, 50, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 107, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 73, 110, 118, 101, 114, 116, 86, 101, 99, 116, 111, 114, 51, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 103, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 78, 111, 114, 109, 97, 108, 105, 122, 101, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 110, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 78, 111, 114, 109, 97, 108, 105, 122, 101, 86, 101, 99, 116, 111, 114, 50, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 110, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 78, 111, 114, 109, 97, 108, 105, 122, 101, 86, 101, 99, 116, 111, 114, 51, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 83, 99, 97, 108, 101, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 106, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 83, 99, 97, 108, 101, 86, 101, 99, 116, 111, 114, 50, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 106, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 83, 99, 97, 108, 101, 86, 101, 99, 116, 111, 114, 51, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 107, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 114, 111, 99, 101, 115, 115, 111, 114, 115, 92, 83, 116, 105, 99, 107, 68, 101, 97, 100, 122, 111, 110, 101, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 81, 117, 97, 116, 101, 114, 110, 105, 111, 110, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 83, 116, 105, 99, 107, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 84, 111, 117, 99, 104, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 84, 111, 117, 99, 104, 80, 104, 97, 115, 101, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 84, 111, 117, 99, 104, 80, 114, 101, 115, 115, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 86, 101, 99, 116, 111, 114, 50, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 86, 101, 99, 116, 111, 114, 51, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 102, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 68, 105, 115, 97, 98, 108, 101, 68, 101, 118, 105, 99, 101, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 69, 110, 97, 98, 108, 101, 68, 101, 118, 105, 99, 101, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 109, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 69, 110, 97, 98, 108, 101, 73, 77, 69, 67, 111, 109, 112, 111, 115, 105, 116, 105, 111, 110, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 73, 73, 110, 112, 117, 116, 68, 101, 118, 105, 99, 101, 67, 111, 109, 109, 97, 110, 100, 73, 110, 102, 111, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 115, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 73, 110, 105, 116, 105, 97, 116, 101, 85, 115, 101, 114, 65, 99, 99, 111, 117, 110, 116, 80, 97, 105, 114, 105, 110, 103, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 73, 110, 112, 117, 116, 68, 101, 118, 105, 99, 101, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 81, 117, 101, 114, 121, 67, 97, 110, 82, 117, 110, 73, 110, 66, 97, 99, 107, 103, 114, 111, 117, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 104, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 81, 117, 101, 114, 121, 68, 105, 109, 101, 110, 115, 105, 111, 110, 115, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 106, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 81, 117, 101, 114, 121, 69, 110, 97, 98, 108, 101, 100, 83, 116, 97, 116, 101, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 108, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 81, 117, 101, 114, 121, 75, 101, 121, 98, 111, 97, 114, 100, 76, 97, 121, 111, 117, 116, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 81, 117, 101, 114, 121, 75, 101, 121, 78, 97, 109, 101, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 111, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 81, 117, 101, 114, 121, 80, 97, 105, 114, 101, 100, 85, 115, 101, 114, 65, 99, 99, 111, 117, 110, 116, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 111, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 81, 117, 101, 114, 121, 83, 97, 109, 112, 108, 105, 110, 103, 70, 114, 101, 113, 117, 101, 110, 99, 121, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 81, 117, 101, 114, 121, 85, 115, 101, 114, 73, 100, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 82, 101, 113, 117, 101, 115, 116, 82, 101, 115, 101, 116, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 82, 101, 113, 117, 101, 115, 116, 83, 121, 110, 99, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 109, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 83, 101, 116, 73, 77, 69, 67, 117, 114, 115, 111, 114, 80, 111, 115, 105, 116, 105, 111, 110, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 109, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 83, 101, 116, 83, 97, 109, 112, 108, 105, 110, 103, 70, 114, 101, 113, 117, 101, 110, 99, 121, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 110, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 85, 115, 101, 87, 105, 110, 100, 111, 119, 115, 71, 97, 109, 105, 110, 103, 73, 110, 112, 117, 116, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 106, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 67, 111, 109, 109, 97, 110, 100, 115, 92, 87, 97, 114, 112, 77, 111, 117, 115, 101, 80, 111, 115, 105, 116, 105, 111, 110, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 80, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 71, 97, 109, 101, 112, 97, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 72, 97, 112, 116, 105, 99, 115, 92, 68, 117, 97, 108, 77, 111, 116, 111, 114, 82, 117, 109, 98, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 103, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 72, 97, 112, 116, 105, 99, 115, 92, 68, 117, 97, 108, 77, 111, 116, 111, 114, 82, 117, 109, 98, 108, 101, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 72, 97, 112, 116, 105, 99, 115, 92, 73, 68, 117, 97, 108, 77, 111, 116, 111, 114, 82, 117, 109, 98, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 72, 97, 112, 116, 105, 99, 115, 92, 73, 72, 97, 112, 116, 105, 99, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 73, 67, 117, 115, 116, 111, 109, 68, 101, 118, 105, 99, 101, 82, 101, 115, 101, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 73, 69, 118, 101, 110, 116, 77, 101, 114, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 73, 69, 118, 101, 110, 116, 80, 114, 101, 80, 114, 111, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 73, 73, 110, 112, 117, 116, 85, 112, 100, 97, 116, 101, 67, 97, 108, 108, 98, 97, 99, 107, 82, 101, 99, 101, 105, 118, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 84, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 73, 110, 112, 117, 116, 68, 101, 118, 105, 99, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 73, 110, 112, 117, 116, 68, 101, 118, 105, 99, 101, 66, 117, 105, 108, 100, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 73, 110, 112, 117, 116, 68, 101, 118, 105, 99, 101, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 73, 110, 112, 117, 116, 68, 101, 118, 105, 99, 101, 77, 97, 116, 99, 104, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 73, 84, 101, 120, 116, 73, 110, 112, 117, 116, 82, 101, 99, 101, 105, 118, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 74, 111, 121, 115, 116, 105, 99, 107, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 75, 101, 121, 98, 111, 97, 114, 100, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 78, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 77, 111, 117, 115, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 76, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 80, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 80, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 80, 111, 105, 110, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 80, 114, 101, 99, 111, 109, 112, 105, 108, 101, 100, 92, 70, 97, 115, 116, 75, 101, 121, 98, 111, 97, 114, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 94, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 80, 114, 101, 99, 111, 109, 112, 105, 108, 101, 100, 92, 70, 97, 115, 116, 77, 111, 117, 115, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 102, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 80, 114, 101, 99, 111, 109, 112, 105, 108, 101, 100, 92, 70, 97, 115, 116, 77, 111, 117, 115, 101, 46, 112, 97, 114, 116, 105, 97, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 80, 114, 101, 99, 111, 109, 112, 105, 108, 101, 100, 92, 70, 97, 115, 116, 84, 111, 117, 99, 104, 115, 99, 114, 101, 101, 110, 46, 99, 115, 0, 0, 0, 17, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 82, 101, 109, 111, 116, 101, 92, 73, 110, 112, 117, 116, 82, 101, 109, 111, 116, 105, 110, 103, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 107, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 82, 101, 109, 111, 116, 101, 92, 82, 101, 109, 111, 116, 101, 73, 110, 112, 117, 116, 80, 108, 97, 121, 101, 114, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 18, 0, 0, 0, 79, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 83, 101, 110, 115, 111, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 84, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 84, 111, 117, 99, 104, 115, 99, 114, 101, 101, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 68, 101, 118, 105, 99, 101, 115, 92, 84, 114, 97, 99, 107, 101, 100, 68, 101, 118, 105, 99, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 65, 99, 116, 105, 111, 110, 69, 118, 101, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 68, 101, 108, 116, 97, 83, 116, 97, 116, 101, 69, 118, 101, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 68, 101, 118, 105, 99, 101, 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 69, 118, 101, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 68, 101, 118, 105, 99, 101, 82, 101, 109, 111, 118, 101, 69, 118, 101, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 68, 101, 118, 105, 99, 101, 82, 101, 115, 101, 116, 69, 118, 101, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 73, 73, 110, 112, 117, 116, 69, 118, 101, 110, 116, 84, 121, 112, 101, 73, 110, 102, 111, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 73, 77, 69, 67, 111, 109, 112, 111, 115, 105, 116, 105, 111, 110, 69, 118, 101, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 73, 110, 112, 117, 116, 69, 118, 101, 110, 116, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 73, 110, 112, 117, 116, 69, 118, 101, 110, 116, 66, 117, 102, 102, 101, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 73, 110, 112, 117, 116, 69, 118, 101, 110, 116, 76, 105, 115, 116, 101, 110, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 73, 110, 112, 117, 116, 69, 118, 101, 110, 116, 80, 116, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 73, 110, 112, 117, 116, 69, 118, 101, 110, 116, 83, 116, 114, 101, 97, 109, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 73, 110, 112, 117, 116, 69, 118, 101, 110, 116, 84, 114, 97, 99, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 83, 116, 97, 116, 101, 69, 118, 101, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 69, 118, 101, 110, 116, 115, 92, 84, 101, 120, 116, 69, 118, 101, 110, 116, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 78, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 73, 73, 110, 112, 117, 116, 82, 117, 110, 116, 105, 109, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 80, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 73, 110, 112, 117, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 73, 110, 112, 117, 116, 70, 101, 97, 116, 117, 114, 101, 78, 97, 109, 101, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 77, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 73, 110, 112, 117, 116, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 73, 110, 112, 117, 116, 77, 97, 110, 97, 103, 101, 114, 83, 116, 97, 116, 101, 77, 111, 110, 105, 116, 111, 114, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 77, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 73, 110, 112, 117, 116, 77, 101, 116, 114, 105, 99, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 73, 110, 112, 117, 116, 83, 101, 116, 116, 105, 110, 103, 115, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 76, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 80, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 73, 110, 112, 117, 116, 85, 112, 100, 97, 116, 101, 84, 121, 112, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 78, 97, 116, 105, 118, 101, 73, 110, 112, 117, 116, 82, 117, 110, 116, 105, 109, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 68, 117, 97, 108, 83, 104, 111, 99, 107, 92, 68, 117, 97, 108, 83, 104, 111, 99, 107, 71, 97, 109, 101, 112, 97, 100, 46, 99, 115, 0, 0, 0, 15, 0, 0, 0, 102, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 68, 117, 97, 108, 83, 104, 111, 99, 107, 92, 68, 117, 97, 108, 83, 104, 111, 99, 107, 71, 97, 109, 101, 112, 97, 100, 72, 73, 68, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 68, 117, 97, 108, 83, 104, 111, 99, 107, 92, 68, 117, 97, 108, 83, 104, 111, 99, 107, 83, 117, 112, 112, 111, 114, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 68, 117, 97, 108, 83, 104, 111, 99, 107, 92, 73, 68, 117, 97, 108, 83, 104, 111, 99, 107, 72, 97, 112, 116, 105, 99, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 107, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 69, 110, 104, 97, 110, 99, 101, 100, 84, 111, 117, 99, 104, 92, 69, 110, 104, 97, 110, 99, 101, 100, 84, 111, 117, 99, 104, 83, 117, 112, 112, 111, 114, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 69, 110, 104, 97, 110, 99, 101, 100, 84, 111, 117, 99, 104, 92, 70, 105, 110, 103, 101, 114, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 69, 110, 104, 97, 110, 99, 101, 100, 84, 111, 117, 99, 104, 92, 84, 111, 117, 99, 104, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 69, 110, 104, 97, 110, 99, 101, 100, 84, 111, 117, 99, 104, 92, 84, 111, 117, 99, 104, 72, 105, 115, 116, 111, 114, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 102, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 69, 110, 104, 97, 110, 99, 101, 100, 84, 111, 117, 99, 104, 92, 84, 111, 117, 99, 104, 83, 105, 109, 117, 108, 97, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 6, 0, 0, 0, 80, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 72, 73, 68, 92, 72, 73, 68, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 72, 73, 68, 92, 72, 73, 68, 80, 97, 114, 115, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 72, 73, 68, 92, 72, 73, 68, 83, 117, 112, 112, 111, 114, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 79, 110, 83, 99, 114, 101, 101, 110, 92, 79, 110, 83, 99, 114, 101, 101, 110, 66, 117, 116, 116, 111, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 79, 110, 83, 99, 114, 101, 101, 110, 92, 79, 110, 83, 99, 114, 101, 101, 110, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 79, 110, 83, 99, 114, 101, 101, 110, 92, 79, 110, 83, 99, 114, 101, 101, 110, 83, 116, 105, 99, 107, 46, 99, 115, 0, 0, 0, 5, 0, 0, 0, 104, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 80, 108, 97, 121, 101, 114, 73, 110, 112, 117, 116, 92, 68, 101, 102, 97, 117, 108, 116, 73, 110, 112, 117, 116, 65, 99, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 80, 108, 97, 121, 101, 114, 73, 110, 112, 117, 116, 92, 73, 110, 112, 117, 116, 86, 97, 108, 117, 101, 46, 99, 115, 0, 0, 0, 5, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 80, 108, 97, 121, 101, 114, 73, 110, 112, 117, 116, 92, 80, 108, 97, 121, 101, 114, 73, 110, 112, 117, 116, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 103, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 80, 108, 97, 121, 101, 114, 73, 110, 112, 117, 116, 92, 80, 108, 97, 121, 101, 114, 73, 110, 112, 117, 116, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 9, 0, 0, 0, 102, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 83, 119, 105, 116, 99, 104, 92, 83, 119, 105, 116, 99, 104, 80, 114, 111, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 72, 73, 68, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 83, 119, 105, 116, 99, 104, 92, 83, 119, 105, 116, 99, 104, 83, 117, 112, 112, 111, 114, 116, 72, 73, 68, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 85, 73, 92, 66, 97, 115, 101, 73, 110, 112, 117, 116, 79, 118, 101, 114, 114, 105, 100, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 85, 73, 92, 69, 120, 116, 101, 110, 100, 101, 100, 65, 120, 105, 115, 69, 118, 101, 110, 116, 68, 97, 116, 97, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 85, 73, 92, 69, 120, 116, 101, 110, 100, 101, 100, 80, 111, 105, 110, 116, 101, 114, 69, 118, 101, 110, 116, 68, 97, 116, 97, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 85, 73, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 85, 73, 73, 110, 112, 117, 116, 77, 111, 100, 117, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 85, 73, 92, 77, 117, 108, 116, 105, 112, 108, 97, 121, 101, 114, 69, 118, 101, 110, 116, 83, 121, 115, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 85, 73, 92, 78, 97, 118, 105, 103, 97, 116, 105, 111, 110, 77, 111, 100, 101, 108, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 85, 73, 92, 80, 111, 105, 110, 116, 101, 114, 77, 111, 100, 101, 108, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 85, 73, 92, 84, 114, 97, 99, 107, 101, 100, 68, 101, 118, 105, 99, 101, 82, 97, 121, 99, 97, 115, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 85, 73, 92, 85, 73, 83, 117, 112, 112, 111, 114, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 85, 73, 92, 86, 105, 114, 116, 117, 97, 108, 77, 111, 117, 115, 101, 73, 110, 112, 117, 116, 46, 99, 115, 0, 0, 0, 6, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 85, 115, 101, 114, 115, 92, 73, 110, 112, 117, 116, 85, 115, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 85, 115, 101, 114, 115, 92, 73, 110, 112, 117, 116, 85, 115, 101, 114, 65, 99, 99, 111, 117, 110, 116, 72, 97, 110, 100, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 85, 115, 101, 114, 115, 92, 73, 110, 112, 117, 116, 85, 115, 101, 114, 83, 101, 116, 116, 105, 110, 103, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 94, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 73, 110, 112, 117, 116, 92, 73, 88, 98, 111, 120, 79, 110, 101, 82, 117, 109, 98, 108, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 73, 110, 112, 117, 116, 92, 88, 73, 110, 112, 117, 116, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 103, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 73, 110, 112, 117, 116, 92, 88, 73, 110, 112, 117, 116, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 87, 105, 110, 100, 111, 119, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 73, 110, 112, 117, 116, 92, 88, 73, 110, 112, 117, 116, 83, 117, 112, 112, 111, 114, 116, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 67, 111, 110, 116, 114, 111, 108, 115, 92, 80, 111, 115, 101, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 68, 101, 118, 105, 99, 101, 115, 92, 71, 111, 111, 103, 108, 101, 86, 82, 46, 99, 115, 0, 0, 0, 6, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 68, 101, 118, 105, 99, 101, 115, 92, 79, 99, 117, 108, 117, 115, 46, 99, 115, 0, 0, 0, 7, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 68, 101, 118, 105, 99, 101, 115, 92, 79, 112, 101, 110, 86, 82, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 68, 101, 118, 105, 99, 101, 115, 92, 87, 105, 110, 100, 111, 119, 115, 77, 82, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 71, 101, 110, 101, 114, 105, 99, 88, 82, 68, 101, 118, 105, 99, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 72, 97, 112, 116, 105, 99, 115, 92, 66, 117, 102, 102, 101, 114, 101, 100, 82, 117, 109, 98, 108, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 112, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 72, 97, 112, 116, 105, 99, 115, 92, 71, 101, 116, 67, 117, 114, 114, 101, 110, 116, 72, 97, 112, 116, 105, 99, 83, 116, 97, 116, 101, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 112, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 72, 97, 112, 116, 105, 99, 115, 92, 71, 101, 116, 72, 97, 112, 116, 105, 99, 67, 97, 112, 97, 98, 105, 108, 105, 116, 105, 101, 115, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 110, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 72, 97, 112, 116, 105, 99, 115, 92, 83, 101, 110, 100, 66, 117, 102, 102, 101, 114, 101, 100, 72, 97, 112, 116, 105, 99, 115, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 108, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 72, 97, 112, 116, 105, 99, 115, 92, 83, 101, 110, 100, 72, 97, 112, 116, 105, 99, 73, 109, 112, 117, 108, 115, 101, 67, 111, 109, 109, 97, 110, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 84, 114, 97, 99, 107, 101, 100, 80, 111, 115, 101, 68, 114, 105, 118, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 88, 82, 76, 97, 121, 111, 117, 116, 66, 117, 105, 108, 100, 101, 114, 46, 99, 115, 0, 0, 0, 9, 0, 0, 0, 85, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 80, 108, 117, 103, 105, 110, 115, 92, 88, 82, 92, 88, 82, 83, 117, 112, 112, 111, 114, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 83, 116, 97, 116, 101, 92, 73, 73, 110, 112, 117, 116, 83, 116, 97, 116, 101, 67, 97, 108, 108, 98, 97, 99, 107, 82, 101, 99, 101, 105, 118, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 83, 116, 97, 116, 101, 92, 73, 73, 110, 112, 117, 116, 83, 116, 97, 116, 101, 67, 104, 97, 110, 103, 101, 77, 111, 110, 105, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 83, 116, 97, 116, 101, 92, 73, 73, 110, 112, 117, 116, 83, 116, 97, 116, 101, 84, 121, 112, 101, 73, 110, 102, 111, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 83, 116, 97, 116, 101, 92, 73, 110, 112, 117, 116, 83, 116, 97, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 83, 116, 97, 116, 101, 92, 73, 110, 112, 117, 116, 83, 116, 97, 116, 101, 66, 108, 111, 99, 107, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 83, 116, 97, 116, 101, 92, 73, 110, 112, 117, 116, 83, 116, 97, 116, 101, 66, 117, 102, 102, 101, 114, 115, 46, 99, 115, 0, 0, 0, 7, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 105, 110, 112, 117, 116, 115, 121, 115, 116, 101, 109, 64, 49, 46, 55, 46, 48, 92, 73, 110, 112, 117, 116, 83, 121, 115, 116, 101, 109, 92, 83, 116, 97, 116, 101, 92, 73, 110, 112, 117, 116, 83, 116, 97, 116, 101, 72, 105, 115, 116,
plugins/TheBeeTeam-PersistentPurchases/Unity.Netcode.Runtime.dll
Decompiled 2 years ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using System.Text; using AOT; using Microsoft.CodeAnalysis; using Unity.Burst; using Unity.Collections; using Unity.Collections.LowLevel.Unsafe; using Unity.Jobs; using Unity.Multiplayer.Tools; using Unity.Multiplayer.Tools.MetricTypes; using Unity.Multiplayer.Tools.NetStats; using Unity.Netcode; using Unity.Netcode.Transports.UTP; using Unity.Networking.Transport; using Unity.Networking.Transport.Error; using Unity.Networking.Transport.Relay; using Unity.Networking.Transport.Utilities; using Unity.Profiling; using UnityEngine; using UnityEngine.LowLevel; using UnityEngine.PlayerLoop; using UnityEngine.SceneManagement; using UnityEngine.Serialization; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: InternalsVisibleTo("Unity.Netcode.Components")] [assembly: InternalsVisibleTo("Unity.Multiplayer.Tools.Adapters.Ngo1WithUtp2")] [assembly: AssemblyRequiresTypeRegistration] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class IsUnmanagedAttribute : Attribute { } } [CompilerGenerated] [EditorBrowsable(EditorBrowsableState.Never)] [GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)] internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1 { private struct MonoScriptData { public byte[] FilePathsData; public byte[] TypesData; public int TotalTypes; public int TotalFiles; public bool IsEditorOnly; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static MonoScriptData Get() { MonoScriptData result = default(MonoScriptData); result.FilePathsData = new byte[11161] { 0, 0, 0, 1, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 92, 78, 101, 116, 119, 111, 114, 107, 67, 111, 110, 102, 105, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 92, 78, 101, 116, 119, 111, 114, 107, 67, 111, 110, 115, 116, 97, 110, 116, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 92, 78, 101, 116, 119, 111, 114, 107, 80, 114, 101, 102, 97, 98, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 92, 78, 101, 116, 119, 111, 114, 107, 80, 114, 101, 102, 97, 98, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 92, 78, 101, 116, 119, 111, 114, 107, 80, 114, 101, 102, 97, 98, 115, 76, 105, 115, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 92, 78, 101, 116, 119, 111, 114, 107, 67, 108, 105, 101, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 104, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 92, 78, 101, 116, 119, 111, 114, 107, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 92, 80, 101, 110, 100, 105, 110, 103, 67, 108, 105, 101, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 114, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 70, 97, 99, 116, 111, 114, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 114, 101, 92, 78, 101, 116, 119, 111, 114, 107, 66, 101, 104, 97, 118, 105, 111, 117, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 114, 101, 92, 78, 101, 116, 119, 111, 114, 107, 66, 101, 104, 97, 118, 105, 111, 117, 114, 85, 112, 100, 97, 116, 101, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 114, 101, 92, 78, 101, 116, 119, 111, 114, 107, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 114, 101, 92, 78, 101, 116, 119, 111, 114, 107, 79, 98, 106, 101, 99, 116, 46, 99, 115, 0, 0, 0, 9, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 114, 101, 92, 78, 101, 116, 119, 111, 114, 107, 85, 112, 100, 97, 116, 101, 76, 111, 111, 112, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 102, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 99, 101, 112, 116, 105, 111, 110, 115, 92, 73, 110, 118, 97, 108, 105, 100, 80, 97, 114, 101, 110, 116, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 109, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 99, 101, 112, 116, 105, 111, 110, 115, 92, 78, 101, 116, 119, 111, 114, 107, 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 99, 101, 112, 116, 105, 111, 110, 115, 92, 78, 111, 116, 76, 105, 115, 116, 101, 110, 105, 110, 103, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 99, 101, 112, 116, 105, 111, 110, 115, 92, 78, 111, 116, 83, 101, 114, 118, 101, 114, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 99, 101, 112, 116, 105, 111, 110, 115, 92, 83, 112, 97, 119, 110, 83, 116, 97, 116, 101, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 99, 101, 112, 116, 105, 111, 110, 115, 92, 86, 105, 115, 105, 98, 105, 108, 105, 116, 121, 67, 104, 97, 110, 103, 101, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 72, 97, 115, 104, 105, 110, 103, 92, 88, 88, 72, 97, 115, 104, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 76, 111, 103, 103, 105, 110, 103, 92, 78, 101, 116, 119, 111, 114, 107, 76, 111, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 67, 117, 115, 116, 111, 109, 77, 101, 115, 115, 97, 103, 101, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 68, 101, 102, 97, 117, 108, 116, 77, 101, 115, 115, 97, 103, 101, 83, 101, 110, 100, 101, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 68, 101, 102, 101, 114, 114, 101, 100, 77, 101, 115, 115, 97, 103, 101, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 102, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 68, 105, 115, 99, 111, 110, 110, 101, 99, 116, 82, 101, 97, 115, 111, 110, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 109, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 73, 68, 101, 102, 101, 114, 114, 101, 100, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 73, 76, 80, 80, 77, 101, 115, 115, 97, 103, 101, 80, 114, 111, 118, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 73, 78, 101, 116, 119, 111, 114, 107, 72, 111, 111, 107, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 94, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 73, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 102, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 73, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 80, 114, 111, 118, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 73, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 83, 101, 110, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 110, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 67, 104, 97, 110, 103, 101, 79, 119, 110, 101, 114, 115, 104, 105, 112, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 113, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 65, 112, 112, 114, 111, 118, 101, 100, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 112, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 82, 101, 113, 117, 101, 115, 116, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 107, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 67, 114, 101, 97, 116, 101, 79, 98, 106, 101, 99, 116, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 108, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 68, 101, 115, 116, 114, 111, 121, 79, 98, 106, 101, 99, 116, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 103, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 77, 101, 115, 115, 97, 103, 101, 77, 101, 116, 97, 100, 97, 116, 97, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 78, 97, 109, 101, 100, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 115, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 68, 101, 108, 116, 97, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 80, 97, 114, 101, 110, 116, 83, 121, 110, 99, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 82, 112, 99, 77, 101, 115, 115, 97, 103, 101, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 83, 99, 101, 110, 101, 69, 118, 101, 110, 116, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 104, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 83, 101, 114, 118, 101, 114, 76, 111, 103, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 103, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 84, 105, 109, 101, 83, 121, 110, 99, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 102, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 77, 101, 115, 115, 97, 103, 101, 115, 92, 85, 110, 110, 97, 109, 101, 100, 77, 101, 115, 115, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 78, 101, 116, 119, 111, 114, 107, 66, 97, 116, 99, 104, 72, 101, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 78, 101, 116, 119, 111, 114, 107, 67, 111, 110, 116, 101, 120, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 78, 101, 116, 119, 111, 114, 107, 77, 97, 110, 97, 103, 101, 114, 72, 111, 111, 107, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 72, 101, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 7, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 82, 112, 99, 65, 116, 116, 114, 105, 98, 117, 116, 101, 115, 46, 99, 115, 0, 0, 0, 7, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 115, 97, 103, 105, 110, 103, 92, 82, 112, 99, 80, 97, 114, 97, 109, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 116, 114, 105, 99, 115, 92, 73, 78, 101, 116, 119, 111, 114, 107, 77, 101, 116, 114, 105, 99, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 116, 114, 105, 99, 115, 92, 77, 101, 116, 114, 105, 99, 72, 111, 111, 107, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 116, 114, 105, 99, 115, 92, 78, 101, 116, 119, 111, 114, 107, 77, 101, 116, 114, 105, 99, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 116, 114, 105, 99, 115, 92, 78, 101, 116, 119, 111, 114, 107, 77, 101, 116, 114, 105, 99, 115, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 116, 114, 105, 99, 115, 92, 78, 101, 116, 119, 111, 114, 107, 79, 98, 106, 101, 99, 116, 80, 114, 111, 118, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 116, 114, 105, 99, 115, 92, 78, 117, 108, 108, 78, 101, 116, 119, 111, 114, 107, 77, 101, 116, 114, 105, 99, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 108, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 92, 67, 111, 108, 108, 101, 99, 116, 105, 111, 110, 115, 92, 78, 101, 116, 119, 111, 114, 107, 76, 105, 115, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 92, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 104, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 92, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 66, 97, 115, 101, 46, 99, 115, 0, 0, 0, 18, 0, 0, 0, 113, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 92, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 80, 114, 111, 102, 105, 108, 105, 110, 103, 92, 80, 114, 111, 102, 105, 108, 105, 110, 103, 72, 111, 111, 107, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 111, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 109, 101, 110, 116, 92, 68, 101, 102, 97, 117, 108, 116, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 114, 72, 97, 110, 100, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 109, 101, 110, 116, 92, 73, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 114, 72, 97, 110, 100, 108, 101, 114, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 104, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 109, 101, 110, 116, 92, 78, 101, 116, 119, 111, 114, 107, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 109, 101, 110, 116, 92, 83, 99, 101, 110, 101, 69, 118, 101, 110, 116, 68, 97, 116, 97, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 103, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 109, 101, 110, 116, 92, 83, 99, 101, 110, 101, 69, 118, 101, 110, 116, 80, 114, 111, 103, 114, 101, 115, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 65, 114, 105, 116, 104, 109, 101, 116, 105, 99, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 66, 105, 116, 67, 111, 117, 110, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 66, 105, 116, 82, 101, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 66, 105, 116, 87, 114, 105, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 66, 117, 102, 102, 101, 114, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 66, 117, 102, 102, 101, 114, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 82, 101, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 66, 117, 102, 102, 101, 114, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 87, 114, 105, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 66, 121, 116, 101, 80, 97, 99, 107, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 66, 121, 116, 101, 85, 110, 112, 97, 99, 107, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 94, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 66, 121, 116, 101, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 70, 97, 115, 116, 66, 117, 102, 102, 101, 114, 82, 101, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 8, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 70, 97, 115, 116, 66, 117, 102, 102, 101, 114, 87, 114, 105, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 112, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 70, 111, 114, 99, 101, 78, 101, 116, 119, 111, 114, 107, 83, 101, 114, 105, 97, 108, 105, 122, 101, 66, 121, 77, 101, 109, 99, 112, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 103, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 73, 78, 101, 116, 119, 111, 114, 107, 83, 101, 114, 105, 97, 108, 105, 122, 97, 98, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 108, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 73, 78, 101, 116, 119, 111, 114, 107, 83, 101, 114, 105, 97, 108, 105, 122, 101, 66, 121, 77, 101, 109, 99, 112, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 73, 82, 101, 97, 100, 101, 114, 87, 114, 105, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 108, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 77, 101, 109, 111, 114, 121, 83, 116, 114, 117, 99, 116, 117, 114, 101, 115, 92, 66, 121, 116, 101, 66, 111, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 109, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 77, 101, 109, 111, 114, 121, 83, 116, 114, 117, 99, 116, 117, 114, 101, 115, 92, 85, 73, 110, 116, 70, 108, 111, 97, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 108, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 78, 101, 116, 119, 111, 114, 107, 66, 101, 104, 97, 118, 105, 111, 117, 114, 82, 101, 102, 101, 114, 101, 110, 99, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 92, 78, 101, 116, 119, 111, 114, 107, 79, 98, 106, 101, 99, 116, 82, 101, 102, 101, 114, 101, 110, 99, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 97, 119, 110, 105, 110, 103, 92, 78, 101, 116, 119, 111, 114, 107, 80, 114, 101, 102, 97, 98, 72, 97, 110, 100, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 97, 119, 110, 105, 110, 103, 92, 78, 101, 116, 119, 111, 114, 107, 83, 112, 97, 119, 110, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 97, 119, 110, 105, 110, 103, 92, 82, 101, 108, 101, 97, 115, 101, 100, 78, 101, 116, 119, 111, 114, 107, 73, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 84, 105, 109, 105, 110, 103, 92, 73, 82, 101, 97, 108, 84, 105, 109, 101, 80, 114, 111, 118, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 84, 105, 109, 105, 110, 103, 92, 78, 101, 116, 119, 111, 114, 107, 84, 105, 99, 107, 83, 121, 115, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 84, 105, 109, 105, 110, 103, 92, 78, 101, 116, 119, 111, 114, 107, 84, 105, 109, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 84, 105, 109, 105, 110, 103, 92, 78, 101, 116, 119, 111, 114, 107, 84, 105, 109, 101, 83, 121, 115, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 84, 105, 109, 105, 110, 103, 92, 82, 101, 97, 108, 84, 105, 109, 101, 80, 114, 111, 118, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 92, 78, 101, 116, 119, 111, 114, 107, 84, 114, 97, 110, 115, 112, 111, 114, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 103, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 92, 85, 84, 80, 92, 66, 97, 116, 99, 104, 101, 100, 82, 101, 99, 101, 105, 118, 101, 81, 117, 101, 117, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 92, 85, 84, 80, 92, 66, 97, 116, 99, 104, 101, 100, 83, 101, 110, 100, 81, 117, 101, 117, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 92, 85, 84, 80, 92, 78, 101, 116, 119, 111, 114, 107, 77, 101, 116, 114, 105, 99, 115, 67, 111, 110, 116, 101, 120, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 111, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 92, 85, 84, 80, 92, 78, 101, 116, 119, 111, 114, 107, 77, 101, 116, 114, 105, 99, 115, 80, 105, 112, 101, 108, 105, 110, 101, 83, 116, 97, 103, 101, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 103, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 92, 85, 84, 80, 92, 83, 101, 99, 114, 101, 116, 115, 76, 111, 97, 100, 101, 114, 72, 101, 108, 112, 101, 114, 46, 99, 115, 0, 0, 0, 8, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 110, 101, 116, 99, 111, 100, 101, 46, 103, 97, 109, 101, 111, 98, 106, 101, 99, 116, 115, 64, 49, 46, 54, 46, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 92, 85, 84, 80, 92, 85, 110, 105, 116, 121, 84, 114, 97, 110, 115, 112, 111, 114, 116, 46, 99, 115 }; result.TypesData = new byte[7299] { 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 67, 111, 110, 102, 105, 103, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 67, 111, 110, 115, 116, 97, 110, 116, 115, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 80, 114, 101, 102, 97, 98, 0, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 80, 114, 101, 102, 97, 98, 115, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 80, 114, 101, 102, 97, 98, 115, 76, 105, 115, 116, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 67, 108, 105, 101, 110, 116, 0, 0, 0, 0, 38, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 80, 101, 110, 100, 105, 110, 103, 67, 108, 105, 101, 110, 116, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 67, 111, 109, 112, 111, 110, 101, 110, 116, 70, 97, 99, 116, 111, 114, 121, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 66, 101, 104, 97, 118, 105, 111, 117, 114, 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 66, 101, 104, 97, 118, 105, 111, 117, 114, 85, 112, 100, 97, 116, 101, 114, 0, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 55, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 77, 97, 110, 97, 103, 101, 114, 124, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 65, 112, 112, 114, 111, 118, 97, 108, 82, 101, 115, 112, 111, 110, 115, 101, 0, 0, 0, 0, 54, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 77, 97, 110, 97, 103, 101, 114, 124, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 65, 112, 112, 114, 111, 118, 97, 108, 82, 101, 113, 117, 101, 115, 116, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 79, 98, 106, 101, 99, 116, 0, 0, 0, 0, 39, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 79, 98, 106, 101, 99, 116, 124, 83, 99, 101, 110, 101, 79, 98, 106, 101, 99, 116, 0, 0, 0, 0, 42, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 79, 98, 106, 101, 99, 116, 43, 124, 84, 114, 97, 110, 115, 102, 111, 114, 109, 68, 97, 116, 97, 0, 0, 0, 0, 34, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 78, 101, 116, 119, 111, 114, 107, 85, 112, 100, 97, 116, 101, 83, 121, 115, 116, 101, 109, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 85, 112, 100, 97, 116, 101, 76, 111, 111, 112, 0, 0, 0, 0, 53, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 85, 112, 100, 97, 116, 101, 76, 111, 111, 112, 124, 78, 101, 116, 119, 111, 114, 107, 73, 110, 105, 116, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 0, 0, 0, 0, 50, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 85, 112, 100, 97, 116, 101, 76, 111, 111, 112, 124, 78, 101, 116, 119, 111, 114, 107, 69, 97, 114, 108, 121, 85, 112, 100, 97, 116, 101, 0, 0, 0, 0, 50, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 85, 112, 100, 97, 116, 101, 76, 111, 111, 112, 124, 78, 101, 116, 119, 111, 114, 107, 70, 105, 120, 101, 100, 85, 112, 100, 97, 116, 101, 0, 0, 0, 0, 48, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 85, 112, 100, 97, 116, 101, 76, 111, 111, 112, 124, 78, 101, 116, 119, 111, 114, 107, 80, 114, 101, 85, 112, 100, 97, 116, 101, 0, 0, 0, 0, 45, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 85, 112, 100, 97, 116, 101, 76, 111, 111, 112, 124, 78, 101, 116, 119, 111, 114, 107, 85, 112, 100, 97, 116, 101, 0, 0, 0, 0, 52, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 85, 112, 100, 97, 116, 101, 76, 111, 111, 112, 124, 78, 101, 116, 119, 111, 114, 107, 80, 114, 101, 76, 97, 116, 101, 85, 112, 100, 97, 116, 101, 0, 0, 0, 0, 53, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 85, 112, 100, 97, 116, 101, 76, 111, 111, 112, 124, 78, 101, 116, 119, 111, 114, 107, 80, 111, 115, 116, 76, 97, 116, 101, 85, 112, 100, 97, 116, 101, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 110, 118, 97, 108, 105, 100, 80, 97, 114, 101, 110, 116, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 43, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 111, 116, 76, 105, 115, 116, 101, 110, 105, 110, 103, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 111, 116, 83, 101, 114, 118, 101, 114, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 83, 112, 97, 119, 110, 83, 116, 97, 116, 101, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 110, 118, 97, 108, 105, 100, 67, 104, 97, 110, 110, 101, 108, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 39, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 86, 105, 115, 105, 98, 105, 108, 105, 116, 121, 67, 104, 97, 110, 103, 101, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 20, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 88, 88, 72, 97, 115, 104, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 76, 111, 103, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 67, 117, 115, 116, 111, 109, 77, 101, 115, 115, 97, 103, 105, 110, 103, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 34, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 68, 101, 102, 97, 117, 108, 116, 77, 101, 115, 115, 97, 103, 101, 83, 101, 110, 100, 101, 114, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 68, 101, 102, 101, 114, 114, 101, 100, 77, 101, 115, 115, 97, 103, 101, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 48, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 68, 101, 102, 101, 114, 114, 101, 100, 77, 101, 115, 115, 97, 103, 101, 77, 97, 110, 97, 103, 101, 114, 124, 84, 114, 105, 103, 103, 101, 114, 68, 97, 116, 97, 0, 0, 0, 0, 48, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 68, 101, 102, 101, 114, 114, 101, 100, 77, 101, 115, 115, 97, 103, 101, 77, 97, 110, 97, 103, 101, 114, 124, 84, 114, 105, 103, 103, 101, 114, 73, 110, 102, 111, 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 68, 105, 115, 99, 111, 110, 110, 101, 99, 116, 82, 101, 97, 115, 111, 110, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 44, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 68, 101, 102, 101, 114, 114, 101, 100, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 76, 80, 80, 77, 101, 115, 115, 97, 103, 101, 80, 114, 111, 118, 105, 100, 101, 114, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 78, 101, 116, 119, 111, 114, 107, 72, 111, 111, 107, 115, 0, 0, 0, 0, 29, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 80, 114, 111, 118, 105, 100, 101, 114, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 83, 101, 110, 100, 101, 114, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 67, 104, 97, 110, 103, 101, 79, 119, 110, 101, 114, 115, 104, 105, 112, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 39, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 65, 112, 112, 114, 111, 118, 101, 100, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 38, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 82, 101, 113, 117, 101, 115, 116, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 67, 114, 101, 97, 116, 101, 79, 98, 106, 101, 99, 116, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 34, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 68, 101, 115, 116, 114, 111, 121, 79, 98, 106, 101, 99, 116, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 77, 101, 115, 115, 97, 103, 101, 86, 101, 114, 115, 105, 111, 110, 68, 97, 116, 97, 0, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 97, 109, 101, 100, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 41, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 68, 101, 108, 116, 97, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 80, 97, 114, 101, 110, 116, 83, 121, 110, 99, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 82, 112, 99, 77, 101, 115, 115, 97, 103, 101, 72, 101, 108, 112, 101, 114, 115, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 82, 112, 99, 77, 101, 116, 97, 100, 97, 116, 97, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 83, 101, 114, 118, 101, 114, 82, 112, 99, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 67, 108, 105, 101, 110, 116, 82, 112, 99, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 83, 99, 101, 110, 101, 69, 118, 101, 110, 116, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 83, 101, 114, 118, 101, 114, 76, 111, 103, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 29, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 84, 105, 109, 101, 83, 121, 110, 99, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 85, 110, 110, 97, 109, 101, 100, 77, 101, 115, 115, 97, 103, 101, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 66, 97, 116, 99, 104, 72, 101, 97, 100, 101, 114, 0, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 67, 111, 110, 116, 101, 120, 116, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 77, 97, 110, 97, 103, 101, 114, 72, 111, 111, 107, 115, 0, 0, 0, 0, 34, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 72, 101, 97, 100, 101, 114, 0, 0, 0, 0, 43, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 72, 97, 110, 100, 108, 101, 114, 78, 111, 116, 82, 101, 103, 105, 115, 116, 101, 114, 101, 100, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 46, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 110, 118, 97, 108, 105, 100, 77, 101, 115, 115, 97, 103, 101, 83, 116, 114, 117, 99, 116, 117, 114, 101, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 52, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 77, 97, 110, 97, 103, 101, 114, 124, 82, 101, 99, 101, 105, 118, 101, 81, 117, 101, 117, 101, 73, 116, 101, 109, 0, 0, 0, 0, 49, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 77, 97, 110, 97, 103, 101, 114, 124, 83, 101, 110, 100, 81, 117, 101, 117, 101, 73, 116, 101, 109, 0, 0, 0, 0, 54, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 77, 97, 110, 97, 103, 101, 114, 124, 77, 101, 115, 115, 97, 103, 101, 87, 105, 116, 104, 72, 97, 110, 100, 108, 101, 114, 0, 0, 0, 0, 54, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 77, 101, 115, 115, 97, 103, 101, 77, 97, 110, 97, 103, 101, 114, 124, 80, 111, 105, 110, 116, 101, 114, 76, 105, 115, 116, 87, 114, 97, 112, 112, 101, 114, 0, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 82, 112, 99, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 83, 101, 114, 118, 101, 114, 82, 112, 99, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 67, 108, 105, 101, 110, 116, 82, 112, 99, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 83, 101, 114, 118, 101, 114, 82, 112, 99, 83, 101, 110, 100, 80, 97, 114, 97, 109, 115, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 83, 101, 114, 118, 101, 114, 82, 112, 99, 82, 101, 99, 101, 105, 118, 101, 80, 97, 114, 97, 109, 115, 0, 0, 0, 0, 29, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 83, 101, 114, 118, 101, 114, 82, 112, 99, 80, 97, 114, 97, 109, 115, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 67, 108, 105, 101, 110, 116, 82, 112, 99, 83, 101, 110, 100, 80, 97, 114, 97, 109, 115, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 67, 108, 105, 101, 110, 116, 82, 112, 99, 82, 101, 99, 101, 105, 118, 101, 80, 97, 114, 97, 109, 115, 0, 0, 0, 0, 29, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 67, 108, 105, 101, 110, 116, 82, 112, 99, 80, 97, 114, 97, 109, 115, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 95, 95, 82, 112, 99, 80, 97, 114, 97, 109, 115, 0, 0, 0, 0, 29, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 78, 101, 116, 119, 111, 114, 107, 77, 101, 116, 114, 105, 99, 115, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 77, 101, 116, 114, 105, 99, 72, 111, 111, 107, 115, 0, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 77, 101, 116, 114, 105, 99, 115, 0, 0, 0, 0, 29, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 99, 111, 100, 101, 79, 98, 115, 101, 114, 118, 101, 114, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 77, 101, 116, 114, 105, 99, 115, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 79, 98, 106, 101, 99, 116, 80, 114, 111, 118, 105, 100, 101, 114, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 117, 108, 108, 78, 101, 116, 119, 111, 114, 107, 77, 101, 116, 114, 105, 99, 115, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 76, 105, 115, 116, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 76, 105, 115, 116, 69, 118, 101, 110, 116, 0, 0, 0, 0, 29, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 66, 97, 115, 101, 0, 0, 0, 0, 40, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 29, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 83, 104, 111, 114, 116, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 85, 115, 104, 111, 114, 116, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 110, 116, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 85, 105, 110, 116, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 76, 111, 110, 103, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 29, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 85, 108, 111, 110, 103, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 85, 110, 109, 97, 110, 97, 103, 101, 100, 84, 121, 112, 101, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 38, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 85, 110, 109, 97, 110, 97, 103, 101, 100, 65, 114, 114, 97, 121, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 70, 105, 120, 101, 100, 83, 116, 114, 105, 110, 103, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 40, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 70, 105, 120, 101, 100, 83, 116, 114, 105, 110, 103, 65, 114, 114, 97, 121, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 52, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 85, 110, 109, 97, 110, 97, 103, 101, 100, 78, 101, 116, 119, 111, 114, 107, 83, 101, 114, 105, 97, 108, 105, 122, 97, 98, 108, 101, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 57, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 85, 110, 109, 97, 110, 97, 103, 101, 100, 78, 101, 116, 119, 111, 114, 107, 83, 101, 114, 105, 97, 108, 105, 122, 97, 98, 108, 101, 65, 114, 114, 97, 121, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 50, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 77, 97, 110, 97, 103, 101, 100, 78, 101, 116, 119, 111, 114, 107, 83, 101, 114, 105, 97, 108, 105, 122, 97, 98, 108, 101, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 46, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 85, 115, 101, 114, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 70, 97, 108, 108, 98, 97, 99, 107, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 47, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 84, 121, 112, 101, 115, 0, 0, 0, 0, 42, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 86, 97, 114, 105, 97, 98, 108, 101, 83, 101, 114, 105, 97, 108, 105, 122, 97, 116, 105, 111, 110, 0, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 80, 114, 111, 102, 105, 108, 105, 110, 103, 72, 111, 111, 107, 115, 0, 0, 0, 0, 40, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 68, 101, 102, 97, 117, 108, 116, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 114, 72, 97, 110, 100, 108, 101, 114, 0, 0, 0, 0, 51, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 68, 101, 102, 97, 117, 108, 116, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 114, 72, 97, 110, 100, 108, 101, 114, 124, 83, 99, 101, 110, 101, 69, 110, 116, 114, 121, 0, 0, 0, 0, 34, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 114, 72, 97, 110, 100, 108, 101, 114, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 83, 99, 101, 110, 101, 69, 118, 101, 110, 116, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 57, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 114, 124, 83, 99, 101, 110, 101, 85, 110, 108, 111, 97, 100, 69, 118, 101, 110, 116, 72, 97, 110, 100, 108, 101, 114, 0, 0, 0, 0, 59, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 78, 101, 116, 119, 111, 114, 107, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 114, 124, 68, 101, 102, 101, 114, 114, 101, 100, 79, 98, 106, 101, 99, 116, 115, 77, 111, 118, 101, 100, 69, 118, 101, 110, 116, 0, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 83, 99, 101, 110, 101, 69, 118, 101, 110, 116, 68, 97, 116, 97, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 83, 99, 101, 110, 101, 69, 118, 101, 110, 116, 80, 114, 111, 103, 114, 101, 115, 115, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 65, 114, 105, 116, 104, 109, 101, 116, 105, 99, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 66, 105, 116, 67, 111, 117, 110, 116, 101, 114, 0, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 66, 105, 116, 82, 101, 97, 100, 101, 114, 0, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 66, 105, 116, 87, 114, 105, 116, 101, 114, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 66, 117, 102, 102, 101, 114, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 66, 117, 102, 102, 101, 114, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 82, 101, 97, 100, 101, 114, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 66, 117, 102, 102, 101, 114, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 87, 114, 105, 116, 101, 114, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 66, 121, 116, 101, 80, 97, 99, 107, 101, 114, 0, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 66, 121, 116, 101, 85, 110, 112, 97, 99, 107, 101, 114, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 66, 121, 116, 101, 85, 116, 105, 108, 105, 116, 121, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 70, 97, 115, 116, 66, 117, 102, 102, 101, 114, 82, 101, 97, 100, 101, 114, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 124, 82, 101, 97, 100, 101, 114, 72, 97, 110, 100, 108, 101, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 70, 97, 115, 116, 66, 117, 102, 102, 101, 114, 87, 114, 105, 116, 101, 114, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 124, 87, 114, 105, 116, 101, 114, 72, 97, 110, 100, 108, 101, 0, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 124, 70, 111, 114, 80, 114, 105, 109, 105, 116, 105, 118, 101, 115, 0, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 124, 70, 111, 114, 69, 110, 117, 109, 115, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 124, 70, 111, 114, 83, 116, 114, 117, 99, 116, 115, 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 124, 70, 111, 114, 78, 101, 116, 119, 111, 114, 107, 83, 101, 114, 105, 97, 108, 105, 122, 97, 98, 108, 101, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 124, 70, 111, 114, 70, 105, 120, 101, 100, 83, 116, 114, 105, 110, 103, 115, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 124, 70, 111, 114, 71, 101, 110, 101, 114, 105, 99, 0, 0, 0, 0, 43, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 70, 111, 114, 99, 101, 78, 101, 116, 119, 111, 114, 107, 83, 101, 114, 105, 97, 108, 105, 122, 101, 66, 121, 77, 101, 109, 99, 112, 121, 0, 0, 0, 0, 34, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 78, 101, 116, 119, 111, 114, 107, 83, 101, 114, 105, 97, 108, 105, 122, 97, 98, 108, 101, 0, 0, 0, 0, 39, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 78, 101, 116, 119, 111, 114, 107, 83, 101, 114, 105, 97, 108, 105, 122, 101, 66, 121, 77, 101, 109, 99, 112, 121, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 82, 101, 97, 100, 101, 114, 87, 114, 105, 116, 101, 114, 0, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 66, 121, 116, 101, 66, 111, 111, 108, 0, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 85, 73, 110, 116, 70, 108, 111, 97, 116, 0, 0, 0, 0, 39, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 66, 101, 104, 97, 118, 105, 111, 117, 114, 82, 101, 102, 101, 114, 101, 110, 99, 101, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 79, 98, 106, 101, 99, 116, 82, 101, 102, 101, 114, 101, 110, 99, 101, 0, 0, 0, 0, 43, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 78, 101, 116, 119, 111, 114, 107, 80, 114, 101, 102, 97, 98, 73, 110, 115, 116, 97, 110, 99, 101, 72, 97, 110, 100, 108, 101, 114, 0, 0, 0, 0, 34, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 80, 114, 101, 102, 97, 98, 72, 97, 110, 100, 108, 101, 114, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 83, 112, 97, 119, 110, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 82, 101, 108, 101, 97, 115, 101, 100, 78, 101, 116, 119, 111, 114, 107, 73, 100, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 73, 82, 101, 97, 108, 84, 105, 109, 101, 80, 114, 111, 118, 105, 100, 101, 114, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 84, 105, 99, 107, 83, 121, 115, 116, 101, 109, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 84, 105, 109, 101, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 84, 105, 109, 101, 83, 121, 115, 116, 101, 109, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 82, 101, 97, 108, 84, 105, 109, 101, 80, 114, 111, 118, 105, 100, 101, 114, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 124, 78, 101, 116, 119, 111, 114, 107, 84, 114, 97, 110, 115, 112, 111, 114, 116, 0, 0, 0, 0, 48, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 124, 66, 97, 116, 99, 104, 101, 100, 82, 101, 99, 101, 105, 118, 101, 81, 117, 101, 117, 101, 0, 0, 0, 0, 45, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 124, 66, 97, 116, 99, 104, 101, 100, 83, 101, 110, 100, 81, 117, 101, 117, 101, 0, 0, 0, 0, 50, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 124, 78, 101, 116, 119, 111, 114, 107, 77, 101, 116, 114, 105, 99, 115, 67, 111, 110, 116, 101, 120, 116, 0, 0, 0, 0, 56, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 124, 78, 101, 116, 119, 111, 114, 107, 77, 101, 116, 114, 105, 99, 115, 80, 105, 112, 101, 108, 105, 110, 101, 83, 116, 97, 103, 101, 0, 0, 0, 0, 48, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 124, 83, 101, 99, 114, 101, 116, 115, 76, 111, 97, 100, 101, 114, 72, 101, 108, 112, 101, 114, 0, 0, 0, 0, 62, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 46, 83, 101, 99, 114, 101, 116, 115, 76, 111, 97, 100, 101, 114, 72, 101, 108, 112, 101, 114, 124, 83, 101, 114, 118, 101, 114, 83, 101, 99, 114, 101, 116, 115, 0, 0, 0, 0, 62, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 46, 83, 101, 99, 114, 101, 116, 115, 76, 111, 97, 100, 101, 114, 72, 101, 108, 112, 101, 114, 124, 67, 108, 105, 101, 110, 116, 83, 101, 99, 114, 101, 116, 115, 0, 0, 0, 0, 60, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 124, 73, 78, 101, 116, 119, 111, 114, 107, 83, 116, 114, 101, 97, 109, 68, 114, 105, 118, 101, 114, 67, 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 0, 0, 0, 0, 43, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 124, 69, 114, 114, 111, 114, 85, 116, 105, 108, 105, 116, 105, 101, 115, 0, 0, 0, 0, 43, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 124, 85, 110, 105, 116, 121, 84, 114, 97, 110, 115, 112, 111, 114, 116, 0, 0, 0, 0, 65, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 46, 85, 110, 105, 116, 121, 84, 114, 97, 110, 115, 112, 111, 114, 116, 124, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 65, 100, 100, 114, 101, 115, 115, 68, 97, 116, 97, 0, 0, 0, 0, 63, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 46, 85, 110, 105, 116, 121, 84, 114, 97, 110, 115, 112, 111, 114, 116, 124, 83, 105, 109, 117, 108, 97, 116, 111, 114, 80, 97, 114, 97, 109, 101, 116, 101, 114, 115, 0, 0, 0, 0, 59, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 46, 85, 110, 105, 116, 121, 84, 114, 97, 110, 115, 112, 111, 114, 116, 124, 80, 97, 99, 107, 101, 116, 76, 111, 115, 115, 67, 97, 99, 104, 101, 0, 0, 0, 0, 66, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 46, 85, 110, 105, 116, 121, 84, 114, 97, 110, 115, 112, 111, 114, 116, 124, 83, 101, 110, 100, 66, 97, 116, 99, 104, 101, 100, 77, 101, 115, 115, 97, 103, 101, 115, 74, 111, 98, 0, 0, 0, 0, 54, 85, 110, 105, 116, 121, 46, 78, 101, 116, 99, 111, 100, 101, 46, 84, 114, 97, 110, 115, 112, 111, 114, 116, 115, 46, 85, 84, 80, 46, 85, 110, 105, 116, 121, 84, 114, 97, 110, 115, 112, 111, 114, 116, 124, 83, 101, 110, 100, 84, 97, 114, 103, 101, 116 }; result.TotalFiles = 104; result.TotalTypes = 177; result.IsEditorOnly = false; return result; } } namespace Unity.Netcode { public enum HashSize : byte { VarIntFourBytes, VarIntEightBytes } [Serializable] public class NetworkConfig { [Tooltip("Use this to make two builds incompatible with each other")] public ushort ProtocolVersion; [Tooltip("The NetworkTransport to use")] public NetworkTransport NetworkTransport; [Tooltip("When set, NetworkManager will automatically create and spawn the assigned player prefab. This can be overridden by adding it to the NetworkPrefabs list and selecting override.")] public GameObject PlayerPrefab; [SerializeField] public NetworkPrefabs Prefabs = new NetworkPrefabs(); [Tooltip("The tickrate. This value controls how often netcode runs user code and sends out data. The value is in 'ticks per seconds' which means a value of 50 will result in 50 ticks being executed per second or a fixed delta time of 0.02.")] public uint TickRate = 30u; [Tooltip("The amount of seconds for the server to wait for the connection approval handshake to complete before the client is disconnected")] public int ClientConnectionBufferTimeout = 10; [Tooltip("Whether or not to force clients to be approved before they connect")] public bool ConnectionApproval; [Tooltip("The connection data sent along with connection requests")] public byte[] ConnectionData = new byte[0]; [Tooltip("Enable this to re-sync the NetworkTime after the initial sync")] public bool EnableTimeResync; [Tooltip("The amount of seconds between re-syncs of NetworkTime, if enabled")] public int TimeResyncInterval = 30; [Tooltip("Ensures that NetworkVariables can be read even if a client accidental writes where its not allowed to. This will cost some CPU time and bandwidth")] public bool EnsureNetworkVariableLengthSafety; [Tooltip("Enables scene management. This will allow network scene switches and automatic scene difference corrections upon connect.\nSoftSynced scene objects wont work with this disabled. That means that disabling SceneManagement also enables PrefabSync.")] public bool EnableSceneManagement = true; [Tooltip("Whether or not the netcode should check for differences in the prefab lists at connection")] public bool ForceSamePrefabs = true; [Tooltip("If true, NetworkIds will be reused after the NetworkIdRecycleDelay")] public bool RecycleNetworkIds = true; [Tooltip("The amount of seconds a NetworkId has to unused in order for it to be reused")] public float NetworkIdRecycleDelay = 120f; [Tooltip("The maximum amount of bytes to use for RPC messages.")] public HashSize RpcHashSize; [Tooltip("The amount of seconds to wait for all clients to load or unload a requested scene (only when EnableSceneManagement is enabled)")] public int LoadSceneTimeOut = 120; [Tooltip("The amount of time a message should be buffered if the asset or object needed to process it doesn't exist yet. If the asset is not added/object is not spawned within this time, it will be dropped")] public float SpawnTimeout = 1f; public bool EnableNetworkLogs = true; public const int RttAverageSamples = 5; public const int RttWindowSize = 64; private ulong? m_ConfigHash; [NonSerialized] private bool m_DidWarnOldPrefabList; [FormerlySerializedAs("NetworkPrefabs")] [SerializeField] internal List<NetworkPrefab> OldPrefabList; public string ToBase64() { FastBufferWriter fastBufferWriter = new FastBufferWriter(1024, (Allocator)2); using (fastBufferWriter) { fastBufferWriter.WriteValueSafe(in ProtocolVersion, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in TickRate, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in ClientConnectionBufferTimeout, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in ConnectionApproval, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in LoadSceneTimeOut, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in EnableTimeResync, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in EnsureNetworkVariableLengthSafety, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in RpcHashSize, default(FastBufferWriter.ForEnums)); fastBufferWriter.WriteValueSafe(in ForceSamePrefabs, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in EnableSceneManagement, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in RecycleNetworkIds, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in NetworkIdRecycleDelay, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in EnableNetworkLogs, default(FastBufferWriter.ForPrimitives)); return Convert.ToBase64String(fastBufferWriter.ToArray()); } } public void FromBase64(string base64) { byte[] buffer = Convert.FromBase64String(base64); using FastBufferReader fastBufferReader = new FastBufferReader(buffer, (Allocator)2); using (fastBufferReader) { fastBufferReader.ReadValueSafe(out ProtocolVersion, default(FastBufferWriter.ForPrimitives)); fastBufferReader.ReadValueSafe(out TickRate, default(FastBufferWriter.ForPrimitives)); fastBufferReader.ReadValueSafe(out ClientConnectionBufferTimeout, default(FastBufferWriter.ForPrimitives)); fastBufferReader.ReadValueSafe(out ConnectionApproval, default(FastBufferWriter.ForPrimitives)); fastBufferReader.ReadValueSafe(out LoadSceneTimeOut, default(FastBufferWriter.ForPrimitives)); fastBufferReader.ReadValueSafe(out EnableTimeResync, default(FastBufferWriter.ForPrimitives)); fastBufferReader.ReadValueSafe(out EnsureNetworkVariableLengthSafety, default(FastBufferWriter.ForPrimitives)); fastBufferReader.ReadValueSafe(out RpcHashSize, default(FastBufferWriter.ForEnums)); fastBufferReader.ReadValueSafe(out ForceSamePrefabs, default(FastBufferWriter.ForPrimitives)); fastBufferReader.ReadValueSafe(out EnableSceneManagement, default(FastBufferWriter.ForPrimitives)); fastBufferReader.ReadValueSafe(out RecycleNetworkIds, default(FastBufferWriter.ForPrimitives)); fastBufferReader.ReadValueSafe(out NetworkIdRecycleDelay, default(FastBufferWriter.ForPrimitives)); fastBufferReader.ReadValueSafe(out EnableNetworkLogs, default(FastBufferWriter.ForPrimitives)); } } internal void ClearConfigHash() { m_ConfigHash = null; } public ulong GetConfig(bool cache = true) { if (m_ConfigHash.HasValue && cache) { return m_ConfigHash.Value; } FastBufferWriter fastBufferWriter = new FastBufferWriter(1024, (Allocator)2, int.MaxValue); using (fastBufferWriter) { fastBufferWriter.WriteValueSafe(in ProtocolVersion, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe("15.0.0"); if (ForceSamePrefabs) { foreach (KeyValuePair<uint, NetworkPrefab> item in Prefabs.NetworkPrefabOverrideLinks.OrderBy((KeyValuePair<uint, NetworkPrefab> x) => x.Key)) { uint value = item.Key; fastBufferWriter.WriteValueSafe(in value, default(FastBufferWriter.ForPrimitives)); } } fastBufferWriter.WriteValueSafe(in TickRate, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in ConnectionApproval, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in ForceSamePrefabs, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in EnableSceneManagement, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in EnsureNetworkVariableLengthSafety, default(FastBufferWriter.ForPrimitives)); fastBufferWriter.WriteValueSafe(in RpcHashSize, default(FastBufferWriter.ForEnums)); if (cache) { m_ConfigHash = fastBufferWriter.ToArray().Hash64(); return m_ConfigHash.Value; } return fastBufferWriter.ToArray().Hash64(); } } public bool CompareConfig(ulong hash) { return hash == GetConfig(); } internal void InitializePrefabs() { if (HasOldPrefabList()) { MigrateOldNetworkPrefabsToNetworkPrefabsList(); } Prefabs.Initialize(); } private void WarnOldPrefabList() { if (!m_DidWarnOldPrefabList) { Debug.LogWarning((object)"Using Legacy Network Prefab List. Consider Migrating."); m_DidWarnOldPrefabList = true; } } internal bool HasOldPrefabList() { List<NetworkPrefab> oldPrefabList = OldPrefabList; if (oldPrefabList == null) { return false; } return oldPrefabList.Count > 0; } internal NetworkPrefabsList MigrateOldNetworkPrefabsToNetworkPrefabsList() { if (OldPrefabList == null || OldPrefabList.Count == 0) { return null; } if (Prefabs == null) { throw new Exception("Prefabs field is null."); } Prefabs.NetworkPrefabsLists.Add(ScriptableObject.CreateInstance<NetworkPrefabsList>()); List<NetworkPrefab> oldPrefabList = OldPrefabList; if (oldPrefabList != null && oldPrefabList.Count > 0) { foreach (NetworkPrefab oldPrefab in OldPrefabList) { Prefabs.NetworkPrefabsLists[Prefabs.NetworkPrefabsLists.Count - 1].Add(oldPrefab); } } OldPrefabList = null; return Prefabs.NetworkPrefabsLists[Prefabs.NetworkPrefabsLists.Count - 1]; } } internal static class NetworkConstants { internal const string PROTOCOL_VERSION = "15.0.0"; } public enum NetworkPrefabOverride { None, Prefab, Hash } [Serializable] public class NetworkPrefab { public NetworkPrefabOverride Override; public GameObject Prefab; public GameObject SourcePrefabToOverride; public uint SourceHashToOverride; public GameObject OverridingTargetPrefab; public uint SourcePrefabGlobalObjectIdHash { get { switch (Override) { case NetworkPrefabOverride.None: { NetworkObject networkObject2 = default(NetworkObject); if ((Object)(object)Prefab != (Object)null && Prefab.TryGetComponent<NetworkObject>(ref networkObject2)) { return networkObject2.GlobalObjectIdHash; } throw new InvalidOperationException("Prefab field is not set or is not a NetworkObject"); } case NetworkPrefabOverride.Prefab: { NetworkObject networkObject = default(NetworkObject); if ((Object)(object)SourcePrefabToOverride != (Object)null && SourcePrefabToOverride.TryGetComponent<NetworkObject>(ref networkObject)) { return networkObject.GlobalObjectIdHash; } throw new InvalidOperationException("Source Prefab field is not set or is not a NetworkObject"); } case NetworkPrefabOverride.Hash: return SourceHashToOverride; default: throw new ArgumentOutOfRangeException(); } } } public uint TargetPrefabGlobalObjectIdHash { get { switch (Override) { case NetworkPrefabOverride.None: return 0u; case NetworkPrefabOverride.Prefab: case NetworkPrefabOverride.Hash: { NetworkObject networkObject = default(NetworkObject); if ((Object)(object)OverridingTargetPrefab != (Object)null && OverridingTargetPr
plugins/thememermonkey-SkibidiBoombox/SkibidiBoombox.dll
Decompiled 2 years agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using LCSoundTool; using SkibidiBoombox.Patches; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("SkibidiBoombox")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("SkibidiBoombox")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("ac5b752d-5b22-4448-b21f-75ac11a28e01")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace SkibidiBoombox { [BepInPlugin("com.thememermonkey.skibidiboombox", "Skibidi Boombox", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class PluginBase : BaseUnityPlugin { private const string PLUGIN_GUID = "com.thememermonkey.skibidiboombox"; private const string PLUGIN_NAME = "Skibidi Boombox"; private const string PLUGIN_VERSION = "1.0.0"; private readonly Harmony harmony = new Harmony("com.thememermonkey.skibidiboombox"); private static PluginBase instance; internal static AudioClip skibidiSong; public static ManualLogSource logSource; private void Awake() { if ((Object)(object)instance == (Object)null) { instance = this; } logSource = Logger.CreateLogSource("com.thememermonkey.skibidiboombox"); logSource.LogInfo((object)"Plugin com.thememermonkey.skibidiboombox loaded!"); harmony.PatchAll(typeof(BoomboxMusicPatch)); skibidiSong = SoundTool.GetAudioClip("thememermonkey-SkibidiBoombox", "Audios", "skibidibopsong.wav"); logSource.LogInfo((object)"Plugin com.thememermonkey.skibidiboombox added skibidi bop song!"); } } } namespace SkibidiBoombox.Patches { internal class BoomboxMusicPatch { [HarmonyPatch(typeof(BoomboxItem), "Start")] [HarmonyPostfix] public static void InsertSong(BoomboxItem __instance) { AudioClip[] musicAudios = __instance.musicAudios; __instance.musicAudios = (AudioClip[])(object)new AudioClip[musicAudios.Length + 1]; for (int i = 0; i < musicAudios.Length; i++) { __instance.musicAudios[i] = musicAudios[i]; } __instance.musicAudios[__instance.musicAudios.Length - 1] = PluginBase.skibidiSong; PluginBase.logSource.LogDebug((object)$"Patched {__instance} with 1 new music track!"); } } }
plugins/tinyhoot-ShipLobby/ShipLobby/ShipLobby.dll
Decompiled 2 years agousing System; using System.Collections; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("ShipLobby")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyProduct("ShipLobby")] [assembly: AssemblyCopyright("Copyright © tinyhoot 2023")] [assembly: ComVisible(false)] [assembly: AssemblyFileVersion("1.0.2")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.2.0")] [module: UnverifiableCode] namespace ShipLobby { [BepInPlugin("com.github.tinyhoot.ShipLobby", "ShipLobby", "1.0.2")] internal class ShipLobby : BaseUnityPlugin { public const string GUID = "com.github.tinyhoot.ShipLobby"; public const string NAME = "ShipLobby"; public const string VERSION = "1.0.2"; internal static ManualLogSource Log; private void Awake() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) Log = ((BaseUnityPlugin)this).Logger; new Harmony("com.github.tinyhoot.ShipLobby").PatchAll(Assembly.GetExecutingAssembly()); } } } namespace ShipLobby.Patches { [HarmonyPatch] internal class GameNetworkManagerPatcher { private static QuickMenuManager _quickMenuManager; [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "Singleton_OnClientConnectedCallback")] private static void LogConnect() { ShipLobby.Log.LogDebug((object)"Player connected."); } [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "Singleton_OnClientDisconnectCallback")] private static void LogDisconnect() { ShipLobby.Log.LogDebug((object)"Player disconnected."); } [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "ConnectionApproval")] private static void FixConnectionApproval(GameNetworkManager __instance, ConnectionApprovalResponse response) { if (!response.Approved && !(response.Reason != "Game has already started!") && __instance.gameHasStarted && StartOfRound.Instance.inShipPhase) { ShipLobby.Log.LogDebug((object)"Approving incoming late connection."); response.Reason = ""; response.Approved = true; } } [HarmonyPostfix] [HarmonyPatch(typeof(QuickMenuManager), "InviteFriendsButton")] private static void FixFriendInviteButton() { if (GameNetworkManager.Instance.gameHasStarted && StartOfRound.Instance.inShipPhase) { GameNetworkManager.Instance.InviteFriendsUI(); } } [HarmonyPrefix] [HarmonyPatch(typeof(GameNetworkManager), "LeaveLobbyAtGameStart")] private static bool PreventSteamLobbyLeaving(GameNetworkManager __instance) { ShipLobby.Log.LogDebug((object)"Preventing the closing of Steam lobby."); return false; } [HarmonyPrefix] [HarmonyPatch(typeof(StartOfRound), "StartGame")] private static void CloseSteamLobby(StartOfRound __instance) { if (((NetworkBehaviour)__instance).IsServer && __instance.inShipPhase) { ShipLobby.Log.LogDebug((object)"Setting lobby to not joinable."); GameNetworkManager.Instance.SetLobbyJoinable(false); } } [HarmonyPostfix] [HarmonyPatch(typeof(StartOfRound), "EndOfGame")] private static IEnumerator ReopenSteamLobby(IEnumerator coroutine, StartOfRound __instance) { while (coroutine.MoveNext()) { yield return coroutine.Current; } if (!((NetworkBehaviour)__instance).IsServer) { yield break; } yield return (object)new WaitForSeconds(0.5f); yield return (object)new WaitUntil((Func<bool>)(() => !__instance.firingPlayersCutsceneRunning)); ShipLobby.Log.LogDebug((object)"Reopening lobby, setting to joinable."); GameNetworkManager instance = GameNetworkManager.Instance; if (instance.currentLobby.HasValue) { instance.SetLobbyJoinable(true); if ((Object)(object)_quickMenuManager == (Object)null) { _quickMenuManager = Object.FindObjectOfType<QuickMenuManager>(); } _quickMenuManager.inviteFriendsTextAlpha.alpha = 1f; } } } }
plugins/tinyhoot-ShipLoot/ShipLoot/ShipLoot.dll
Decompiled 2 years agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using TMPro; using UnityEngine; using UnityEngine.InputSystem; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("ShipLoot")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyProduct("ShipLoot")] [assembly: AssemblyCopyright("Copyright © tinyhoot 2023")] [assembly: ComVisible(false)] [assembly: AssemblyFileVersion("1.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace ShipLoot { [BepInPlugin("com.github.tinyhoot.ShipLoot", "ShipLoot", "1.0")] internal class ShipLoot : BaseUnityPlugin { public const string GUID = "com.github.tinyhoot.ShipLoot"; public const string NAME = "ShipLoot"; public const string VERSION = "1.0"; internal static ManualLogSource Log; private void Awake() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) Log = ((BaseUnityPlugin)this).Logger; new Harmony("com.github.tinyhoot.ShipLoot").PatchAll(Assembly.GetExecutingAssembly()); } } } namespace ShipLoot.Patches { [HarmonyPatch] internal class HudManagerPatcher { private static GameObject _totalCounter; private static TextMeshProUGUI _textMesh; private static float _displayTimeLeft; private const float DisplayTime = 5f; [HarmonyPrefix] [HarmonyPatch(typeof(HUDManager), "PingScan_performed")] private static void OnScan(HUDManager __instance, CallbackContext context) { if (!((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null) && ((CallbackContext)(ref context)).performed && __instance.CanPlayerScan() && !(__instance.playerPingingScan > -0.5f) && (StartOfRound.Instance.inShipPhase || GameNetworkManager.Instance.localPlayerController.isInHangarShipRoom)) { if (!Object.op_Implicit((Object)(object)_totalCounter)) { CopyValueCounter(); } float num = CalculateLootValue(); ((TMP_Text)_textMesh).text = $"SHIP: ${num:F0}"; _displayTimeLeft = 5f; if (!_totalCounter.activeSelf) { ((MonoBehaviour)GameNetworkManager.Instance).StartCoroutine(ShipLootCoroutine()); } } } private static IEnumerator ShipLootCoroutine() { _totalCounter.SetActive(true); while (_displayTimeLeft > 0f) { float displayTimeLeft = _displayTimeLeft; _displayTimeLeft = 0f; yield return (object)new WaitForSeconds(displayTimeLeft); } _totalCounter.SetActive(false); } private static float CalculateLootValue() { List<GrabbableObject> list = (from obj in GameObject.Find("/Environment/HangarShip").GetComponentsInChildren<GrabbableObject>() where ((Object)obj).name != "ClipboardManual" && ((Object)obj).name != "StickyNoteItem" select obj).ToList(); ShipLoot.Log.LogDebug((object)"Calculating total ship scrap value."); CollectionExtensions.Do<GrabbableObject>((IEnumerable<GrabbableObject>)list, (Action<GrabbableObject>)delegate(GrabbableObject scrap) { ShipLoot.Log.LogDebug((object)$"{((Object)scrap).name} - ${scrap.scrapValue}"); }); return list.Sum((GrabbableObject scrap) => scrap.scrapValue); } private static void CopyValueCounter() { //IL_0066: 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_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) GameObject val = GameObject.Find("/Systems/UI/Canvas/IngamePlayerHUD/BottomMiddle/ValueCounter"); if (!Object.op_Implicit((Object)(object)val)) { ShipLoot.Log.LogError((object)"Failed to find ValueCounter object to copy!"); } _totalCounter = Object.Instantiate<GameObject>(val.gameObject, val.transform.parent, false); _totalCounter.transform.Translate(0f, 1f, 0f); Vector3 localPosition = _totalCounter.transform.localPosition; _totalCounter.transform.localPosition = new Vector3(localPosition.x + 50f, -50f, localPosition.z); _textMesh = _totalCounter.GetComponentInChildren<TextMeshProUGUI>(); } } }
plugins/togglemybits-Strange_Objects/StrangeObjects.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; 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.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Dissonance.Integrations.Unity_NFGO; using GameNetcodeStuff; using HarmonyLib; using StrangeObjects.Patches; using TMPro; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("StrangeObjects")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("StrangeObjects")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e7e087a1-2426-4476-9b63-af35329e5ac2")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace StrangeObjects { [BepInPlugin("Bits.StrangeObjects", "Strange Objects", "1.2.0.0")] public class StrangeObjectsBase : BaseUnityPlugin { private const string modGUID = "Bits.StrangeObjects"; private const string modName = "Strange Objects"; private const string modVersion = "1.2.0.0"; private readonly Harmony harmony = new Harmony("Bits.StrangeObjects"); private static StrangeObjectsBase Instance; internal ManualLogSource mls; public static ConfigEntry<int> StrangeObjectSpawnRate { get; private set; } public static ConfigEntry<float> StrangeObjectValueMultiplier { get; private set; } public static ConfigEntry<bool> EnableCurseOfPain { get; private set; } public static ConfigEntry<int> PainLevelOnePlayerDamage { get; private set; } public static ConfigEntry<bool> EnableCurseOfSight { get; private set; } public static ConfigEntry<float> SightLevelOneDrunkDebuff { get; private set; } public static ConfigEntry<float> SightLevelTwoDrunkDebuff { get; private set; } public static ConfigEntry<bool> EnableCurseOfSloth { get; private set; } public static ConfigEntry<float> SlothLevelOneMovementDebuff { get; private set; } public static ConfigEntry<float> SlothLevelTwoMovementDebuff { get; private set; } public static ConfigEntry<bool> EnableCurseOfMidas { get; private set; } public static ConfigEntry<int> MidasMaxScrapValue { get; private set; } public static ConfigEntry<bool> EnableCurseOfVoice { get; private set; } private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("Bits.StrangeObjects"); StrangeObjectSpawnRate = ((BaseUnityPlugin)this).Config.Bind<int>("General", "SpawnRate", 20, "Probability of a scrap item being strange. 20 means 20% chance. Range 1-100"); StrangeObjectValueMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("General", "ValueMultiplier", 0.3f, "Controls how much value strange objects have. 0.3 is 30% higher value. Range 0.0-infinity"); EnableCurseOfPain = ((BaseUnityPlugin)this).Config.Bind<bool>("Curse of Pain", "EnableCurseofPain", true, "Disables curse if false"); PainLevelOnePlayerDamage = ((BaseUnityPlugin)this).Config.Bind<int>("Curse of Pain", "Level1Pain", 40, "Damage done to player from level one pain curse. Default is 40 same as falling down a cliff twice."); EnableCurseOfSight = ((BaseUnityPlugin)this).Config.Bind<bool>("Curse of Sight", "EnableCurseofSight", true, "Disables curse if false"); SightLevelOneDrunkDebuff = ((BaseUnityPlugin)this).Config.Bind<float>("Curse of Sight", "Level1DrunkDebuff", 0.2f, "Percentage of Drunkness for Level 1. Default is 20% or 0.2. Range 0.0-1.0"); SightLevelTwoDrunkDebuff = ((BaseUnityPlugin)this).Config.Bind<float>("Curse of Sight", "Level2DrunkDebuff", 1f, "Percentage of Drunkness for Level 2. Default is 100% or 1.0. Range 0.0-1.0"); EnableCurseOfSloth = ((BaseUnityPlugin)this).Config.Bind<bool>("Curse of Sloth", "EnableCurseofSloth", true, "Disables curse if false"); SlothLevelOneMovementDebuff = ((BaseUnityPlugin)this).Config.Bind<float>("Curse of Sloth", "Level1MovementDebuff", 0.75f, "Percentage of Movement Speed after Level 1 Debuff. Default is 75% or 0.75. Range 0.0-1.0"); SlothLevelTwoMovementDebuff = ((BaseUnityPlugin)this).Config.Bind<float>("Curse of Sloth", "Level2MovementDebuff", 0.5f, "Percentage of Movement Speed after Level 2 Debuff. Default is 50% or 0.5. Range 0.0-1.0"); EnableCurseOfMidas = ((BaseUnityPlugin)this).Config.Bind<bool>("Curse of Midas", "EnableCurseofMidas", true, "Disables curse if false"); MidasMaxScrapValue = ((BaseUnityPlugin)this).Config.Bind<int>("Curse of Midas", "MaxValueShinyObjects", 100, "This is the maximum scrap value a shiny object can randomly roll"); EnableCurseOfVoice = ((BaseUnityPlugin)this).Config.Bind<bool>("Curse of Voice", "EnableCurseofVoice", false, "Disables curse if false"); harmony.PatchAll(typeof(StrangeObjectsBase)); harmony.PatchAll(typeof(PlayerControllerBPatch)); harmony.PatchAll(typeof(SpawnScrapInLevelPatch)); harmony.PatchAll(typeof(GrabbleObjectPatch)); harmony.PatchAll(typeof(HUDManagerPatch)); harmony.PatchAll(typeof(NegativeEffectPatch)); harmony.PatchAll(typeof(ShipLeavingPatch)); harmony.PatchAll(typeof(VoiceRefreshPatch)); harmony.PatchAll(typeof(SyncScrapValuesPatch)); harmony.PatchAll(typeof(PlaceObjectPatch)); harmony.PatchAll(typeof(DropAllItemsPatch)); } } } namespace StrangeObjects.Patches { [HarmonyPatch(/*Could not decode attribute arguments.*/)] internal class DropAllItemsPatch { [HarmonyPostfix] private static void removeCurseEffectPatch(ref float ___drunkness, ref float ___movementSpeed) { ___drunkness = 0f; ___movementSpeed = 4.6f; GameNetworkManager.Instance.localPlayerController.voiceMuffledByEnemy = false; StartOfRound.Instance.RefreshPlayerVoicePlaybackObjects(); } } [HarmonyPatch(typeof(GrabbableObject))] internal class GrabbleObjectPatch { [HarmonyPatch("SetScrapValue")] [HarmonyPostfix] private static void SubtextPatch(int setValueTo, ref GrabbableObject __instance, ref Item ___itemProperties) { if (__instance.scrapValue < 900 && !(___itemProperties.batteryUsage >= 900f)) { return; } List<string> list = new List<string> { "Strange", "Painful", "Sloth", "Shiny", "Tipsy", "Silent" }; if (__instance.scrapValue >= 9000) { ___itemProperties.batteryUsage = 999f; GrabbableObject obj = __instance; obj.scrapValue -= 9999; } Random random = new Random(__instance.scrapValue + __instance.itemProperties.minValue + __instance.itemProperties.maxValue + (int)__instance.itemProperties.weight); char c = (char)(65 + random.Next(0, 26)); string text = random.Next(0, 10).ToString() + random.Next(0, 10); ScanNodeProperties componentInChildren = ((Component)__instance).gameObject.GetComponentInChildren<ScanNodeProperties>(); if (!((Object)(object)componentInChildren == (Object)null)) { string[] array = componentInChildren.headerText.Split(new char[1] { ' ' }); if (array.Length != 0 && !list.Contains(array[0])) { componentInChildren.headerText = "Strange " + componentInChildren.headerText; } componentInChildren.subText = $"Value: ${__instance.scrapValue}" + " \nObject: " + c + "-" + text; componentInChildren.scrapValue = __instance.scrapValue; } } } [HarmonyPatch(typeof(HUDManager))] internal class HUDManagerPatch { [HarmonyPatch("UpdateScanNodes")] [HarmonyPostfix] private static void SubtextPatch(ref HUDManager __instance, ref TextMeshProUGUI[] ___scanElementText, ref RectTransform[] ___scanElements) { for (int i = 0; i < ___scanElements.Length; i++) { try { ___scanElementText = ((Component)___scanElements[i]).gameObject.GetComponentsInChildren<TextMeshProUGUI>(); if (___scanElementText.Length > 1) { string[] array = ((TMP_Text)___scanElementText[1]).text.Split(new char[1] { ' ' }); if (array.Length > 2 && array[2] == "\nObject:") { ((Component)___scanElements[i]).GetComponent<Animator>().SetInteger("colorNumber", 1); } } } catch (Exception arg) { Debug.LogError((object)$"Error in updatescanNodes F: {arg}"); } } } } [HarmonyPatch(typeof(PlayerControllerB))] internal class NegativeEffectPatch { [HarmonyPatch("GrabObject")] [HarmonyPostfix] private static void grabObjectPatch(ref bool ___grabInvalidated, ref GrabbableObject ___currentlyGrabbingObject, ref float ___insanityLevel, ref float ___maxSlideFriction) { if (___grabInvalidated) { return; } if (___currentlyGrabbingObject.itemProperties.batteryUsage == 995f) { Random random = new Random(); Random random2 = new Random(); ___currentlyGrabbingObject.scrapValue = random.Next(1, random2.Next(10, Math.Min(___currentlyGrabbingObject.itemProperties.maxValue, StrangeObjectsBase.MidasMaxScrapValue.Value))); } if (___currentlyGrabbingObject.itemProperties.batteryUsage == 999f) { Random random3 = new Random(___currentlyGrabbingObject.scrapValue + ___currentlyGrabbingObject.itemProperties.minValue + ___currentlyGrabbingObject.itemProperties.maxValue + (int)___currentlyGrabbingObject.itemProperties.weight); List<float> list = new List<float>(); if (StrangeObjectsBase.EnableCurseOfPain.Value) { list.Add(998f); } if (StrangeObjectsBase.EnableCurseOfSight.Value) { list.Add(997f); } if (StrangeObjectsBase.EnableCurseOfSloth.Value) { list.Add(996f); } if (StrangeObjectsBase.EnableCurseOfMidas.Value) { list.Add(995f); } if (StrangeObjectsBase.EnableCurseOfVoice.Value) { list.Add(994f); } if (list.Count == 0) { return; } int index = random3.Next(0, list.Count); float batteryUsage = list[index]; ___currentlyGrabbingObject.itemProperties.batteryUsage = batteryUsage; if (___currentlyGrabbingObject.itemProperties.batteryUsage == 995f) { Random random4 = new Random(); Random random5 = new Random(); ___currentlyGrabbingObject.scrapValue = random4.Next(1, random5.Next(10, Math.Min(___currentlyGrabbingObject.itemProperties.maxValue, StrangeObjectsBase.MidasMaxScrapValue.Value))); } ___insanityLevel += 10f; ScanNodeProperties componentInChildren = ((Component)___currentlyGrabbingObject).gameObject.GetComponentInChildren<ScanNodeProperties>(); if ((Object)(object)componentInChildren != (Object)null) { string[] array = componentInChildren.headerText.Split(new char[1] { ' ' }); if (___currentlyGrabbingObject.itemProperties.batteryUsage == 997f) { array[0] = "Tipsy"; } if (___currentlyGrabbingObject.itemProperties.batteryUsage == 998f) { array[0] = "Painful"; } if (___currentlyGrabbingObject.itemProperties.batteryUsage == 996f) { array[0] = "Sloth"; } if (___currentlyGrabbingObject.itemProperties.batteryUsage == 995f) { array[0] = "Shiny"; } if (___currentlyGrabbingObject.itemProperties.batteryUsage == 994f) { array[0] = "Silent"; } componentInChildren.headerText = string.Join(" ", array); } } ___currentlyGrabbingObject.SetScrapValue(___currentlyGrabbingObject.scrapValue); } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] internal class PlaceObjectPatch { [HarmonyPostfix] private static void removeCurseEffectPatch(GrabbableObject placeObject, ref float ___drunkness, ref float ___movementSpeed) { if (placeObject.itemProperties.batteryUsage == 997f) { ___drunkness = 0f; } if (placeObject.itemProperties.batteryUsage == 996f) { ___movementSpeed = 4.6f; } if (placeObject.itemProperties.batteryUsage == 994f) { GameNetworkManager.Instance.localPlayerController.voiceMuffledByEnemy = false; StartOfRound.Instance.RefreshPlayerVoicePlaybackObjects(); } } } [HarmonyPatch(typeof(PlayerControllerB))] internal class PlayerControllerBPatch { [HarmonyPatch("Update")] [HarmonyPostfix] private static void addNegativePatch(ref PlayerControllerB __instance, ref GrabbableObject[] ___ItemSlots, ref float ___maxSlideFriction, ref float ___drunkness, ref float ___movementSpeed, ref bool ___isPlayerDead, ref bool ___isPlayerControlled) { //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) if (___isPlayerDead || !___isPlayerControlled) { ___drunkness = 0f; ___movementSpeed = 4.6f; return; } int num = 0; int num2 = 0; int num3 = 0; int num4 = 0; int num5 = 0; int num6 = 0; List<int> list = new List<int>(); for (int i = 0; i < ___ItemSlots.Length; i++) { if (!((Object)(object)___ItemSlots[i] == (Object)null)) { if (___ItemSlots[i].itemProperties.batteryUsage == 998f) { num++; num2++; list.Add(i); } if (___ItemSlots[i].itemProperties.batteryUsage == 997f) { num++; num3++; } if (___ItemSlots[i].itemProperties.batteryUsage == 996f) { num++; num4++; } if (___ItemSlots[i].itemProperties.batteryUsage == 995f) { num++; num5++; } if (___ItemSlots[i].itemProperties.batteryUsage == 994f) { num++; num6++; } } } if (num3 == 1) { ___drunkness = StrangeObjectsBase.SightLevelOneDrunkDebuff.Value; } if (num >= 2 && num3 >= 1) { ___drunkness = StrangeObjectsBase.SightLevelTwoDrunkDebuff.Value; } if (num2 == 1) { __instance.DamagePlayer(StrangeObjectsBase.PainLevelOnePlayerDamage.Value, true, true, (CauseOfDeath)0, 0, false, default(Vector3)); for (int j = 0; j < list.Count; j++) { ___ItemSlots[list[j]].itemProperties.batteryUsage = 999f; } } if (num4 == 1) { ___movementSpeed = 4.6f * StrangeObjectsBase.SlothLevelOneMovementDebuff.Value; } if (num >= 2 && num4 >= 1) { ___movementSpeed = 4.6f * StrangeObjectsBase.SlothLevelTwoMovementDebuff.Value; } if (num6 == 1) { GameNetworkManager.Instance.localPlayerController.maxSlideFriction = -5f; StartOfRound.Instance.RefreshPlayerVoicePlaybackObjects(); } } } [HarmonyPatch(typeof(ElevatorAnimationEvents))] internal class ShipLeavingPatch { [HarmonyPatch("ElevatorFullyRunning")] [HarmonyPostfix] private static void adjustMaxSlideFrictionPatch(ref ElevatorAnimationEvents __instance) { if ((Object)(object)GameNetworkManager.Instance.localPlayerController != (Object)null) { GameNetworkManager.Instance.localPlayerController.drunkness = 0f; GameNetworkManager.Instance.localPlayerController.movementSpeed = 4.6f; GameNetworkManager.Instance.localPlayerController.voiceMuffledByEnemy = false; StartOfRound.Instance.RefreshPlayerVoicePlaybackObjects(); } } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] internal class SpawnScrapInLevelPatch { private static FieldInfo f_someField = AccessTools.Field(typeof(GrabbableObject), "fallTime"); private static FieldInfo f_someField_2 = AccessTools.Field(typeof(GrabbableObject), "scrapValue"); private static FieldInfo f_someField_3 = AccessTools.Field(typeof(GrabbableObject), "itemProperties"); private static FieldInfo f_someField_4 = AccessTools.Field(typeof(Item), "batteryUsage"); private static FieldInfo f_someField_5 = AccessTools.Field(typeof(RoundManager), "scrapValueMultiplier"); private static MethodInfo m_randomChance = SymbolExtensions.GetMethodInfo((Expression<Action>)(() => randomChance())); private static MethodInfo m_multiValue = SymbolExtensions.GetMethodInfo((Expression<Action>)(() => multiValue())); private static MethodInfo m_listCount = typeof(List<int>).GetProperty("Count").GetGetMethod(); private static MethodInfo m_listGet = typeof(List<int>).GetProperty("Item").GetGetMethod(); private static MethodInfo m_listSet = typeof(List<int>).GetProperty("Item").GetSetMethod(); private static MethodInfo getComponentGenericMethod = AccessTools.Method(typeof(Component), "GetComponent", new Type[0], (Type[])null); private static MethodInfo m_component = getComponentGenericMethod.MakeGenericMethod(typeof(GrabbableObject)); private static int myClamp(int value) { if (value < 1) { return 1; } if (value > 100) { return 100; } return value; } private static float multiValue() { return StrangeObjectsBase.StrangeObjectValueMultiplier.Value; } private static int randomChance() { Random random = new Random(); int result = 0; if (random.Next(0, 100) < myClamp(StrangeObjectsBase.StrangeObjectSpawnRate.Value)) { result = 1; } return result; } private static IEnumerable<CodeInstruction> Transpiler(ILGenerator generator, IEnumerable<CodeInstruction> instructions) { //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Expected O, but got Unknown //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Expected O, but got Unknown //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Expected O, but got Unknown //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Expected O, but got Unknown //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Expected O, but got Unknown //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Expected O, but got Unknown //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Expected O, but got Unknown //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Expected O, but got Unknown //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Expected O, but got Unknown //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Expected O, but got Unknown //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Expected O, but got Unknown //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Expected O, but got Unknown //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Expected O, but got Unknown //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Expected O, but got Unknown //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Expected O, but got Unknown //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Expected O, but got Unknown //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Expected O, but got Unknown //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Expected O, but got Unknown //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Expected O, but got Unknown //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Expected O, but got Unknown //IL_0294: Unknown result type (might be due to invalid IL or missing references) //IL_029e: Expected O, but got Unknown //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02b4: Expected O, but got Unknown //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_02ca: Expected O, but got Unknown //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: Expected O, but got Unknown //IL_02f0: Unknown result type (might be due to invalid IL or missing references) //IL_02fa: Expected O, but got Unknown //IL_0306: Unknown result type (might be due to invalid IL or missing references) //IL_0310: Expected O, but got Unknown //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_0326: Expected O, but got Unknown //IL_0336: Unknown result type (might be due to invalid IL or missing references) //IL_0340: Expected O, but got Unknown //IL_034c: Unknown result type (might be due to invalid IL or missing references) //IL_0356: Expected O, but got Unknown //IL_0366: Unknown result type (might be due to invalid IL or missing references) //IL_0370: Expected O, but got Unknown //IL_0380: Unknown result type (might be due to invalid IL or missing references) //IL_038a: Expected O, but got Unknown //IL_0396: Unknown result type (might be due to invalid IL or missing references) //IL_03a0: Expected O, but got Unknown //IL_03ac: Unknown result type (might be due to invalid IL or missing references) //IL_03b6: Expected O, but got Unknown //IL_03c8: Unknown result type (might be due to invalid IL or missing references) //IL_03d2: Expected O, but got Unknown //IL_03e3: Unknown result type (might be due to invalid IL or missing references) //IL_03ed: Expected O, but got Unknown //IL_03fe: Unknown result type (might be due to invalid IL or missing references) //IL_0408: Expected O, but got Unknown List<CodeInstruction> list = instructions.ToList(); bool flag = false; bool flag2 = false; Label label = generator.DefineLabel(); Label label2 = generator.DefineLabel(); for (int i = 0; i < list.Count; i++) { if (CodeInstructionExtensions.StoresField(list[i], f_someField) && !flag) { list.Insert(i + 1, new CodeInstruction(OpCodes.Nop, (object)null) { labels = new List<Label> { label } }); list.Insert(i + 1, new CodeInstruction(OpCodes.Stfld, (object)f_someField_5)); list.Insert(i + 1, new CodeInstruction(OpCodes.Add, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Callvirt, (object)m_multiValue)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldfld, (object)f_someField_5)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldarg_0, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldarg_0, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Beq_S, (object)label)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldc_I4, (object)0)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldloc_S, (object)5)); list.Insert(i + 1, new CodeInstruction(OpCodes.Stloc_S, (object)5)); list.Insert(i + 1, new CodeInstruction(OpCodes.Callvirt, (object)m_randomChance)); flag = true; } if (CodeInstructionExtensions.StoresField(list[i], f_someField_2) && !flag2) { list.Insert(i + 1, new CodeInstruction(OpCodes.Nop, (object)null) { labels = new List<Label> { label2 } }); list.Insert(i + 1, new CodeInstruction(OpCodes.Callvirt, (object)m_listSet)); list.Insert(i + 1, new CodeInstruction(OpCodes.Add, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldc_I4, (object)9999)); list.Insert(i + 1, new CodeInstruction(OpCodes.Callvirt, (object)m_listGet)); list.Insert(i + 1, new CodeInstruction(OpCodes.Sub, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldc_I4_1, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Callvirt, (object)m_listCount)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldloc_1, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldloc_1, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Sub, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldc_I4_1, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Callvirt, (object)m_listCount)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldloc_1, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldloc_1, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Stfld, (object)f_someField_5)); list.Insert(i + 1, new CodeInstruction(OpCodes.Sub, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Callvirt, (object)m_multiValue)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldfld, (object)f_someField_5)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldarg_0, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldarg_0, (object)null)); list.Insert(i + 1, new CodeInstruction(OpCodes.Beq_S, (object)label2)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldc_I4, (object)0)); list.Insert(i + 1, new CodeInstruction(OpCodes.Ldloc_S, (object)5)); flag2 = true; } } return list; } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] internal class SyncScrapValuesPatch { [HarmonyPostfix] private static void fixScrapTotalPatch(int[] allScrapValue, ref float ___totalScrapValueInLevel) { int num = 0; if (allScrapValue != null) { for (int i = 0; i < allScrapValue.Length; i++) { num = ((allScrapValue[i] < 9000) ? (num + allScrapValue[i]) : (num + (allScrapValue[i] - 9999))); } } ___totalScrapValueInLevel = num; } } [HarmonyPatch(typeof(StartOfRound))] internal class VoiceRefreshPatch { [HarmonyPatch("RefreshPlayerVoicePlaybackObjects")] [HarmonyPostfix] private static void addMufflePatch(ref PlayerControllerB[] ___allPlayerScripts) { if ((Object)(object)GameNetworkManager.Instance == (Object)null || (Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null) { return; } PlayerVoiceIngameSettings[] array = Object.FindObjectsOfType<PlayerVoiceIngameSettings>(true); for (int i = 0; i < ___allPlayerScripts.Length; i++) { PlayerControllerB val = ___allPlayerScripts[i]; if (!val.isPlayerControlled && !val.isPlayerDead) { continue; } for (int j = 0; j < array.Length; j++) { if (array[j]._playerState == null) { array[j].FindPlayerIfNull(); if (array[j]._playerState != null) { } } else if (((Behaviour)array[j]).isActiveAndEnabled && array[j]._playerState.Name == ((Component)val).gameObject.GetComponentInChildren<NfgoPlayer>().PlayerId) { val.voicePlayerState = array[j]._playerState; val.currentVoiceChatAudioSource = array[j].voiceAudio; val.currentVoiceChatIngameSettings = array[j]; val.currentVoiceChatAudioSource.outputAudioMixerGroup = SoundManager.Instance.playerVoiceMixers[val.playerClientId]; if (GameNetworkManager.Instance.localPlayerController.maxSlideFriction == -5f) { ((Component)val.currentVoiceChatAudioSource).GetComponent<AudioLowPassFilter>().lowpassResonanceQ = 5f; OccludeAudio component = ((Component)val.currentVoiceChatIngameSettings.voiceAudio).GetComponent<OccludeAudio>(); component.overridingLowPass = true; component.lowPassOverride = 500f; Debug.Log((object)$"Applied Muffle to player voice object #{j} and player object #{i}"); val.voiceMuffledByEnemy = true; } else { ((Component)val.currentVoiceChatAudioSource).GetComponent<AudioLowPassFilter>().lowpassResonanceQ = 1f; OccludeAudio component2 = ((Component)val.currentVoiceChatIngameSettings.voiceAudio).GetComponent<OccludeAudio>(); component2.overridingLowPass = false; component2.lowPassOverride = 20000f; val.voiceMuffledByEnemy = false; } } } } } } }
plugins/Woona-BrackenRandomizer/BrackenRandomizer.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using LC_API.BundleAPI; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("BrackenRandomizer")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("BrackenRandomizer")] [assembly: AssemblyTitle("BrackenRandomizer")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace BrackenRandomizer { [BepInPlugin("Woonas.wacky.wonders.BR", "BrackenRandomizer", "1.0.1")] public class Plugin : BaseUnityPlugin { public Harmony harmonymain; private void Awake() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown harmonymain = new Harmony("Woonas.wacky.wonders.BR"); harmonymain.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"BrackenRandomizer loaded."); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "BrackenRandomizer"; public const string PLUGIN_NAME = "BrackenRandomizer"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace BrackenRandomizer.Patches { [HarmonyPatch] internal class EnemyTypes { [HarmonyPatch(typeof(FlowermanAI), "Start")] [HarmonyPostfix] public static void SummonRBracken(FlowermanAI __instance) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Expected O, but got Unknown //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Expected O, but got Unknown //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0269: Expected O, but got Unknown //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_0332: Unknown result type (might be due to invalid IL or missing references) //IL_033c: Expected O, but got Unknown //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Expected O, but got Unknown //IL_043c: Unknown result type (might be due to invalid IL or missing references) ManualLogSource val = new ManualLogSource("BrackenRandomizer"); Logger.Sources.Add((ILogSource)(object)val); val.LogInfo((object)"Rolling..."); int num = new Random().Next(1, 101); val.LogInfo((object)num); int num2 = num; int num3 = num2; if (num3 < 25 && num3 >= 0) { __instance.creatureAngerVoice.clip = BundleLoader.GetLoadedAsset<AudioClip>("assets/whistlefull.mp3"); __instance.crackNeckSFX = BundleLoader.GetLoadedAsset<AudioClip>("assets/whistle.mp3"); __instance.crackNeckAudio.clip = BundleLoader.GetLoadedAsset<AudioClip>("assets/whistle.mp3"); Object.Destroy((Object)((Component)((Component)__instance).gameObject.transform.Find("FlowermanModel").Find("LOD1")).gameObject.GetComponent<SkinnedMeshRenderer>()); GameObject val2 = Object.Instantiate<GameObject>(BundleLoader.GetLoadedAsset<GameObject>("assets/JoshHutcherson.prefab"), ((Component)__instance).gameObject.transform); val2.transform.localPosition = new Vector3(0f, 1.5f, 0f); val.LogInfo((object)"Summoned JoshHutcherson"); return; } int num4 = num3; if (num4 < 50 && num4 >= 25) { __instance.creatureAngerVoice.clip = BundleLoader.GetLoadedAsset<AudioClip>("assets/deku_chase_alt.mp3"); __instance.crackNeckSFX = BundleLoader.GetLoadedAsset<AudioClip>("assets/deku_necksnap.mp3"); __instance.crackNeckAudio.clip = BundleLoader.GetLoadedAsset<AudioClip>("assets/deku_necksnap.mp3"); Object.Destroy((Object)((Component)((Component)__instance).gameObject.transform.Find("FlowermanModel").Find("LOD1")).gameObject.GetComponent<SkinnedMeshRenderer>()); GameObject val3 = Object.Instantiate<GameObject>(BundleLoader.GetLoadedAsset<GameObject>("assets/Deku.prefab"), ((Component)__instance).gameObject.transform); val3.transform.localPosition = new Vector3(0f, 1.5f, 0f); val.LogInfo((object)"Summoned Deku"); return; } int num5 = num3; if (num5 < 75 && num5 >= 50) { __instance.creatureAngerVoice.clip = BundleLoader.GetLoadedAsset<AudioClip>("assets/ultra.mp3"); __instance.crackNeckSFX = BundleLoader.GetLoadedAsset<AudioClip>("assets/mods.mp3"); __instance.crackNeckAudio.clip = BundleLoader.GetLoadedAsset<AudioClip>("assets/mods.mp3"); Object.Destroy((Object)((Component)((Component)__instance).gameObject.transform.Find("FlowermanModel").Find("LOD1")).gameObject.GetComponent<SkinnedMeshRenderer>()); GameObject val4 = Object.Instantiate<GameObject>(BundleLoader.GetLoadedAsset<GameObject>("assets/Gok.prefab"), ((Component)__instance).gameObject.transform); val4.transform.localPosition = new Vector3(0f, 1.5f, 0f); val.LogInfo((object)"Summoned Gok"); return; } int num6 = num3; if (num6 < 90 && num6 >= 75) { __instance.creatureAngerVoice.clip = BundleLoader.GetLoadedAsset<AudioClip>("assets/monday.mp3"); __instance.crackNeckSFX = BundleLoader.GetLoadedAsset<AudioClip>("assets/monday.mp3"); __instance.crackNeckAudio.clip = BundleLoader.GetLoadedAsset<AudioClip>("assets/monday.mp3"); Object.Destroy((Object)((Component)((Component)__instance).gameObject.transform.Find("FlowermanModel").Find("LOD1")).gameObject.GetComponent<SkinnedMeshRenderer>()); GameObject val5 = Object.Instantiate<GameObject>(BundleLoader.GetLoadedAsset<GameObject>("assets/Monday.prefab"), ((Component)__instance).gameObject.transform); val5.transform.localPosition = new Vector3(0f, 1.5f, 0f); val.LogInfo((object)"Summoned Monday"); return; } int num7 = num3; if (num7 > 90) { __instance.creatureAngerVoice.clip = BundleLoader.GetLoadedAsset<AudioClip>("assets/bttb_full.mp3"); __instance.crackNeckSFX = BundleLoader.GetLoadedAsset<AudioClip>("assets/bttb.mp3"); __instance.crackNeckAudio.clip = BundleLoader.GetLoadedAsset<AudioClip>("assets/bttb.mp3"); Object.Destroy((Object)((Component)((Component)__instance).gameObject.transform.Find("FlowermanModel").Find("LOD1")).gameObject.GetComponent<SkinnedMeshRenderer>()); GameObject val6 = Object.Instantiate<GameObject>(BundleLoader.GetLoadedAsset<GameObject>("assets/BadToTheBone.prefab"), ((Component)__instance).gameObject.transform); val6.transform.localPosition = new Vector3(0f, 1.5f, 0f); val.LogInfo((object)"Summoned BTTB"); } } } }
plugins/x753-More_Suits/MoreSuits.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("MoreSuits")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("A mod that adds more suit options to Lethal Company")] [assembly: AssemblyFileVersion("1.1.0.0")] [assembly: AssemblyInformationalVersion("1.1.0")] [assembly: AssemblyProduct("MoreSuits")] [assembly: AssemblyTitle("MoreSuits")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.0.0")] [module: UnverifiableCode] namespace MoreSuits; [BepInPlugin("x753.More_Suits", "More Suits", "1.1.0")] public class MoreSuitsMod : BaseUnityPlugin { [HarmonyPatch(typeof(StartOfRound))] internal class StartOfRoundPatch { [HarmonyPatch("Start")] [HarmonyPrefix] private static void StartPatch(ref StartOfRound __instance) { //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Expected O, but got Unknown //IL_0244: Unknown result type (might be due to invalid IL or missing references) try { if (SuitsAdded) { return; } for (int i = 0; i < __instance.unlockablesList.unlockables.Count; i++) { UnlockableItem val = __instance.unlockablesList.unlockables[i]; if (!((Object)(object)val.suitMaterial != (Object)null) || !val.alreadyUnlocked) { continue; } string[] files = Directory.GetFiles(SuitsFolder, "*.png"); string[] array = files; foreach (string text in array) { UnlockableItem val2; Material val3; if (Path.GetFileNameWithoutExtension(text) == "default") { val2 = val; val3 = val2.suitMaterial; } else { string text2 = JsonUtility.ToJson((object)val); val2 = JsonUtility.FromJson<UnlockableItem>(text2); val3 = Object.Instantiate<Material>(val2.suitMaterial); } string path = Path.Combine(SuitsFolder, text); byte[] array2 = File.ReadAllBytes(path); Texture2D val4 = new Texture2D(2, 2); ImageConversion.LoadImage(val4, array2); val3.mainTexture = (Texture)(object)val4; try { string path2 = Path.Combine(SuitsFolder, "advanced", Path.GetFileNameWithoutExtension(text) + ".json"); if (File.Exists(path2)) { string[] array3 = File.ReadAllLines(path2); string[] array4 = array3; foreach (string text3 in array4) { string[] array5 = text3.Trim().Split(':'); if (array5.Length == 2) { string text4 = array5[0].Trim('"', ' ', ','); string text5 = array5[1].Trim('"', ' ', ','); Vector4 vector; if (float.TryParse(text5, out var result)) { val3.SetFloat(text4, result); } else if (text5 == "KEYWORD") { val3.EnableKeyword(text4); } else if (text5.Contains(".png")) { string path3 = Path.Combine(SuitsFolder, "advanced", text5); byte[] array6 = File.ReadAllBytes(path3); Texture2D val5 = new Texture2D(2, 2, (TextureFormat)4, true, true); ImageConversion.LoadImage(val5, array6); val3.SetTexture(text4, (Texture)(object)val5); } else if (TryParseVector4(text5, out vector)) { val3.SetVector(text4, vector); } } } } } catch (Exception ex) { Debug.Log((object)("Something went wrong with More Suits! Error: " + ex)); } val2.suitMaterial = val3; val2.unlockableName = Path.GetFileNameWithoutExtension(path); if (Path.GetFileNameWithoutExtension(text) != "default") { __instance.unlockablesList.unlockables.Add(val2); } } SuitsAdded = true; break; } } catch (Exception ex2) { Debug.Log((object)("Something went wrong with More Suits! Error: " + ex2)); } } } private const string modGUID = "x753.More_Suits"; private const string modName = "More Suits"; private const string modVersion = "1.1.0"; private readonly Harmony harmony = new Harmony("x753.More_Suits"); private static MoreSuitsMod Instance; public static string SuitsFolder; public static bool SuitsAdded; private void Awake() { SuitsFolder = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "suits"); if ((Object)(object)Instance == (Object)null) { Instance = this; } harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin More Suits is loaded!"); } public static bool TryParseVector4(string input, out Vector4 vector) { //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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) vector = Vector4.zero; string[] array = input.Split(','); if (array.Length == 4 && float.TryParse(array[0], out var result) && float.TryParse(array[1], out var result2) && float.TryParse(array[2], out var result3) && float.TryParse(array[3], out var result4)) { vector = new Vector4(result, result2, result3, result4); return true; } return false; } }