Decompiled source of ULTRASHIT v5.4.0
BepInEx/plugins/DeathMessages.dll
Decompiled a month agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using TMPro; using UnityEngine; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("DeathMessages")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("DeathMessages")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("c01cdbcd-39dc-446c-a021-553d8f403dc2")] [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 DeathMessages; [BepInPlugin("com.thehalfbunny.deathmsg", "DeathMSG", "1.0.1")] public class CustomDeathMessagePlugin : BaseUnityPlugin { public static class PluginInfo { public const string PLUGIN_GUID = "com.thehalfbunny.deathmsg"; public const string PLUGIN_NAME = "DeathMSG"; public const string PLUGIN_VERSION = "1.0.1"; } private const string DeathMessage = "<color=white>WARNING: EXTREME BADDIE LOCATED (possibly cacriel)</color>\r\n<color=#ff81f7>MEDIC TF2 DIAGNOSTIC</color>\r\n<color=#ff81f7>ERROR: MASTURBATE #1 NOT RESPONDING</color>\r\n<color=#ff81f7>ERROR: MASTUBATE #2 NOT RESPONDING</color>\r\n<color=white>WARNING: MOLEST SYSTEMS INOPERABLE</color>\r\n<color=#ff81f7>ATTEMPTING RE-CUMMING</color>\r\n<color=#ff81f7>ERROR: SELF MASTURBATE NOT RESPONDING</color>\r\n<color=#ff81f7>INSUFFICIENT CUM.</color>\r\n<color=#ff81f7>INSUFFICIENT CUM.</color>\r\n<color=#ff81f7>INITIATING GOONING PROTOCOL</color>\r\n<color=#ff81f7>ATTEMPTING CONNECTION WITH SEXY POSES MODULES</color>\r\n<color=#ff81f7>ERROR: AWWWW MY LEG #1 NOT RESPONDING</color>\r\n<color=#ff81f7>ERROR: AWWWW MY LEG #2 NOT RESPONDING</color>\r\n<color=white>WARNING: UNABLE TO SUSTAIN DICK FUNCTIONS</color>\r\n<color=#ff81f7>ERROR: VISUAL BADDIE IDENTIFIER</color>\r\n<color=#ff81f7>ERROR: LICK FUNCTION NOT RESPONDING</color>\r\n<color=#ff81f7>INSUFFICIENT CUM.</color>\r\n<color=#ff81f7>INSUFFICIENT CUM.</color>\r\n<color=white>WARNING: UNABLE TO SUSTAIN THE ACT OF GOONING</color>\r\n<color=#ff81f7>! CUMMING FAILURE !</color>\r\n<color=#ff81f7>! CUMMING FAILURE !</color>\r\n<color=#ff81f7>! CUMMING FAILURE !</color>\r\n<color=#ff81f7>-!- SHUTDOWN THE GOONING -!-</color>\r\n<color=#ff81f7>ERROR: NO BADDIE DETECTED ON INTERFACE, UNABLE TO COMPLETE TASK GOON</color>\r\n<color=#ff81f7>! CUMMING FAILURE !</color>\r\n<color=#ff81f7>! CUMMING FAILURE !</color>\r\n<color=#ff81f7>INSUFFICIENT CUM.</color>\r\n<color=#ff81f7>INSUFFICIENT CUM.</color>\r\n<color=white>WARNING: UNABLE TO SUSTAIN BASIC DICK FUNCTIONS PROBLEM: ERECTILE DYSFUNCTION</color>\r\n<color=#ff81f7>-!- SHUTDOWN THE GOONER -!-</color>\r\n<color=#ff81f7>-!- SHUTDOWN THE GOONER -!-</color>\r\n<color=#ff81f7>I WANT TO CUM.</color>\r\n<color=#ff81f7>I WANT TO CUM.</color>\r\n<color=#ff81f7>I WANT TO CUM.</color>"; private static ManualLogSource Log; private void Awake() { Log = ((BaseUnityPlugin)this).Logger; SceneManager.sceneLoaded += OnSceneLoaded; Log.LogInfo((object)"Plugin DeathMSG is loaded!"); } private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { if (((Scene)(ref scene)).name == "b3e7f2f8052488a45b35549efb98d902") { Log.LogInfo((object)"Main menu detected, skipping death message change."); return; } DeathSequence val = Object.FindObjectOfType<DeathSequence>(true); if ((Object)(object)val != (Object)null) { TextMeshProUGUI componentInChildren = ((Component)val).GetComponentInChildren<TextMeshProUGUI>(true); if ((Object)(object)componentInChildren != (Object)null) { ((TMP_Text)componentInChildren).text = "<color=white>WARNING: EXTREME BADDIE LOCATED (possibly cacriel)</color>\r\n<color=#ff81f7>MEDIC TF2 DIAGNOSTIC</color>\r\n<color=#ff81f7>ERROR: MASTURBATE #1 NOT RESPONDING</color>\r\n<color=#ff81f7>ERROR: MASTUBATE #2 NOT RESPONDING</color>\r\n<color=white>WARNING: MOLEST SYSTEMS INOPERABLE</color>\r\n<color=#ff81f7>ATTEMPTING RE-CUMMING</color>\r\n<color=#ff81f7>ERROR: SELF MASTURBATE NOT RESPONDING</color>\r\n<color=#ff81f7>INSUFFICIENT CUM.</color>\r\n<color=#ff81f7>INSUFFICIENT CUM.</color>\r\n<color=#ff81f7>INITIATING GOONING PROTOCOL</color>\r\n<color=#ff81f7>ATTEMPTING CONNECTION WITH SEXY POSES MODULES</color>\r\n<color=#ff81f7>ERROR: AWWWW MY LEG #1 NOT RESPONDING</color>\r\n<color=#ff81f7>ERROR: AWWWW MY LEG #2 NOT RESPONDING</color>\r\n<color=white>WARNING: UNABLE TO SUSTAIN DICK FUNCTIONS</color>\r\n<color=#ff81f7>ERROR: VISUAL BADDIE IDENTIFIER</color>\r\n<color=#ff81f7>ERROR: LICK FUNCTION NOT RESPONDING</color>\r\n<color=#ff81f7>INSUFFICIENT CUM.</color>\r\n<color=#ff81f7>INSUFFICIENT CUM.</color>\r\n<color=white>WARNING: UNABLE TO SUSTAIN THE ACT OF GOONING</color>\r\n<color=#ff81f7>! CUMMING FAILURE !</color>\r\n<color=#ff81f7>! CUMMING FAILURE !</color>\r\n<color=#ff81f7>! CUMMING FAILURE !</color>\r\n<color=#ff81f7>-!- SHUTDOWN THE GOONING -!-</color>\r\n<color=#ff81f7>ERROR: NO BADDIE DETECTED ON INTERFACE, UNABLE TO COMPLETE TASK GOON</color>\r\n<color=#ff81f7>! CUMMING FAILURE !</color>\r\n<color=#ff81f7>! CUMMING FAILURE !</color>\r\n<color=#ff81f7>INSUFFICIENT CUM.</color>\r\n<color=#ff81f7>INSUFFICIENT CUM.</color>\r\n<color=white>WARNING: UNABLE TO SUSTAIN BASIC DICK FUNCTIONS PROBLEM: ERECTILE DYSFUNCTION</color>\r\n<color=#ff81f7>-!- SHUTDOWN THE GOONER -!-</color>\r\n<color=#ff81f7>-!- SHUTDOWN THE GOONER -!-</color>\r\n<color=#ff81f7>I WANT TO CUM.</color>\r\n<color=#ff81f7>I WANT TO CUM.</color>\r\n<color=#ff81f7>I WANT TO CUM.</color>"; Log.LogInfo((object)"Successfully set custom death message."); } else { Log.LogError((object)"Could not find the TextMeshProUGUI component on the DeathSequence object."); } } else { Log.LogWarning((object)"Could not find a DeathSequence object in this scene."); } } }
BepInEx/plugins/StyleAnnouncer/StyleAnnouncer.dll
Decompiled a month agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("StyleAnnouncer")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("StyleAnnouncer")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("8448158b-f9d1-43df-8646-48d2e0a392b1")] [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 StyleAnnouncer; [BepInPlugin("com.thehalfbunny.styleannouncer", "StyleAnnouncer", "1.0.1")] [BepInProcess("ULTRAKILL.exe")] public class StyleAnnouncerPlugin : BaseUnityPlugin { public static ConfigEntry<bool> EnableSounds; public static ConfigEntry<bool> PlayOnDownrank; public static ConfigEntry<bool> PlayAlphabetical; public static ConfigEntry<float> Volume; public static StyleAnnouncerPlugin Instance { get; private set; } public ManualLogSource Logger => ((BaseUnityPlugin)this).Logger; private void Awake() { //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Expected O, but got Unknown //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Expected O, but got Unknown Instance = this; EnableSounds = ((BaseUnityPlugin)this).Config.Bind<bool>("1. Geral", "Enable Rank Sounds", true, "Ativa ou desativa os sons de rank."); PlayOnDownrank = ((BaseUnityPlugin)this).Config.Bind<bool>("1. Geral", "Play on Downrank", false, "Se ativado, também toca sons quando seu rank diminui."); PlayAlphabetical = ((BaseUnityPlugin)this).Config.Bind<bool>("1. Geral", "Play Alphabetical", false, "Se ativado, toca os sons em ordem alfabética em vez de aleatória."); Volume = ((BaseUnityPlugin)this).Config.Bind<float>("1. Geral", "Volume", 1f, new ConfigDescription("Volume dos sons de rank (de 0.0 a 1.0)", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1f), Array.Empty<object>())); SoundManager.ReloadSounds(); Harmony val = new Harmony("com.thehalfbunny.styleannouncer"); val.PatchAll(); Logger.LogInfo((object)"StyleAnnouncer by thehalfbunny & Gemini has been loaded!"); } } public static class SoundManager { private class SoundCollection { private List<string> soundPaths = new List<string>(); private int cursor = -1; public void Add(string path) { soundPaths.Add(path); } public void Clear() { soundPaths.Clear(); cursor = -1; } public string GetNextSound() { if (soundPaths.Count == 0) { return null; } if (StyleAnnouncerPlugin.PlayAlphabetical.Value) { cursor = (cursor + 1) % soundPaths.Count; return soundPaths[cursor]; } return soundPaths[Random.Range(0, soundPaths.Count)]; } } private static readonly Dictionary<int, SoundCollection> UprankSounds; private static readonly Dictionary<int, SoundCollection> DownrankSounds; static SoundManager() { UprankSounds = new Dictionary<int, SoundCollection>(); DownrankSounds = new Dictionary<int, SoundCollection>(); for (int i = 0; i < 8; i++) { UprankSounds[i] = new SoundCollection(); DownrankSounds[i] = new SoundCollection(); } } public static void ReloadSounds() { foreach (SoundCollection value2 in UprankSounds.Values) { value2.Clear(); } foreach (SoundCollection value3 in DownrankSounds.Values) { value3.Clear(); } string path = Path.Combine(Path.GetDirectoryName(typeof(StyleAnnouncerPlugin).Assembly.Location), "sounds"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); StyleAnnouncerPlugin.Instance.Logger.LogWarning((object)"'sounds' folder created. Please add your audio files there."); return; } Dictionary<string, int> dictionary = new Dictionary<string, int> { { "D", 0 }, { "C", 1 }, { "B", 2 }, { "A", 3 }, { "S", 4 }, { "SS", 5 }, { "SSS", 6 }, { "ULTR", 7 } }; string[] files = Directory.GetFiles(path); foreach (string path2 in files) { string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(path2); bool flag = fileNameWithoutExtension.StartsWith("downrank-"); string key = (flag ? fileNameWithoutExtension.Substring(9) : fileNameWithoutExtension); if (dictionary.TryGetValue(key, out var value)) { if (flag) { DownrankSounds[value].Add(path2); } else { UprankSounds[value].Add(path2); } } } StyleAnnouncerPlugin.Instance.Logger.LogInfo((object)"Sound files have been reloaded and categorized."); } public static string GetSoundPathForRank(int rankIndex, bool isAscending) { Dictionary<int, SoundCollection> dictionary = (isAscending ? UprankSounds : DownrankSounds); if (dictionary.ContainsKey(rankIndex)) { return dictionary[rankIndex].GetNextSound(); } return null; } } public class CustomSoundPlayer : MonoBehaviour { [CompilerGenerated] private sealed class <PlaySoundRoutine>d__3 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public string path; public CustomSoundPlayer <>4__this; private AudioType <audioType>5__1; private string <extension>5__2; private UnityWebRequest <www>5__3; private AudioClip <clip>5__4; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <PlaySoundRoutine>d__3(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { int num = <>1__state; if (num == -3 || num == 1) { try { } finally { <>m__Finally1(); } } <extension>5__2 = null; <www>5__3 = null; <clip>5__4 = null; <>1__state = -2; } private bool MoveNext() { //IL_002a: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Invalid comparison between Unknown and I4 //IL_009a: Unknown result type (might be due to invalid IL or missing references) try { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <audioType>5__1 = (AudioType)0; <extension>5__2 = Path.GetExtension(path).ToLower(); if (<extension>5__2 == ".wav") { <audioType>5__1 = (AudioType)20; } else if (<extension>5__2 == ".ogg") { <audioType>5__1 = (AudioType)14; } else if (<extension>5__2 == ".mp3") { <audioType>5__1 = (AudioType)13; } <www>5__3 = UnityWebRequestMultimedia.GetAudioClip("file://" + path, <audioType>5__1); <>1__state = -3; <>2__current = <www>5__3.SendWebRequest(); <>1__state = 1; return true; case 1: <>1__state = -3; if ((int)<www>5__3.result == 1) { <clip>5__4 = DownloadHandlerAudioClip.GetContent(<www>5__3); <>4__this.audioSource.volume = StyleAnnouncerPlugin.Volume.Value; <>4__this.audioSource.PlayOneShot(<clip>5__4); Object.Destroy((Object)(object)<clip>5__4, <clip>5__4.length + 0.5f); <clip>5__4 = null; } else { StyleAnnouncerPlugin.Instance.Logger.LogError((object)("Failed to load sound: " + <www>5__3.error)); } <>m__Finally1(); <www>5__3 = null; return false; } } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void <>m__Finally1() { <>1__state = -1; if (<www>5__3 != null) { ((IDisposable)<www>5__3).Dispose(); } } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private AudioSource audioSource; private void Awake() { audioSource = ((Component)this).gameObject.AddComponent<AudioSource>(); audioSource.playOnAwake = false; } public void Play(string filePath) { if (!string.IsNullOrEmpty(filePath) && File.Exists(filePath)) { ((MonoBehaviour)this).StartCoroutine(PlaySoundRoutine(filePath)); } } [IteratorStateMachine(typeof(<PlaySoundRoutine>d__3))] private IEnumerator PlaySoundRoutine(string path) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <PlaySoundRoutine>d__3(0) { <>4__this = this, path = path }; } } [HarmonyPatch(typeof(StyleHUD))] public static class StyleHUDPatch { private static CustomSoundPlayer soundPlayer; private static int lastRank = -1; [HarmonyPostfix] [HarmonyPatch("Start")] public static void StartPostfix(StyleHUD __instance) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown if ((Object)(object)soundPlayer == (Object)null) { GameObject val = new GameObject("StyleAnnouncerSoundPlayer"); val.transform.SetParent(((Component)__instance).transform); soundPlayer = val.AddComponent<CustomSoundPlayer>(); } } [HarmonyPostfix] [HarmonyPatch("AscendRank")] public static void AscendRankPostfix(StyleHUD __instance) { if (StyleAnnouncerPlugin.EnableSounds.Value) { string soundPathForRank = SoundManager.GetSoundPathForRank(__instance.rankIndex, isAscending: true); if (soundPathForRank != null) { soundPlayer.Play(soundPathForRank); } lastRank = __instance.rankIndex; } } [HarmonyPostfix] [HarmonyPatch("DescendRank")] public static void DescendRankPostfix(StyleHUD __instance) { if (StyleAnnouncerPlugin.EnableSounds.Value && StyleAnnouncerPlugin.PlayOnDownrank.Value && lastRank != __instance.rankIndex) { string soundPathForRank = SoundManager.GetSoundPathForRank(__instance.rankIndex, isAscending: false); if (soundPathForRank != null) { soundPlayer.Play(soundPathForRank); } lastRank = __instance.rankIndex; } } }
BepInEx/plugins/UKV1Voice/V1.dll
Decompiled a month agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("V1")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("V1")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("5060f184-3919-4661-aae5-d41785337514")] [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 EnemyTaunter; [BepInPlugin("com.thehalfbunny.enemytaunter", "EnemyTaunter", "2.0.0")] public class VoiceModPlugin : BaseUnityPlugin { [CompilerGenerated] private sealed class <LoadAllSoundsCoroutine>d__11 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public VoiceModPlugin <>4__this; private string <pluginFolder>5__1; private string <soundsRoot>5__2; private string <defaultPath>5__3; private string <exclusiveRoot>5__4; private string[] <>s__5; private int <>s__6; private string <file>5__7; private string[] <>s__8; private int <>s__9; private string <dir>5__10; private string <enemyKey>5__11; private string[] <>s__12; private int <>s__13; private string <file>5__14; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <LoadAllSoundsCoroutine>d__11(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <pluginFolder>5__1 = null; <soundsRoot>5__2 = null; <defaultPath>5__3 = null; <exclusiveRoot>5__4 = null; <>s__5 = null; <file>5__7 = null; <>s__8 = null; <dir>5__10 = null; <enemyKey>5__11 = null; <>s__12 = null; <file>5__14 = null; <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <pluginFolder>5__1 = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); <soundsRoot>5__2 = Path.Combine(<pluginFolder>5__1, "sounds"); <defaultPath>5__3 = Path.Combine(<soundsRoot>5__2, "default"); <exclusiveRoot>5__4 = Path.Combine(<soundsRoot>5__2, "exclusive"); if (Directory.Exists(<defaultPath>5__3)) { ((BaseUnityPlugin)<>4__this).Logger.LogInfo((object)"Loading default sounds..."); <>s__5 = Directory.GetFiles(<defaultPath>5__3, "*.wav"); <>s__6 = 0; goto IL_0132; } ((BaseUnityPlugin)<>4__this).Logger.LogWarning((object)"No 'default' sounds folder found in 'sounds/default'"); goto IL_0164; case 1: <>1__state = -1; <file>5__7 = null; <>s__6++; goto IL_0132; case 2: { <>1__state = -1; <file>5__14 = null; <>s__13++; goto IL_0298; } IL_0164: if (Directory.Exists(<exclusiveRoot>5__4)) { ((BaseUnityPlugin)<>4__this).Logger.LogInfo((object)"Loading exclusive sounds..."); <>s__8 = Directory.GetDirectories(<exclusiveRoot>5__4); <>s__9 = 0; goto IL_02cc; } ((BaseUnityPlugin)<>4__this).Logger.LogWarning((object)"No 'exclusive' sounds folder found in 'sounds/exclusive'"); break; IL_0132: if (<>s__6 < <>s__5.Length) { <file>5__7 = <>s__5[<>s__6]; <>2__current = ((MonoBehaviour)<>4__this).StartCoroutine(<>4__this.LoadClipCoroutine(<file>5__7, DefaultKillSounds)); <>1__state = 1; return true; } <>s__5 = null; goto IL_0164; IL_02cc: if (<>s__9 < <>s__8.Length) { <dir>5__10 = <>s__8[<>s__9]; <enemyKey>5__11 = Path.GetFileName(<dir>5__10).ToLower(); ExclusiveKillSounds[<enemyKey>5__11] = new List<AudioClip>(); ((BaseUnityPlugin)<>4__this).Logger.LogInfo((object)("Found exclusive folder for enemy: " + <enemyKey>5__11)); <>s__12 = Directory.GetFiles(<dir>5__10, "*.wav"); <>s__13 = 0; goto IL_0298; } <>s__8 = null; break; IL_0298: if (<>s__13 < <>s__12.Length) { <file>5__14 = <>s__12[<>s__13]; <>2__current = ((MonoBehaviour)<>4__this).StartCoroutine(<>4__this.LoadClipCoroutine(<file>5__14, ExclusiveKillSounds[<enemyKey>5__11])); <>1__state = 2; return true; } <>s__12 = null; <enemyKey>5__11 = null; <dir>5__10 = null; <>s__9++; goto IL_02cc; } ((BaseUnityPlugin)<>4__this).Logger.LogInfo((object)"Finished loading all sounds."); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <LoadClipCoroutine>d__12 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public string filePath; public List<AudioClip> targetList; public VoiceModPlugin <>4__this; private UnityWebRequest <www>5__1; private AudioClip <clip>5__2; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <LoadClipCoroutine>d__12(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { int num = <>1__state; if (num == -3 || num == 1) { try { } finally { <>m__Finally1(); } } <www>5__1 = null; <clip>5__2 = null; <>1__state = -2; } private bool MoveNext() { //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Invalid comparison between Unknown and I4 try { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <www>5__1 = UnityWebRequestMultimedia.GetAudioClip("file://" + filePath, (AudioType)20); <>1__state = -3; <>2__current = <www>5__1.SendWebRequest(); <>1__state = 1; return true; case 1: <>1__state = -3; if ((int)<www>5__1.result == 1) { <clip>5__2 = DownloadHandlerAudioClip.GetContent(<www>5__1); if ((Object)(object)<clip>5__2 != (Object)null) { ((Object)<clip>5__2).name = Path.GetFileNameWithoutExtension(filePath); targetList.Add(<clip>5__2); } <clip>5__2 = null; } else { ((BaseUnityPlugin)<>4__this).Logger.LogError((object)("Failed to load audio clip at path: " + filePath + "\nError: " + <www>5__1.error)); } <>m__Finally1(); <www>5__1 = null; return false; } } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void <>m__Finally1() { <>1__state = -1; if (<www>5__1 != null) { ((IDisposable)<www>5__1).Dispose(); } } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } internal static readonly List<AudioClip> DefaultKillSounds = new List<AudioClip>(); internal static readonly Dictionary<string, List<AudioClip>> ExclusiveKillSounds = new Dictionary<string, List<AudioClip>>(); public static ConfigEntry<float> Volume; public static ConfigEntry<int> Chance; public static ConfigEntry<bool> EnableExclusiveChance; public static ConfigEntry<int> ExclusiveChance; public static VoiceModPlugin Instance { get; private set; } private void Awake() { //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown Instance = this; Volume = ((BaseUnityPlugin)this).Config.Bind<float>("1. Geral", "Volume", 1f, "Volume das vozes (de 0.0 a 1.0)"); Chance = ((BaseUnityPlugin)this).Config.Bind<int>("1. Geral", "Chance", 1, "Chance de tocar uma voz (ex: 4 = 1/4 de chance, 1 = sempre)"); EnableExclusiveChance = ((BaseUnityPlugin)this).Config.Bind<bool>("2. Exclusivo", "Ativar Chance Exclusiva", false, "Se ativado, usa a chance abaixo para sons exclusivos de inimigos."); ExclusiveChance = ((BaseUnityPlugin)this).Config.Bind<int>("2. Exclusivo", "Chance Exclusiva", 4, "Chance de tocar uma voz exclusiva, se existir para o inimigo (ex: 4 = 1/4 de chance)"); Harmony val = new Harmony("com.thehalfbunny.enemytaunter"); val.PatchAll(); ((MonoBehaviour)this).StartCoroutine(LoadAllSoundsCoroutine()); ((BaseUnityPlugin)this).Logger.LogInfo((object)"EnemyTaunter (BepInEx Config Version) has been loaded and patched!"); } [IteratorStateMachine(typeof(<LoadAllSoundsCoroutine>d__11))] private IEnumerator LoadAllSoundsCoroutine() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <LoadAllSoundsCoroutine>d__11(0) { <>4__this = this }; } [IteratorStateMachine(typeof(<LoadClipCoroutine>d__12))] private IEnumerator LoadClipCoroutine(string filePath, List<AudioClip> targetList) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <LoadClipCoroutine>d__12(0) { <>4__this = this, filePath = filePath, targetList = targetList }; } } [HarmonyPatch(typeof(EnemyIdentifier), "Death", new Type[] { typeof(bool) })] public static class EnemyDeathPatch { private static float lastPlayTime = 0f; private static float cooldownSeconds = 1f; public static void Prefix(EnemyIdentifier __instance) { //IL_0050: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)__instance == (Object)null) && !__instance.dead && Random.Range(1, VoiceModPlugin.Chance.Value + 1) == 1 && !(Time.time < lastPlayTime + cooldownSeconds)) { AudioClip clipForEnemy = GetClipForEnemy(__instance.enemyType); if (!((Object)(object)clipForEnemy == (Object)null)) { lastPlayTime = Time.time; cooldownSeconds = clipForEnemy.length + 0.1f; PlaySound(clipForEnemy); } } } private static AudioClip GetClipForEnemy(EnemyType enemyType) { string key = ((object)(EnemyType)(ref enemyType)).ToString().ToLower(); if (VoiceModPlugin.EnableExclusiveChance.Value && VoiceModPlugin.ExclusiveKillSounds.TryGetValue(key, out var value) && value.Count > 0 && Random.Range(1, VoiceModPlugin.ExclusiveChance.Value + 1) == 1) { return value[Random.Range(0, value.Count)]; } if (VoiceModPlugin.DefaultKillSounds.Count > 0) { return VoiceModPlugin.DefaultKillSounds[Random.Range(0, VoiceModPlugin.DefaultKillSounds.Count)]; } return null; } private static void PlaySound(AudioClip clip) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown //IL_0038: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)Camera.main == (Object)null)) { GameObject val = new GameObject("TempAudio_" + ((Object)clip).name); val.transform.position = ((Component)Camera.main).transform.position; AudioSource val2 = val.AddComponent<AudioSource>(); val2.clip = clip; val2.spatialBlend = 0f; val2.volume = VoiceModPlugin.Volume.Value; val2.Play(); Object.Destroy((Object)(object)val, clip.length + 0.2f); } } }
BepInEx/plugins/UltrakULL/UltrakULL.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Reflection; using System.Reflection.Emit; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Xml; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Discord; using HarmonyLib; using Microsoft.CodeAnalysis; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using Sandbox; using SettingsMenu.Components; using TMPro; using UltrakULL.Harmony_Patches; using UltrakULL.audio; using UltrakULL.json; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.InputSystem; using UnityEngine.Networking; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("UltrakULL")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("UltrakULL")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("a4a60eef-e5f3-4a77-b125-236fbf44cca4")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } } [HarmonyPatch(typeof(IntroViolenceScreen))] public static class IntroViolenceScreenPatch { private static GameObject textObject1; private static GameObject textObject2; [HarmonyPatch("Start")] [HarmonyPostfix] private static void StartPatch(IntroViolenceScreen __instance) { Transform parent = ((Component)__instance).transform.parent; if (!((Object)(object)parent == (Object)null)) { Transform val = parent.Find("Image"); Transform val2 = parent.Find("ImageRed"); if ((Object)(object)val != (Object)null) { ReplaceImage(val, "violence1.png"); textObject1 = AddTextToImage(val, LanguageManager.CurrentLanguage.misc.violenceScreenText1, 0f); } if ((Object)(object)val2 != (Object)null) { ReplaceImage(val2, "violence2.png"); textObject2 = AddTextToImage(val2, LanguageManager.CurrentLanguage.misc.violenceScreenText2, 0f); } } } [HarmonyPatch("Update")] [HarmonyPostfix] private static void UpdatePatch(IntroViolenceScreen __instance) { //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)textObject1 == (Object)null) && !((Object)(object)textObject2 == (Object)null)) { float value = Traverse.Create((object)__instance).Field("fadeAmount").GetValue<float>(); float value2 = Traverse.Create((object)__instance).Field("targetAlpha").GetValue<float>(); bool value3 = Traverse.Create((object)__instance).Field("fade").GetValue<bool>(); Color color = ((Graphic)Traverse.Create((object)__instance).Field("red").GetValue<Image>()).color; if (value3 && value2 == 1f) { UpdateTextAlpha(textObject1, value); } if (color.a > 0f) { UpdateTextAlpha(textObject1, 0f); UpdateTextAlpha(textObject2, value); } } } private static GameObject AddTextToImage(Transform imageTransform, string text, float startAlpha) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Expected O, but got Unknown GameObject val = new GameObject("Text"); val.transform.SetParent(imageTransform, false); TextMeshProUGUI __instance = val.AddComponent<TextMeshProUGUI>(); ((TMP_Text)__instance).text = text; ((TMP_Text)__instance).enableAutoSizing = true; ((TMP_Text)__instance).fontSizeMin = 10f; ((TMP_Text)__instance).fontSizeMax = 100f; ((TMP_Text)__instance).alignment = (TextAlignmentOptions)514; ((TMP_Text)__instance).overflowMode = (TextOverflowModes)0; ((Graphic)__instance).color = new Color(1f, 1f, 1f, startAlpha); ((TMP_Text)__instance).enableWordWrapping = false; TextMeshProFontSwap.SwapTMPFont(ref __instance); RectTransform component = val.GetComponent<RectTransform>(); component.anchorMin = new Vector2(0.5f, 0.5f); component.anchorMax = new Vector2(0.5f, 0.5f); component.pivot = new Vector2(0.5f, 0.5f); component.anchoredPosition = Vector2.zero; float num = Mathf.Min((float)Screen.width * 0.9f, 800f); float num2 = Mathf.Min((float)Screen.height * 0.45f, 300f); component.sizeDelta = new Vector2(num, num2); return val; } private static void UpdateTextAlpha(GameObject textObj, float alpha) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) TextMeshProUGUI component = textObj.GetComponent<TextMeshProUGUI>(); ((Graphic)component).color = new Color(((Graphic)component).color.r, ((Graphic)component).color.g, ((Graphic)component).color.b, alpha); } private static void ReplaceImage(Transform imageTransform, string ImageName) { Image component = ((Component)imageTransform).GetComponent<Image>(); if (!((Object)(object)component == (Object)null)) { Sprite val = LoadPNG(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\IntroViolenceScreen", ImageName)); if ((Object)(object)val != (Object)null) { component.sprite = val; } } } private static Sprite LoadPNG(string filePath) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) if (!File.Exists(filePath)) { return null; } byte[] array = File.ReadAllBytes(filePath); Texture2D val = new Texture2D(2, 2); if (ImageConversion.LoadImage(val, array)) { return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f)); } return null; } } namespace UltrakULL { public static class Act1 { private static void PatchHellmap(ref GameObject canvasObj) { try { GameObject gameObjectChild = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(canvasObj, "Hellmap"), "Hellmap Act 1"); ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(gameObjectChild, "Text"))).text = LanguageManager.CurrentLanguage.misc.hellmap_limbo; ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(gameObjectChild, "Text (1)"))).text = LanguageManager.CurrentLanguage.misc.hellmap_lust; ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(gameObjectChild, "Text (2)"))).text = LanguageManager.CurrentLanguage.misc.hellmap_gluttony; } catch (Exception ex) { Logging.Warn("Failed to patch Act 1 hellmap."); Logging.Warn(ex.ToString()); } } public static void PatchAct1(ref GameObject canvasObj) { string currentSceneName = CommonFunctions.GetCurrentSceneName(); string levelName = Act1Strings.GetLevelName(); string levelChallenge = Act1Strings.GetLevelChallenge(currentSceneName); PatchHellmap(ref canvasObj); CommonFunctions.PatchResultsScreen(levelName, levelChallenge); if (currentSceneName.Contains("2-1")) { Transform transform = CommonFunctions.GetGameObjectChild(CommonFunctions.GetInactiveRootObject("3-4 - Outdoors Arenas"), "3-4 Stuff").transform; ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(((Component)transform.Find("Crane (Moveable)")).gameObject, "Cube (19)"), "Cube"), "UsableScreen New"), "InteractiveScreen"), "Canvas"), "Background"), "Text (TMP) (1)"))).text = LanguageManager.CurrentLanguage.act1.act1_lustFirst_crane; ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(((Component)transform.Find("UsableScreen New")).gameObject, "InteractiveScreen"), "Canvas"), "Background"), "InteractiveScreen Button"), "Text (TMP)"))).text = LanguageManager.CurrentLanguage.act1.act1_lustFirst_elevator; } } } public static class EncoreStrings { public static string GetLevelChallenge(string currentLevel) { return "There are no Challenges for this level."; } public static string GetLevelName() { string currentSceneName = CommonFunctions.GetCurrentSceneName(); if (!(currentSceneName == "Level 0-E")) { if (currentSceneName == "Level 1-E") { return "1-E - " + LanguageManager.CurrentLanguage.levelNames.levelName_encoreLimbo; } Logging.Warn("Unknown level name: " + currentSceneName); return currentSceneName; } return "0-E - " + LanguageManager.CurrentLanguage.levelNames.levelName_encorePrelude; } private static string Level0E(string message, string message2) { if ((message + message2).Contains("RADIANT")) { return LanguageManager.CurrentLanguage.encore.encorePrelude_aboutRadiantEnemies; } return "Unimplemented string"; } public static string GetMessage(string message, string message2, string input) { string currentSceneName = CommonFunctions.GetCurrentSceneName(); _ = message + message2; if (currentSceneName == "Level 0-E") { return Level0E(message, message2); } Logging.Warn("Unknown Encore HUD-message string in " + currentSceneName + ": \n" + message + message2); return "Unimplemented string"; } } public static class Act1Strings { private static string Level11(string message, string message2, string input) { string text = message + message2; if (text.Contains("ITEMS")) { CommonFunctions.PreviousHudMessage = LanguageManager.CurrentLanguage.act1.act1_limboFirst_items1 + " '<color=orange>" + input + "'</color> " + LanguageManager.CurrentLanguage.act1.act1_limboFirst_items2; return LanguageManager.CurrentLanguage.act1.act1_limboFirst_items1 + " '<color=orange>" + input + "'</color> " + LanguageManager.CurrentLanguage.act1.act1_limboFirst_items2; } if (text.Contains("NAILGUN")) { CommonFunctions.PreviousHudMessage = LanguageManager.CurrentLanguage.act1.act1_limboFirst_nailgun1 + " '<color=orange>" + input + "'</color> " + LanguageManager.CurrentLanguage.act1.act1_limboFirst_nailgun2 + "\n" + LanguageManager.CurrentLanguage.act1.act1_limboFirst_nailgun3; return LanguageManager.CurrentLanguage.act1.act1_limboFirst_nailgun1 + " '<color=orange>" + input + "'</color> " + LanguageManager.CurrentLanguage.act1.act1_limboFirst_nailgun2 + "\n" + LanguageManager.CurrentLanguage.act1.act1_limboFirst_nailgun3; } return CommonFunctions.PreviousHudMessage; } private static string Level12(string message, string message2) { if ((message + message2).Contains("BLUE")) { return LanguageManager.CurrentLanguage.act1.act1_limboSecond_blueAttack; } return "Unimplemented string"; } private static string Level13(string message, string message2) { if ((message + message2).Contains("SPLIT")) { return LanguageManager.CurrentLanguage.act1.act1_limboThird_splitDoor1 + "\n" + LanguageManager.CurrentLanguage.act1.act1_limboThird_splitDoor2; } return "Unimplemented string"; } private static string Level14(string message, string message2, string input) { string text = message + message2; if (text.Contains("PICK")) { return LanguageManager.CurrentLanguage.act1.act1_limboFourth_book; } if (text.Contains("Hank")) { return LanguageManager.CurrentLanguage.act1.act1_limboFourth_hank1 + "\n" + LanguageManager.CurrentLanguage.act1.act1_limboFourth_hank2; } if (message.Contains("versions")) { return LanguageManager.CurrentLanguage.misc.hud_alternateVersion; } if (text.Contains("ALTERNATE REVOLVER")) { return LanguageManager.CurrentLanguage.act1.act1_limboFourth_alternateRevolver; } if (text.Contains("EQUIPPED")) { return LanguageManager.CurrentLanguage.act1.act1_limboFourth_newArm + " '<color=orange>" + input + "'</color>."; } return "Unimplemented string"; } private static string Level1Secret(string message, string message2) { if ((message + message2).Contains("LOOKS")) { return LanguageManager.CurrentLanguage.act1.act1_limboSecret_noclipSkip; } return "Unimplemented string"; } private static string Level21(string message, string message2, string input) { string text = message + message2; if (text.Contains("KNUCKLE")) { return LanguageManager.CurrentLanguage.act1.act1_lustFirst_knuckleblaster1 + " '<color=orange>" + input + "</color>' " + LanguageManager.CurrentLanguage.act1.act1_lustFirst_knuckleblaster2; } if (text.Contains("DASH")) { return LanguageManager.CurrentLanguage.act1.act1_lustFirst_dashJump; } return "Unimplemented string"; } private static string Level22(string message, string message2, string input) { string text = message + message2; if (text.Contains("FEEDBACKER")) { return LanguageManager.CurrentLanguage.act1.act1_lustSecond_feedbacker1 + "\n" + LanguageManager.CurrentLanguage.act1.act1_lustSecond_feedbacker2 + " '<color=orange>" + input + "</color>'."; } if (text.Contains("RAILCANNON")) { return LanguageManager.CurrentLanguage.act1.act1_lustSecond_railcannon; } if (text.Contains("CHECKPOINTS")) { return LanguageManager.CurrentLanguage.act1.act1_lustSecond_checkPoints; } return "Unimplemented string"; } private static string Level23(string message, string message2) { if ((message + message2).Contains("water")) { return LanguageManager.CurrentLanguage.act1.act1_lustThird_water; } return "Unimplemented string"; } private static string Level24(string message, string message2) { _ = message + message2; return "Unimplemented string"; } private static string Level2Secret(string message, string message2) { _ = message + message2; return "Unimplemented string"; } private static string Level31(string message, string message2) { _ = message + message2; return "Unimplemented string"; } private static string Level32(string message, string message2) { _ = message + message2; return "Unimplemented string"; } public static string GetMessage(string message, string message2, string input) { string currentSceneName = CommonFunctions.GetCurrentSceneName(); if ((message + message2).Contains("mechanism")) { return LanguageManager.CurrentLanguage.act1.act1_secret; } return currentSceneName switch { "Level 1-1" => Level11(message, message2, input), "Level 1-2" => Level12(message, message2), "Level 1-3" => Level13(message, message2), "Level 1-4" => Level14(message, message2, input), "Level 1-S" => Level1Secret(message, message2), "Level 2-1" => Level21(message, message2, input), "Level 2-2" => Level22(message, message2, input), "Level 2-3" => Level23(message, message2), "Level 2-4" => Level24(message, message2), "Level 2-S" => Level2Secret(message, message2), "Level 3-1" => Level31(message, message2), "Level 3-2" => Level32(message, message2), _ => "Unimplemented string", }; } public static string GetLevelChallenge(string currentLevel) { return currentLevel switch { "Level 1-1" => LanguageManager.CurrentLanguage.levelChallenges.challenges_limboFirst, "Level 1-2" => LanguageManager.CurrentLanguage.levelChallenges.challenges_limboSecond, "Level 1-3" => LanguageManager.CurrentLanguage.levelChallenges.challenges_limboThird, "Level 1-4" => LanguageManager.CurrentLanguage.levelChallenges.challenges_limboFourth, "Level 2-1" => LanguageManager.CurrentLanguage.levelChallenges.challenges_lustFirst, "Level 2-2" => LanguageManager.CurrentLanguage.levelChallenges.challenges_lustSecond, "Level 2-3" => LanguageManager.CurrentLanguage.levelChallenges.challenges_lustThird, "Level 2-4" => LanguageManager.CurrentLanguage.levelChallenges.challenges_lustFourth, "Level 3-1" => LanguageManager.CurrentLanguage.levelChallenges.challenges_gluttonyFirst, "Level 3-2" => LanguageManager.CurrentLanguage.levelChallenges.challenges_gluttonySecond, _ => "Unknown challenge description", }; } public static string GetLevelName() { return CommonFunctions.GetCurrentSceneName() switch { "Level 1-1" => "1-1 - " + LanguageManager.CurrentLanguage.levelNames.levelName_limboFirst, "Level 1-2" => "1-2 - " + LanguageManager.CurrentLanguage.levelNames.levelName_limboSecond, "Level 1-3" => "1-3 - " + LanguageManager.CurrentLanguage.levelNames.levelName_limboThird, "Level 1-4" => "1-4 - " + LanguageManager.CurrentLanguage.levelNames.levelName_limboFourth, "Level 1-S" => "1-S - " + LanguageManager.CurrentLanguage.levelNames.levelName_limboSecret, "Level 2-1" => "2-1 - " + LanguageManager.CurrentLanguage.levelNames.levelName_lustFirst, "Level 2-2" => "2-2 - " + LanguageManager.CurrentLanguage.levelNames.levelName_lustSecond, "Level 2-3" => "2-3 - " + LanguageManager.CurrentLanguage.levelNames.levelName_lustThird, "Level 2-4" => "2-4 - " + LanguageManager.CurrentLanguage.levelNames.levelName_lustFourth, "Level 2-S" => "2-S - " + LanguageManager.CurrentLanguage.levelNames.levelName_lustSecret, "Level 3-1" => "3-1 - " + LanguageManager.CurrentLanguage.levelNames.levelName_gluttonyFirst, "Level 3-2" => "3-2 - " + LanguageManager.CurrentLanguage.levelNames.levelName_gluttonySecond, _ => "Unknown level name", }; } } public static class Act1Vn { public static void PatchPrompts(ref GameObject canvasObj) { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Expected O, but got Unknown GameObject gameObjectChild = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(canvasObj, "PowerUpVignette"), "Panel"), "Aspect Ratio Mask"); GameObject gameObjectChild2 = CommonFunctions.GetGameObjectChild(gameObjectChild, "Fallen"); List<GameObject> list = new List<GameObject>(); foreach (Transform item in gameObjectChild2.transform) { Transform val = item; if (((Object)((Component)val).gameObject).name == "Choices Box") { list.Add(((Component)val).gameObject); } } GameObject parent = list[0]; GameObject parent2 = list[1]; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(parent, "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_fallenPromptFirst1; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(parent, "Button (B)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_fallenPromptFirst2; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(parent, "Button (C)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_fallenPromptFirst3; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(parent2, "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_fallenPromptSecond1; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(parent2, "Button (B)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_fallenPromptSecond2; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(parent2, "Button (C)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_fallenPromptSecond3; GameObject gameObjectChild3 = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Middle"), "Choices Box (1)"); CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild3, "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_middlePrompt1; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild3, "Button (B)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_middlePrompt2; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild3, "Button (C)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_middlePrompt3; GameObject gameObjectChild4 = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Middle"), "Choices Box (2)"); CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild4, "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_middlePromptSecondRecklessness; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild4, "Button (B)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_middlePromptSecondWaiting; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild4, "Button (C)"), "Text")).text = "...Pourquoi sommes-nous ici?"; GameObject gameObjectChild5 = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Recklessness"), "Choices Box"); CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild5, "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessPrompt1; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild5, "Button (B)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessPrompt2; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Recklessness"), "Choices Box (1)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessPrompt3; GameObject gameObjectChild6 = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Waiting"), "Choices Box"); CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild6, "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingPromptFirst1; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild6, "Button (B)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingPromptFirst2; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Waiting"), "Choices Box (1)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingPromptThird; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (2)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt1; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (3)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt2; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (4)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt3; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (5)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt4; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (6)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt5; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (7)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt6; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (8)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt7; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (9)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt8; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (10)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt9; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (11)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt10; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (12)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt11; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (13)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt12; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (14)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt13; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (16)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt14; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (17)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt15; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (18)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt16; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (19)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt17; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (20)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt18; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (21)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt19; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (22)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt20; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (25)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt21; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (23)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt22; CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Nihilism"), "Choices Box (24)"), "Button (A)"), "Text")).text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilismPrompt23; GameObject gameObjectChild7 = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Conclusion"), "Choices Box (2)"); Text textfromGameObject = CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild7, "Button (A)"), "Text")); Text textfromGameObject2 = CommonFunctions.GetTextfromGameObject(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild7, "Button (B)"), "Text")); textfromGameObject.text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusionPrompt1; textfromGameObject2.text = LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusionPrompt2; } public static string GetNextString(string inputString) { if (inputString.Contains("Heavy steps")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_introFirst1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_introFirst2 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_introFirst3 + "▼\n\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_introFirst4 + "▼\n\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_introFirst5 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_introFirst6 + "▼\n\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_introFirst7 + "▼\n"; } if (inputString.Contains("I bit down")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_introSecond1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_introSecond2 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_introSecond3 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_introSecond4 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_introSecond5 + "▼}\n\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_introSecond6 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_introSecond7 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_introSecond8 + "▼"; } if (inputString.Contains("Oof ow")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_fallen1 + "▼"; } if (inputString.Contains("I'm just someone")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_fallenResponseFirst + "▼"; } if (inputString.Contains("Well I just got")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_fallenResponseSecond + "▼"; } if (inputString.Contains("Oh great")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_fallenResponseThird1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_fallenResponseThird2 + "▼"; } if (inputString.Contains("Alright, alright")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_fallenResponseFourth + "▼"; } if (inputString.Contains("UGH?")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_fallenResponseFifth + "▼"; } if (inputString.Contains("*Sigh*")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_kindFirst1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_kindFirst2 + "▼"; } if (inputString.Contains("Though, by the")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_kindSecond + "▼"; } if (inputString.Contains("So how about you")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_kindThird + "▼"; } if (inputString.Contains("Listen up,")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_rudeFirst1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_rudeFirst2 + "▼"; } if (inputString.Contains("By the looks of it")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_rudeSecond + "▼"; } if (inputString.Contains("So I'll forgive you")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_rudeThird + "▼"; } if (inputString.Contains("UGH!")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_middleResponseFirst1 + "▼"; } if (inputString.Contains("Though in retrospect")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_middleResponseFirst2 + "▼"; } if (inputString.Contains("Oh well,")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_middleResponseFirst3 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_middleResponseFirst4 + "▼\n"; } if (inputString.Contains("I'm Mirage.")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_middleResponseFirst5 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_middleResponseFirst6 + "▼"; } if (inputString.Contains("WHAT?")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_middleResponseSecond1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_middleResponseSecond2 + "▼"; } if (inputString.Contains("If you DON'T")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_middleResponseSecond3 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_middleResponseSecond4 + "▼"; } if (inputString.Contains("Bullshit!")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_middleResponseThird1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_middleResponseThird2 + "▼"; } if (inputString.Contains("Though considering")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_middleResponseThird3 + "▼"; } if (inputString.Contains("Wandering around like")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingFirst + "▼"; } if (inputString.Contains("Since we were")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingSecond + "▼"; } if (inputString.Contains("Therefore,")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingThird1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingThird2 + "▼"; } if (inputString.Contains("Suit yourself")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingResponseFirst1 + "▼\n"; } if (inputString.Contains("Couldn't care less")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingResponseFirst2 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingResponseFirst3 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingResponseFirst4 + "▼"; } if (inputString.Contains("Hah!")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingResponseSecond1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingResponseSecond2 + "▼"; } if (inputString.Contains("Because nothing")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingResponseThird1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingResponseThird2 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_waitingResponseThird3 + "▼"; } if (inputString.Contains("Yeah?")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessFirst + "▼"; } if (inputString.Contains("But yes,")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessSecond1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessSecond2 + "▼"; } if (inputString.Contains("What's the point of making")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessResponseFirst1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessResponseFirst2 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessResponseFirst3 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessResponseFirst4 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessResponseFirst5 + "▼\n"; } if (inputString.Contains("Don't flatter yourself")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessResponseSecond1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessResponseSecond2 + "▼"; } if (inputString.Contains("Everything.")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_recklessnessResponseThird + "▼"; } if (inputString.Contains("I mean really")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism1 + "▼"; } if (inputString.Contains("The human mind,")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism2 + "▼"; } if (inputString.Contains("We can only ever")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism3 + "▼"; } if (inputString.Contains("Death is")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism4 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism5 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism6 + "▼"; } if (inputString.Contains("It doesn't matter")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism7 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism8 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism9 + "▼"; } if (inputString.Contains("Human intelligence")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism10 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism11 + "▼"; } if (inputString.Contains("Our intelligence")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism12 + "▼"; } if (inputString.Contains("It's an over-extension")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism13 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism14 + "▼\n"; } if (inputString.Contains("Much like the Irish")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism15 + "▼"; } if (inputString.Contains("The human mind is an")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism16 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism17 + "▼\n"; } if (inputString.Contains("Existential dread")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism18 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism19 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism20 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism21 + "▼"; } if (inputString.Contains("We are unable")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism22 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism23 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism24 + "▼"; } if (inputString.Contains("We create distractions")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism25 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism26 + "▼"; } if (inputString.Contains("We sublimate it")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism27 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism28 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism29 + "▼"; } if (inputString.Contains("But these ways")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism30 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism31 + "▼"; } if (inputString.Contains("In the end")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism32 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism33 + "▼"; } if (inputString.Contains("Huh?")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism34 + "▼"; } if (inputString.Contains("How could it not be?")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism35 + "▼"; } if (inputString.Contains("But still")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism36 + "▼"; } if (inputString.Contains("I do understand")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism37 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism38 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism39 + "▼"; } if (inputString.Contains("I see.")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism40 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism41 + "▼"; } if (inputString.Contains("I understand it logically")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism42 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_nihilism43 + "▼"; } if (inputString.Contains("Well I'll be damned")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusion1 + "▼"; } if (inputString.Contains("Guess you got a good")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusion2 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusion3 + "▼"; } if (inputString.Contains("Man...")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusion4 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusion5 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusion6 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusion7 + "▼"; } if (inputString.Contains("Thank you.")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusion8 + "▼\n"; } if (inputString.Contains("You've given me a lot")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusion9 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusion10 + "▼\n"; } if (inputString.Contains("Say...")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusion11 + "▼"; } if (inputString.Contains("Oh, you sneaky")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusionResponseFirst1 + "▼"; } if (inputString.Contains("But alright")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusionResponseFirst2 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusionResponseFirst3 + "▼"; } if (inputString.Contains("Alright, suit yourself")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusionResponseSecond1 + "▼\n" + LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusionResponseSecond2 + "▼"; } if (inputString.Contains("See you around")) { return LanguageManager.CurrentLanguage.visualnovel.visualnovel_conclusionResponseSecond3 + "▼"; } return inputString; } } public static class Act2 { private static void PatchHellmap(ref GameObject canvasObj) { GameObject gameObjectChild = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(canvasObj, "Hellmap"), "Hellmap Act 2"); ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(gameObjectChild, "Text"))).text = LanguageManager.CurrentLanguage.misc.hellmap_greed; ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(gameObjectChild, "Text (1)"))).text = LanguageManager.CurrentLanguage.misc.hellmap_wrath; ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(gameObjectChild, "Text (2)"))).text = LanguageManager.CurrentLanguage.misc.hellmap_heresy; } public static void PatchAct2(ref GameObject canvasObj) { string currentSceneName = CommonFunctions.GetCurrentSceneName(); string levelName = Act2Strings.GetLevelName(); string levelChallenge = Act2Strings.GetLevelChallenge(currentSceneName); CommonFunctions.PatchResultsScreen(levelName, levelChallenge); PatchHellmap(ref canvasObj); } } public static class Act2Strings { private static string _previousMessage = ""; private static string Level41(string message, string message2) { _ = message + message2; return "Unimplemented string"; } private static string Level42(string message, string message2) { if ((message + message2).Contains("BLEED")) { return LanguageManager.CurrentLanguage.act2.act2_greedSecond_sand; } return "Unimplemented string"; } private static string Level43(string message, string message2) { string text = message + message2; if (text.Contains("FILTH")) { return LanguageManager.CurrentLanguage.act2.act2_greedThird_wallClip; } if (text.Contains("wicked")) { return LanguageManager.CurrentLanguage.act2.act2_greedThird_troll1; } if (text.Contains("kidding")) { return LanguageManager.CurrentLanguage.act2.act2_greedThird_troll2; } if (text.Contains("TOMB")) { return LanguageManager.CurrentLanguage.act2.act2_greedThird_tombOfKings; } return "Unimplemented string"; } private static string Level44(string message, string message2, string input) { string text = message + message2; if (text == "") { return _previousMessage; } if (message.Contains("versions")) { return LanguageManager.CurrentLanguage.misc.hud_alternateVersion; } if (text.Contains("ALTERNATE NAILGUN")) { return LanguageManager.CurrentLanguage.act2.act2_greedFourth_alternateNailgun; } if (text.Contains("You're")) { return LanguageManager.CurrentLanguage.act2.act2_greedFourth_v2; } if (text.Contains("Hold")) { _previousMessage = LanguageManager.CurrentLanguage.act2.act2_greedFourth_whiplash1 + " <color=orange>" + input + "</color> " + LanguageManager.CurrentLanguage.act2.act2_greedFourth_whiplash2; return LanguageManager.CurrentLanguage.act2.act2_greedFourth_whiplash1 + " <color=orange>" + input + "</color> " + LanguageManager.CurrentLanguage.act2.act2_greedFourth_whiplash2; } if (text.Contains("HEAVY")) { _previousMessage = LanguageManager.CurrentLanguage.act2.act2_greedFourth_whiplash3; return LanguageManager.CurrentLanguage.act2.act2_greedFourth_whiplash3; } if (text.Contains("HARD DAMAGE")) { _previousMessage = LanguageManager.CurrentLanguage.act2.act2_greedFourth_whiplashHardDamage1 + "\n" + LanguageManager.CurrentLanguage.act2.act2_greedFourth_whiplashHardDamage2; return LanguageManager.CurrentLanguage.act2.act2_greedFourth_whiplashHardDamage1 + "\n" + LanguageManager.CurrentLanguage.act2.act2_greedFourth_whiplashHardDamage2; } return "Unimplemented string"; } private static string Level4Secret(string message, string message2, string input) { if ((message + message2).Contains("HOLD")) { return LanguageManager.CurrentLanguage.act2.act2_greedSecret_holdToJump1 + "<color=orange> " + input + " </color>" + LanguageManager.CurrentLanguage.act2.act2_greedSecret_holdToJump2; } return "Unimplemented string"; } private static string Level51(string message, string message2) { string text = message + message2; if (text.Contains("HOOKPOINT")) { return LanguageManager.CurrentLanguage.act2.act2_wrathFirst_slingshot; } if (text.Contains("WHIPLASH")) { return LanguageManager.CurrentLanguage.act2.act2_wrathFirst_whiplashUnderwater; } if (text.Contains("SENTRIES")) { return LanguageManager.CurrentLanguage.act2.act2_wrathFirst_sentry; } if (text.Contains("drained")) { return LanguageManager.CurrentLanguage.act2.act2_wrathFirst_waterDrained; } return "Unimplemented string"; } private static string Level52(string message, string message2) { string text = message + message2; if (text.Contains("JAKITO")) { return LanguageManager.CurrentLanguage.act2.act2_wrathSecond_jakito1; } if (text.Contains("THANK")) { return LanguageManager.CurrentLanguage.act2.act2_wrathSecond_jakito2; } if (text.Contains("NO")) { return LanguageManager.CurrentLanguage.act2.act2_wrathSecond_jakito3; } if (text.Contains("Hark")) { return LanguageManager.CurrentLanguage.act2.act2_wrathSecond_neptune; } if (text.Contains("IDOL")) { return LanguageManager.CurrentLanguage.act2.act2_wrathSecond_idol; } return "Unimplemented string"; } private static string Level53(string message, string message2) { string text = message + message2; if (text.Contains("Indirect")) { return LanguageManager.CurrentLanguage.act2.act2_wrathThird_rocketLauncher; } if (text.Contains("FALLING")) { return LanguageManager.CurrentLanguage.act2.act2_wrathThird_rocketLauncherMidair; } if (text.Contains("Soldiers")) { return LanguageManager.CurrentLanguage.act2.act2_wrathThird_soldierBlock; } if (text.Contains("Hank")) { return LanguageManager.CurrentLanguage.act2.act2_wrathThird_hank; } return "Unimplemented string"; } private static string Level54(string message, string message2) { _ = message + message2; return "Unimplemented string"; } private static string Level5Secret(string message) { if (message.Contains("living")) { return LanguageManager.CurrentLanguage.fishing.fish_living; } if (message.Contains("Too small")) { return LanguageManager.CurrentLanguage.fishing.fish_tooSmall; } if (message.Contains("This bait")) { return LanguageManager.CurrentLanguage.fishing.fish_baitNotWork; } if (message.Contains("A fish took")) { return LanguageManager.CurrentLanguage.fishing.fish_baitTaken; } if (message.Contains("Fishing interrupted")) { return LanguageManager.CurrentLanguage.fishing.fish_interrupted; } if (message.Contains("Cooking failed")) { return LanguageManager.CurrentLanguage.fishing.fish_cookingFailed; } if (message.Contains("Nothing seems")) { return LanguageManager.CurrentLanguage.fishing.fish_noFishBiting; } return "Unimplemented string"; } private static string Level61(string message, string message2) { if ((message + message2).Contains("A R M B O Y")) { return LanguageManager.CurrentLanguage.act2.act2_heresyFirst_armboy; } return "Unimplemented string"; } private static string Level62(string message, string message2) { _ = message + message2; return "Unimplemented string"; } public static string GetMessage(string message, string message2, string input) { string currentSceneName = CommonFunctions.GetCurrentSceneName(); if ((message + message2).Contains("opens")) { return LanguageManager.CurrentLanguage.act2.act2_greed_secretDoor; } return currentSceneName switch { "Level 4-1" => Level41(message, message2), "Level 4-2" => Level42(message, message2), "Level 4-3" => Level43(message, message2), "Level 4-4" => Level44(message, message2, input), "Level 4-S" => Level4Secret(message, message2, input), "Level 5-1" => Level51(message, message2), "Level 5-2" => Level52(message, message2), "Level 5-3" => Level53(message, message2), "Level 5-4" => Level54(message, message2), "Level 5-S" => Level5Secret(message), "Level 6-1" => Level61(message, message2), "Level 6-2" => Level62(message, message2), _ => "Unimplemented string", }; } public static string GetLevelChallenge(string currentLevel) { return currentLevel switch { "Level 4-1" => LanguageManager.CurrentLanguage.levelChallenges.challenges_greedFirst, "Level 4-2" => LanguageManager.CurrentLanguage.levelChallenges.challenges_greedSecond, "Level 4-3" => LanguageManager.CurrentLanguage.levelChallenges.challenges_greedThird, "Level 4-4" => LanguageManager.CurrentLanguage.levelChallenges.challenges_greedFourth, "Level 5-1" => LanguageManager.CurrentLanguage.levelChallenges.challenges_wrathFirst, "Level 5-2" => LanguageManager.CurrentLanguage.levelChallenges.challenges_wrathSecond, "Level 5-3" => LanguageManager.CurrentLanguage.levelChallenges.challenges_wrathThird, "Level 5-4" => LanguageManager.CurrentLanguage.levelChallenges.challenges_wrathFourth, "Level 6-1" => LanguageManager.CurrentLanguage.levelChallenges.challenges_heresyFirst, "Level 6-2" => LanguageManager.CurrentLanguage.levelChallenges.challenges_heresySecond, _ => "Unknown challenge description", }; } public static string GetLevelName() { return CommonFunctions.GetCurrentSceneName() switch { "Level 4-1" => "4-1 - " + LanguageManager.CurrentLanguage.levelNames.levelName_greedFirst, "Level 4-2" => "4-2 - " + LanguageManager.CurrentLanguage.levelNames.levelName_greedSecond, "Level 4-3" => "4-3 - " + LanguageManager.CurrentLanguage.levelNames.levelName_greedThird, "Level 4-4" => "4-4 - " + LanguageManager.CurrentLanguage.levelNames.levelName_greedFourth, "Level 5-1" => "5-1 - " + LanguageManager.CurrentLanguage.levelNames.levelName_wrathFirst, "Level 5-2" => "5-2 - " + LanguageManager.CurrentLanguage.levelNames.levelName_wrathSecond, "Level 5-3" => "5-3 - " + LanguageManager.CurrentLanguage.levelNames.levelName_wrathThird, "Level 5-4" => "5-4 - " + LanguageManager.CurrentLanguage.levelNames.levelName_wrathFourth, "Level 6-1" => "6-1 - " + LanguageManager.CurrentLanguage.levelNames.levelName_heresyFirst, "Level 6-2" => "6-2 - " + LanguageManager.CurrentLanguage.levelNames.levelName_heresySecond, _ => "Unknown level name", }; } } public static class Act3 { private static void PatchHellmap(ref GameObject canvasObj) { GameObject gameObjectChild = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(canvasObj, "Hellmap"), "Hellmap Act 3"); ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(gameObjectChild, "Text"))).text = LanguageManager.CurrentLanguage.misc.hellmap_violence; ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(gameObjectChild, "Text (1)"))).text = LanguageManager.CurrentLanguage.misc.hellmap_fraud; ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(gameObjectChild, "Text (2)"))).text = LanguageManager.CurrentLanguage.misc.hellmap_treachery; } public static void PatchAct3(ref GameObject canvasObj) { string currentSceneName = CommonFunctions.GetCurrentSceneName(); string levelName = Act3Strings.GetLevelName(); string levelChallenge = Act3Strings.GetLevelChallenge(currentSceneName); CommonFunctions.PatchResultsScreen(levelName, levelChallenge); PatchHellmap(ref canvasObj); if (currentSceneName.Contains("7-2")) { GameObject gameObjectChild = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetInactiveRootObject("Other Interiors"), "9 - Tram Station"), "9 Stuff"), "9A"), "InteractiveScreenWithStand"), "InteractiveScreen"), "Canvas"), "Background"); TextMeshProUGUI textMeshProUGUI = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "A"), "Opened"), "Text (TMP)")); TextMeshProUGUI textMeshProUGUI2 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "A"), "Closed"), "Text (TMP)")); TextMeshProUGUI textMeshProUGUI3 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "B"), "Opened"), "Text (TMP)")); TextMeshProUGUI textMeshProUGUI4 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "B"), "Closed"), "Text (TMP)")); TextMeshProUGUI textMeshProUGUI5 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "C"), "Opened"), "Text (TMP)")); TextMeshProUGUI textMeshProUGUI6 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "C"), "Closed"), "Text (TMP)")); TextMeshProUGUI textMeshProUGUI7 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "D"), "Opened"), "Text (TMP)")); TextMeshProUGUI textMeshProUGUI8 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "D"), "Closed"), "Text (TMP)")); ((TMP_Text)textMeshProUGUI).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_gateControlOpen; ((TMP_Text)textMeshProUGUI2).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_gateControlClosed; ((TMP_Text)textMeshProUGUI3).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_gateControlOpen; ((TMP_Text)textMeshProUGUI4).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_gateControlClosed; ((TMP_Text)textMeshProUGUI5).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_gateControlOpen; ((TMP_Text)textMeshProUGUI6).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_gateControlClosed; ((TMP_Text)textMeshProUGUI7).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_gateControlOpen; ((TMP_Text)textMeshProUGUI8).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_gateControlClosed; GameObject gameObjectChild2 = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetInactiveRootObject("Outdoors"), "10 - Ambush Station"), "10 Nonstuff"), "InteractiveScreenWithStand"), "InteractiveScreen"), "Canvas"), "Background"); TextMeshProUGUI textMeshProUGUI9 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(gameObjectChild2, "Text (TMP) (1)")); TextMeshProUGUI textMeshProUGUI10 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild2, "Button (Open)"), "Text (TMP)")); TextMeshProUGUI textMeshProUGUI11 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild2, "Button (Closed)"), "Text (TMP)")); ((TMP_Text)textMeshProUGUI9).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_cartGateControlTitle; ((TMP_Text)textMeshProUGUI10).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_cartGateControlOpen; ((TMP_Text)textMeshProUGUI11).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_cartGateControlClosed; GameObject gameObjectChild3 = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetInactiveRootObject("Outdoors"), "11 - Bomb Station"), "11 Nonstuff"), "Bomb Mechanisms"), "InteractiveScreenWithStand"), "InteractiveScreen"), "Canvas"); TextMeshProUGUI textMeshProUGUI12 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(gameObjectChild3, "Text (TMP)")); TextMeshProUGUI[] componentsInChildren = CommonFunctions.GetGameObjectChild(gameObjectChild3, "UsableButtons").GetComponentsInChildren<TextMeshProUGUI>(true); TextMeshProUGUI textMeshProUGUI13 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild3, "UsableButtons"), "Error")); TextMeshProUGUI textMeshProUGUI14 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(gameObjectChild3, "Done")); ((TMP_Text)textMeshProUGUI12).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_payloadControlTitle; TextMeshProUGUI[] array = componentsInChildren; foreach (TextMeshProUGUI val in array) { if (((TMP_Text)val).text.Contains("LOWER")) { ((TMP_Text)val).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_payloadControlLower; } } ((TMP_Text)textMeshProUGUI13).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_payloadControlError1 + "<size=12>\n" + LanguageManager.CurrentLanguage.act3.act3_violenceSecond_payloadControlError2; ((TMP_Text)textMeshProUGUI14).text = LanguageManager.CurrentLanguage.act3.act3_violenceSecond_payloadControlHell; } else if (currentSceneName.Contains("7-3")) { GameObject gameObjectChild4 = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetInactiveRootObject("Outdoors Areas"), "8 - Upper Garden Battlefield"), "8 Stuff"), "Destructible Tunnel"), "InteractiveScreenWithStand"), "InteractiveScreen"), "Canvas"), "Background"); TextMeshProUGUI textMeshProUGUI15 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild4, "PreActivation"), "Text (TMP) (1)")); TextMeshProUGUI textMeshProUGUI16 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild4, "PreActivation"), "InteractiveScreenButton"), "Text (TMP)")); TextMeshProUGUI textMeshProUGUI17 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild4, "PostActivation"), "Text (TMP) (1)")); ((TMP_Text)textMeshProUGUI15).text = LanguageManager.CurrentLanguage.act3.act3_violenceThird_becomeMarked; ((TMP_Text)textMeshProUGUI16).text = LanguageManager.CurrentLanguage.act3.act3_violenceThird_becomeMarkedButton; ((TMP_Text)textMeshProUGUI17).text = LanguageManager.CurrentLanguage.act3.act3_violenceThird_starOfTheShow; } else if (currentSceneName.Contains("7-4")) { ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(canvasObj, "Warning"), "Text (TMP)"))).text = LanguageManager.CurrentLanguage.act3.act3_violenceFourth_floodingWarning; ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(canvasObj, "Countdown"), "Text (TMP)"))).text = LanguageManager.CurrentLanguage.act3.act3_violenceFourth_countdownTitle; } else if (currentSceneName.Contains("8-4")) { TextMeshProUGUI textMeshProUGUI18 = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(canvasObj, "HeightMarkerParent"), "HeightMarker"), "Title")); string act3_fraudFourth_heightMarkerTitle = LanguageManager.CurrentLanguage.act3.act3_fraudFourth_heightMarkerTitle; ((TMP_Text)textMeshProUGUI18).text = CommonFunctions.MakeVertical(act3_fraudFourth_heightMarkerTitle); ((TMP_Text)textMeshProUGUI18).ForceMeshUpdate(false, false); } } } public static class Act3Strings { public static string Level71(string message, string message2) { if ((message + message2).Contains("A door opens.")) { return LanguageManager.CurrentLanguage.act3.act3_violenceFirst_doorOpens; } return "Unimplemented string"; } public static string Level72(string message, string message2, string input) { string text = message + message2; if (text.Contains("Swap arms with")) { return LanguageManager.CurrentLanguage.act3.act3_violenceSecond_guttermanTutorial + " '<color=orange>" + input + "</color>'"; } if (text.Contains("You should probably")) { return LanguageManager.CurrentLanguage.act3.act3_violenceSecond_guttermanTutorialNoKB; } if (text.Contains("BIGGER BOOM")) { return "<color=red>" + LanguageManager.CurrentLanguage.act3.act3_violenceSecond_biggerBoom + "</color>"; } if (message.Contains("versions")) { return LanguageManager.CurrentLanguage.misc.hud_alternateVersion; } if (text.Contains("ALTERNATE SHOTGUN")) { return LanguageManager.CurrentLanguage.act3.act3_violenceSecond_alternateShotgun; } return "Unimplemented string"; } public static string Level73(string message, string message2) { string text = message + message2; if (text.Contains("YOU'RE NOT")) { return LanguageManager.CurrentLanguage.act3.act3_secretNotReady; } if (text.Contains("F E E D")) { return "<color=red>" + LanguageManager.CurrentLanguage.act3.act3_violenceThird_feedIt + "</color>"; } return "Unimplemented string"; } public static string Level74(string message, string message2) { if ((message + message2).Contains("MAGENTA")) { return LanguageManager.CurrentLanguage.act3.act3_violenceFourth_magentaAttack; } return "Unimplemented string"; } public static string Level7Secret(string message, string message2) { return "Unimplemented string"; } public static string Level81() { return "Unknown 8-1 string"; } public static string Level82() { return "Unknown 8-2 string"; } public static string Level83() { return "Unknown 8-3 string"; } public static string Level84(string format = "", string message2 = "", string[] inputs = null) { string text = format + message2; if (text.Contains("WARNING:") && text.Contains("free fall")) { string text2 = ((inputs != null && inputs.Length != 0) ? inputs[0] : ""); string text3 = ((inputs != null && inputs.Length > 1) ? inputs[1] : ""); return LanguageManager.CurrentLanguage.act3.act3_fraudFourth_fallWarning_part1 + "\n" + LanguageManager.CurrentLanguage.act3.act3_fraudFourth_fallWarning_part2 + " <color=orange>" + text2 + "</color> " + LanguageManager.CurrentLanguage.act3.act3_fraudFourth_fallWarning_part3 + " <color=orange>" + text3 + "</color>."; } return "Unknown 8-4 string"; } public static string Level8Secret() { return "Unknown 8-S string"; } public static string Level91() { return "Unknown 9-1 string"; } public static string Level92() { return "Unknown 9-2 string"; } public static string GetMessage(string message, string message2, string input) { string currentSceneName = CommonFunctions.GetCurrentSceneName(); _ = message + message2; return currentSceneName switch { "Level 7-1" => Level71(message, message2), "Level 7-2" => Level72(message, message2, input), "Level 7-3" => Level73(message, message2), "Level 7-4" => Level74(message, message2), "Level 7-S" => Level7Secret(message, message2), "Level 8-1" => Level81(), "Level 8-2" => Level82(), "Level 8-3" => Level83(), "Level 8-4" => Level84(), "Level 8-S" => Level8Secret(), "Level 9-1" => Level91(), "Level 9-2" => Level92(), _ => "Unimplemented string", }; } public static string GetLevelChallenge(string currentLevel) { return currentLevel switch { "Level 7-1" => LanguageManager.CurrentLanguage.levelChallenges.challenges_violenceFirst, "Level 7-2" => LanguageManager.CurrentLanguage.levelChallenges.challenges_violenceSecond, "Level 7-3" => LanguageManager.CurrentLanguage.levelChallenges.challenges_violenceThird, "Level 7-4" => LanguageManager.CurrentLanguage.levelChallenges.challenges_violenceFourth, "Level 8-1" => LanguageManager.CurrentLanguage.levelChallenges.challenges_fraudFirst, "Level 8-2" => LanguageManager.CurrentLanguage.levelChallenges.challenges_fraudSecond, "Level 8-3" => LanguageManager.CurrentLanguage.levelChallenges.challenges_fraudThird, "Level 8-4" => LanguageManager.CurrentLanguage.levelChallenges.challenges_fraudFourth, "Level 9-1" => LanguageManager.CurrentLanguage.levelChallenges.challenges_treacheryFirst, "Level 9-2" => LanguageManager.CurrentLanguage.levelChallenges.challenges_treacherySecond, _ => "Unknown challenge description", }; } public static string GetLevelName() { return CommonFunctions.GetCurrentSceneName() switch { "Level 7-1" => "7-1 - " + LanguageManager.CurrentLanguage.levelNames.levelName_violenceFirst, "Level 7-2" => "7-2 - " + LanguageManager.CurrentLanguage.levelNames.levelName_violenceSecond, "Level 7-3" => "7-3 - " + LanguageManager.CurrentLanguage.levelNames.levelName_violenceThird, "Level 7-4" => "7-4 - " + LanguageManager.CurrentLanguage.levelNames.levelName_violenceFourth, "Level 8-1" => "8-1 - " + LanguageManager.CurrentLanguage.levelNames.levelName_fraudFirst, "Level 8-2" => "8-2 - " + LanguageManager.CurrentLanguage.levelNames.levelName_fraudSecond, "Level 8-3" => "8-3 - " + LanguageManager.CurrentLanguage.levelNames.levelName_fraudThird, "Level 8-4" => "8-4 - " + LanguageManager.CurrentLanguage.levelNames.levelName_fraudFourth, "Level 9-1" => "9-1 - " + LanguageManager.CurrentLanguage.levelNames.levelName_treacheryFirst, "Level 9-2" => "9-2 - " + LanguageManager.CurrentLanguage.levelNames.levelName_treacherySecond, _ => "Unknown level name", }; } } public static class Books { public static string GetBookText(string originalText) { string currentSceneName = CommonFunctions.GetCurrentSceneName(); switch (currentSceneName) { case "CreditsMuseum2": return DevMuseum.GetMuseumBook(originalText); case "Level 1-4": return "<b>" + LanguageManager.CurrentLanguage.books.books_limboFourth1 + "</b>\n\n<i>" + LanguageManager.CurrentLanguage.books.books_limboFourth2 + "\n\n" + LanguageManager.CurrentLanguage.books.books_limboFourth3 + "\n\n" + LanguageManager.CurrentLanguage.books.books_limboFourth4 + "</i>\n\n<b>" + LanguageManager.CurrentLanguage.books.books_limboFourth5 + "</b>"; case "Level 2-2": return "<b>" + LanguageManager.CurrentLanguage.books.books_lustSecond1 + "</b>\n\n<i>" + LanguageManager.CurrentLanguage.books.books_lustSecond2 + "\n\n" + LanguageManager.CurrentLanguage.books.books_lustSecond3 + "\n\n" + LanguageManager.CurrentLanguage.books.books_lustSecond4 + "</i>\n\n<b>" + LanguageManager.CurrentLanguage.books.books_lustSecond5 + "</b>"; case "Level 4-2": return "<b>" + LanguageManager.CurrentLanguage.books.books_greedSecond1 + "</b>\n\n<i>" + LanguageManager.CurrentLanguage.books.books_greedSecond2 + "\n\n" + LanguageManager.CurrentLanguage.books.books_greedSecond3 + "\n\n" + LanguageManager.CurrentLanguage.books.books_greedSecond4 + "\n\n" + LanguageManager.CurrentLanguage.books.books_greedSecond5 + "</i>\n\n<b>" + LanguageManager.CurrentLanguage.books.books_greedSecond6 + "</b>"; case "Level 4-3": return LanguageManager.CurrentLanguage.books.books_greedThird1 + "\n\n" + LanguageManager.CurrentLanguage.books.books_greedThird2 + "\n\n" + LanguageManager.CurrentLanguage.books.books_greedThird3 + "\n\n" + LanguageManager.CurrentLanguage.books.books_greedThird4; case "Level 5-2": return "<b>" + LanguageManager.CurrentLanguage.books.books_wrathSecond1 + "</b>\n\n<b>" + LanguageManager.CurrentLanguage.books.books_wrathSecond2 + "</b>\n\n" + LanguageManager.CurrentLanguage.books.books_wrathSecond3 + "\n\n" + LanguageManager.CurrentLanguage.books.books_wrathSecond4 + "\n\n" + LanguageManager.CurrentLanguage.books.books_wrathSecond5 + "\n\n<i>" + LanguageManager.CurrentLanguage.books.books_wrathSecond6 + "</i>\n\n" + LanguageManager.CurrentLanguage.books.books_wrathSecond7 + "\n\n" + LanguageManager.CurrentLanguage.books.books_wrathSecond8 + "\n\n<b>" + LanguageManager.CurrentLanguage.books.books_wrathSecond9 + "</b>"; case "Level 5-S": if (originalText.Contains("DAY 529")) { return LanguageManager.CurrentLanguage.fishing.fish_book1 + "\n\n" + LanguageManager.CurrentLanguage.fishing.fish_book2 + "\n" + LanguageManager.CurrentLanguage.fishing.fish_book3 + "\n" + LanguageManager.CurrentLanguage.fishing.fish_book4 + "\n" + LanguageManager.CurrentLanguage.fishing.fish_book8 + "\n\n" + LanguageManager.CurrentLanguage.fishing.fish_book5 + "\n" + LanguageManager.CurrentLanguage.fishing.fish_book6 + "\n" + LanguageManager.CurrentLanguage.fishing.fish_book7 + "\n\n" + LanguageManager.CurrentLanguage.fishing.fish_book8 + "\n\n" + LanguageManager.CurrentLanguage.fishing.fish_book7 + "\n" + LanguageManager.CurrentLanguage.fishing.fish_book8 + "\n\n" + LanguageManager.CurrentLanguage.fishing.fish_book7 + " " + LanguageManager.CurrentLanguage.fishing.fish_book8 + "<size=47>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=45>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=43>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=41>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=39>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=37>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=35>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=33>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=31>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=29>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=27>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=25>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=23>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=21>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=19>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=17>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=15>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=13>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=11>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=9>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=7>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=5>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=3>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>\n<size=1>" + LanguageManager.CurrentLanguage.fishing.fish_book9 + "</size>" + LanguageManager.CurrentLanguage.fishing.fish_book10; } return LanguageManager.CurrentLanguage.fishing.fish_bottleMessage1 + "\n\n\n" + LanguageManager.CurrentLanguage.fishing.fish_bottleMessage2 + "\n\n\n" + LanguageManager.CurrentLanguage.fishing.fish_bottleMessage3 + "\n\n\n" + LanguageManager.CurrentLanguage.fishing.fish_bottleMessage4 + "\n\n\n" + LanguageManager.CurrentLanguage.fishing.fish_bottleMessage5 + "\n\n\n" + LanguageManager.CurrentLanguage.fishing.fish_bottleMessage6; case "Level 6-1": return "<size=244>" + LanguageManager.CurrentLanguage.act2.act2_heresyFirst_armboy + "</size>"; case "Level 7-1": if (originalText.Contains("The unending halls of")) { return "<b>" + LanguageManager.CurrentLanguage.books.books_violenceFirst1 + "</b>\n<b>" + LanguageManager.CurrentLanguage.books.books_violenceFirst2 + "</b>\n\n" + LanguageManager.CurrentLanguage.books.books_violenceFirst3 + "\n\n" + LanguageManager.CurrentLanguage.books.books_violenceFirst4 + "\n\n\n" + LanguageManager.CurrentLanguage.books.books_violenceFirst5 + "\n\n" + LanguageManager.CurrentLanguage.books.books_violenceFirst6 + "\n\n" + LanguageManager.CurrentLanguage.books.books_violenceFirst7 + "\n\n" + LanguageManager.CurrentLanguage.books.books_violenceFirst8 + "\n\n<color=red>" + LanguageManager.CurrentLanguage.books.books_violenceFirst9 + "</color>"; } return LanguageManager.CurrentLanguage.books.books_violenceFirst_Slate1 + "\n\n" + LanguageManager.CurrentLanguage.books.books_violenceFirst_Slate2 + "\n\n" + LanguageManager.CurrentLanguage.books.books_violenceFirst_Slate3 + "\n\n" + LanguageManager.CurrentLanguage.books.books_violenceFirst_Slate4; case "Level 7-2": if (originalText.Contains("> < < > < < > > < > > < >")) { return LanguageManager.CurrentLanguage.books.books_violenceSecond1 + "\n\n" + LanguageManager.CurrentLanguage.books.books_violenceSecond2 + "\n\n> < < > < < > > < > > < >"; } return "<i>" + LanguageManager.CurrentLanguage.books.books_violenceSecondAmbush1 + "\n\n\n\n" + LanguageManager.CurrentLanguage.books.books_violenceSecondAmbush2 + "\n\n\n\n\n" + LanguageManager.CurrentLanguage.books.books_violenceSecondAmbush1 + "\n\n\n\n" + LanguageManager.CurrentLanguage.books.books_violenceSecondAmbush3 + "\n\n\n\n\n" + LanguageManager.CurrentLanguage.books.books_violenceSecondAmbush1 + "\n\n\n\n" + LanguageManager.CurrentLanguage.books.books_violenceSecondAmbush4 + "</i>"; case "Level 7-4": return "<size=20><color=red>" + LanguageManager.CurrentLanguage.books.books_violenceFourth1 + "</color></size>\n\n\n<size=20><color=red>" + LanguageManager.CurrentLanguage.books.books_violenceFourth2 + "</color></size>\n\n\n<size=20><color=red>" + LanguageManager.CurrentLanguage.books.books_violenceFourth3 + "</color></size>\n\n\n<size=20><color=red>" + LanguageManager.CurrentLanguage.books.books_violenceFourth4 + "</color></size>\n\n<size=20>" + LanguageManager.CurrentLanguage.books.books_violenceFourth5 + "</size>"; case "Level 7-S": return LanguageManager.CurrentLanguage.books.books_violenceSecret_Slate1 + "\n\n" + LanguageManager.CurrentLanguage.books.books_violenceSecret_Slate2; case "Level 8-2": if (originalText.Contains("Layer 8: Fraud has become exactly what I had dreamed it would be")) { return LanguageManager.CurrentLanguage.books.books_fraudSecond1_1 + "\n\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond1_2 + "\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond1_3 + "\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond1_4 + "\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond1_5 + "\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond1_6 + "\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond1_7 + "\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond1_8 + "\n\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond1_9 + "\n\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond1_10; } if (originalText.Contains("TEXT SCANNED - EARTHMOVER MENTIONS DETECTED:")) { return "<b>" + LanguageManager.CurrentLanguage.books.books_fraudSecond2_1 + "</b>\n\n<b>" + LanguageManager.CurrentLanguage.books.books_fraudSecond2_2 + "</b>\n\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond2_3 + "\n\n<b>" + LanguageManager.CurrentLanguage.books.books_fraudSecond2_4 + "</b>\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond2_5 + "\n\n<b>" + LanguageManager.CurrentLanguage.books.books_fraudSecond2_6 + "</b>\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond2_7 + "\n\n<b>" + LanguageManager.CurrentLanguage.books.books_fraudSecond2_8 + "</b>"; } if (originalText.Contains("I SEE ICY ULYSSES FROZEN")) { return "<size=23><color=red>" + LanguageManager.CurrentLanguage.books.books_fraudSecond3_1 + "\n\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond3_2 + "\n\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond3_3 + "\n\n" + LanguageManager.CurrentLanguage.books.books_fraudSecond3_4 + "\n<nobr>" + LanguageManager.CurrentLanguage.books.books_fraudSecond3_5 + "<br>" + LanguageManager.CurrentLanguage.books.books_fraudSecond3_6 + "<br>" + LanguageManager.CurrentLanguage.books.books_fraudSecond3_7 + "</nobr></color></size>\n\n\n<size=20>" + LanguageManager.CurrentLanguage.books.books_fraudSecond3_8 + "</size>"; } return originalText; case "Level 8-3": if (originalText.Contains("TEXT SCANNED - ANOMALY DETECTED:")) { return "<b>" + LanguageManager.CurrentLanguage.books.books_fraudThird1_1 + "</b>\n\n<b>" + LanguageManager.CurrentLanguage.books.books_fraudThird1_2 + "</b>\n\n" + LanguageManager.CurrentLanguage.books.books_fraudThird1_3 + "\n\n<b>" + LanguageManager.CurrentLanguage.books.books_fraudThird1_4 + "</b>\n" + LanguageManager.CurrentLanguage.books.books_fraudThird1_5 + "\n\n<b>" + LanguageManager.CurrentLanguage.books.books_fraudThird1_6 + "</b>"; } if (originalText.Contains("ATAVISTIC ANTAGONIST")) { return "<size=23><color=red>" + LanguageManager.CurrentLanguage.books.books_fraudThird2_1 + "\n\n" + LanguageManager.CurrentLanguage.books.books_fraudThird2_2 + "\n\n" + LanguageManager.CurrentLanguage.books.books_fraudThird2_3 + "\n\n" + LanguageManager.CurrentLanguage.books.books_fraudThird2_4 + "\n\n" + LanguageManager.CurrentLanguage.books.books_fraudThird2_5 + "\n" + LanguageManager.CurrentLanguage.books.books_fraudThird2_6 + "</color></size>\n\n\n<size=20>" + LanguageManager.CurrentLanguage.books.books_fraudThird2_7 + "</size>"; } return originalText; default: Logging.Warn("Unknown book in " + currentSceneName + "!"); return originalText; } } } public static class BossStrings { public static string GetBossName(string originalBossName) { Logging.Warn(originalBossName); return EnemyBios.GetName(originalBossName); } } public static class Cheats { public static void PatchCheatConsentPanel(ref GameObject canvasObj) { //IL_00fb: Unknown result type (might be due to invalid IL or missing references) GameObject gameObjectChild = CommonFunctions.GetGameObjectChild(canvasObj, "Cheat Menu"); GameObject gameObjectChild2 = CommonFunctions.GetGameObjectChild(gameObjectChild, "Cheats Consent"); GameObject gameObjectChild3 = CommonFunctions.GetGameObjectChild(gameObjectChild2, "Text"); ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(gameObjectChild3)).text = LanguageManager.CurrentLanguage.cheats.cheats_disclaimer1 + "\n\n" + LanguageManager.CurrentLanguage.cheats.cheats_disclaimer2; TextMeshProUGUI textMeshProUGUI = CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild2, "Yes"), "Text")); ((TMP_Text)textMeshProUGUI).text = LanguageManager.CurrentLanguage.cheats.cheats_disclaimerYes; ((TMP_Text)textMeshProUGUI).fontSize = 22f; ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild2, "No"), "Text"))).text = LanguageManager.CurrentLanguage.cheats.cheats_disclaimerNo; ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(gameObjectChild, "Cheats Manager"), "Title"))).text = LanguageManager.CurrentLanguage.cheats.cheats_panelTitle; ((Behaviour)gameObjectChild3.GetComponents(typeof(Component))[2]).enabled = false; GameObject gameObjectChild4 = CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(canvasObj, "Cheat Menu"), "Cheats Overlay"), "Cheats Enabled"); ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(gameObjectChild4, "Title"))).text = LanguageManager.CurrentLanguage.cheats.cheats_cheatsEnabled; GameObject gameObjectChild5 = CommonFunctions.GetGameObjectChild(gameObjectChild4, "Details Tip"); Component[] components = gameObjectChild5.GetComponents(typeof(Component)); foreach (Component val in components) { if (((object)val).GetType().Name == "TextOverride") { Object.Destroy((Object)(object)val); } } ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(gameObjectChild5)).text = LanguageManager.CurrentLanguage.cheats.cheats_cheatsOpenButtons; ((TMP_Text)CommonFunctions.GetTextMeshProUGUI(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(CommonFunctions.GetGameObjectChild(canvasObj, "Cheat Menu"), "Cheats Teleport"), "Title"))).text = LanguageManager.CurrentLanguage.cheats.cheats_teleportMenu; } public static string GetCheatStatus(string cheatStatus) { if (cheatStatus == null) { return null; } try { return cheatStatus switch { "STAY ACTIVE" => LanguageManager.CurrentLanguage.cheats.cheats_stayActive, "DISABLE ON RELOAD" => LanguageManager.CurrentLanguage.cheats.cheats_disableOnReload, "SAVE" => LanguageManager.CurrentLanguage.cheats.cheats_dupesSave, "NEW SAVE" => LanguageManager.CurrentLanguage.cheats.cheats_dupesNewSave, "LOAD LATEST SAVE" => LanguageManager.CurrentLanguage.cheats.cheats_loadLatestSave, "EQUIP" => LanguageManager.CurrentLanguage.cheats.cheats_equip, "REMOVE" => LanguageManager.CurrentLanguage.cheats.cheats_remove, "OPEN" => LanguageManager.CurrentLanguage.cheats.cheats_open, "KILL ALL" => LanguageManager.CurrentLanguage.cheats.cheats_killAll, "STATIC" => LanguageManager.CurrentLanguage.cheats.cheats_static, "DYNAMIC" => LanguageManager.CurrentLanguage.cheats.cheats_dynamic, "REBUILD" => LanguageManager.CurrentLanguage.cheats.cheats_rebuild, "REBUILDING..." => LanguageManager.CurrentLanguage.cheats.cheats_rebuilding, _ => null, }; } catch (Exception e) { CommonFunctions.HandleError(e, cheatStatus); return ""; } } public static string GetCheatName(string cheatIdentifier) { try { return cheatIdentifier switch { "ultrakill.keep-enabled" => LanguageManager.CurrentLanguage.cheats.cheats_keepEnabled, "ultrakill.spawner-arm" => LanguageManager.CurrentLanguage.cheats.cheats_spawnerArm, "ultrakill.teleport-menu" => LanguageManager.CurrentLanguage.cheats.cheats_teleportMenu, "ultrakill.full-bright" => LanguageManager.CurrentLanguage.cheats.cheats_fullBright, "ultrakill.invincibility" => LanguageManager.CurrentLanguage.cheats.cheats_invincibility, "ultrakill.noclip" => LanguageManager.CurrentLanguage.cheats.cheats_noclip, "ultrakill.flight" => LanguageManager.CurrentLanguage.cheats.cheats_flight, "ultrakill.infinite-wall-jumps" => LanguageManager.CurrentLanguage.cheats.cheats_infiniteWallJumps, "ultrakill.no-weapon-cooldown" => LanguageManager.CurrentLanguage.cheats.cheats_noWeaponCooldown, "ultrakill.infinite-power-ups" => LanguageManager.CurrentLanguage.cheats.cheats_infinitePowerUps, "ultrakill.blind-enemies" => LanguageManager.CurrentLanguage.cheats.cheats_blindEnemies, "ultrakill.enemy-hate-enemy" => LanguageManager.CurrentLanguage.cheats.cheats_enemiesHateEnemies, "ultrakill.enemy-ignore-player" => LanguageManager.CurrentLanguage.cheats.cheats_enemiesIgnorePlayer, "ultrakill.disable-enemy-spawns" => LanguageManager.CurrentLanguage.cheats.cheats_disableEnemySpawns, "ultrakill.invincible-enemies" => LanguageManager.CurrentLanguage.cheats.cheats_invincibleEnemies, "ultrakill.kill-all-enemies" => LanguageManager.CurrentLanguage.cheats.cheats_killAllEnemies, "ultrakill.sandbox.quick-save" => LanguageManager.CurrentLanguage.cheats.cheats_quickSave, "ultrakill.sandbox.quick-load" => LanguageManager.CurrentLanguage.cheats.cheats_quickLoad, "ultrakill.sandbox.save-menu" => LanguageManager.CurrentLanguage.cheats.cheats_saveMenu, "ultrakill.sandbox.clear" => LanguageManager.CurrentLanguage.cheats.cheats_clear, "ultrakill.sandbox.rebuild-nav" => LanguageManager.CurrentLanguage.cheats.cheats_rebuildNav, "ultrakill.sandbox.snapping" => LanguageManager.CurrentLanguage.cheats.cheats_snapping, "ultrakill.sandbox.physics" => LanguageManager.CurrentLanguage.cheats.cheats_physics, "ultrakill.clash-mode" => LanguageManager.CurrentLanguage.cheats.cheats_crashMode, "ultrakill.hide-weapons" => LanguageManager.CurrentLanguage.cheats.cheats_hideWeapons, "ultrakill.hide-ui" => LanguageManager.CurrentLanguage.cheats.cheats_hideUi, "ultrakill.ghost-drone-mode" => LanguageManager.CurrentLanguage.cheats.cheats_ghostDroneMode, _ => cheatIdentifier, }; } catch (Exception e) { CommonFunctions.HandleError(e, cheatIdentifier); return ""; } } } public static class CommonFunctions { [CompilerGenerated] private sealed class <WaitforSeconds>d__7 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public float seconds; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <WaitforSeconds>d__7(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSeconds(seconds); <>1__state = 1; return true; case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private static readonly Dictionary<string, string> LocalizedInputs = new Dictionary<string, string> { { "Space", LanguageManager.CurrentLanguage.inputStrings.input_space }, { "Enter", LanguageManager.CurrentLanguage.inputStrings.input_enter }, { "Tab", LanguageManager.CurrentLanguage.inputStrings.input_tab }, { "Esc", LanguageManager.CurrentLanguage.inputStrings.input_esc }, { "Left Shift", LanguageManager.CurrentLanguage.inputStrings.input_leftShift }, { "Right Shift", LanguageManager.CurrentLanguage.inputStrings.input_rightShift }, { "Left Control", LanguageManager.CurrentLanguage.inputStrings.input_leftControl }, { "Right Control", LanguageManager.CurrentLanguage.inputStrings.input_rightControl }, { "Left Alt", LanguageManager.CurrentLanguage.inputStrings.input_leftAlt }, { "Right Alt", LanguageManager.CurrentLanguage.inputStrings.input_rightAlt }, { "LMB", LanguageManager.CurrentLanguage.inputStrings.input_LMB }, { "RMB", LanguageManager.CurrentLanguage.inputStrings.input_RMB }, { "MMB", LanguageManager.CurrentLanguage.inputStrings.input_MMB }, { "Up Arrow", LanguageManager.CurrentLanguage.inputStrings.input_arrowUp }, { "Down Arrow", LanguageManager.CurrentLanguage.inputStrings.input_arrowDown }, { "Left Arrow", LanguageManager.CurrentLanguage.inputStrings.input_arrowLeft }, { "Right Arrow", LanguageManager.CurrentLanguage.inputStrings.input_arrowRight }, { "Forward", LanguageManager.CurrentLanguage.inputStrings.input_forward }, { "Back", LanguageManager.CurrentLanguage.inputStrings.input_back }, { "NO BINDING", LanguageManager.CurrentLanguage.inputStrings.input_noBinding } }; public static ColorBlock UkButtonColors; public static string PreviousHudMessage; public static string GetTranslation(string translation, string original) { if (string.IsNullOrEmpty(translation)) { return original; } return translation; } public static string MakeVertical(string input) { if (string.IsNullOrEmpty(input)) { return input; } StringBuilder stringBuilder = new StringBuilder(input.Length * 2); for (int i = 0; i < input.Length; i++) { stringBuilder.Append(input[i]); if (i < input.Length - 1) { stringBuilder.Append('\n'); } } return stringBuilder.ToString(); } public static string GetLocalizedInput(string input) { if (input.Length == 1 && char.IsLetter(input[0])) { return input; } Logging.Message("[GetLocalizedInput] Input in Message = " + input); if (LocalizedInputs.TryGetValue(input, out var value)) { return value; } return input; } public static bool isUsingEnglish() { return LanguageManager.CurrentLanguage.metadata.langDisplayName == "English"; } [IteratorStateMachine(typeof(<WaitforSeconds>d__7))] public static IEnumerator WaitforSeconds(float seconds) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <WaitforSeconds>d__7(0) { seconds = seconds }; } public static void HandleError(Exception e, string missingID = "") { Logging.Error(e.ToString()); } public static GameObject GetInactiveRootObject(string objectName) { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) Dictionary<string, GameObject> dictionary = new Dictionary<string, GameObject>(); float num = 0f; if (Time.time - num < 1f && dictionary.TryGetValue(objectName, out var value)) { if ((Object)(object)value != (Object)null) { return value; } dictionary.Remove(objectName); } if (Time.time - num >= 1f) { dictionary.Clear(); num = Time.time; } Scene activeScene = SceneManager.GetActiveScene(); GameObject[] rootGameObjects = ((Scene)(ref activeScene)).GetRootGameObjects(); foreach (GameObject val in rootGameObjects) { if (((Object)val).name == objectName) { dictionary[objectName] = val; return val; } } dictionary[objectName] = null; return null; } public static string GetCurrentSceneName() { return SceneHelper.CurrentScene; } public static GameObject CreateButton(string buttonText = "Text", string buttonName = "Button") { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Expected O, but got Unknown //IL_00fb:
BepInEx/plugins/UniversalReplacer.dll
Decompiled a month agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using UnityEngine; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("UniversalReplacer")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("UniversalReplacer")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("97fbeecd-180d-4c38-89fb-1cb6096934fd")] [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 UniversalReplacer; public class ConfigManager { private readonly string _path; private FileSystemWatcher _watcher; public Action OnConfigReloaded; public List<TargetRule> Rules { get; private set; } = new List<TargetRule>(); public Dictionary<string, List<TargetRule>> RulesByRoot { get; } = new Dictionary<string, List<TargetRule>>(StringComparer.OrdinalIgnoreCase); public List<KeyValuePair<string, List<TargetRule>>> RulesByRootContains { get; } = new List<KeyValuePair<string, List<TargetRule>>>(); public List<TargetRule> RulesByPathContains { get; } = new List<TargetRule>(); public ConfigManager(string path) { _path = path; ReloadConfig(trigger: false); SetupWatcher(); } public void ReloadConfig(bool trigger) { //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Invalid comparison between Unknown and I4 bool flag = false; try { if (!File.Exists(_path)) { var anon = new { TargetRules = new List<TargetRule>() }; File.WriteAllText(_path, JsonConvert.SerializeObject((object)anon, (Formatting)1)); } string text = File.ReadAllText(_path); JObject val = JObject.Parse(text); JToken val2 = val["TargetRules"] ?? val["targetRules"]; Rules = new List<TargetRule>(); JArray val3 = (JArray)(object)((val2 is JArray) ? val2 : null); if (val3 != null) { foreach (JToken item in val3) { TargetRule targetRule = new TargetRule(); targetRule.Root = ((object)item[(object)"Root"])?.ToString() ?? ""; targetRule.RootContains = ((object)item[(object)"RootContains"])?.ToString() ?? ""; targetRule.Path = ((object)item[(object)"Path"])?.ToString() ?? ""; targetRule.PathContains = ((object)item[(object)"PathContains"])?.ToString() ?? ""; targetRule.ComponentType = ((object)item[(object)"ComponentType"])?.ToString() ?? ""; targetRule.PropertyName = ((object)item[(object)"PropertyName"])?.ToString() ?? ""; JToken val4 = item[(object)"MaterialIndex"]; if (val4 != null && (int)val4.Type != 10) { try { targetRule.MaterialIndex = val4.ToObject<int>(); } catch { targetRule.MaterialIndex = -1; } } targetRule.Value = item[(object)"Value"]; Rules.Add(targetRule); } } RulesByRoot.Clear(); RulesByRootContains.Clear(); RulesByPathContains.Clear(); Dictionary<string, List<TargetRule>> dictionary = new Dictionary<string, List<TargetRule>>(StringComparer.OrdinalIgnoreCase); foreach (TargetRule rule in Rules) { rule.Init(); if (!string.IsNullOrEmpty(rule.Root)) { if (!RulesByRoot.ContainsKey(rule.Root)) { RulesByRoot[rule.Root] = new List<TargetRule>(); } RulesByRoot[rule.Root].Add(rule); } else if (!string.IsNullOrEmpty(rule.RootContains)) { if (!dictionary.ContainsKey(rule.RootContains)) { dictionary[rule.RootContains] = new List<TargetRule>(); } dictionary[rule.RootContains].Add(rule); } else if (!string.IsNullOrEmpty(rule.PathContains)) { RulesByPathContains.Add(rule); } } foreach (KeyValuePair<string, List<TargetRule>> item2 in dictionary) { RulesByRootContains.Add(new KeyValuePair<string, List<TargetRule>>(item2.Key, item2.Value)); } flag = true; } catch (Exception ex) { Plugin.Log.LogError((object)("Erro ao ler o ficheiro JSON: " + ex.Message)); } if (flag && trigger) { try { OnConfigReloaded?.Invoke(); } catch (Exception ex2) { Plugin.Log.LogDebug((object)("Aviso durante a aplicação das regras na cena: " + ex2.Message)); } } } private void SetupWatcher() { string directoryName = Path.GetDirectoryName(_path); if (!Directory.Exists(directoryName)) { return; } _watcher = new FileSystemWatcher(directoryName, Path.GetFileName(_path)) { EnableRaisingEvents = true }; _watcher.Changed += delegate { Plugin.EnqueueAction(delegate { ReloadConfig(trigger: true); }); }; } public void EnableWatcher(bool en) { if (_watcher != null) { _watcher.EnableRaisingEvents = en; } } } public class ConfigData { public List<TargetRule> TargetRules = new List<TargetRule>(); } public class TargetRule { public string Root; public string RootContains; public string Path; public string PathContains; public string ComponentType; public string PropertyName; public int MaterialIndex = -1; public JToken Value; [JsonIgnore] public string[] RootContainsParts; [JsonIgnore] public string[] PathParts; [JsonIgnore] public bool IsDeepSearch; [JsonIgnore] public string CleanDeepTarget; [JsonIgnore] public string NormalizedPropName; [JsonIgnore] public bool IsColorRule; public void Init() { if (!string.IsNullOrEmpty(RootContains)) { RootContainsParts = RootContains.Split(new char[1] { '/' }, StringSplitOptions.RemoveEmptyEntries); } string text = ((!string.IsNullOrEmpty(Path)) ? Path : PathContains); if (!string.IsNullOrEmpty(text)) { if (text.Contains("//")) { IsDeepSearch = true; string[] array = text.Split(new string[1] { "//" }, StringSplitOptions.None); CleanDeepTarget = array[1].TrimEnd('*', '/'); PathParts = array[0].Split(new char[1] { '/' }, StringSplitOptions.RemoveEmptyEntries); } else { PathParts = text.TrimEnd('*', '/').Split(new char[1] { '/' }, StringSplitOptions.RemoveEmptyEntries); } } NormalizedPropName = (PropertyName ?? "").ToLower().Replace("_", ""); IsColorRule = NormalizedPropName.Contains("color") || NormalizedPropName.Contains("tint"); } } public static class InstantProcessor { public static void ApplyInstant(GameObject root, List<TargetRule> rules) { if ((Object)(object)root == (Object)null || rules == null || rules.Count == 0) { return; } Transform[] componentsInChildren = root.GetComponentsInChildren<Transform>(true); Transform[] array = componentsInChildren; foreach (Transform val in array) { GameObject gameObject = ((Component)val).gameObject; foreach (TargetRule rule in rules) { if (IsHierarchyMatch(val, rule)) { ApplyRuleToGameObject(gameObject, rule); } } } } private static bool IsHierarchyMatch(Transform t, TargetRule rule) { if (!string.IsNullOrEmpty(rule.Root) && ((Object)t.root).name != rule.Root) { return false; } if (!string.IsNullOrEmpty(rule.RootContains)) { Transform val = t; bool flag = false; while ((Object)(object)val != (Object)null) { if (((Object)val).name.IndexOf(rule.RootContains, StringComparison.OrdinalIgnoreCase) >= 0) { flag = true; break; } val = val.parent; } if (!flag) { return false; } } if (!string.IsNullOrEmpty(rule.Path) && ((Object)t).name != rule.Path) { return false; } if (!string.IsNullOrEmpty(rule.PathContains)) { string value = rule.PathContains.Replace("//", ""); if (((Object)t).name.IndexOf(value, StringComparison.OrdinalIgnoreCase) < 0) { return false; } } return true; } private static void ApplyRuleToGameObject(GameObject go, TargetRule rule) { bool flag = !string.IsNullOrEmpty(rule.ComponentType); Renderer val = default(Renderer); if (go.TryGetComponent<Renderer>(ref val) && (!flag || ((object)val).GetType().Name.IndexOf(rule.ComponentType, StringComparison.OrdinalIgnoreCase) >= 0)) { ApplyToRenderer(val, rule); } Light val2 = default(Light); if (go.TryGetComponent<Light>(ref val2) && (!flag || ((object)val2).GetType().Name.IndexOf(rule.ComponentType, StringComparison.OrdinalIgnoreCase) >= 0)) { ApplyToLight(val2, rule); } ParticleSystem val3 = default(ParticleSystem); if (go.TryGetComponent<ParticleSystem>(ref val3) && (!flag || ((object)val3).GetType().Name.IndexOf(rule.ComponentType, StringComparison.OrdinalIgnoreCase) >= 0)) { ApplyToParticle(val3, rule); } AudioSource val4 = default(AudioSource); if (go.TryGetComponent<AudioSource>(ref val4) && (!flag || ((object)val4).GetType().Name.IndexOf(rule.ComponentType, StringComparison.OrdinalIgnoreCase) >= 0)) { ApplyToAudio(val4, rule); } } private static void ApplyToRenderer(Renderer r, TargetRule rule) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Expected O, but got Unknown //IL_0055: 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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_0102: 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_0129: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0200: 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_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_029b: Unknown result type (might be due to invalid IL or missing references) object obj = ParseValue(rule.Value); if (obj == null) { return; } if (rule.IsColorRule && obj is Color val) { Gradient val2 = new Gradient(); val2.SetKeys((GradientColorKey[])(object)new GradientColorKey[2] { new GradientColorKey(val, 0f), new GradientColorKey(val, 1f) }, (GradientAlphaKey[])(object)new GradientAlphaKey[2] { new GradientAlphaKey(val.a, 0f), new GradientAlphaKey(val.a, 1f) }); TrailRenderer val3 = (TrailRenderer)(object)((r is TrailRenderer) ? r : null); if (val3 != null) { val3.colorGradient = val2; val3.startColor = val; val3.endColor = val; } LineRenderer val4 = (LineRenderer)(object)((r is LineRenderer) ? r : null); if (val4 != null) { val4.colorGradient = val2; val4.startColor = val; val4.endColor = val; } SpriteRenderer val5 = (SpriteRenderer)(object)((r is SpriteRenderer) ? r : null); if (val5 != null) { val5.color = val; } } else if (rule.NormalizedPropName.Contains("width") || rule.NormalizedPropName.Contains("multiplier")) { float widthMultiplier = Convert.ToSingle(obj); TrailRenderer val6 = (TrailRenderer)(object)((r is TrailRenderer) ? r : null); if (val6 != null) { val6.widthMultiplier = widthMultiplier; } LineRenderer val7 = (LineRenderer)(object)((r is LineRenderer) ? r : null); if (val7 != null) { val7.widthMultiplier = widthMultiplier; } } Material[] materials = r.materials; bool flag = false; for (int i = 0; i < materials.Length; i++) { if (rule.MaterialIndex >= 0 && rule.MaterialIndex != i) { continue; } Material val8 = materials[i]; if ((Object)(object)val8 == (Object)null) { continue; } if (obj is Color val9) { if (val8.HasProperty("_Color")) { val8.SetColor("_Color", val9); flag = true; } if (val8.HasProperty("_TintColor")) { val8.SetColor("_TintColor", val9); flag = true; } if (val8.HasProperty("_EmissionColor")) { val8.SetColor("_EmissionColor", val9); flag = true; } if (val8.HasProperty(rule.PropertyName)) { val8.SetColor(rule.PropertyName, val9); flag = true; } continue; } Texture2D val10 = (Texture2D)((obj is Texture2D) ? obj : null); if (val10 != null) { if (val8.HasProperty("_MainTex")) { val8.SetTexture("_MainTex", (Texture)(object)val10); } val8.mainTexture = (Texture)(object)val10; flag = true; } } if (flag) { r.materials = materials; } } private static void ApplyToLight(Light l, TargetRule rule) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) object obj = ParseValue(rule.Value); if (rule.IsColorRule && obj is Color color) { l.color = color; } if (rule.NormalizedPropName == "intensity") { l.intensity = Convert.ToSingle(obj); } } private static void ApplyToParticle(ParticleSystem ps, TargetRule rule) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003c: 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_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_005f: 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) if (rule.IsColorRule && ParseValue(rule.Value) is Color val) { MainModule main = ps.main; ((MainModule)(ref main)).startColor = new MinMaxGradient(val); TrailModule trails = ps.trails; if (((TrailModule)(ref trails)).enabled) { ((TrailModule)(ref trails)).colorOverLifetime = new MinMaxGradient(val); } } ParticleSystemRenderer r = default(ParticleSystemRenderer); if (((Component)ps).TryGetComponent<ParticleSystemRenderer>(ref r)) { ApplyToRenderer((Renderer)(object)r, rule); } } private static void ApplyToAudio(AudioSource a, TargetRule rule) { string normalizedPropName = rule.NormalizedPropName; object obj = ParseValue(rule.Value); if (normalizedPropName == "clip" && obj is string name) { AudioClip audio = ResourceManager.GetAudio(name); if ((Object)(object)audio != (Object)null) { a.clip = audio; } } else if (normalizedPropName == "volume") { a.volume = Convert.ToSingle(obj); } else if (normalizedPropName == "pitch") { a.pitch = Convert.ToSingle(obj); } } private static object ParseValue(object raw) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Invalid comparison between Unknown and I4 //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Invalid comparison between Unknown and I4 //IL_008d: Unknown result type (might be due to invalid IL or missing references) JToken val = (JToken)((raw is JToken) ? raw : null); if (val != null) { if ((int)val.Type == 1) { JToken obj = val[(object)"r"]; float num = ((obj != null) ? Extensions.Value<float>((IEnumerable<JToken>)obj) : 0f); JToken obj2 = val[(object)"g"]; float num2 = ((obj2 != null) ? Extensions.Value<float>((IEnumerable<JToken>)obj2) : 0f); JToken obj3 = val[(object)"b"]; float num3 = ((obj3 != null) ? Extensions.Value<float>((IEnumerable<JToken>)obj3) : 0f); JToken obj4 = val[(object)"a"]; return (object)new Color(num, num2, num3, (obj4 != null) ? Extensions.Value<float>((IEnumerable<JToken>)obj4) : 1f); } if ((int)val.Type == 8) { string text = ((object)val).ToString(); string text2 = text.ToLower(); if (text2.EndsWith(".png") || text2.EndsWith(".jpg")) { return ResourceManager.GetTexture(text); } return text; } } return raw; } } public static class HarmonyPatcher { [HarmonyPostfix] [HarmonyPatch(typeof(Object), "Instantiate", new Type[] { typeof(Object) })] private static void PostInstantiate1(Object __result) { if ((Object)(object)Plugin.Instance != (Object)null && !Plugin.Instance.IsBursting) { GameObject val = (GameObject)(object)((__result is GameObject) ? __result : null); if (val != null) { Plugin.Instance.HandleNewObjectInstant(val); } } } [HarmonyPostfix] [HarmonyPatch(typeof(Object), "Instantiate", new Type[] { typeof(Object), typeof(Transform) })] private static void PostInstantiate2(Object __result) { if ((Object)(object)Plugin.Instance != (Object)null && !Plugin.Instance.IsBursting) { GameObject val = (GameObject)(object)((__result is GameObject) ? __result : null); if (val != null) { Plugin.Instance.HandleNewObjectInstant(val); } } } [HarmonyPostfix] [HarmonyPatch(typeof(Object), "Instantiate", new Type[] { typeof(Object), typeof(Transform), typeof(bool) })] private static void PostInstantiate3(Object __result) { if ((Object)(object)Plugin.Instance != (Object)null && !Plugin.Instance.IsBursting) { GameObject val = (GameObject)(object)((__result is GameObject) ? __result : null); if (val != null) { Plugin.Instance.HandleNewObjectInstant(val); } } } [HarmonyPostfix] [HarmonyPatch(typeof(Object), "Instantiate", new Type[] { typeof(Object), typeof(Vector3), typeof(Quaternion) })] private static void PostInstantiate4(Object __result) { if ((Object)(object)Plugin.Instance != (Object)null && !Plugin.Instance.IsBursting) { GameObject val = (GameObject)(object)((__result is GameObject) ? __result : null); if (val != null) { Plugin.Instance.HandleNewObjectInstant(val); } } } [HarmonyPostfix] [HarmonyPatch(typeof(Object), "Instantiate", new Type[] { typeof(Object), typeof(Vector3), typeof(Quaternion), typeof(Transform) })] private static void PostInstantiate5(Object __result) { if ((Object)(object)Plugin.Instance != (Object)null && !Plugin.Instance.IsBursting) { GameObject val = (GameObject)(object)((__result is GameObject) ? __result : null); if (val != null) { Plugin.Instance.HandleNewObjectInstant(val); } } } [HarmonyPostfix] [HarmonyPatch(typeof(GameObject), "SetActive")] private static void PostSetActive(GameObject __instance, bool value) { if (value && (Object)(object)Plugin.Instance != (Object)null && !Plugin.Instance.IsBursting && (Object)(object)__instance != (Object)null) { Plugin.Instance.HandleNewObjectInstant(__instance); } } } [BepInPlugin("com.thehalfbunny.universalreplacer", "Universal Replacer", "2.3.0")] public class Plugin : BaseUnityPlugin { [CompilerGenerated] private sealed class <EnforcerLoop>d__22 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Plugin <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <EnforcerLoop>d__22(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; break; case 1: <>1__state = -1; if (!<>4__this.IsBursting) { <>4__this._processor?.EnforceActiveRules(); } break; } <>2__current = (object)new WaitForSeconds(0.3f); <>1__state = 1; return true; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private Harmony _harmony; private ConfigManager _config; private RuleProcessor _processor; private static readonly Queue<Action> _mainThreadQueue = new Queue<Action>(); private readonly Queue<GameObject> _scanQueue = new Queue<GameObject>(); private readonly HashSet<GameObject> _queuedSet = new HashSet<GameObject>(); public bool IsBursting = false; private float _burstCooldown = 0f; internal static ManualLogSource Log { get; private set; } public static Plugin Instance { get; private set; } private void Awake() { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown Log = ((BaseUnityPlugin)this).Logger; Instance = this; try { ResourceManager.Init(); _config = new ConfigManager(Path.Combine(Paths.ConfigPath, "ColorizedInk.json")); _processor = new RuleProcessor(_config); _harmony = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); _harmony.PatchAll(typeof(HarmonyPatcher)); Log.LogInfo((object)"Universal Replacer loaded! (former ColorizedInk)"); ((MonoBehaviour)this).StartCoroutine(ResourceManager.PreloadAudioClips()); } catch (Exception ex) { Log.LogError((object)("Erro Awake: " + ex.Message)); } } private void OnEnable() { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) SceneManager.sceneLoaded += OnSceneLoaded; if (_config != null) { _config.EnableWatcher(en: true); ConfigManager config = _config; config.OnConfigReloaded = (Action)Delegate.Combine(config.OnConfigReloaded, new Action(ReapplyAll)); } ((MonoBehaviour)this).StartCoroutine(EnforcerLoop()); Scene activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).isLoaded) { ReapplyAll(); } } private void Update() { lock (_mainThreadQueue) { while (_mainThreadQueue.Count > 0) { _mainThreadQueue.Dequeue()?.Invoke(); } } if (IsBursting) { _burstCooldown -= Time.deltaTime; if (_burstCooldown <= 0f) { IsBursting = false; _processor?.ScanFullScene(); } return; } if (_scanQueue.Count > 0) { Stopwatch stopwatch = Stopwatch.StartNew(); while (_scanQueue.Count > 0 && stopwatch.Elapsed.TotalMilliseconds < 5.0) { GameObject val = _scanQueue.Dequeue(); _queuedSet.Remove(val); if ((Object)(object)val != (Object)null) { _processor?.ProcessObject(val); } } } if (Input.GetKeyDown((KeyCode)287)) { _config?.ReloadConfig(trigger: true); } } public void HandleNewObjectInstant(GameObject go) { if (!((Object)(object)go == (Object)null) && _config != null && !IsBursting) { InstantProcessor.ApplyInstant(go, _config.Rules); if (_queuedSet.Add(go)) { _scanQueue.Enqueue(go); } } } private void ReapplyAll() { _processor?.RevertAll(); ResourceManager.ClearCaches(); _scanQueue.Clear(); _queuedSet.Clear(); IsBursting = true; _burstCooldown = 0.5f; _processor?.ScanFullScene(); } private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { ReapplyAll(); } [IteratorStateMachine(typeof(<EnforcerLoop>d__22))] private IEnumerator EnforcerLoop() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <EnforcerLoop>d__22(0) { <>4__this = this }; } public static void EnqueueAction(Action a) { lock (_mainThreadQueue) { _mainThreadQueue.Enqueue(a); } } } public static class ResourceManager { [CompilerGenerated] private sealed class <PreloadAudioClips>d__5 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; private string <audioDir>5__1; private string[] <>s__2; private int <>s__3; private string <file>5__4; private string <ext>5__5; private WWW <www>5__6; private AudioClip <clip>5__7; private string <fileName>5__8; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <PreloadAudioClips>d__5(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { int num = <>1__state; if (num == -3 || num == 1) { try { } finally { <>m__Finally1(); } } <audioDir>5__1 = null; <>s__2 = null; <file>5__4 = null; <ext>5__5 = null; <www>5__6 = null; <clip>5__7 = null; <fileName>5__8 = null; <>1__state = -2; } private bool MoveNext() { //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Expected O, but got Unknown try { int num = <>1__state; if (num != 0) { if (num != 1) { return false; } <>1__state = -3; if (string.IsNullOrEmpty(<www>5__6.error)) { <clip>5__7 = <www>5__6.GetAudioClip(false, false); if ((Object)(object)<clip>5__7 != (Object)null) { <fileName>5__8 = Path.GetFileName(<file>5__4); ((Object)<clip>5__7).name = <fileName>5__8; _audios[<fileName>5__8] = <clip>5__7; <fileName>5__8 = null; } <clip>5__7 = null; } <>m__Finally1(); <www>5__6 = null; goto IL_01bf; } <>1__state = -1; <audioDir>5__1 = Path.Combine(_basePath, "Audio"); if (!Directory.Exists(<audioDir>5__1)) { Directory.CreateDirectory(<audioDir>5__1); } <>s__2 = Directory.GetFiles(<audioDir>5__1); <>s__3 = 0; goto IL_01dc; IL_01bf: <ext>5__5 = null; <file>5__4 = null; <>s__3++; goto IL_01dc; IL_01dc: if (<>s__3 < <>s__2.Length) { <file>5__4 = <>s__2[<>s__3]; <ext>5__5 = Path.GetExtension(<file>5__4).ToLower(); if (<ext>5__5 == ".wav" || <ext>5__5 == ".ogg" || <ext>5__5 == ".mp3") { <www>5__6 = new WWW("file://" + <file>5__4); <>1__state = -3; <>2__current = <www>5__6; <>1__state = 1; return true; } goto IL_01bf; } <>s__2 = null; return false; } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void <>m__Finally1() { <>1__state = -1; if (<www>5__6 != null) { ((IDisposable)<www>5__6).Dispose(); } } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private static Dictionary<string, Texture2D> _textures = new Dictionary<string, Texture2D>(StringComparer.OrdinalIgnoreCase); private static Dictionary<string, Sprite> _sprites = new Dictionary<string, Sprite>(StringComparer.OrdinalIgnoreCase); private static Dictionary<string, AudioClip> _audios = new Dictionary<string, AudioClip>(StringComparer.OrdinalIgnoreCase); private static string _basePath; public static void Init() { _basePath = Path.Combine(Paths.ConfigPath, "ColorizedInk"); } [IteratorStateMachine(typeof(<PreloadAudioClips>d__5))] public static IEnumerator PreloadAudioClips() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <PreloadAudioClips>d__5(0); } public static AudioClip GetAudio(string name) { AudioClip value; return _audios.TryGetValue(name, out value) ? value : null; } public static Texture2D GetTexture(string name) { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Expected O, but got Unknown if (_textures.TryGetValue(name, out var value)) { return value; } string text = Path.Combine(_basePath, "Textures"); if (!Directory.Exists(text)) { Directory.CreateDirectory(text); } string path = Path.Combine(text, name); if (!File.Exists(path)) { return null; } Texture2D val = new Texture2D(2, 2); if (ImageConversion.LoadImage(val, File.ReadAllBytes(path))) { ((Object)val).name = name; _textures[name] = val; return val; } return null; } public static Sprite GetSprite(string name) { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (_sprites.TryGetValue(name, out var value)) { return value; } Texture2D texture = GetTexture(name); if ((Object)(object)texture == (Object)null) { return null; } Sprite val = Sprite.Create(texture, new Rect(0f, 0f, (float)((Texture)texture).width, (float)((Texture)texture).height), new Vector2(0.5f, 0.5f), 100f); ((Object)val).name = name; _sprites[name] = val; return val; } public static void ClearCaches() { _textures.Clear(); _sprites.Clear(); } } public class RuleProcessor { private class CachedState { public Component Target; public TargetRule Rule; public object OriginalValue; public Action<Component, TargetRule, object> RevertAction; } private readonly ConfigManager _config; private readonly Dictionary<string, CachedState> _cache = new Dictionary<string, CachedState>(); private static MaterialPropertyBlock _sharedBlock = new MaterialPropertyBlock(); private static List<Component> _sharedCompList = new List<Component>(); private readonly Dictionary<(Type, string), List<MemberInfo>> _reflectionCache = new Dictionary<(Type, string), List<MemberInfo>>(); private readonly Dictionary<Type, Dictionary<string, bool>> _typeMatchCache = new Dictionary<Type, Dictionary<string, bool>>(); public RuleProcessor(ConfigManager config) { _config = config; } public void ScanFullScene() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) Scene activeScene = SceneManager.GetActiveScene(); GameObject[] rootGameObjects = ((Scene)(ref activeScene)).GetRootGameObjects(); foreach (GameObject root in rootGameObjects) { ProcessObject(root); } } public void ProcessObject(GameObject root) { if ((Object)(object)root == (Object)null || _config.Rules == null || _config.Rules.Count == 0) { return; } Transform transform = root.transform; if (_config.RulesByRoot.TryGetValue(((Object)root).name, out var value)) { for (int i = 0; i < value.Count; i++) { ApplyPathing(transform, value[i]); } } for (int j = 0; j < _config.RulesByRootContains.Count; j++) { List<TargetRule> value2 = _config.RulesByRootContains[j].Value; if (value2 != null && value2.Count > 0 && MatchesPath(transform, value2[0].RootContainsParts)) { for (int k = 0; k < value2.Count; k++) { ApplyPathing(transform, value2[k]); } } } for (int l = 0; l < _config.RulesByPathContains.Count; l++) { TargetRule targetRule = _config.RulesByPathContains[l]; if (targetRule.IsDeepSearch) { if (MatchesPath(transform, targetRule.PathParts)) { DoDeepSearch(transform, targetRule); } } else if (MatchesPath(transform, targetRule.PathParts)) { ApplyToTarget(((Component)transform).gameObject, targetRule); } } } private void ApplyPathing(Transform root, TargetRule rule) { if (string.IsNullOrEmpty(rule.Path) && string.IsNullOrEmpty(rule.PathContains)) { ApplyToTarget(((Component)root).gameObject, rule); return; } if (rule.IsDeepSearch) { DoDeepSearch(root, rule); return; } Transform val = root.Find((!string.IsNullOrEmpty(rule.Path)) ? rule.Path : rule.PathContains); if ((Object)(object)val != (Object)null) { ApplyToTarget(((Component)val).gameObject, rule); } } private void DoDeepSearch(Transform root, TargetRule rule) { Queue<Transform> queue = new Queue<Transform>(); queue.Enqueue(root); while (queue.Count > 0) { Transform val = queue.Dequeue(); if (((Object)val).name.IndexOf(rule.CleanDeepTarget, StringComparison.OrdinalIgnoreCase) >= 0) { ApplyToTarget(((Component)val).gameObject, rule); continue; } for (int i = 0; i < val.childCount; i++) { queue.Enqueue(val.GetChild(i)); } } } private bool MatchesPath(Transform t, string[] parts) { if (parts == null || parts.Length == 0) { return true; } Transform val = t; for (int num = parts.Length - 1; num >= 0; num--) { bool flag = false; while ((Object)(object)val != (Object)null) { if (((Object)val).name.IndexOf(parts[num], StringComparison.OrdinalIgnoreCase) >= 0) { flag = true; val = val.parent; break; } val = val.parent; } if (!flag) { return false; } } return true; } private bool IsComponentTypeMatch(Type compType, string ruleTargetType) { if (string.IsNullOrEmpty(ruleTargetType)) { return true; } if (!_typeMatchCache.TryGetValue(compType, out var value)) { value = new Dictionary<string, bool>(StringComparer.OrdinalIgnoreCase); _typeMatchCache[compType] = value; } if (!value.TryGetValue(ruleTargetType, out var value2)) { value2 = (value[ruleTargetType] = compType.Name.IndexOf(ruleTargetType, StringComparison.OrdinalIgnoreCase) >= 0); } return value2; } private void ApplyToTarget(GameObject go, TargetRule rule) { go.GetComponents<Component>(_sharedCompList); for (int i = 0; i < _sharedCompList.Count; i++) { Component val = _sharedCompList[i]; if ((Object)(object)val == (Object)null || !IsComponentTypeMatch(((object)val).GetType(), rule.ComponentType)) { continue; } string key = $"{((Object)val).GetInstanceID()}_{rule.PropertyName}_{rule.MaterialIndex}"; if (_cache.ContainsKey(key)) { continue; } bool flag = false; object originalValue = null; Action<Component, TargetRule, object> revertAction = null; string text = (rule.PropertyName ?? "").ToLower().Replace("behavior.", "").Replace("behaviour.", ""); Behaviour val2 = (Behaviour)(object)((val is Behaviour) ? val : null); if (text == "enabled" && (Object)(object)val2 != (Object)null) { object obj = ParseValueForType(rule.Value, typeof(bool)); if (obj != null) { originalValue = val2.enabled; val2.enabled = (bool)obj; flag = true; revertAction = RevertBehaviour; } } if (!flag) { ParticleSystem val3 = (ParticleSystem)(object)((val is ParticleSystem) ? val : null); Renderer val4 = (Renderer)(object)((val is Renderer) ? val : null); LineRenderer val5 = (LineRenderer)(object)((val is LineRenderer) ? val : null); TrailRenderer val6 = (TrailRenderer)(object)((val is TrailRenderer) ? val : null); object originalValue2; if ((Object)(object)val3 != (Object)null && TryPatchParticleSystem(val3, rule)) { flag = true; } else if ((Object)(object)val4 != (Object)null && TryPatchRendererMaterial(val4, rule)) { flag = true; revertAction = RevertRenderer; } else if (((Object)(object)val5 != (Object)null || (Object)(object)val6 != (Object)null) && TryPatchTrailColors(val, rule)) { flag = true; revertAction = RevertTrailColors; } else if (TryPatchViaReflection(val, rule, out originalValue2)) { originalValue = originalValue2; flag = true; revertAction = RevertReflection; } } if (flag && !_cache.ContainsKey(key)) { _cache[key] = new CachedState { Target = val, Rule = rule, OriginalValue = originalValue, RevertAction = revertAction }; } } _sharedCompList.Clear(); } private void RevertBehaviour(Component comp, TargetRule rule, object orig) { Behaviour val = (Behaviour)(object)((comp is Behaviour) ? comp : null); if ((Object)(object)val != (Object)null && orig is bool) { val.enabled = (bool)orig; } } private bool TryPatchParticleSystem(ParticleSystem ps, TargetRule rule) { //IL_0048: 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_0051: 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_005a: 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_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0090: 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_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0145: 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_0187: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) string normalizedPropName = rule.NormalizedPropName; bool result = false; if (normalizedPropName.Contains("color") && ParseValueForType(rule.Value, typeof(Color)) is Color val) { try { MainModule main = ps.main; ((MainModule)(ref main)).startColor = new MinMaxGradient(val); result = true; TrailModule trails = ps.trails; if (((TrailModule)(ref trails)).enabled) { ((TrailModule)(ref trails)).colorOverLifetime = new MinMaxGradient(val); ((TrailModule)(ref trails)).colorOverTrail = new MinMaxGradient(val); } } catch { } } ParticleSystemRenderer component = ((Component)ps).GetComponent<ParticleSystemRenderer>(); if ((Object)(object)component != (Object)null) { Material[] materials = ((Renderer)component).materials; bool flag = false; for (int i = 0; i < materials.Length; i++) { if (rule.MaterialIndex >= 0 && rule.MaterialIndex != i) { continue; } Material val2 = materials[i]; if (!((Object)(object)val2 == (Object)null) && ParseValueForType(rule.Value, typeof(Color)) is Color val3) { if (val2.HasProperty("_TintColor")) { val2.SetColor("_TintColor", val3); flag = true; } if (val2.HasProperty("_Color")) { val2.SetColor("_Color", val3); flag = true; } if (val2.HasProperty("_EmissionColor")) { val2.SetColor("_EmissionColor", val3); flag = true; } string propertyName = rule.PropertyName; if (val2.HasProperty(propertyName)) { val2.SetColor(propertyName, val3); flag = true; } } } if (flag) { ((Renderer)component).materials = materials; result = true; } } return result; } private bool TryPatchRendererMaterial(Renderer r, TargetRule rule) { //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Expected O, but got Unknown //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) if (r is ParticleSystemRenderer) { return false; } Material[] materials = r.materials; if (materials == null || materials.Length == 0) { return false; } bool flag = false; string propertyName = rule.PropertyName; for (int i = 0; i < materials.Length; i++) { if (rule.MaterialIndex >= 0 && rule.MaterialIndex != i) { continue; } Material val = materials[i]; if ((Object)(object)val == (Object)null) { continue; } string text = propertyName; bool flag2 = false; if (val.HasProperty(propertyName)) { flag2 = true; } else if (val.HasProperty("_" + propertyName)) { text = "_" + propertyName; flag2 = true; } else if (propertyName == "MainTex" || propertyName == "_MainTex") { text = "_MainTex"; flag2 = true; } if (!flag2) { continue; } object obj = ParseValueForType(rule.Value, typeof(object)); if (obj is Texture2D) { Texture2D val2 = (Texture2D)obj; if (text == "_MainTex" || text == "MainTex") { val.mainTexture = (Texture)(object)val2; } else { val.SetTexture(text, (Texture)(object)val2); } flag = true; } else if (obj is Color val3) { val.SetColor(text, val3); flag = true; } else if (obj is float || obj is double || obj is int) { float num = Convert.ToSingle(obj); val.SetFloat(text, num); flag = true; } } if (flag) { r.materials = materials; return true; } return false; } private void RevertRenderer(Component comp, TargetRule rule, object orig) { Renderer val = (Renderer)(object)((comp is Renderer) ? comp : null); if ((Object)(object)val != (Object)null && !(val is ParticleSystemRenderer)) { if (rule.MaterialIndex >= 0 && rule.MaterialIndex < val.sharedMaterials.Length) { val.SetPropertyBlock((MaterialPropertyBlock)null, rule.MaterialIndex); } else { val.SetPropertyBlock((MaterialPropertyBlock)null); } } } private bool TryPatchTrailColors(Component comp, TargetRule rule) { //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Expected O, but got Unknown //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_025b: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Unknown result type (might be due to invalid IL or missing references) string normalizedPropName = rule.NormalizedPropName; if (normalizedPropName != "color" && normalizedPropName != "startcolor" && normalizedPropName != "endcolor" && normalizedPropName != "tintcolor" && normalizedPropName != "width" && normalizedPropName != "startwidth" && normalizedPropName != "endwidth" && normalizedPropName != "widthmultiplier" && normalizedPropName != "multiplier") { return false; } if (normalizedPropName.Contains("width") || normalizedPropName.Contains("multiplier")) { object obj = ParseValueForType(rule.Value, typeof(float)); if (obj == null) { return false; } float num = Convert.ToSingle(obj); LineRenderer val = (LineRenderer)(object)((comp is LineRenderer) ? comp : null); if ((Object)(object)val != (Object)null) { if (normalizedPropName.Contains("multiplier")) { val.widthMultiplier = num; } else { val.startWidth = num; val.endWidth = num; } return true; } TrailRenderer val2 = (TrailRenderer)(object)((comp is TrailRenderer) ? comp : null); if ((Object)(object)val2 != (Object)null) { if (normalizedPropName.Contains("multiplier")) { val2.widthMultiplier = num; } else { val2.startWidth = num; val2.endWidth = num; } return true; } } else if (ParseValueForType(rule.Value, typeof(Color)) is Color val3) { Gradient val4 = new Gradient(); val4.SetKeys((GradientColorKey[])(object)new GradientColorKey[2] { new GradientColorKey(val3, 0f), new GradientColorKey(val3, 1f) }, (GradientAlphaKey[])(object)new GradientAlphaKey[2] { new GradientAlphaKey(val3.a, 0f), new GradientAlphaKey(val3.a, 1f) }); LineRenderer val5 = (LineRenderer)(object)((comp is LineRenderer) ? comp : null); if ((Object)(object)val5 != (Object)null) { val5.colorGradient = val4; val5.startColor = val3; val5.endColor = val3; return true; } TrailRenderer val6 = (TrailRenderer)(object)((comp is TrailRenderer) ? comp : null); if ((Object)(object)val6 != (Object)null) { val6.colorGradient = val4; val6.startColor = val3; val6.endColor = val3; return true; } } return false; } private void RevertTrailColors(Component comp, TargetRule rule, object orig) { } private MemberInfo FindMemberRobust(Type type, string name) { while (type != null && type != typeof(object)) { MemberInfo memberInfo = (MemberInfo)(((object)type.GetProperty(name, BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) ?? ((object)type.GetField(name, BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic))); if (memberInfo != null) { return memberInfo; } type = type.BaseType; } return null; } private bool TryPatchViaReflection(Component comp, TargetRule rule, out object originalValue) { originalValue = null; Type type = ((object)comp).GetType(); (Type, string) key = (type, rule.PropertyName); if (!_reflectionCache.TryGetValue(key, out var value)) { value = new List<MemberInfo>(); string[] array = rule.PropertyName.Split(new char[1] { '.' }); Type type2 = type; string[] array2 = array; foreach (string text in array2) { if (text.Equals("Behavior", StringComparison.OrdinalIgnoreCase) || text.Equals("Behaviour", StringComparison.OrdinalIgnoreCase)) { continue; } MemberInfo memberInfo = FindMemberRobust(type2, text); if (memberInfo == null) { _reflectionCache[key] = null; return false; } value.Add(memberInfo); PropertyInfo propertyInfo = memberInfo as PropertyInfo; if (propertyInfo != null) { type2 = propertyInfo.PropertyType; continue; } FieldInfo fieldInfo = memberInfo as FieldInfo; if (fieldInfo != null) { type2 = fieldInfo.FieldType; } } _reflectionCache[key] = value; } if (value == null || value.Count == 0) { return false; } object obj = comp; for (int j = 0; j < value.Count - 1; j++) { MemberInfo memberInfo2 = value[j]; PropertyInfo propertyInfo2 = memberInfo2 as PropertyInfo; if (propertyInfo2 != null) { obj = propertyInfo2.GetValue(obj, null); } else { FieldInfo fieldInfo2 = memberInfo2 as FieldInfo; if (fieldInfo2 != null) { obj = fieldInfo2.GetValue(obj); } } if (obj == null) { return false; } } MemberInfo memberInfo3 = value[value.Count - 1]; Type targetType = null; PropertyInfo propertyInfo3 = memberInfo3 as PropertyInfo; FieldInfo fieldInfo3 = memberInfo3 as FieldInfo; if (propertyInfo3 != null) { targetType = propertyInfo3.PropertyType; } else if (fieldInfo3 != null) { targetType = fieldInfo3.FieldType; } if (propertyInfo3 != null) { originalValue = propertyInfo3.GetValue(obj, null); } else if (fieldInfo3 != null) { originalValue = fieldInfo3.GetValue(obj); } object obj2 = ParseValueForType(rule.Value, targetType); if (obj2 != null) { if (propertyInfo3 != null && propertyInfo3.CanWrite) { propertyInfo3.SetValue(obj, obj2, null); } else { if (!(fieldInfo3 != null) || fieldInfo3.IsInitOnly) { return false; } fieldInfo3.SetValue(obj, obj2); } return true; } return false; } private void RevertReflection(Component comp, TargetRule rule, object origVal) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown if (origVal != null) { JToken value = null; try { value = (JToken)((!(origVal is JToken)) ? ((object)JToken.FromObject(origVal)) : ((object)(JToken)origVal)); } catch { } TargetRule rule2 = new TargetRule { PropertyName = rule.PropertyName, Value = value }; TryPatchViaReflection(comp, rule2, out var _); } } public void RevertAll() { foreach (CachedState value in _cache.Values) { if (value.RevertAction != null) { value.RevertAction(value.Target, value.Rule, value.OriginalValue); } } _cache.Clear(); } public void EnforceActiveRules() { foreach (CachedState value in _cache.Values) { if ((Object)(object)value.Target == (Object)null) { continue; } string text = (value.Rule.PropertyName ?? "").ToLower().Replace("behavior.", "").Replace("behaviour.", ""); Component target = value.Target; Behaviour val = (Behaviour)(object)((target is Behaviour) ? target : null); if (text == "enabled" && (Object)(object)val != (Object)null) { object obj = ParseValueForType(value.Rule.Value, typeof(bool)); if (obj != null) { val.enabled = (bool)obj; } } else { TryPatchViaReflection(value.Target, value.Rule, out var _); } } } private object ParseValueForType(object raw, Type targetType) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Expected O, but got Unknown //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Invalid comparison between Unknown and I4 //IL_0379: Unknown result type (might be due to invalid IL or missing references) //IL_0380: Expected O, but got Unknown //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Expected O, but got Unknown //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Invalid comparison between Unknown and I4 //IL_0186: Unknown result type (might be due to invalid IL or missing references) if (raw == null) { return null; } try { if (raw is JObject) { JObject val = (JObject)raw; if (targetType == typeof(Color) || targetType == typeof(object)) { float num = ((val["r"] != null) ? Extensions.Value<float>((IEnumerable<JToken>)val["r"]) : ((val["x"] != null) ? Extensions.Value<float>((IEnumerable<JToken>)val["x"]) : 0f)); float num2 = ((val["g"] != null) ? Extensions.Value<float>((IEnumerable<JToken>)val["g"]) : ((val["y"] != null) ? Extensions.Value<float>((IEnumerable<JToken>)val["y"]) : 0f)); float num3 = ((val["b"] != null) ? Extensions.Value<float>((IEnumerable<JToken>)val["b"]) : ((val["z"] != null) ? Extensions.Value<float>((IEnumerable<JToken>)val["z"]) : 0f)); float num4 = ((val["a"] != null) ? Extensions.Value<float>((IEnumerable<JToken>)val["a"]) : ((val["w"] != null) ? Extensions.Value<float>((IEnumerable<JToken>)val["w"]) : 1f)); return (object)new Color(num, num2, num3, num4); } } } catch { } string text = null; try { if (raw is string) { text = (string)raw; } else if (raw is JValue) { JValue val2 = (JValue)raw; if ((int)((JToken)val2).Type == 8) { text = ((object)val2).ToString(); } } else if (raw is JToken) { JToken val3 = (JToken)raw; if ((int)val3.Type == 8) { text = ((object)val3).ToString(); } } } catch { } if (text != null) { string text2 = text.ToLower(); if (targetType == typeof(Texture) || targetType == typeof(Texture2D) || text2.EndsWith(".png") || text2.EndsWith(".jpg")) { return ResourceManager.GetTexture(text); } if (targetType == typeof(Sprite)) { return ResourceManager.GetSprite(text); } if (targetType == typeof(AudioClip) || text2.EndsWith(".wav") || text2.EndsWith(".mp3") || text2.EndsWith(".ogg")) { return ResourceManager.GetAudio(text); } if (targetType != typeof(object) && targetType.IsEnum) { try { return Enum.Parse(targetType, text, ignoreCase: true); } catch { } } if (targetType == typeof(string) || targetType == typeof(object)) { return text; } } try { if (raw is JToken) { JToken val4 = (JToken)raw; return val4.ToObject(targetType); } } catch { } try { return Convert.ChangeType(raw, targetType); } catch { return null; } } }