Decompiled source of BRCTools v0.2.2
plugins/BRCTools/BRCTools.dll
Decompiled 2 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using Reptile; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("BRCTools")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("BRCTools")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("0e6996c8-02c7-4f5c-9c27-e45d0d5fc80c")] [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 BRCTools; internal class CrewBoomHook : MonoBehaviour { public static BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic; private const string _CrewBoomName = "CrewBoom"; private static bool _CrewBoomInstalled = false; private static BaseUnityPlugin _CrewBoomPlugin = null; private static Type _CrewBoom_CharacterDatabase = null; private static int _NewCharacterCount = 0; public static bool CrewBoomInstalled { get { if (_CrewBoomInstalled) { return _CrewBoomInstalled; } return _CrewBoomInstalled = Object.FindObjectsOfType<BaseUnityPlugin>().Any((BaseUnityPlugin x) => x.Info.Metadata.GUID == "CrewBoom"); } } public static BaseUnityPlugin CrewBoomPlugin { get { if (!CrewBoomInstalled || !((Object)(object)_CrewBoomPlugin == (Object)null)) { return _CrewBoomPlugin; } return _CrewBoomPlugin = ((IEnumerable<BaseUnityPlugin>)Object.FindObjectsOfType<BaseUnityPlugin>()).FirstOrDefault((Func<BaseUnityPlugin, bool>)((BaseUnityPlugin x) => x.Info.Metadata.GUID == "CrewBoom")); } } public static Type CrewBoom_CharacterDatabase { get { AssemblyName assemblyName = default(AssemblyName); Assembly arg = default(Assembly); if (CrewBoomInstalled && _CrewBoom_CharacterDatabase == null && Utility.TryParseAssemblyName(CrewBoomPlugin.Info.Metadata.Name, ref assemblyName) && Utility.TryResolveDllAssembly(assemblyName, Path.GetDirectoryName(CrewBoomPlugin.Info.Location), ref arg)) { return _CrewBoom_CharacterDatabase = Type.GetType(string.Format("{0}.CharacterDatabase, {1}", "CrewBoom", arg)); } return _CrewBoom_CharacterDatabase; } } public static int NewCharacterCount { get { if (_NewCharacterCount != 0 || !(CrewBoom_CharacterDatabase != null)) { return _NewCharacterCount; } return _NewCharacterCount = (int)CrewBoom_CharacterDatabase.GetProperty("NewCharacterCount", flags).GetValue(null, null); } } public static int RealCharactersMax { get { int num = 26; if (CrewBoom_CharacterDatabase != null && NewCharacterCount != 0) { num += NewCharacterCount + 1; } return num; } } public static string GetCharacterName(Characters character) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Invalid comparison between Unknown and I4 //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Invalid comparison between Unknown and I4 //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Invalid comparison between Unknown and I4 //IL_002f: 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) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Invalid comparison between Unknown and I4 if ((int)character != 26 && (int)character != -1) { if ((int)character > 26 && CrewBoom_CharacterDatabase != null) { string empty = string.Empty; object[] array = new object[2] { character, empty }; CrewBoom_CharacterDatabase.GetMethod("GetCharacterName", flags)?.Invoke(null, array); return (string)array[1]; } if ((int)character < 26) { Core instance = Core.Instance; IGameTextLocalizer val = ((instance != null) ? instance.Localizer : null); if (val != null) { string characterName = val.GetCharacterName(character); string text = ((characterName != null) ? StringExtensions.FirstCharToUpper(characterName.ToLower()) : null); TextInfo textInfo = new CultureInfo(CultureInfo.CurrentCulture.ToString(), useUserOverride: false)?.TextInfo; if (textInfo != null) { text = textInfo.ToTitleCase(text); } if ((int)character == 23) { text += " (No Jetpack)"; } return text; } if (ToolsConfig.Instance.charToName.TryGetValue(((object)(Characters)(ref character)).ToString(), out var value)) { return value; } } } return ((object)(Characters)(ref character)).ToString(); } } [BepInPlugin("speedrunning.brc.brctools", "BRCTools", "0.2.2")] public class Plugin : BaseUnityPlugin { public const string pluginGuid = "speedrunning.brc.brctools"; public const string pluginName = "BRCTools"; public const string pluginVersion = "0.2.2"; private GameObject _mod; private void Awake() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown _mod = new GameObject(); _mod.AddComponent<ToolsConfig>(); _mod.AddComponent<ToolsGame>(); _mod.AddComponent<ToolsFunctions>(); _mod.AddComponent<ToolsMenu>(); _mod.AddComponent<ToolsBindings>(); _mod.AddComponent<ToolsFun>(); _mod.AddComponent<ToolsPatcher>(); _mod.AddComponent<ToolsRef>(); Object.DontDestroyOnLoad((Object)(object)_mod); } } internal class ToolsBindings : MonoBehaviour { public delegate void KeysToCheck(); public static bool acceptKeys = true; public static KeysToCheck keysToCheck; private void Update() { //IL_0007: 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) if (!acceptKeys) { return; } if (Input.GetKeyDown(ToolsConfig.KeyBinds.key_MenuToggle)) { if (ToolsGUI.menuIsVisible && !ToolsGUI.menuInAnimation) { ToolsRef.toolsGUI.MenuHide(); } else if (!ToolsGUI.menuIsVisible && !ToolsGUI.menuInAnimation) { ToolsRef.toolsGUI.MenuShow(); } } if (Input.GetKeyDown(ToolsConfig.KeyBinds.key_MenuMouse)) { ToolsRef.toolsGUI.MenuToggleFocus(); } keysToCheck(); } } internal class ToolsConfig : MonoBehaviour { public class KeyBinds { public static KeyCode key_MenuToggle = (KeyCode)59; public static KeyCode key_MenuMouse = (KeyCode)112; public static KeyCode key_Refill = (KeyCode)114; public static KeyCode key_Invulnerable = (KeyCode)105; public static KeyCode key_EndWanted = (KeyCode)107; public static KeyCode key_InfBoost = (KeyCode)117; public static KeyCode key_DisPolice = (KeyCode)111; public static KeyCode key_CharPrev = (KeyCode)0; public static KeyCode key_CharNext = (KeyCode)0; public static KeyCode key_Save = (KeyCode)104; public static KeyCode key_Load = (KeyCode)106; public static KeyCode key_StylePrev = (KeyCode)0; public static KeyCode key_StyleNext = (KeyCode)0; public static KeyCode key_OutfitPrev = (KeyCode)0; public static KeyCode key_OutfitNext = (KeyCode)0; public static KeyCode key_LevelPrev = (KeyCode)91; public static KeyCode key_LevelNext = (KeyCode)93; public static KeyCode key_GoToLevel = (KeyCode)48; public static KeyCode key_LockFPS = (KeyCode)108; public static KeyCode key_SetTimescale = (KeyCode)116; public static KeyCode key_Noclip = (KeyCode)92; public static KeyCode key_Fly = (KeyCode)47; public static KeyCode key_Triggers = (KeyCode)120; public static KeyCode key_DisSaving = (KeyCode)98; public static KeyCode key_DisCars = (KeyCode)99; public static KeyCode key_ResGraf = (KeyCode)110; public static KeyCode key_ResGame = (KeyCode)118; public static KeyCode key_ResLevel = (KeyCode)103; public static KeyCode key_prevSave = (KeyCode)45; public static KeyCode key_nextSave = (KeyCode)61; public static KeyCode key_goToSave = (KeyCode)8; public static KeyCode key_autoGraf = (KeyCode)109; public static KeyCode key_refillHP = (KeyCode)122; public static KeyCode key_saveGame = (KeyCode)46; public static KeyCode key_spawnPrev = (KeyCode)0; public static KeyCode key_spawnNext = (KeyCode)0; public static KeyCode key_dreamPrev = (KeyCode)0; public static KeyCode key_dreamNext = (KeyCode)0; } public class Settings { public static bool shouldFocusMenuOnShow = false; public static bool shouldMenuStartShown = true; internal static bool _shouldUseAllGraffitis = false; public static bool shouldHideCords = false; public static bool shouldHideSpeed = false; public static bool shouldTieLabels = false; public static bool shouldAllowCutsceneSkip = true; public static bool speedUpCutsceneSkip = false; public static bool shouldHaveSpecial = false; public static bool shouldLaunchToMenu = false; public static bool shouldUseAllGraffitis { get { return _shouldUseAllGraffitis; } set { _shouldUseAllGraffitis = value; ToolsFunctions.used_graffiti.Clear(); } } } public static ToolsConfig Instance; private const string folderName = "BRCTools"; private const string saveFolderName = "SAVES"; private const string descFileName = "descriptions"; private const string keybindFileName = "Keybinds"; private const string settingFileName = "Settings"; public static string ext_saves = ".brctools"; public static string folder_config = Path.Combine(Paths.ConfigPath, "BRCTools"); public static string folder_saves = Path.Combine(folder_config, "SAVES"); public static string file_desc = Path.Combine(folder_saves, "descriptions.txt"); public static HashSet<string> desc_contents = new HashSet<string>(); private static List<string> saves = new List<string>(); public static Dictionary<string, string> files_saves = new Dictionary<string, string>(); private ConfigFile keybinds; private ConfigFile settings; private Dictionary<KeyCode, string> keyToString = new Dictionary<KeyCode, string> { { (KeyCode)48, "0" }, { (KeyCode)49, "1" }, { (KeyCode)50, "2" }, { (KeyCode)51, "3" }, { (KeyCode)52, "4" }, { (KeyCode)53, "5" }, { (KeyCode)54, "6" }, { (KeyCode)55, "7" }, { (KeyCode)56, "8" }, { (KeyCode)57, "9" }, { (KeyCode)256, "N0" }, { (KeyCode)257, "N1" }, { (KeyCode)258, "N2" }, { (KeyCode)259, "N3" }, { (KeyCode)260, "N4" }, { (KeyCode)261, "N5" }, { (KeyCode)262, "N6" }, { (KeyCode)263, "N7" }, { (KeyCode)264, "N8" }, { (KeyCode)265, "N9" }, { (KeyCode)266, "N." }, { (KeyCode)267, "N/" }, { (KeyCode)268, "N*" }, { (KeyCode)269, "N-" }, { (KeyCode)271, "NRTN" }, { (KeyCode)272, "N=" }, { (KeyCode)8, "BKS" }, { (KeyCode)127, "DEL" }, { (KeyCode)9, "TAB" }, { (KeyCode)12, "CLR" }, { (KeyCode)13, "RTN" }, { (KeyCode)19, "PSE" }, { (KeyCode)27, "ESC" }, { (KeyCode)32, "SPC" }, { (KeyCode)273, "UP" }, { (KeyCode)274, "DWN" }, { (KeyCode)275, "LFT" }, { (KeyCode)276, "RGT" }, { (KeyCode)33, "!" }, { (KeyCode)34, "\"" }, { (KeyCode)35, "#" }, { (KeyCode)36, "$" }, { (KeyCode)37, "%" }, { (KeyCode)38, "&" }, { (KeyCode)39, "'" }, { (KeyCode)40, "(" }, { (KeyCode)41, ")" }, { (KeyCode)42, "*" }, { (KeyCode)43, "+" }, { (KeyCode)44, "," }, { (KeyCode)45, "-" }, { (KeyCode)46, "." }, { (KeyCode)47, "/" }, { (KeyCode)58, ":" }, { (KeyCode)59, ";" }, { (KeyCode)60, "<" }, { (KeyCode)61, "=" }, { (KeyCode)62, ">" }, { (KeyCode)63, "?" }, { (KeyCode)64, "@" }, { (KeyCode)91, "[" }, { (KeyCode)92, "\\" }, { (KeyCode)93, "]" }, { (KeyCode)94, "^" }, { (KeyCode)95, "_" }, { (KeyCode)96, "`" }, { (KeyCode)123, "{" }, { (KeyCode)124, "|" }, { (KeyCode)125, "}" }, { (KeyCode)126, "~" }, { (KeyCode)323, "M0" }, { (KeyCode)324, "M1" }, { (KeyCode)325, "M2" }, { (KeyCode)326, "M3" }, { (KeyCode)327, "M4" }, { (KeyCode)328, "M5" }, { (KeyCode)329, "M6" }, { (KeyCode)0, "" } }; public Dictionary<string, string> charToName; public Dictionary<string, string> styleToName; public Dictionary<int, string> outfitToName; public Dictionary<int, string> levelToName; public Dictionary<int, string> chapterToName; public ToolsConfig() { //IL_0458: Unknown result type (might be due to invalid IL or missing references) //IL_0472: Unknown result type (might be due to invalid IL or missing references) //IL_048c: Unknown result type (might be due to invalid IL or missing references) //IL_04a6: Unknown result type (might be due to invalid IL or missing references) //IL_04c0: Unknown result type (might be due to invalid IL or missing references) //IL_04da: Unknown result type (might be due to invalid IL or missing references) //IL_04f4: Unknown result type (might be due to invalid IL or missing references) //IL_050e: Unknown result type (might be due to invalid IL or missing references) //IL_0528: Unknown result type (might be due to invalid IL or missing references) //IL_0543: Unknown result type (might be due to invalid IL or missing references) //IL_055e: Unknown result type (might be due to invalid IL or missing references) //IL_0579: Unknown result type (might be due to invalid IL or missing references) //IL_0594: Unknown result type (might be due to invalid IL or missing references) //IL_05af: Unknown result type (might be due to invalid IL or missing references) //IL_05ca: Unknown result type (might be due to invalid IL or missing references) //IL_05e5: Unknown result type (might be due to invalid IL or missing references) //IL_0600: Unknown result type (might be due to invalid IL or missing references) //IL_061b: Unknown result type (might be due to invalid IL or missing references) //IL_0636: Unknown result type (might be due to invalid IL or missing references) //IL_0651: Unknown result type (might be due to invalid IL or missing references) //IL_066c: Unknown result type (might be due to invalid IL or missing references) //IL_0687: Unknown result type (might be due to invalid IL or missing references) //IL_06a2: Unknown result type (might be due to invalid IL or missing references) //IL_06bd: Unknown result type (might be due to invalid IL or missing references) //IL_06d8: Unknown result type (might be due to invalid IL or missing references) //IL_06f3: Unknown result type (might be due to invalid IL or missing references) //IL_0718: Unknown result type (might be due to invalid IL or missing references) //IL_0732: Unknown result type (might be due to invalid IL or missing references) //IL_074c: Unknown result type (might be due to invalid IL or missing references) //IL_0766: Unknown result type (might be due to invalid IL or missing references) Dictionary<string, string> dictionary = new Dictionary<string, string>(); Characters val = (Characters)0; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Vinyl"); val = (Characters)1; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Frank"); val = (Characters)2; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Coil"); val = (Characters)3; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Red"); val = (Characters)4; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Tryce"); val = (Characters)5; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Bel"); val = (Characters)6; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Rave"); val = (Characters)7; dictionary.Add(((object)(Characters)(ref val)).ToString(), "DOT EXE"); val = (Characters)8; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Solace"); val = (Characters)9; dictionary.Add(((object)(Characters)(ref val)).ToString(), "DJ Cyber"); val = (Characters)10; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Eclipse"); val = (Characters)11; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Devil Theory"); val = (Characters)12; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Faux"); val = (Characters)13; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Flesh Prince"); val = (Characters)14; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Irene Rietveld"); val = (Characters)15; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Felix"); val = (Characters)16; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Old Head"); val = (Characters)17; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Base"); val = (Characters)18; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Jay"); val = (Characters)19; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Mesh"); val = (Characters)20; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Futurism"); val = (Characters)21; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Rise"); val = (Characters)22; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Shine"); val = (Characters)23; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Faux (No Jetpack)"); val = (Characters)24; dictionary.Add(((object)(Characters)(ref val)).ToString(), "DOT EXE (Boss)"); val = (Characters)25; dictionary.Add(((object)(Characters)(ref val)).ToString(), "Felix (Red)"); charToName = dictionary; Dictionary<string, string> dictionary2 = new Dictionary<string, string>(); MoveStyle val2 = (MoveStyle)1; dictionary2.Add(((object)(MoveStyle)(ref val2)).ToString(), "BMX"); val2 = (MoveStyle)2; dictionary2.Add(((object)(MoveStyle)(ref val2)).ToString(), "Skateboard"); val2 = (MoveStyle)3; dictionary2.Add(((object)(MoveStyle)(ref val2)).ToString(), "Inline"); val2 = (MoveStyle)4; dictionary2.Add(((object)(MoveStyle)(ref val2)).ToString(), "Special"); styleToName = dictionary2; outfitToName = new Dictionary<int, string> { { 0, "Spring" }, { 1, "Summer" }, { 2, "Autumn" }, { 3, "Winter" } }; levelToName = new Dictionary<int, string> { { 8, "Prelude" }, { 5, "Hideout" }, { 4, "Versum Hill" }, { 11, "Square" }, { 12, "Brink Terminal" }, { 6, "Millennium Mall" }, { 9, "Pyramid" }, { 7, "Mataan" } }; chapterToName = new Dictionary<int, string> { { 1, "Chapter 1" }, { 2, "Chapter 2" }, { 3, "Chapter 3" }, { 4, "Chapter 4" }, { 5, "Chapter 5" }, { 6, "Chapter 6" } }; ((MonoBehaviour)this)..ctor(); Instance = this; } private void HandleSettingsEntry(string entry, ref bool setting) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown settings.Bind<bool>("Settings", entry, setting, (ConfigDescription)null); ConfigEntry<bool> val = default(ConfigEntry<bool>); settings.TryGetEntry<bool>(new ConfigDefinition("Settings", entry), ref val); if (val != null) { setting = val.Value; } } private void Awake() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Expected O, but got Unknown //IL_03c9: Unknown result type (might be due to invalid IL or missing references) //IL_0413: Unknown result type (might be due to invalid IL or missing references) //IL_0438: Unknown result type (might be due to invalid IL or missing references) //IL_043d: Unknown result type (might be due to invalid IL or missing references) //IL_0475: Unknown result type (might be due to invalid IL or missing references) if (!Directory.Exists(folder_config)) { Directory.CreateDirectory(folder_config); } if (!Directory.Exists(folder_config)) { return; } settings = new ConfigFile(GetAsCFGPath("Settings"), true); HandleSettingsEntry("Start Menu Open", ref Settings.shouldMenuStartShown); HandleSettingsEntry("Enable Mouse On Showing Menu", ref Settings.shouldFocusMenuOnShow); HandleSettingsEntry("Auto Graffiti Uses All Graffiti", ref Settings._shouldUseAllGraffitis); HandleSettingsEntry("Start Coords Hidden", ref Settings.shouldHideCords); HandleSettingsEntry("Start Speed Hidden", ref Settings.shouldHideSpeed); HandleSettingsEntry("Coord & Speed Visibility Based On Menu", ref Settings.shouldTieLabels); HandleSettingsEntry("Allow All Cutscene Skipping", ref Settings.shouldAllowCutsceneSkip); HandleSettingsEntry("Speed Up Cutscene Skip If All", ref Settings.speedUpCutsceneSkip); HandleSettingsEntry("Style Includes Special Skateboard", ref Settings.shouldHaveSpecial); HandleSettingsEntry("Launch Game To Menu", ref Settings.shouldLaunchToMenu); keybinds = new ConfigFile(GetAsCFGPath("Keybinds"), true); Dictionary<string, string> dictionary = new Dictionary<string, string> { { "key_MenuToggle", "Toggle Menu" }, { "key_MenuMouse", "Toggle Mouse Input" }, { "key_Refill", "Refill Boost" }, { "key_Invulnerable", "Become Invulnerable" }, { "key_EndWanted", "End Wanted State" }, { "key_InfBoost", "Infinite Boost" }, { "key_DisPolice", "Disable Police" }, { "key_CharPrev", "Previous Character" }, { "key_CharNext", "Next Character" }, { "key_Save", "Save Position" }, { "key_Load", "Load Position" }, { "key_StylePrev", "Previous Style" }, { "key_StyleNext", "Next Style" }, { "key_OutfitPrev", "Previous Outfit" }, { "key_OutfitNext", "Next Outfit" }, { "key_LevelPrev", "Previous Level" }, { "key_LevelNext", "Next Level" }, { "key_GoToLevel", "Load Level" }, { "key_LockFPS", "Lock FPS" }, { "key_SetTimescale", "Set Timescale" }, { "key_Noclip", "Toggle Noclip" }, { "key_Fly", "Toggle Flying" }, { "key_Triggers", "Toggle Triggers" }, { "key_DisSaving", "Disable Saving" }, { "key_DisCars", "Disable Cars" }, { "key_ResGraf", "Reset Graffiti" }, { "key_ResGame", "Load Current Save" }, { "key_ResLevel", "Restart Level" }, { "key_prevSave", "Previous Save" }, { "key_nextSave", "Next Save" }, { "key_goToSave", "Load Selected Save" }, { "key_autoGraf", "Auto Graffiti" }, { "key_refillHP", "Refill Health" }, { "key_saveGame", "Create Save File" }, { "key_spawnPrev", "Previous Spawn" }, { "key_spawnNext", "Next Spawn" }, { "key_dreamPrev", "Previous Dream Spawn" }, { "key_dreamNext", "Next Dream Spawn" } }; int num = 0; FieldInfo[] fields = typeof(KeyBinds).GetFields(BindingFlags.Static | BindingFlags.Public); foreach (FieldInfo fieldInfo in fields) { string text = $"NO_DESC_{num++}"; if (dictionary.TryGetValue(fieldInfo.Name, out var value)) { text = value; } else { dictionary.Add(fieldInfo.Name, text); } keybinds.Bind<string>("Keybinds", text, GetKeyString((KeyCode)fieldInfo.GetValue(null)), (ConfigDescription)null); } num = 0; ConfigEntry<string> val2 = default(ConfigEntry<string>); foreach (ConfigDefinition item in keybinds.Keys) { KeyCode val = (KeyCode)0; if (keybinds.TryGetEntry<string>(item, ref val2)) { val = GetStringKey(val2.Value.ToUpper()); } string key2 = dictionary.FirstOrDefault((KeyValuePair<string, string> key) => key.Value == item.Key).Key; if (key2 != null) { typeof(KeyBinds).GetField(key2, BindingFlags.Static | BindingFlags.Public).SetValue(null, val); } } UpdateSaveFiles(); } public void UpdateSaveFiles() { saves.Clear(); files_saves.Clear(); if (!Directory.Exists(folder_saves)) { Directory.CreateDirectory(folder_saves); } if (!Directory.Exists(folder_saves)) { return; } string[] files = Directory.GetFiles(folder_saves); foreach (string text in files) { if (text.EndsWith(ext_saves)) { string item = Path.Combine(folder_saves, text); saves.Add(item); } } saves.Sort(); if (!File.Exists(file_desc)) { File.CreateText(file_desc); } if (saves.Count <= 0 || !File.Exists(file_desc)) { return; } foreach (string safe in saves) { string saveFile = safe.Remove(0, safe.LastIndexOf("\\") + 1) + ":"; string text2 = File.ReadAllLines(file_desc).FirstOrDefault((string x) => x.StartsWith(saveFile)); if (text2 == null) { text2 = saveFile + " " + saveFile.Substring(0, saveFile.Length - 1).Replace(ext_saves, string.Empty); File.AppendAllText(file_desc, "\n" + text2); } string text3 = text2.Remove(0, saveFile.Length); text3 = text3.Replace("\t", string.Empty); string text4 = text3.Replace(" ", string.Empty); while (text3.Length > 0 && text4 != "" && text3.StartsWith(" ")) { text3 = text3.Remove(0, 1); } if (text3.Count() > 30) { text3 = text3.Substring(0, 30); } if (!files_saves.Keys.ToArray().Contains(safe)) { files_saves.Add(safe, text3); } } desc_contents = File.ReadAllLines(file_desc).ToHashSet(); files_saves = files_saves.OrderBy<KeyValuePair<string, string>, string>((KeyValuePair<string, string> x) => x.Key, StringComparer.OrdinalIgnoreCase).ToDictionary((KeyValuePair<string, string> x) => x.Key, (KeyValuePair<string, string> y) => y.Value); } private string GetAsCFGPath(string file) { return Path.Combine(folder_config, file + ".cfg"); } public string GetKeyString(KeyCode keycode) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) if (keyToString.TryGetValue(keycode, out var value)) { return value; } if (((object)(KeyCode)(ref keycode)).ToString().Length <= 4) { return ((object)(KeyCode)(ref keycode)).ToString().ToUpper(); } return ((object)(KeyCode)(ref keycode)).ToString().Substring(0, 4).ToUpper(); } public KeyCode GetStringKey(string key) { //IL_0036: 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_0060: Unknown result type (might be due to invalid IL or missing references) int num = 0; foreach (string value in keyToString.Values) { if (value == key) { return keyToString.Keys.ToArray()[num]; } num++; } if (Enum.TryParse<KeyCode>(key, out KeyCode result)) { return result; } return (KeyCode)0; } } internal class ToolsFun : MonoBehaviour { private Color rainbowColor; private int currentIndex; private Color[] colors = (Color[])(object)new Color[6] { Color.red, Color.yellow, Color.green, Color.cyan, Color.blue, Color.magenta }; private float timer; private float transitionInterval = 0.2f; private float updateTimer; private float updateInterval = 0.05f; private Text nText; private string pluginVersion = "0.2.2"; private void Start() { ((MonoBehaviour)this).StartCoroutine(FindText()); } private IEnumerator FindText() { while ((Object)(object)nText == (Object)null) { if ((Object)(object)ToolsGUI.stripText != (Object)null) { nText = ToolsGUI.stripText.GetComponent<Text>(); } yield return null; } } private void Update() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0044: 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_0092: 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) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) if (ToolsGUI.menuIsVisible && updateTimer >= updateInterval) { rainbowColor = Color.Lerp(colors[currentIndex], colors[(currentIndex + 1) % colors.Length], timer / transitionInterval); if (timer >= transitionInterval) { currentIndex = (currentIndex + 1) % colors.Length; rainbowColor = colors[currentIndex]; timer = 0f; } timer += Time.deltaTime; if ((Object)(object)nText != (Object)null) { nText.text = "BRCTools (" + pluginVersion + ") - by <color=#" + ColorUtility.ToHtmlStringRGB(rainbowColor) + ">Ninja Cookie</color>"; } updateTimer = 0f; } updateTimer += Time.deltaTime; } } internal class ToolsFunctions : MonoBehaviour { public class Toggles : MonoBehaviour { private static bool _invulnerable; private static bool _police; private static bool _infBoost; private static bool _tfps; private static bool _timescale; private static bool _noclip; private static bool _fly; private static bool _triggers; private static bool _saving; private static bool _cars; private static bool _autograf; private static bool _showrespawn; public static bool invulnerable { get { return _invulnerable; } set { _invulnerable = value; ToolsRef.toolsGUI.UpdateLinks(); } } public static bool police { get { return _police; } set { _police = value; ToolsRef.toolsGUI.UpdateLinks(); } } public static bool infBoost { get { return _infBoost; } set { _infBoost = value; ToolsRef.toolsGUI.UpdateLinks(); } } public static bool tfps { get { return _tfps; } set { _tfps = value; ToolsRef.toolsGUI.UpdateLinks(); } } public static bool timescale { get { return _timescale; } set { _timescale = value; ToolsRef.toolsGUI.UpdateLinks(); } } public static bool noclip { get { return _noclip; } set { _noclip = value; ToolsRef.toolsGUI.UpdateLinks(); } } public static bool fly { get { return _fly; } set { _fly = value; ToolsRef.toolsGUI.UpdateLinks(); } } public static bool triggers { get { return _triggers; } set { _triggers = value; ToolsRef.toolsGUI.UpdateLinks(); } } public static bool saving { get { return _saving; } set { _saving = value; ToolsRef.toolsGUI.UpdateLinks(); } } public static bool cars { get { return _cars; } set { _cars = value; ToolsRef.toolsGUI.UpdateLinks(); } } public static bool autograf { get { return _autograf; } set { _autograf = value; ToolsRef.toolsGUI.UpdateLinks(); } } public static bool showrespawn { get { return _showrespawn; } set { _showrespawn = value; ToolsRef.toolsGUI.UpdateLinks(); } } } public class Attributes : MonoBehaviour { private static Vector3 _savedPos = Vector3.zero; private static float _savedStorage = 0f; private static float _savedBoost = 0f; private static float _savedSpeed = 0f; private static Ability _savedAbility = null; private static bool _savedHasBoost = true; private static bool _savedHasDash = true; private static int _savedAnim = -1; private static Vector3 _savedSpeedVector = Vector3.zero; private static Vector3 _savedVelDir = Vector3.zero; private static Quaternion _savedRot = Quaternion.identity; private static MoveStyle _savedMovestyleCurrent = (MoveStyle)0; private static MoveStyle _savedMovestyleEquip = (MoveStyle)0; private static bool _savedEquipmentUsing = false; private static int _charIndex = 3; private static int _styleIndex = 2; private static int _outfitIndex = 0; private static int _levelIndex = 0; private static int _saveIndex = 0; private static int _spawnIndex = 0; private static int _dreamSpawnIndex = 0; private static int _framerate = 30; private static float _timescale = 0.1f; private static float _noclip = 50f; private static float _fly = 25f; private static Vector3 _levelSpawnPos = Vector3.zero; private static Vector3 _levelSpawnRot = Vector3.zero; public static float savedPosX { get { return _savedPos.x; } set { _savedPos.x = value; ToolsRef.toolsGUI.UpdateFields("savedPosX", value); } } public static float savedPosY { get { return _savedPos.y; } set { _savedPos.y = value; ToolsRef.toolsGUI.UpdateFields("savedPosY", value); } } public static float savedPosZ { get { return _savedPos.z; } set { _savedPos.z = value; ToolsRef.toolsGUI.UpdateFields("savedPosZ", value); } } public static Vector3 savedPos { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return _savedPos; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000b: 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) savedPosX = value.x; savedPosY = value.y; savedPosZ = value.z; } } public static float savedStorage { get { return _savedStorage; } set { _savedStorage = value; ToolsRef.toolsGUI.UpdateFields("savedStorage", value); } } public static float savedBoost { get { return _savedBoost; } set { _savedBoost = Mathf.Round(value * 100f) / 100f; ToolsRef.toolsGUI.UpdateFields("savedBoost", _savedBoost); } } public static float savedSpeed { get { return _savedSpeed; } set { _savedSpeed = value; ToolsRef.toolsGUI.UpdateFields("savedSpeed", value); } } public static Ability savedAbility { get { return _savedAbility; } set { _savedAbility = value; } } public static bool savedHasBoost { get { return _savedHasBoost; } set { _savedHasBoost = value; } } public static bool savedHasDash { get { return _savedHasDash; } set { _savedHasDash = value; } } public static int savedAnim { get { return _savedAnim; } set { _savedAnim = value; } } public static Vector3 savedSpeedVector { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return _savedSpeedVector; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) _savedSpeedVector = value; } } public static Vector3 savedVelDir { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return _savedVelDir; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) _savedVelDir = value; } } public static Quaternion savedRot { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return _savedRot; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) _savedRot = value; } } public static MoveStyle savedMovestyleCurrent { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return _savedMovestyleCurrent; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) _savedMovestyleCurrent = value; } } public static MoveStyle savedMovestyleEquip { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return _savedMovestyleEquip; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) _savedMovestyleEquip = value; } } public static bool savedEquipmentUsing { get { return _savedEquipmentUsing; } set { _savedEquipmentUsing = value; } } public static int charIndex { get { return _charIndex; } set { _charIndex = value; ToolsRef.toolsGUI.UpdateSelectors(ToolsRef.toolsFunctions.FuncChangePlayer, ToolsRef.toolsFunctions.CharToName(value)); } } public static int styleIndex { get { return _styleIndex; } set { _styleIndex = value; ToolsRef.toolsGUI.UpdateSelectors(ToolsRef.toolsFunctions.FuncChangeStyle, ToolsRef.toolsFunctions.StyleToName(value)); } } public static int outfitIndex { get { return _outfitIndex; } set { _outfitIndex = value; ToolsRef.toolsGUI.UpdateSelectors(ToolsRef.toolsFunctions.FuncChangeOutfit, ToolsRef.toolsFunctions.OutfitToName(value)); } } public static int levelIndex { get { return _levelIndex; } set { _levelIndex = value; ToolsRef.toolsGUI.UpdateSelectors(ToolsRef.toolsFunctions.FuncChangeLevel, ToolsRef.toolsFunctions.LevelToName(value)); } } public static int saveIndex { get { return _saveIndex; } set { _saveIndex = value; ToolsRef.toolsGUI.UpdateSelectors(ToolsRef.toolsFunctions.FuncChangeSave, ToolsRef.toolsFunctions.SaveToName(value)); } } public static int spawnIndex { get { return _spawnIndex; } set { _spawnIndex = value; ToolsRef.toolsGUI.UpdateSelectors(ToolsRef.toolsFunctions.FuncChangeSpawn, ToolsRef.toolsFunctions.SpawnToName(value)); } } public static int dreamSpawnIndex { get { return _dreamSpawnIndex; } set { _dreamSpawnIndex = value; ToolsRef.toolsGUI.UpdateSelectors(ToolsRef.toolsFunctions.FuncChangeDreamSpawn, ToolsRef.toolsFunctions.DreamSpawnToName(value)); } } public static int framerate { get { return _framerate; } set { _framerate = Mathf.Max(value, 1); ToolsRef.toolsGUI.UpdateFields("framerate", Mathf.RoundToInt((float)_framerate)); } } public static float timescale { get { return _timescale; } set { _timescale = Mathf.Max(value, 0.01f); ToolsRef.toolsGUI.UpdateFields("timescale", _timescale); } } public static float noclip { get { return _noclip; } set { _noclip = Mathf.Max(value, 0f); ToolsRef.toolsGUI.UpdateFields("noclip", value); } } public static float fly { get { return _fly; } set { _fly = Mathf.Max(value, 0f); ToolsRef.toolsGUI.UpdateFields("fly", value); } } public static Vector3 levelSpawnPos { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return _levelSpawnPos; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) _levelSpawnPos = value; } } public static Vector3 levelSpawnRot { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return _levelSpawnRot; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) _levelSpawnRot = value; } } } private delegate void ActiveFunctions(); private delegate void ActiveFunctionsFixed(); private delegate void ActiveFlyNoclipFixed(); private enum ErrorType { PLAYER_NOT_FOUND, BAD_CONDS, NO_ACTIVE_GAME, NO_SAVE, NO_SAVESLOT, SAVE_FILE_CORRUPT, FATEL, SAVE_CREATED } private class SavedData { public Vector3 position { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return Attributes.savedPos; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) Attributes.savedPos = value; } } public Vector3 velocityDir { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return Attributes.savedVelDir; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) Attributes.savedVelDir = value; } } public float velocity { get { return Attributes.savedSpeed; } set { Attributes.savedSpeed = value; } } public Vector3 velocityVector { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return Attributes.savedSpeedVector; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) Attributes.savedSpeedVector = value; } } public Quaternion rotation { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return Attributes.savedRot; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) Attributes.savedRot = value; } } public float boost { get { return Attributes.savedBoost; } set { Attributes.savedBoost = value; } } public MoveStyle moveStyleCurrent { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return Attributes.savedMovestyleCurrent; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) Attributes.savedMovestyleCurrent = value; } } public MoveStyle moveStyleEquip { get { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return Attributes.savedMovestyleEquip; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) Attributes.savedMovestyleEquip = value; } } public bool usingEquipment { get { return Attributes.savedEquipmentUsing; } set { Attributes.savedEquipmentUsing = value; } } public float storageSpeed { get { return Attributes.savedStorage; } set { Attributes.savedStorage = value; } } public Ability ability { get { return Attributes.savedAbility; } set { Attributes.savedAbility = value; } } public int animation { get { return Attributes.savedAnim; } set { Attributes.savedAnim = value; } } public bool hasBoost { get { return Attributes.savedHasBoost; } set { Attributes.savedHasBoost = value; } } public bool hasDash { get { return Attributes.savedHasDash; } set { Attributes.savedHasDash = value; } } } public class TriggerRender : MonoBehaviour { private GameObject targetObject; private Mesh mesh; private MeshFilter filter; private MeshRenderer renderer; private Material originalMaterial; private Material triggerMaterial; private bool wasEnabled; private float alpha = 0.1f; private void Awake() { targetObject = ((Component)this).gameObject; HandleEdgeCases(); SetUpMesh(); SetUpFilter(); SetUpRenderer(); } private void HandleEdgeCases() { //IL_0040: 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_0050: 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_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_008e: 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_009d: 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_0116: 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_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: 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_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_0225: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_023c: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_0253: 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_0262: Unknown result type (might be due to invalid IL or missing references) BoxCollider val = default(BoxCollider); BoxCollider val3 = default(BoxCollider); BoxCollider val5 = default(BoxCollider); if (((Object)targetObject).name == "DH_MarketShield" && targetObject.TryGetComponent<BoxCollider>(ref val)) { GameObject val2 = GameObject.CreatePrimitive((PrimitiveType)3); val2.transform.SetPositionAndRotation(((Component)this).transform.TransformPoint(val.center), ((Component)val).transform.rotation); val2.transform.localScale = new Vector3(val.size.x + 0.5f, ((Component)this).transform.TransformVector(val.size).y, ((Component)this).transform.TransformVector(val.size).x); Object.Destroy((Object)(object)val2.GetComponent<Collider>()); val2.GetComponent<Renderer>().enabled = false; targetObject = val2; } else if (((Object)targetObject).name == "DH_BRect_EdgeBISBIS (45)" && targetObject.TryGetComponent<BoxCollider>(ref val3)) { GameObject val4 = GameObject.CreatePrimitive((PrimitiveType)3); val4.transform.SetPositionAndRotation(((Component)this).transform.TransformPoint(val3.center), ((Component)val3).transform.rotation); val4.transform.localScale = new Vector3(((Component)this).transform.TransformVector(val3.size).x + 1f, ((Component)this).transform.TransformVector(val3.size).y, ((Component)this).transform.TransformVector(val3.size).z - 3.4f); Object.Destroy((Object)(object)val4.GetComponent<Collider>()); val4.GetComponent<Renderer>().enabled = false; targetObject = val4; } else if (((Object)targetObject).name == "Tower_OfficeRow (1)" && targetObject.TryGetComponent<BoxCollider>(ref val5)) { GameObject val6 = GameObject.CreatePrimitive((PrimitiveType)3); val6.transform.SetPositionAndRotation(((Component)this).transform.TransformPoint(val5.center), ((Component)val5).transform.rotation); val6.transform.Rotate(0f, 90f, 0f); val6.transform.localScale = new Vector3(((Component)this).transform.TransformVector(val5.size).x, ((Component)this).transform.TransformVector(val5.size).y, ((Component)this).transform.TransformVector(val5.size).z); Object.Destroy((Object)(object)val6.GetComponent<Collider>()); val6.GetComponent<Renderer>().enabled = false; targetObject = val6; } } private void SetUpMesh() { if ((Object)(object)cubeMesh == (Object)null) { GameObject obj = GameObject.CreatePrimitive((PrimitiveType)3); cubeMesh = obj.GetComponent<MeshFilter>().mesh; Object.Destroy((Object)(object)obj); } mesh = Object.Instantiate<Mesh>(cubeMesh); } private void SetUpFilter() { if (!targetObject.TryGetComponent<MeshFilter>(ref filter)) { filter = targetObject.AddComponent<MeshFilter>(); filter.mesh = mesh; filter.mesh.RecalculateNormals(); filter.mesh.RecalculateBounds(); filter.mesh.Optimize(); } else { filter = targetObject.GetComponent<MeshFilter>(); mesh = filter.mesh; } } private void SetUpRenderer() { //IL_0017: 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_008b: 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_00b0: Unknown result type (might be due to invalid IL or missing references) triggerMaterial = Object.Instantiate<Material>(triggerMat); triggerMaterial.color = GetMaterialColor(); if (!targetObject.TryGetComponent<MeshRenderer>(ref renderer)) { renderer = targetObject.AddComponent<MeshRenderer>(); wasEnabled = false; } else { if (((Renderer)renderer).material.HasProperty("_Color")) { triggerMaterial.color = new Color(((Renderer)renderer).material.color.r, ((Renderer)renderer).material.color.g, ((Renderer)renderer).material.color.b, alpha); } wasEnabled = ((Renderer)renderer).enabled; } originalMaterial = ((Renderer)renderer).material; ((Renderer)renderer).material = triggerMaterial; } private Color GetMaterialColor() { //IL_0334: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Unknown result type (might be due to invalid IL or missing references) //IL_02b1: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_02cc: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_02e7: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0245: Unknown result type (might be due to invalid IL or missing references) switch ((targetObject.tag.ToLower() != "untagged") ? targetObject.tag.ToLower() : ((Object)targetObject).name.ToLower()) { case "spawner": return new Color(0f, 1f, 0f, alpha); case "npc": return new Color(0.961f, 0.671f, 0.251f, alpha); case "trigger": return new Color(0.961f, 0.671f, 0.251f, alpha); case "progressobject": return new Color(0.961f, 0.671f, 0.251f, alpha); case "machine": return new Color(1f, 1f, 0.351f, alpha); case "boostchargeparented": return new Color(0f, 0f, 1f, alpha); case "camerazone": return new Color(0.5f, 0.5f, 1f, alpha); case "dh_marketshield": return new Color(0.71f, 0.15f, 0.8f, alpha); case "dh_brect_edgebisbis (45)": return new Color(0.71f, 0.15f, 0.8f, alpha); case "tower_officerow (1)": return new Color(0.71f, 0.15f, 0.8f, alpha); case "collbox": return new Color(0.71f, 0.15f, 0.8f, alpha); default: if (((Object)targetObject).name.Contains("trigger")) { return new Color(0.961f, 0.671f, 0.251f, alpha); } return new Color(0f, 1f, 1f, alpha); } } private void Update() { ((Renderer)renderer).material = (Toggles.triggers ? triggerMaterial : originalMaterial); ((Renderer)renderer).enabled = Toggles.triggers || wasEnabled; } } public static ToolsFunctions Instance; private ActiveFunctions activeFunctions; private ActiveFunctions activeFunctionsFixed; private ActiveFunctions activeFlyNoclipFixed; public Text errorMessage; private CancellationTokenSource tokenSrc; private static int prevVSync = QualitySettings.vSyncCount; private static int prevFPS = -1; public static bool loadingFile = false; private static SavedData savedData = new SavedData(); private float timeUpdate = Time.time; private const float updateRate = 0.25f; private int step; public static Mesh cubeMesh; public static Material triggerMat; public static List<GraffitiArt> used_graffiti = new List<GraffitiArt>(); private GameObject respawnPoint; public ToolsFunctions() { Instance = this; } public void UpdateMenuInfo() { PropertyInfo[] properties = typeof(Attributes).GetProperties(BindingFlags.Static | BindingFlags.Public); foreach (PropertyInfo propertyInfo in properties) { propertyInfo.SetValue(propertyInfo, propertyInfo.GetValue(propertyInfo)); } } private void ShowError(string error) { tokenSrc?.Cancel(); Task.Run(() => ShowErrorTask(error)); } private async Task ShowErrorTask(string error) { tokenSrc = new CancellationTokenSource(); if ((Object)(object)errorMessage != (Object)null) { string text = "Error: " + error + "..."; if (error == "Save Created") { text = "Save Created"; } errorMessage.text = text; ((Component)errorMessage).gameObject.SetActive(true); await Task.Delay(TimeSpan.FromSeconds(3.0), tokenSrc.Token); ((Component)errorMessage).gameObject.SetActive(false); } } private void Error(ErrorType error, params string[] conds) { switch (error) { case ErrorType.PLAYER_NOT_FOUND: ShowError("Player Not Found"); break; case ErrorType.BAD_CONDS: { string text = string.Join(", ", conds); ShowError("Coniditon(s) Not Met: " + text); break; } case ErrorType.NO_ACTIVE_GAME: ShowError("No Active Game Found"); break; case ErrorType.NO_SAVE: ShowError("No Save Found"); break; case ErrorType.NO_SAVESLOT: ShowError("No Active Save Slot Found"); break; case ErrorType.SAVE_FILE_CORRUPT: ShowError("Save File Could Not Be Loaded"); break; case ErrorType.FATEL: ShowError("Something Went Wrong That Shouldn't"); break; case ErrorType.SAVE_CREATED: ShowError("Save Created"); break; } } public void Update() { activeFunctions?.Invoke(); } public void FixedUpdate() { activeFunctionsFixed?.Invoke(); activeFlyNoclipFixed?.Invoke(); } public void FuncRefill() { Player player = ToolsGame.Game.GetPlayer(); if ((Object)(object)player != (Object)null && ToolsGame.Game.TryGetValue<float>(ToolsGame.Game.fiPlayer, player, "maxBoostCharge", out var result)) { player.AddBoostCharge(result); return; } if ((Object)(object)player == (Object)null) { Error(ErrorType.PLAYER_NOT_FOUND); return; } Error(ErrorType.BAD_CONDS, "Max Boost Not Found"); } public void FuncInfBoost() { ToggleInfBoost(); } private void ToggleInfBoost(bool forceOff = false) { if ((!forceOff) ? (Toggles.infBoost = !Toggles.infBoost) : (Toggles.infBoost = false)) { activeFunctions = (ActiveFunctions)Delegate.Combine(activeFunctions, new ActiveFunctions(UpdateInfBoost)); } else { activeFunctions = (ActiveFunctions)Delegate.Remove(activeFunctions, new ActiveFunctions(UpdateInfBoost)); } } private void UpdateInfBoost() { Player player = ToolsGame.Game.GetPlayer(); if ((Object)(object)player != (Object)null && ToolsGame.Game.TryGetValue<float>(ToolsGame.Game.fiPlayer, player, "maxBoostCharge", out var result)) { player.boostCharge = result; } } public void FuncResetGraf() { //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Invalid comparison between Unknown and I4 //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Invalid comparison between Unknown and I4 //IL_005c: 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_0178: Unknown result type (might be due to invalid IL or missing references) WorldHandler worldHandler = ToolsGame.Game.GetWorldHandler(); SaveManager saveManager = ToolsGame.Game.GetSaveManager(); if ((Object)(object)worldHandler != (Object)null && worldHandler.SceneObjectsRegister != null) { foreach (GraffitiSpot grafSpot in worldHandler.SceneObjectsRegister.grafSpots) { if (grafSpot.isOpen) { grafSpot.ResetFirstTime(); if ((int)grafSpot.topCrew == 1) { grafSpot.topCrew = (Crew)0; } if ((int)grafSpot.bottomCrew == 1) { grafSpot.bottomCrew = (Crew)0; } ((AProgressable)grafSpot).SetDefaultData((StageProgress)null); grafSpot.SetState((GraffitiState)(-1)); ((AProgressable)grafSpot).WriteToData(); } } Player player = ToolsGame.Game.GetPlayer(); if ((Object)(object)player != (Object)null) { ToolsGame.Game.TrySetValue(ToolsGame.Game.fiPlayer, player, "rep", 0f); ToolsGame.Game.invoke(player, "SetRepLabel", new object[1] { 0f }, ToolsGame.Game.miPlayer); foreach (GameObject item in from x in Object.FindObjectsOfType<GameObject>() where Object.op_Implicit((Object)(object)x.GetComponent<DynamicRepPickup>()) select x) { Object.Destroy((Object)(object)item); } } if (saveManager != null && saveManager.CurrentSaveSlot != null && saveManager.CurrentSaveSlot.GetCurrentStageProgress() != null) { saveManager.CurrentSaveSlot.GetCurrentStageProgress().reputation = 0; saveManager.CurrentSaveSlot.SetCurrentStageProgress(saveManager.CurrentSaveSlot.CurrentStage); saveManager.SaveCurrentSaveSlotImmediate(); } else { Error(ErrorType.FATEL); } } else { Error(ErrorType.NO_ACTIVE_GAME); } } public void FuncResLevel() { //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_0048: 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) Player player = ToolsGame.Game.GetPlayer(); BaseModule baseModule = ToolsGame.Game.GetBaseModule(); SaveManager saveManager = ToolsGame.Game.GetSaveManager(); if ((Object)(object)player != (Object)null && (Object)(object)baseModule != (Object)null && saveManager != null && saveManager.CurrentSaveSlot != null) { StageProgress currentStageProgress = saveManager.CurrentSaveSlot.GetCurrentStageProgress(); currentStageProgress.respawnPos = Attributes.levelSpawnPos; currentStageProgress.respawnRot = Attributes.levelSpawnRot; saveManager.SaveCurrentSaveSlot(); baseModule.UnPauseGame((PauseType)65535); baseModule.StageManager.ExitCurrentStage(baseModule.CurrentStage, (Stage)(-1)); } else { Error(ErrorType.NO_ACTIVE_GAME); } } public void FuncRefillHP() { Player player = ToolsGame.Game.GetPlayer(); if ((Object)(object)player != (Object)null) { if (ToolsGame.Game.TryGetValue<float>(ToolsGame.Game.fiPlayer, player, "maxHP", out var result)) { ToolsGame.Game.TrySetValue(ToolsGame.Game.fiPlayer, player, "HP", result); } } else { Error(ErrorType.PLAYER_NOT_FOUND); } } public void FuncInvulnerable() { ToggleInvulnerable(); } public void ToggleInvulnerable(bool forceOff = false) { if ((!forceOff) ? (Toggles.invulnerable = !Toggles.invulnerable) : (Toggles.invulnerable = false)) { activeFunctions = (ActiveFunctions)Delegate.Combine(activeFunctions, new ActiveFunctions(UpdateInvulnerable)); } else { activeFunctions = (ActiveFunctions)Delegate.Remove(activeFunctions, new ActiveFunctions(UpdateInvulnerable)); } } private void UpdateInvulnerable() { Player player = ToolsGame.Game.GetPlayer(); if ((Object)(object)player != (Object)null && ToolsGame.Game.TryGetValue<float>(ToolsGame.Game.fiPlayer, player, "maxHP", out var result)) { ToolsGame.Game.TrySetValue(ToolsGame.Game.fiPlayer, player, "HP", result); } } public void FuncPolice() { TogglePolice(); } private void TogglePolice(bool forceOff = false) { if ((!forceOff) ? (Toggles.police = !Toggles.police) : (Toggles.police = false)) { activeFunctions = (ActiveFunctions)Delegate.Combine(activeFunctions, new ActiveFunctions(UpdatePolice)); } else { activeFunctions = (ActiveFunctions)Delegate.Remove(activeFunctions, new ActiveFunctions(UpdatePolice)); } } private void UpdatePolice() { if ((Object)(object)WantedManager.instance != (Object)null) { WantedManager.instance.StopPlayerWantedStatus(false); } } public void FuncDisCars() { ToggleDisCars(); } private void ToggleDisCars(bool forceOff = false) { if ((!forceOff) ? (Toggles.cars = !Toggles.cars) : (Toggles.cars = false)) { activeFunctions = (ActiveFunctions)Delegate.Combine(activeFunctions, new ActiveFunctions(UpdateDisCars)); } else { activeFunctions = (ActiveFunctions)Delegate.Remove(activeFunctions, new ActiveFunctions(UpdateDisCars)); } } private void UpdateDisCars() { } public void FuncLockFPS() { prevVSync = QualitySettings.vSyncCount; ToggleLockFPS(); } private void ToggleLockFPS(bool forceOff = false) { if ((!forceOff) ? (Toggles.tfps = !Toggles.tfps) : (Toggles.tfps = false)) { activeFunctions = (ActiveFunctions)Delegate.Combine(activeFunctions, new ActiveFunctions(UpdateLockFPS)); return; } QualitySettings.vSyncCount = prevVSync; Application.targetFrameRate = prevFPS; activeFunctions = (ActiveFunctions)Delegate.Remove(activeFunctions, new ActiveFunctions(UpdateLockFPS)); } private void UpdateLockFPS() { QualitySettings.vSyncCount = 0; Application.targetFrameRate = Attributes.framerate; } public void FuncSetTimescale() { ToggleSetTimescale(); } private void ToggleSetTimescale(bool forceOff = false) { if ((!forceOff) ? (Toggles.timescale = !Toggles.timescale) : (Toggles.timescale = false)) { activeFunctions = (ActiveFunctions)Delegate.Combine(activeFunctions, new ActiveFunctions(UpdateSetTimescale)); return; } Time.timeScale = 1f; activeFunctions = (ActiveFunctions)Delegate.Remove(activeFunctions, new ActiveFunctions(UpdateSetTimescale)); } private void UpdateSetTimescale() { Time.timeScale = Attributes.timescale; } public void FuncNoclip() { ToggleNoclip(); } private void ToggleNoclip(bool forceOff = false) { if ((Object)(object)ToolsGame.Game.GetPlayer() != (Object)null) { if ((!forceOff) ? (Toggles.noclip = !Toggles.noclip) : (Toggles.noclip = false)) { if (Toggles.fly) { Toggles.fly = false; } activeFlyNoclipFixed = UpdateFlyNoclip; } else if (!Toggles.fly) { EndFlyNoclip(); } } else { EndFlyNoclip(); } } public void FuncFly() { ToggleFly(); } private void ToggleFly(bool forceOff = false) { if ((Object)(object)ToolsGame.Game.GetPlayer() != (Object)null) { if ((!forceOff) ? (Toggles.fly = !Toggles.fly) : (Toggles.fly = false)) { if (Toggles.noclip) { Toggles.noclip = false; } activeFlyNoclipFixed = UpdateFlyNoclip; } else if (!Toggles.noclip) { EndFlyNoclip(); } } else { EndFlyNoclip(); } } private void UpdateFlyNoclip() { //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: 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_00e6: 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_00fb: 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_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: 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_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012b: 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_012f: 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_015d: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_0184: 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_0193: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) Player player = ToolsGame.Game.GetPlayer(); GameInput gameInput = ToolsGame.Game.GetGameInput(); if ((Toggles.noclip || Toggles.fly) && (Object)(object)player != (Object)null && gameInput != null) { if (Toggles.noclip) { ((Component)player).GetComponent<Collider>().enabled = false; player.interactionCollider.enabled = false; } else { ((Component)player).GetComponent<Collider>().enabled = true; player.interactionCollider.enabled = true; } if ((Object)(object)Camera.main != (Object)null) { Camera.main.farClipPlane = 20000f; } ToolsGame.Game.TrySetValue(ToolsGame.Game.fiPlayer, player, "userInputEnabled", value: false); if (!ToolsGame.Game.TryGetValue<Transform>(ToolsGame.Game.fiWorldHandler, ToolsGame.Game.GetWorldHandler(), "currentCameraTransform", out var result)) { return; } Vector3 val = Vector3.zero; float num = (Toggles.fly ? Attributes.fly : Attributes.noclip); player.CompletelyStop(); if (gameInput != null) { Vector3 val2 = gameInput.GetAxis(5, 0) * result.right * num; Vector3 val3 = gameInput.GetAxis(6, 0) * Vector3.Normalize(new Vector3(result.forward.x, 0f, result.forward.z)) * num; Vector3 val4 = val2 + val3; val4.y = 0f; if (((Vector3)(ref val4)).magnitude > num) { val4 = ((Vector3)(ref val4)).normalized * num; } val = val4; if (val != Vector3.zero) { player.motor.rotation = Quaternion.Euler(new Vector3(0f, result.eulerAngles.y, result.eulerAngles.z)); } } if (Input.GetKey((KeyCode)32) || (gameInput != null && gameInput.GetButtonHeld(7, 0))) { if (player.IsGrounded()) { player.motor.ForcedUnground(); player.Jump(); } val.y = 20f; } else if (Input.GetKey((KeyCode)306) || (gameInput != null && gameInput.GetButtonHeld(65, 0))) { val.y = -20f; } else { val.y = 0f; } player.SetVelocity(val); } else { EndFlyNoclip(); } } private void EndFlyNoclip() { if (Toggles.fly) { Toggles.fly = false; } if (Toggles.noclip) { Toggles.noclip = false; } activeFlyNoclipFixed = null; Player player = ToolsGame.Game.GetPlayer(); if ((Object)(object)player != (Object)null) { if ((Object)(object)Camera.main != (Object)null) { Camera.main.farClipPlane = 1000f; } ToolsGame.Game.TrySetValue(ToolsGame.Game.fiPlayer, player, "userInputEnabled", value: true); player.interactionCollider.enabled = true; ((Component)player).GetComponent<Collider>().enabled = true; } } public void FuncDisSaving() { ToggleDisSaving(); } private void ToggleDisSaving(bool forceOff = false) { if ((!forceOff) ? (Toggles.saving = !Toggles.saving) : (Toggles.saving = false)) { activeFunctions = (ActiveFunctions)Delegate.Combine(activeFunctions, new ActiveFunctions(UpdateDisSaving)); } else { activeFunctions = (ActiveFunctions)Delegate.Remove(activeFunctions, new ActiveFunctions(UpdateDisSaving)); } } private void UpdateDisSaving() { } public void FuncEndWanted() { if ((Object)(object)WantedManager.instance != (Object)null) { WantedManager.instance.StopPlayerWantedStatus(false); } else { Error(ErrorType.NO_ACTIVE_GAME); } } public void FuncSetStorage() { SetStorageSpeed(); } private void SetStorageSpeed() { WallrunLineAbility wallrunLineAbility = ToolsGame.Game.GetWallrunLineAbility(); if (wallrunLineAbility == null || !ToolsGame.Game.TrySetValue(ToolsGame.Game.fiWallrun, wallrunLineAbility, "lastSpeed", savedData.storageSpeed)) { Error((wallrunLineAbility != null) ? ErrorType.FATEL : ErrorType.PLAYER_NOT_FOUND); } } public float GetStorageSpeed() { WallrunLineAbility wallrunLineAbility = ToolsGame.Game.GetWallrunLineAbility(); if (wallrunLineAbility != null && ToolsGame.Game.TryGetValue<float>(ToolsGame.Game.fiWallrun, wallrunLineAbility, "lastSpeed", out var result)) { return result; } return 0f; } public string FuncChangePlayer(int i) { //IL_00e9: Unknown result type (might be due to invalid IL or missing references) int num = Attributes.charIndex + i; int num2 = 0; int realCharactersMax = CrewBoomHook.RealCharactersMax; if (Enumerable.Range(num2, realCharactersMax).Contains(num) && (num == 26 || num == -1)) { num += i; } Attributes.charIndex = ((num < num2) ? (realCharactersMax - 1) : ((num >= realCharactersMax) ? num2 : num)); Player player = ToolsGame.Game.GetPlayer(); if ((Object)(object)player != (Object)null && ToolsGame.Game.TryGetValue<bool>(ToolsGame.Game.fiPlayer, player, "usingEquippedMovestyle", out var result)) { player.SetCharacter((Characters)Attributes.charIndex, 0); player.SetOutfit(Attributes.outfitIndex); RefreshPlayer(); player.SwitchToEquippedMovestyle(result, false, true, false); if (Core.Instance.SaveManager != null && Core.Instance.SaveManager.CurrentSaveSlot != null && Core.Instance.SaveManager.CurrentSaveSlot.GetCharacterProgress((Characters)Attributes.charIndex) != null) { Core.Instance.SaveManager.CurrentSaveSlot.GetCharacterProgress((Characters)Attributes.charIndex).character = (Characters)Attributes.charIndex; } } return CharToName(Attributes.charIndex); } public string CharToName(int i) { return CrewBoomHook.GetCharacterName((Characters)i); } public string FuncChangeStyle(int i) { //IL_00c3: Unknown result type (might be due to invalid IL or missing references) int num = Attributes.styleIndex + i; int num2 = (ToolsConfig.Settings.shouldHaveSpecial ? 5 : 4); Attributes.styleIndex = ((num < 1) ? (num2 - 1) : ((num >= num2) ? 1 : num)); Player player = ToolsGame.Game.GetPlayer(); if ((Object)(object)player != (Object)null && ToolsGame.Game.TryGetValue<bool>(ToolsGame.Game.fiPlayer, player, "usingEquippedMovestyle", out var result)) { player.SetCurrentMoveStyleEquipped((MoveStyle)Attributes.styleIndex, true, true); RefreshPlayer(); player.SwitchToEquippedMovestyle(result, false, true, false); if (Core.Instance.SaveManager != null && Core.Instance.SaveManager.CurrentSaveSlot != null && Core.Instance.SaveManager.CurrentSaveSlot.GetCharacterProgress((Characters)Attributes.charIndex) != null) { Core.Instance.SaveManager.CurrentSaveSlot.GetCharacterProgress((Characters)Attributes.charIndex).moveStyle = (MoveStyle)Attributes.styleIndex; } } return StyleToName(Attributes.styleIndex); } public string StyleToName(int i) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) MoveStyle val = (MoveStyle)i; string text = ((object)(MoveStyle)(ref val)).ToString(); if (ToolsRef.toolsConfig.styleToName.TryGetValue(text, out var value)) { return value; } return text; } public string FuncChangeOutfit(int i) { int num = Attributes.outfitIndex + i; int num2 = ToolsRef.toolsConfig.outfitToName.Keys.Count - 1; Attributes.outfitIndex = ((num < 0) ? num2 : ((num <= num2) ? num : 0)); Player player = ToolsGame.Game.GetPlayer(); if ((Object)(object)player != (Object)null) { player.SetOutfit(Attributes.outfitIndex); } return OutfitToName(Attributes.outfitIndex); } public string OutfitToName(int i) { if (ToolsRef.toolsConfig.outfitToName.TryGetValue(i, out var value)) { return value; } return i.ToString(); } public string FuncChangeLevel(int i) { int num = Attributes.levelIndex + i; int num2 = ToolsRef.toolsConfig.levelToName.Keys.Count - 1; Attributes.levelIndex = ((num < 0) ? num2 : ((num <= num2) ? num : 0)); return LevelToName(Attributes.levelIndex); } public string LevelToName(int i) { if (ToolsRef.toolsConfig.levelToName.TryGetValue(ToolsRef.toolsConfig.levelToName.Keys.ToArray()[i], out var value)) { return value; } return i.ToString(); } private void UpdateSaveFiles() { if (Directory.Exists(ToolsConfig.folder_saves) && File.Exists(ToolsConfig.file_desc)) { string[] source = (from x in Directory.GetFiles(ToolsConfig.folder_saves) where x.EndsWith(ToolsConfig.ext_saves) select x).ToArray(); if (source.Count() != ToolsConfig.files_saves.Keys.Count() || !source.All((string x) => ToolsConfig.files_saves.Keys.Contains(x)) || !File.ReadAllLines(ToolsConfig.file_desc).ToHashSet().SequenceEqual(ToolsConfig.desc_contents)) { ToolsConfig.Instance.UpdateSaveFiles(); } } else { ToolsConfig.files_saves.Clear(); } } public string FuncChangeSave(int i) { UpdateSaveFiles(); int num = Attributes.saveIndex + i; int num2 = ToolsConfig.files_saves.Keys.Count - 1; Attributes.saveIndex = ((num < 0) ? Mathf.Max(num2, 0) : ((num <= num2) ? num : 0)); return SaveToName(Attributes.saveIndex); } public string SaveToName(int i) { if (ToolsConfig.files_saves.Count > 0 && ToolsConfig.files_saves.TryGetValue(ToolsConfig.files_saves.Keys.ToArray()[i], out var value)) { return value; } return i.ToString(); } public void FuncLoadSaveFile() { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown if (ToolsConfig.files_saves.Count > 0) { BaseModule baseModule = ToolsGame.Game.GetBaseModule(); SaveManager saveManager = ToolsGame.Game.GetSaveManager(); SaveSlotHandler saveSlotHandler = ToolsGame.Game.GetSaveSlotHandler(); string path = Path.Combine(ToolsConfig.folder_saves, ToolsConfig.files_saves.Keys.ToArray()[Attributes.saveIndex]); if (File.Exists(path) && (Object)(object)baseModule != (Object)null && saveManager != null && saveManager.CurrentSaveSlot != null && (Object)(object)ToolsGame.Game.GetPlayer() != (Object)null && saveSlotHandler != null) { try { using BinaryReader binaryReader = new BinaryReader(File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None)); SaveSlotData val = new SaveSlotData(); val.Read(binaryReader); val.saveSlotId = saveManager.CurrentSaveSlot.saveSlotId; if (ToolsGame.Game.TrySetValue<SaveSlotData>(ToolsGame.Game.fiSaveSlotHandler, saveSlotHandler, "currentSaveSlot", val)) { loadingFile = true; saveManager.SaveCurrentSaveSlotImmediate(); baseModule.UnPauseGame((PauseType)65535); baseModule.UnloadCurrentStage(); Core.Instance.Platform.User.LogOut(); if (ToolsGame.Game.TryGetValue<List<ASceneSetupInstruction>>(ToolsGame.Game.fiBaseMod, baseModule, "currentSceneSetupInstructions", out var result)) { for (int num = result.Count - 1; num >= 0; num--) { ToolsGame.Game.invoke(baseModule, "StopLoadInstruction", new object[1] { result[num] }, ToolsGame.Game.miBaseMod); } } baseModule.StartGameToStage((Stage)8); } return; } catch (Exception ex) { Debug.LogError((object)ex); Error(ErrorType.SAVE_FILE_CORRUPT); return; } } if (!File.Exists(path)) { Error(ErrorType.NO_SAVE); } else if ((Object)(object)ToolsGame.Game.GetPlayer() == (Object)null) { Error(ErrorType.NO_SAVESLOT); } else { Error(ErrorType.FATEL); } } else { Error(ErrorType.NO_SAVE); } } private string GetCurrentFileName(SaveSlotHandler saveSlotHandler, int i) { //IL_001d: 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_0028: Expected I4, but got Unknown //IL_0046: Unknown result type (might be due to invalid IL or missing references) if (saveSlotHandler != null && saveSlotHandler.CurrentSaveSlot != null && (Object)(object)ToolsGame.Game.GetPlayer() != (Object)null) { return string.Format("{0}-{1}-{2}", ((int)Story.GetCurrentObjectiveInfo().chapter).ToString("D3"), i.ToString("D4"), saveSlotHandler.CurrentSaveSlot.CurrentStoryObjective); } return $"no_file_name-{i}"; } public void FuncCreateSaveFile() { SaveSlotHandler saveSlotHandler = ToolsGame.Game.GetSaveSlotHandler(); if (saveSlotHandler != null && saveSlotHandler.CurrentSaveSlot != null && (Object)(object)ToolsGame.Game.GetPlayer() != (Object)null) { int num = ToolsConfig.files_saves.Count(); string currentFileName = GetCurrentFileName(saveSlotHandler, num); string text = Path.Combine(ToolsConfig.folder_saves, currentFileName); bool flag = true; if (File.Exists(text + ToolsConfig.ext_saves)) { while (File.Exists(Path.Combine(ToolsConfig.folder_saves, currentFileName + ToolsConfig.ext_saves))) { num++; if (num > 9999) { flag = false; break; } currentFileName = GetCurrentFileName(saveSlotHandler, num); } text = Path.Combine(ToolsConfig.folder_saves, currentFileName); } if (!flag) { return; } string text2 = text + ToolsConfig.ext_saves; using (BinaryWriter binaryWriter = new BinaryWriter(new FileStream(text2, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None))) { saveSlotHandler.CurrentSaveSlot.Write(binaryWriter); } if (File.Exists(ToolsConfig.file_desc)) { File.AppendAllText(ToolsConfig.file_desc, "\n" + currentFileName + ToolsConfig.ext_saves + ": " + currentFileName); ToolsConfig.files_saves.Add(text2, currentFileName); ToolsConfig.files_saves = ToolsConfig.files_saves.OrderBy<KeyValuePair<string, string>, string>((KeyValuePair<string, string> x) => x.Key, StringComparer.OrdinalIgnoreCase).ToDictionary((KeyValuePair<string, string> x) => x.Key, (KeyValuePair<string, string> y) => y.Value); Attributes.saveIndex = ToolsConfig.files_saves.Keys.ToList().IndexOf(text2); } Error(ErrorType.SAVE_CREATED); } else if ((Object)(object)ToolsGame.Game.GetPlayer() == (Object)null) { Error(ErrorType.NO_SAVESLOT); } else { Error(ErrorType.FATEL); } } public void FuncResGame() { BaseModule baseModule = ToolsGame.Game.GetBaseModule(); Player player = ToolsGame.Game.GetPlayer(); if ((Object)(object)baseModule != (Object)null && (Object)(object)player != (Object)null && (Object)(object)Core.Instance.UIManager != (Object)null && !Core.Instance.UIManager.Overlay.IsShowingLoadingScreen) { baseModule.UnPauseGame((PauseType)65535); baseModule.UnloadCurrentStage(); Core.Instance.Platform.User.LogOut(); if (ToolsGame.Game.TryGetValue<List<ASceneSetupInstruction>>(ToolsGame.Game.fiBaseMod, baseModule, "currentSceneSetupInstructions", out var result)) { for (int num = result.Count - 1; num >= 0; num--) { ToolsGame.Game.invoke(baseModule, "StopLoadInstruction", new object[1] { result[num] }, ToolsGame.Game.miBaseMod); } } baseModule.StartGameToStage((Stage)8); } else { Error(ErrorType.NO_ACTIVE_GAME); } } public void FuncSave() { //IL_00f9: 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_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0124: 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_013e: 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_0161: 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) Player player = ToolsGame.Game.GetPlayer(); WallrunLineAbility wallrunLineAbility = ToolsGame.Game.GetWallrunLineAbility(); if ((Object)(object)player != (Object)null && wallrunLineAbility != null && ToolsGame.Game.TryGetValue<float>(ToolsGame.Game.fiPlayer, player, "boostCharge", out var result) && ToolsGame.Game.TryGetValue<MoveStyle>(ToolsGame.Game.fiPlayer, player, "moveStyle", out var result2) && ToolsGame.Game.TryGetValue<MoveStyle>(ToolsGame.Game.fiPlayer, player, "moveStyleEquipped", out var result3) && ToolsGame.Game.TryGetValue<bool>(ToolsGame.Game.fiPlayer, player, "usingEquippedMovestyle", out var result4) && ToolsGame.Game.TryGetValue<float>(ToolsGame.Game.fiWallrun, wallrunLineAbility, "lastSpeed", out var result5) && ToolsGame.Game.TryGetValue<Ability>(ToolsGame.Game.fiPlayer, player, "ability", out var result6) && ToolsGame.Game.TryGetValue<int>(ToolsGame.Game.fiPlayer, player, "curAnim", out var result7) && ToolsGame.Game.TryGetValue<BoostAbility>(ToolsGame.Game.fiPlayer, player, "boostAbility", out var result8) && ToolsGame.Game.TryGetValue<AirDashAbility>(ToolsGame.Game.fiPlayer, player, "airDashAbility", out var result9)) { SavedData obj = new SavedData { position = player.tf.position }; Vector3 velocity = player.motor.velocity; obj.velocityDir = ((Vector3)(ref velocity)).normalized; velocity = player.motor.velocity; obj.velocity = ((Vector3)(ref velocity)).magnitude; obj.velocityVector = player.motor.velocity; obj.rotation = player.motor.rotation; obj.boost = result; obj.moveStyleCurrent = result2; obj.moveStyleEquip = result3; obj.usingEquipment = result4; obj.storageSpeed = result5; obj.ability = result6; obj.animation = result7; obj.hasBoost = result8.haveAirStartBoost; obj.hasDash = result9.haveAirDash; savedData = obj; } else { Error((!((Object)(object)player == (Object)null)) ? ErrorType.FATEL : ErrorType.PLAYER_NOT_FOUND); } } private void RefreshPlayer() { Player player = ToolsGame.Game.GetPlayer(); if ((Object)(object)player != (Object)null) { ToolsGame.Game.invoke(player, "InitHitboxes", null, ToolsGame.Game.miPlayer); ToolsGame.Game.invoke(player, "InitCuffs", null, ToolsGame.Game.miPlayer); } } public void FuncLoad() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_004d: 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_0063: 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_0078: 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_00aa: 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_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Expected I4, but got Unknown //IL_0120: 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_0159: Unknown result type (might be due to invalid IL or missing references) Player player = ToolsGame.Game.GetPlayer(); if ((Object)(object)player != (Object)null) { ToolsGame.Game.invoke(player, "InitCuffs", null, ToolsGame.Game.miPlayer); WorldHandler worldHandler = ToolsGame.Game.GetWorldHandler(); if (worldHandler != null) { worldHandler.PlaceCurrentPlayerAt(savedData.position, savedData.rotation, true); } Vector3 val = savedData.velocityDir * savedData.velocity; player.SetVelocity(new Vector3(val.x, savedData.velocityVector.y, val.z)); player.AddBoostCharge(0f - player.boostCharge); player.AddBoostCharge(savedData.boost); if ((int)savedData.moveStyleEquip != 0) { player.SetCurrentMoveStyleEquipped(savedData.moveStyleEquip, true, false); player.SwitchToEquippedMovestyle(savedData.usingEquipment, false, true, false); Attributes.styleIndex = (int)savedData.moveStyleEquip; } if (Core.Instance.SaveManager != null && Core.Instance.SaveManager.CurrentSaveSlot != null && Core.Instance.SaveManager.CurrentSaveSlot.GetCharacterProgress(Core.Instance.SaveManager.CurrentSaveSlot.currentCharacter) != null) { Core.Instance.SaveManager.CurrentSaveSlot.GetCharacterProgress(Core.Instance.SaveManager.CurrentSaveSlot.currentCharacter).moveStyle = (MoveStyle)Attributes.styleIndex; } SetStorageSpeed(); if (savedData.animation != -1) { player.PlayAnim(savedData.animation, true, true, 0f); } if (ToolsGame.Game.TryGetValue<BoostAbility>(ToolsGame.Game.fiPlayer, player, "boostAbility", out var result) && ToolsGame.Game.TryGetValue<AirDashAbility>(ToolsGame.Game.fiPlayer, player, "airDashAbility", out var result2)) { result.haveAirStartBoost = savedData.hasBoost; result2.haveAirDash = savedData.hasDash; } if (savedData.ability != null) { Type type = ((object)savedData.ability).GetType(); if (type == typeof(GrindAbility)) { Ability ability = savedData.ability; ((GrindAbility)((ability is GrindAbility) ? ability : null)).cooldown = 0f; } else if (type == typeof(WallrunLineAbility)) { Ability ability2 = savedData.ability; ((WallrunLineAbility)((ability2 is WallrunLineAbility) ? ability2 : null)).cooldownTimer = 0f; } else if (type == typeof(HandplantAbility)) { Ability ability3 = savedData.ability; ((HandplantAbility)((ability3 is HandplantAbility) ? ability3 : null)).cooldownTimer = 0f; } } } else { Error(ErrorType.PLAYER_NOT_FOUND); } } public void FuncGoToLevel() { BaseModule baseModule = ToolsGame.Game.GetBaseModule(); if ((Object)(object)baseModule != (Object)null && (Object)(object)ToolsGame.Game.GetPlayer() != (Object)null) { baseModule.UnPauseGame((PauseType)65535); baseModule.StageManager.ExitCurrentStage((Stage)ToolsRef.toolsConfig.levelToName.Keys.ToArray()[Attributes.levelIndex], (Stage)(-1)); } else { Error(ErrorType.NO_ACTIVE_GAME); } } public void FuncTriggers() { ToggleTriggers(); HandleTriggers(); } private void ToggleTriggers(bool forceOff = false) { if ((!forceOff) ? (Toggles.triggers = !Toggles.triggers) : (Toggles.triggers = false)) { timeUpdate = Time.time; activeFunctionsFixed = (ActiveFunctions)Delegate.Combine(activeFunctionsFixed, new ActiveFunctions(UpdateTriggers)); } else { activeFunctionsFixed = (ActiveFunctions)Delegate.Remove(activeFunctionsFixed, new ActiveFunctions(UpdateTriggers)); } } private void UpdateTriggers() { if (Toggles.triggers && Time.time >= timeUpdate + 0.25f) { timeUpdate = Time.time; HandleTriggers(); } } public void HandleTriggers() { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Expected O, but got Unknown WorldHandler worldHandler = ToolsGame.Game.GetWorldHandler(); Player player = ToolsGame.Game.GetPlayer(); bool flag = (Object)(object)worldHandler != (Object)null && (Object)(object)worldHandler.CurrentCamera != (Object)null; if (Toggles.triggers && (Object)(object)player != (Object)null && flag) { if ((Object)(object)triggerMat == (Object)null) { triggerMat = new Material(Shader.Find("TextMeshPro/Sprite")); } worldHandler.CurrentCamera.cullingMask = -1; TriggerRender triggerRender = default(TriggerRender); GrindLine val3 = default(GrindLine); StreetLife val4 = default(StreetLife); List<Collider> list = (from x in Physics.OverlapSphere(((Component)player).transform.position, 150f) where ((Component)x).gameObject.activeInHierarchy && !((Component)x).gameObject.TryGetComponent<TriggerRender>(ref triggerRender) && !((Component)x).gameObject.TryGetComponent<GrindLine>(ref val3) && !((Component)x).gameObject.TryGetComponent<StreetLife>(ref val4) && ((Component)x).tag != "walkZone" select x).ToList(); if (list.Count <= 0) { return; } List<Collider> list2 = new List<Collider>(); switch (step) { case 0: list2 = list.Where((Collider filter) => ((Object)filter).name == "PyramidWoodsCollider" || ((Object)filter).name == "CollBox" || filter.isTrigger || ((Component)filter).tag != "Untagged" || ((Object)(object)filter.material == (Object)null && filter.enabled)).ToList(); step++; break; case 1: { MeshRenderer val = default(MeshRenderer); list2 = list.Where((Collider filter) => ((Component)filter).gameObject.TryGetComponent<MeshRenderer>(ref val) && (((Object)((Renderer)val).material).name.Contains("ProCollisionMat") || ((Object)((Renderer)val).material).name.Contains("ProBuilderDefault"))).ToList(); step++; break; } case 2: list2 = list.Where(delegate(Collider filter) { //IL_002f: 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_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) if (!(((Object)filter).name == "DH_BRect_EdgeBISBIS (45)")) { BoxCollider val2 = default(BoxCollider); if (((Object)filter).name == "DH_MarketShield" && ((Component)filter).TryGetComponent<BoxCollider>(ref val2)) { Bounds bounds = ((Collider)val2).bounds; Vector3 center = ((Bounds)(ref bounds)).center; if (((object)(Vector3)(ref center)).ToString() == "(-2815.61, 135.45, -90.82)") { goto IL_0067; } } return ((Object)filter).name == "Tower_OfficeRow (1)"; } goto IL_0067; IL_0067: return true; }).ToList(); step = 0; break; } { foreach (Collider item in list2) { ((Component)item).gameObject.AddComponent<TriggerRender>(); } return; } } if (flag) { worldHandler.CurrentCamera.cullingMask = WorldHandler.GetGameplayCameraCullingMask(); } } public void FuncAutoGraf() { ToggleAutoGraf(); } public void ToggleAutoGraf(bool forceOff = false) { if ((!forceOff) ? (Toggles.autograf = !Toggles.autograf) : (Toggles.autograf = false)) { activeFunctions = (ActiveFunctions)Delegate.Combine(activeFunctions, new ActiveFunctions(UpdateAutoGraf)); } else { activeFunctions = (ActiveFunctions)Delegate.Remove(activeFunctions, new ActiveFunctions(UpdateAutoGraf)); } } private void UpdateAutoGraf() { } public string FuncChangeSpawn(int i) { //IL_005e: 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) Player player = ToolsGame.Game.GetPlayer(); WorldHandler worldHandler = ToolsGame.Game.GetWorldHandler(); if ((Object)(object)player != (Object)null && (Object)(object)worldHandler != (Object)null) { List<PlayerSpawner> playerSpawners = worldHandler.SceneObjectsRegister.playerSpawners; int num = Attributes.spawnIndex + i; int num2 = playerSpawners.Count() - 1; Attributes.spawnIndex = ((num < 0) ? num2 : ((num <= num2) ? num : 0)); worldHandler.PlaceCurrentPlayerAt(((Component)playerSpawners[Attributes.spawnIndex]).transform.position, ((Component)playerSpawners[Attributes.spawnIndex]).transform.rotation, true); } return SpawnToName(Attributes.spawnIndex); } public string SpawnToName(int i) { return $"{i}"; } public string FuncChangeDreamSpawn(int i) { //IL_007e: 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) Player player = ToolsGame.Game.GetPlayer(); WorldHandler worldHandler = ToolsGame.Game.GetWorldHandler(); if ((Object)(object)player != (Object)null && (Object)(object)worldHandler != (Object)null && (Object)(object)worldHandler.SceneObjectsRegister.RetrieveDreamEncounter() != (Object)null) { EncounterCheckpoint[] checkpoints = ((Encounter)worldHandler.SceneObjectsRegister.RetrieveDreamEncounter()).checkpoints; if (checkpoints.Count() > 0) { int num = Attributes.dreamSpawnIndex + i; int num2 = checkpoints.Count() - 1; Attributes.dreamSpawnIndex = ((num < 0) ? num2 : ((num <= num2) ? num : 0)); worldHandler.PlaceCurrentPlayerAt(checkpoints[Attributes.dreamSpawnIndex].spawnLocation.position, checkpoints[Attributes.dreamSpawnIndex].spawnLocation.rotation, true); } } return DreamSpawnToName(Attributes.dreamSpawnIndex); } public string DreamSpawnToName(int i) { return $"{i}"; } public void FuncUnlock() { Player player = ToolsGame.Game.GetPlayer(); SaveManager saveManager = ToolsGame.Game.GetSaveManager(); if ((Object)(object)player != (Object)null && saveManager != null && saveManager.CurrentSaveSlot != null) { player.LockCameraApp(false); player.LockBoostAbility(false); player.LockBoostpack(false); player.LockCharacterSelect(false); for (int i = 0; i < 6; i++) { saveManager.CurrentSaveSlot.dancesUnlocked[i] = true; } player.LockFortuneApp(false); player.LockPhone(false); player.LockSpraycan(false); player.LockSwitchToEquippedMoveStyle(false); saveManager.CurrentSaveSlot.taxiLocked = false; } else { Error((!((Object)(object)player == (Object)null)) ? ErrorType.NO_SAVE : ErrorType.PLAYER_NOT_FOUND); } } public void FuncUnlockChars() { Player player = ToolsGame.Game.GetPlayer(); SaveManager saveManager = ToolsGame.Game.GetSaveManager(); if ((Object)(object)player != (Object)null && saveManager != null && saveManager.CurrentSaveSlot != null) { for (int i = 0; i < 26; i++) { saveManager.CurrentSaveSlot.UnlockCharacter((Characters)i); } } else { Error((!((Object)(object)player == (Object)null)) ? ErrorType.NO_SAVE : ErrorType.PLAYER_NOT_FOUND); } } public void FuncForcePolice() { Player player = ToolsGame.Game.GetPlayer(); WantedManager instance = WantedManager.instance; SaveManager saveManager = ToolsGame.Game.GetSaveManager(); if ((Object)(object)player != (Object)null && (Object)(object)instance != (Object)null && saveManager != null && saveManager.CurrentSaveSlot != null) { float maxWantedStars = saveManager.CurrentSaveSlot.maxWantedStars; saveManager.CurrentSaveSlot.maxWantedStars = 6f; ToolsGame.Instance.InvokeMethod(instance, "ProcessCrime", new object[1] { (object)(Crime)3 }); ToolsGame.Instance.InvokeMethod(instance, "MakePlayerWanted", new object[1] { (object)(Crime)3 }); saveManager.CurrentSaveSlot.maxWantedStars = maxWantedStars; saveManager.SaveCurrentSaveSlotImmediate(); } else if ((Object)(object)player == (Object)null) { Error(ErrorType.PLAYER_NOT_FOUND); } else if ((Object)(object)instance == (Object)null) { Error(ErrorType.BAD_CONDS, "No Wanted Manager"); } else { Error(ErrorType.NO_SAVE); } } public void FuncShowRespawn() { ToggleShowRespawn(); } private void ToggleShowRespawn(bool forceOff = false) { //IL_0067: 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) if ((!forceOff) ? (Toggles.showrespawn = !Toggles.showrespawn) : (Toggles.showrespawn = false)) { if ((Object)(object)respawnPoint == (Object)null || (Object)(object)((IEnumerable<GameObject>)Object.FindObjectsOfType<GameObject>()).FirstOrDefault((Func<GameObject, bool>)((GameObject x) => (Object)(object)x == (Object)(object)respawnPoint)) == (Object)null) { respawnPoint = GameObject.CreatePrimitive((PrimitiveType)0); respawnPoint.GetComponent<Renderer>().material.color = Color.cyan; Object.Destroy((Object)(object)respawnPoint.GetComponent<Collider>()); respawnPoint.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f); } else { respawnPoint.SetActive(true); } activeFunctions = (ActiveFunctions)Delegate.Combine(activeFunctions, new ActiveFunctions(UpdateShowRespawn)); } else { GameObject obj = respawnPoint; if (obj != null) { obj.SetActive(false); } activeFunctions = (ActiveFunctions)Delegate.Remove(activeFunctions, new ActiveFunctions(UpdateShowRespawn)); } } private void UpdateShowRespawn() { //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) Player player = ToolsGame.Game.GetPlayer(); if ((Object)(object)respawnPoint != (Object)null && (Object)(object)player != (Object)null) { respawnPoint.transform.position = player.GetSafeLocation().position; } } } internal class ToolsGame : MonoBehaviour { public class CompatibilityFunctions { public static object GetFieldValue(object classObject, string field) { return classObject.GetType().GetField(field, Instance.bindingFlags).GetValue(classObject); } public static void SetFieldValue(object classObject, string field, object value) { classObject.GetType().GetField(field, Instance.bindingFlags).SetValue(classObject, value); } } public class Game : ToolsGame { private enum PType { pi, fi, mi } private static Core _Game_Core; private static BaseModule _Game_BaseModule; private static Dictionary<string, PropertyInfo> _piBaseMod = new Dictionary<string, PropertyInfo>(); private static Dictionary<string, FieldInfo> _fiBaseMod = new Dictionary<string, FieldInfo>(); private static Dictionary<string, MethodInfo> _miBaseMod = new Dictionary<string, MethodInfo>(); private static SaveManager _Game_SaveManager; private static Dictionary<string, PropertyInfo> _piSaveManager = new Dictionary<string, PropertyInfo>(); private static Dictionary<string, FieldInfo> _fiSaveManager = new Dictionary<string, FieldInfo>(); private static Dictionary<string, MethodInfo> _miSaveManager = new Dictionary<string, MethodInfo>(); private static Dictionary<string, PropertyInfo> _piSaveSlotHandler = new Dictionary<string, PropertyInfo>(); private static Dictionary<string, FieldInfo> _fiSaveSlotHandler = new Dictionary<string, FieldInfo>(); private static Dictionary<string, MethodInfo> _miSaveSlotHandler = ne