Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of ColdFixer v0.1.4
ColdFixer.dll
Decompiled 2 years agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Xml; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using ColdFixer.Asset; using ColdFixer.Config; using ColdFixer.Patch; using ColdFixer.Util; using Dissonance; using GameNetcodeStuff; using HarmonyLib; using LethalCompanyInputUtils.Api; using LethalConfig; using LethalConfig.ConfigItems; using LethalConfig.ConfigItems.Options; using Microsoft.CodeAnalysis; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.InputSystem; using UnityEngine.Rendering; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: AssemblyCompany("ColdFixer")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("ColdFixer")] [assembly: AssemblyTitle("ColdFixer")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace ColdFixer { public static class PluginInfo { public const string GUID = "hexkivo.ColdFixer"; public const string NAME = "ColdFixer"; public const string VERSION = "0.1.4"; } [BepInPlugin("hexkivo.ColdFixer", "ColdFixer", "0.1.4")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { private readonly Harmony harmony = new Harmony("hexkivo.ColdFixer"); public bool isInputUtils = false; internal static ManualLogSource Log = Logger.CreateLogSource("hexkivo.ColdFixer"); private static bool MenuLoaded = false; public static Plugin? Instance { get; private set; } private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } if (Chainloader.PluginInfos.Values.Any((PluginInfo p) => p.Metadata.GUID == "ainavt.lc.lethalconfig")) { LogInfo("Lethalconfig Founded"); Setting.isLethalConfig = true; } try { Loader.LoadAll(); Setting.BindAll(); ((BaseUnityPlugin)this).Config.SettingChanged += delegate(object sender, SettingChangedEventArgs e) { LogInfo($"Config [{e.ChangedSetting.Definition.Key}] set to [{e.ChangedSetting.BoxedValue}]"); }; if (Intro.SKIP_SPLASH.Value) { SceneManager.sceneLoaded += delegate(Scene scene, LoadSceneMode _) { switch (((Scene)(ref scene)).name) { case "InitScene": case "InitSceneLaunchOptions": case "MainMenu": MenuLoaded = true; break; } }; Task.Run(delegate { while (!MenuLoaded) { SplashScreen.Stop((StopBehavior)0); } }); } harmony.PatchAll(); Log.LogInfo((object)"Plugin Load Complete"); } catch (Exception ex) { LogError(ex.Message); } } internal static void LogInfo(object data) { Log.LogInfo(data); } internal static void LogError(object data) { Log.LogError(data); } internal static void LogWarning(object data) { Log.LogWarning(data); } internal static void LogFatal(object data) { Log.LogFatal(data); } internal static void LogDebug(object data) { Log.LogDebug(data); } } } namespace ColdFixer.Asset { internal static class Font { public static TMP_FontAsset? Normal; public static TMP_FontAsset? Transmit; public static void Load() { AssetBundle val = Loader.LoadAssetBundle("Font"); Normal = val.LoadAsset<TMP_FontAsset>("Normal"); Transmit = val.LoadAsset<TMP_FontAsset>("Transmit"); Plugin.LogInfo("[Font] Font assets loaded"); } } internal static class ToggleMute { public static Sprite IconSprite; public static void Load() { IconSprite = Loader.LoadAssetBundle("ToggleMute").LoadAsset<Sprite>("icon"); Plugin.LogInfo("[ToggleMute] gameobject loaded"); } } } namespace ColdFixer.Patch { [HarmonyPatch] internal static class Chat { [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPrefix] private static void Update(PlayerControllerB __instance) { if (Game.isControlling(__instance) && HUDManager.Instance.chatTextField.isFocused) { HUDManager.Instance.Chat.targetAlpha = 1f; __instance.isTypingChat = true; } } } [HarmonyPatch] internal static class DeathCause { [HarmonyPatch(typeof(HUDManager), "UpdateBoxesSpectateUI")] [HarmonyPostfix] private static void UpdateBoxesSpectateUI(HUDManager __instance, ref Dictionary<Animator, PlayerControllerB> ___spectatingPlayerBoxes) { //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) if (!ColdFixer.Config.DeathCause.SPECTATE_DEATH_CAUSE.Value) { return; } PlayerControllerB playerScript; for (int i = 0; i < StartOfRound.Instance.allPlayerScripts.Length; i++) { playerScript = StartOfRound.Instance.allPlayerScripts[i]; if (___spectatingPlayerBoxes.ContainsValue(playerScript)) { Func<KeyValuePair<Animator, PlayerControllerB>, bool> predicate = (KeyValuePair<Animator, PlayerControllerB> x) => (Object)(object)x.Value == (Object)(object)playerScript; GameObject gameObject = ((Component)___spectatingPlayerBoxes.FirstOrDefault<KeyValuePair<Animator, PlayerControllerB>>(predicate).Key).gameObject; CauseOfDeath causeOfDeath = playerScript.causeOfDeath; TextMeshProUGUI val = gameObject.GetComponentsInChildren<TextMeshProUGUI>()[1]; ((TMP_Text)val).enableWordWrapping = false; ((TMP_Text)val).text = string.Format(Translation.Translate("DEATH_CAUSE") + ": " + Translation.Translate(((object)(CauseOfDeath)(ref causeOfDeath)).ToString())); } } } } [HarmonyPatch] internal static class FontFallback { private static Regex NormalRegex = new Regex("^(b|DialogueText|3270.*)$"); private static Regex TransmitRegex = new Regex("^edunline.*$"); [HarmonyPatch(typeof(TMP_FontAsset), "Awake")] [HarmonyPrefix] private static void Awake(TMP_FontAsset __instance) { string name = ((Object)__instance).name; if (NormalRegex.IsMatch(name)) { if (!ColdFixer.Config.FontFallback.NORMAL_FONT_FALLBACK.Value) { __instance.characterLookupTable.Clear(); __instance.atlasPopulationMode = (AtlasPopulationMode)0; } if ((Object)(object)Font.Normal != (Object)null && !__instance.fallbackFontAssetTable.Contains(Font.Normal)) { __instance.fallbackFontAssetTable.Add(Font.Normal); } } else if (TransmitRegex.IsMatch(name)) { if (!ColdFixer.Config.FontFallback.TRANSMIT_FONT_FALLBACK.Value) { __instance.characterLookupTable.Clear(); __instance.atlasPopulationMode = (AtlasPopulationMode)0; } if ((Object)(object)Font.Transmit != (Object)null && !__instance.fallbackFontAssetTable.Contains(Font.Transmit)) { __instance.fallbackFontAssetTable.Add(Font.Transmit); } } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] [HarmonyPostfix] private static void font(TMP_FontAsset value) { Awake(value); } [HarmonyPatch(typeof(TextMeshProUGUI), "Awake")] [HarmonyPrefix] private static void Awake(TextMeshProUGUI __instance) { if (!((Object)(object)((TMP_Text)__instance).font == (Object)null)) { Awake(((TMP_Text)__instance).font); } } [HarmonyPatch(typeof(HUDManager), "OnEnable")] [HarmonyPostfix] private static void OnEnable() { ((UnityEvent<string>)(object)HUDManager.Instance.chatTextField.onSubmit).AddListener((UnityAction<string>)OnSubmitChat); } [HarmonyPatch(typeof(HUDManager), "OnDisable")] [HarmonyPostfix] private static void OnDisable() { ((UnityEvent<string>)(object)HUDManager.Instance.chatTextField.onSubmit).RemoveListener((UnityAction<string>)OnSubmitChat); } [HarmonyPatch(typeof(HUDManager), "SubmitChat_performed")] [HarmonyPrefix] private static void SubmitChat_performed(ref bool __runOriginal) { __runOriginal = false; } private static void OnSubmitChat(string ChatString) { //IL_0064: 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) PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController; if (!string.IsNullOrEmpty(ChatString) && ChatString.Length < 50) { HUDManager.Instance.AddTextToChatOnServer(ChatString, (int)localPlayerController.playerClientId); } for (int i = 0; i < StartOfRound.Instance.allPlayerScripts.Length; i++) { if (StartOfRound.Instance.allPlayerScripts[i].isPlayerControlled && Vector3.Distance(((Component)GameNetworkManager.Instance.localPlayerController).transform.position, ((Component)StartOfRound.Instance.allPlayerScripts[i]).transform.position) > 24.4f && (!GameNetworkManager.Instance.localPlayerController.holdingWalkieTalkie || !StartOfRound.Instance.allPlayerScripts[i].holdingWalkieTalkie)) { HUDManager.Instance.playerCouldRecieveTextChatAnimator.SetTrigger("ping"); break; } } localPlayerController.isTypingChat = false; HUDManager.Instance.chatTextField.text = ""; EventSystem.current.SetSelectedGameObject((GameObject)null); HUDManager.Instance.PingHUDElement(HUDManager.Instance.Chat, 2f, 1f, 0.2f); ((Behaviour)HUDManager.Instance.typingIndicator).enabled = false; } } [HarmonyPatch] internal static class FOV { private static readonly Vector3 OriginalVisorScale = new Vector3(0.36f, 0.49f, 0.49f); [HarmonyPatch(typeof(PlayerControllerB), "Awake")] [HarmonyPostfix] private static void Awake(PlayerControllerB __instance) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) if (ColdFixer.Config.FOV.HIDE_VISOR.Value) { __instance.localVisor.localScale = new Vector3(0f, 0f, 0f); } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] private static void Update(PlayerControllerB __instance, ref float ___targetFOV, ref Camera ___gameplayCamera, ref Transform ___localVisor) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) if (Game.isControlling(__instance)) { __instance.localVisor.position = __instance.localVisor.position + new Vector3(0f, 0f, -0.06f); if (__instance.inTerminalMenu) { ___targetFOV = ColdFixer.Config.FOV.FOV_TERMINAL.Value; } else if (__instance.IsInspectingItem) { ___targetFOV = 46f; } else if (__instance.isSprinting) { ___targetFOV = ColdFixer.Config.FOV.FOV_SPRINT.Value; } else { ___targetFOV = ColdFixer.Config.FOV.FOV_NORMAL.Value; } ___gameplayCamera.fieldOfView = Mathf.Lerp(___gameplayCamera.fieldOfView, ___targetFOV, 6f * Time.deltaTime); } } [HarmonyPatch(typeof(PlayerControllerB), "LateUpdate")] [HarmonyPostfix] private static void LateUpdate(PlayerControllerB __instance, ref Transform ___localVisor) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) Transform obj = ___localVisor; obj.localPosition += ___localVisor.rotation * new Vector3(0f, 0.06f * (1f - TanDeg(30f) / TanDeg((float)ColdFixer.Config.FOV.FOV_NORMAL.Value / 2f)), 0f); } private static float TanDeg(float x) { return Mathf.Tan(x / 180f * MathF.PI); } public static void ConfigChanged(object? sender, EventArgs? e) { //IL_0058: 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) Transform val = GameNetworkManager.Instance?.localPlayerController?.localVisor; if (!((Object)(object)val == (Object)null)) { if (ColdFixer.Config.FOV.HIDE_VISOR.Value) { val.localScale = new Vector3(0f, 0f, 0f); } else { val.localScale = OriginalVisorScale; } } } } [HarmonyPatch] internal static class Grabbability { [HarmonyPatch(typeof(GrabbableObject), "Start")] [HarmonyPostfix] private static void Start(GrabbableObject __instance) { if (ColdFixer.Config.Grabbability.GRAB_BEFORE_START.Value) { __instance.itemProperties.canBeGrabbedBeforeGameStart = true; } } } [HarmonyPatch] internal static class IntroBlocker { [HarmonyPatch(typeof(InitializeGame), "Start")] [HarmonyPrefix] private static void Start(ref bool __runOriginal) { if (Intro.SKIP_BOOTING_ANIMATION.Value) { __runOriginal = false; SceneManager.LoadScene("MainMenu"); } } [HarmonyPatch(typeof(PreInitSceneScript), "Start")] [HarmonyPostfix] private static void Start() { IngamePlayerSettings instance = IngamePlayerSettings.Instance; if (instance != null) { instance.SetPlayerFinishedLaunchOptions(); } } [HarmonyPatch(typeof(PreInitSceneScript), "SkipToFinalSetting")] [HarmonyPostfix] private static void SkipToFinalSetting(PreInitSceneScript __instance, ref bool ___choseLaunchOption) { if (Intro.PRESELECTED_MODE.Value == Intro.ModeOption.Online || Intro.PRESELECTED_MODE.Value == Intro.ModeOption.Local) { CollectionExtensions.Do<GameObject>((IEnumerable<GameObject>)__instance.LaunchSettingsPanels, (Action<GameObject>)delegate(GameObject panel) { panel.SetActive(false); }); __instance.currentLaunchSettingPanel = 0; ((TMP_Text)__instance.headerText).text = ""; ((Component)__instance.blackTransition).gameObject.SetActive(false); __instance.continueButton.gameObject.SetActive(false); ___choseLaunchOption = true; __instance.mainAudio.PlayOneShot(__instance.selectSFX); string text = ((Intro.PRESELECTED_MODE.Value == Intro.ModeOption.Online) ? "InitScene" : "InitSceneLANMode"); SceneManager.LoadScene(text); } } [HarmonyPatch(typeof(MenuManager), "DisplayMenuNotification")] [HarmonyPrefix] private static void DisplayMenuNotification(string notificationText, string buttonText, ref bool __runOriginal) { if (Intro.BLOCK_OFFLINE_WARNING.Value && notificationText.StartsWith("Could not connect")) { __runOriginal = false; } } [HarmonyPatch(typeof(MenuManager), "Start")] [HarmonyPostfix] private static void Start(MenuManager __instance) { MenuManager __instance2 = __instance; ((MonoBehaviour)__instance2).StartCoroutine(Menu()); IEnumerator Menu() { yield return (object)new WaitForSeconds(0f); if (Intro.REMOVE_CREDITS_BUTTON.Value) { GameObject obj = GameObject.Find("MenuContainer"); object obj2; if (obj == null) { obj2 = null; } else { Transform transform = obj.transform; obj2 = ((transform != null) ? (from b in ((Component)transform.Find("MainButtons")).GetComponentsInChildren<Button>(true) select ((Component)b).gameObject) : null); } IEnumerable<GameObject> buttons = (IEnumerable<GameObject>)obj2; GameObject CreditsButton = buttons.First((GameObject button) => ((Object)button).name == "Credits"); CreditsButton.SetActive(false); Rect rect = CreditsButton.GetComponent<RectTransform>().rect; float CreditsHeight = ((Rect)(ref rect)).height * 1.3f; CollectionExtensions.Do<GameObject>(buttons, (Action<GameObject>)delegate(GameObject button) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)button) && !((Object)(object)button == (Object)(object)CreditsButton) && button.transform.localPosition.y > CreditsButton.transform.localPosition.y) { Transform transform2 = button.transform; transform2.localPosition -= new Vector3(0f, CreditsHeight, 0f); } }); } if (Intro.BLOCK_NEWS.Value) { GameObject newsPanel = __instance2.NewsPanel; if (newsPanel != null) { newsPanel.SetActive(false); } } if (Intro.BLOCK_LAN_WARNING.Value) { GameObject lanWarningContainer = __instance2.lanWarningContainer; if (lanWarningContainer != null) { lanWarningContainer.SetActive(false); } } TextMeshProUGUI launchedInLanModeText = __instance2.launchedInLanModeText; GameObject lanModeText = ((launchedInLanModeText != null) ? ((Component)launchedInLanModeText).gameObject : null); if (Object.op_Implicit((Object)(object)lanModeText)) { lanModeText.SetActive(false); } } } } [HarmonyPatch] internal static class ItemHotkey { [HarmonyPatch(typeof(PlayerControllerB), "KillPlayer")] [HarmonyPostfix] public static void KillPlayer(ref GrabbableObject ___pocketedFlashlight) { ___pocketedFlashlight = null; } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] public static void Update(PlayerControllerB __instance, ref GrabbableObject ___currentlyHeldObjectServer, ref GrabbableObject ___pocketedFlashlight) { if (!ColdFixer.Config.ItemHotkey.HOTKEY_FLASHLIGHT.Value || !Game.isControlling(__instance) || __instance.inTerminalMenu || __instance.isTypingChat || !Application.isFocused) { return; } if (___currentlyHeldObjectServer is FlashlightItem && (Object)(object)___currentlyHeldObjectServer != (Object)(object)___pocketedFlashlight) { ___pocketedFlashlight = ___currentlyHeldObjectServer; } if ((Object)(object)___pocketedFlashlight == (Object)null || !InputSetting.instance.FlashLightKey.triggered || !(___pocketedFlashlight is FlashlightItem) || !___pocketedFlashlight.isHeld) { return; } ___pocketedFlashlight.UseItemOnClient(true); if (!(___currentlyHeldObjectServer is FlashlightItem)) { GrabbableObject obj = ___pocketedFlashlight; ((Behaviour)((FlashlightItem)((obj is FlashlightItem) ? obj : null)).flashlightBulbGlow).enabled = false; GrabbableObject obj2 = ___pocketedFlashlight; ((Behaviour)((FlashlightItem)((obj2 is FlashlightItem) ? obj2 : null)).flashlightBulb).enabled = false; GrabbableObject obj3 = ___pocketedFlashlight; if (((obj3 is FlashlightItem) ? obj3 : null).isBeingUsed) { ((Behaviour)__instance.helmetLight).enabled = true; GrabbableObject obj4 = ___pocketedFlashlight; ((FlashlightItem)((obj4 is FlashlightItem) ? obj4 : null)).usingPlayerHelmetLight = true; GrabbableObject obj5 = ___pocketedFlashlight; ((FlashlightItem)((obj5 is FlashlightItem) ? obj5 : null)).PocketFlashlightServerRpc(true); } else { ((Behaviour)__instance.helmetLight).enabled = false; GrabbableObject obj6 = ___pocketedFlashlight; ((FlashlightItem)((obj6 is FlashlightItem) ? obj6 : null)).usingPlayerHelmetLight = false; GrabbableObject obj7 = ___pocketedFlashlight; ((FlashlightItem)((obj7 is FlashlightItem) ? obj7 : null)).PocketFlashlightServerRpc(false); } } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] public static void Update(PlayerControllerB __instance, ref GrabbableObject ___currentlyHeldObjectServer) { if (!ColdFixer.Config.ItemHotkey.HOTKEY_WALKIE_TALKIE.Value || !Game.isControlling(__instance) || __instance.inTerminalMenu || __instance.isTypingChat || ShipBuildModeManager.Instance.InBuildMode || !Application.isFocused) { return; } GrabbableObject val = null; for (int i = 0; i < __instance.ItemSlots.Length; i++) { if (Object.op_Implicit((Object)(object)__instance.ItemSlots[i]) && __instance.ItemSlots[i] is WalkieTalkie && __instance.ItemSlots[i].isBeingUsed) { val = __instance.ItemSlots[i]; break; } } if ((Object)(object)val == (Object)null) { return; } if (InputSetting.instance.WalkieTalkieKey.WasPressedThisFrame()) { if (___currentlyHeldObjectServer is WalkieTalkie) { ___currentlyHeldObjectServer.UseItemOnClient(true); } else if ((Object)(object)val != (Object)null) { val.UseItemOnClient(true); } } if (InputSetting.instance.WalkieTalkieKey.WasReleasedThisFrame()) { if (___currentlyHeldObjectServer is WalkieTalkie) { ___currentlyHeldObjectServer.UseItemOnClient(false); } else if ((Object)(object)val != (Object)null) { val.UseItemOnClient(false); } } } } [HarmonyPatch] internal static class Lookdown { [HarmonyPatch(typeof(PlayerControllerB), "CalculateNormalLookingInput")] [HarmonyPrefix] private static void CalculateNormalLookingInput(Vector2 inputVector, PlayerControllerB __instance, ref bool __runOriginal, ref float ___cameraUp, ref bool ___smoothLookEnabledLastFrame) { //IL_0032: 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_0073: 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_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) if (ColdFixer.Config.Lookdown.LOOKDOWN_FIX.Value) { __runOriginal = false; if (___smoothLookEnabledLastFrame) { ___smoothLookEnabledLastFrame = false; } if (__instance.inShockingMinigame) { inputVector.x = Mathf.Clamp(inputVector.x, -15f, 15f); inputVector.y = Mathf.Clamp(inputVector.y, -15f, 15f); __instance.turnCompass.Rotate(new Vector3(0f, inputVector.x, 0f)); } else if (__instance.jetpackControls) { __instance.jetpackTurnCompass.Rotate(new Vector3(0f, inputVector.x, 0f), (Space)1); } else { __instance.thisPlayerBody.Rotate(new Vector3(0f, inputVector.x, 0f), (Space)1); } ___cameraUp -= inputVector.y; ___cameraUp = Mathf.Clamp(___cameraUp, -80f, 80f); ((Component)__instance.gameplayCamera).transform.localEulerAngles = new Vector3(___cameraUp, ((Component)__instance.gameplayCamera).transform.localEulerAngles.y, ((Component)__instance.gameplayCamera).transform.localEulerAngles.z); __instance.playerHudUIContainer.Rotate(new Vector3(inputVector.y / 4f, (0f - inputVector.x) / 8f, 0f) * Mathf.Clamp(Time.deltaTime * 15f, 0.02f, 4f)); } } [HarmonyPatch(typeof(PlayerControllerB), "CalculateSmoothLookingInput")] [HarmonyPrefix] private static void CalculateSmoothLookingInput(Vector2 inputVector, PlayerControllerB __instance, ref bool __runOriginal, ref float ___cameraUp, ref bool ___smoothLookEnabledLastFrame) { //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: 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_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) if (ColdFixer.Config.Lookdown.LOOKDOWN_FIX.Value) { __runOriginal = false; if (!___smoothLookEnabledLastFrame) { ___smoothLookEnabledLastFrame = true; __instance.smoothLookTurnCompass.rotation = ((Component)__instance.gameplayCamera).transform.rotation; __instance.smoothLookTurnCompass.SetParent((Transform)null); } __instance.smoothLookTurnCompass.Rotate(new Vector3(0f, inputVector.x, 0f), (Space)1); ___cameraUp -= inputVector.y; ___cameraUp = Mathf.Clamp(___cameraUp, -80f, 80f); __instance.smoothLookTurnCompass.localEulerAngles = new Vector3(___cameraUp, __instance.smoothLookTurnCompass.localEulerAngles.y, __instance.smoothLookTurnCompass.localEulerAngles.z); __instance.smoothLookTurnCompass.eulerAngles = new Vector3(__instance.smoothLookTurnCompass.eulerAngles.x, __instance.smoothLookTurnCompass.eulerAngles.y, ((Component)__instance.thisPlayerBody).transform.eulerAngles.z); __instance.thisPlayerBody.eulerAngles = new Vector3(__instance.thisPlayerBody.eulerAngles.x, Mathf.LerpAngle(__instance.thisPlayerBody.eulerAngles.y, __instance.smoothLookTurnCompass.eulerAngles.y, __instance.smoothLookMultiplier * Time.deltaTime), __instance.thisPlayerBody.eulerAngles.z); ((Component)__instance.gameplayCamera).transform.localEulerAngles = new Vector3(Mathf.LerpAngle(((Component)__instance.gameplayCamera).transform.localEulerAngles.x, ___cameraUp, __instance.smoothLookMultiplier * Time.deltaTime), ((Component)__instance.gameplayCamera).transform.localEulerAngles.y, ((Component)__instance.gameplayCamera).transform.localEulerAngles.z); } } } [HarmonyPatch] internal static class Movement { private static float yPos; [HarmonyPatch(typeof(PlayerControllerB), "PlayerJump")] [HarmonyPrefix] private static void PlayerJump(PlayerControllerB __instance, ref bool __runOriginal, ref IEnumerator __result) { PlayerControllerB __instance2 = __instance; if (ColdFixer.Config.Movement.NO_JUMP_DELAY.Value) { __runOriginal = false; __result = ReplacedRoutine(); } IEnumerator ReplacedRoutine() { __instance2.playerBodyAnimator.SetBool("Jumping", true); yield return (object)new WaitForSeconds(0f); __instance2.fallValue = __instance2.jumpForce; __instance2.fallValueUncapped = __instance2.jumpForce; yield return (object)new WaitForSeconds(0f); __instance2.isJumping = false; __instance2.isFallingFromJump = true; yield return (object)new WaitUntil((Func<bool>)(() => __instance2.thisController.isGrounded)); __instance2.playerBodyAnimator.SetBool("Jumping", false); __instance2.isFallingFromJump = false; __instance2.PlayerHitGroundEffects(); __instance2.jumpCoroutine = null; } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPrefix] private static void Update(PlayerControllerB __instance) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) yPos = ((Component)__instance.thisPlayerBody).transform.position.y; } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] private static void Update(PlayerControllerB __instance, ref float ___climbSpeed) { //IL_00c2: Unknown result type (might be due to invalid IL or missing references) if (!Game.isControlling(__instance) || !__instance.inSpecialInteractAnimation || __instance.inShockingMinigame || StartOfRound.Instance.suckingPlayersOutOfShip || !__instance.isClimbingLadder) { return; } if (ColdFixer.Config.Movement.SPRINT_ON_LADDER.Value) { if (__instance.isSprinting) { ___climbSpeed = Mathf.Lerp(___climbSpeed, 6f, Time.deltaTime); } else { ___climbSpeed = Mathf.Lerp(___climbSpeed, 4f, Time.deltaTime); } } else { ___climbSpeed = 4f; __instance.isSprinting = false; } if (ColdFixer.Config.Movement.AUTO_LADDER_UNSNAP.Value && __instance.moveInputVector.y != 0f && yPos == ((Component)__instance.thisPlayerBody).transform.position.y) { __instance.CancelSpecialTriggerAnimations(); } } } [HarmonyPatch] internal static class Nameplate { private class SpeakingIndicator : MonoBehaviour { private PlayerControllerB? player; private GameObject? canvasItem; private CanvasGroup? canvasItemAlpha; private static Dictionary<PlayerControllerB, SpeakingIndicator> speakingIndicators = new Dictionary<PlayerControllerB, SpeakingIndicator>(); private static Texture2D speakingIconTexture = null; private static Texture2D GetSpeakingIconTexture() { if ((Object)(object)speakingIconTexture != (Object)null) { return speakingIconTexture; } return GameObject.Find("PTTIcon").GetComponent<Image>().sprite.texture; } public static SpeakingIndicator GetSpeakingIndicator(PlayerControllerB player) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Expected O, but got Unknown speakingIndicators.TryGetValue(player, out SpeakingIndicator value); if ((Object)(object)value == (Object)null) { GameObject val = new GameObject("SpeakingIndicator"); val.SetActive(false); value = val.AddComponent<SpeakingIndicator>(); value.player = player; ((Component)value).transform.SetParent(((Component)player).transform, false); speakingIndicators.Add(player, value); val.SetActive(true); } return value; } private void Awake() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) canvasItem = new GameObject("SpeakingIndicatorCanvasItem"); canvasItem.transform.SetParent(player.usernameBillboard, false); canvasItem.AddComponent<CanvasRenderer>(); canvasItemAlpha = canvasItem.AddComponent<CanvasGroup>(); canvasItemAlpha.alpha = 0f; canvasItem.transform.localPosition = new Vector3(0f, 60f, 0f); Image val = canvasItem.AddComponent<Image>(); val.sprite = Sprite.Create(GetSpeakingIconTexture(), new Rect(0f, 0f, 260f, 280f), new Vector2(130f, 140f), 100f); } private void Update() { VoicePlayerState voicePlayerState = player.voicePlayerState; if (voicePlayerState != null) { float num = Mathf.Clamp(voicePlayerState.Amplitude * 35f, 0f, 1f); if (ColdFixer.Config.VoiceHUD.VOICE_HUD_DYNAMIC_OPACITY.Value) { if (num > 0.01f) { canvasItemAlpha.alpha = Mathf.Lerp(canvasItemAlpha.alpha, num, Mathf.Exp((0f - Time.deltaTime) * 100f)); } else { canvasItemAlpha.alpha = Mathf.Lerp(canvasItemAlpha.alpha, num, Mathf.Exp((0f - Time.deltaTime) * 50f)); } } else if (num > 0.05f) { canvasItemAlpha.alpha = 1f; } else if (num < 0.01f) { canvasItemAlpha.alpha = 0f; } } canvasItemAlpha.alpha = Math.Min(canvasItemAlpha.alpha, player.usernameAlpha.alpha); if (((NetworkBehaviour)player).IsOwner) { canvasItemAlpha.alpha = 0f; } if (!ColdFixer.Config.Nameplate.NAMEPLATE_VOICE_INDICATOR.Value) { Object.Destroy((Object)(object)((Component)this).gameObject); } } private void OnDestroy() { speakingIndicators.Remove(player); Object.Destroy((Object)(object)canvasItem); } } [HarmonyPatch(typeof(HUDManager), "UpdateSpectateBoxSpeakerIcons")] [HarmonyPostfix] private static void UpdateSpectateBoxSpeakerIcons(HUDManager __instance, ref Dictionary<Animator, PlayerControllerB> ___spectatingPlayerBoxes) { int num = Animator.StringToHash("speaking"); foreach (KeyValuePair<Animator, PlayerControllerB> ___spectatingPlayerBox in ___spectatingPlayerBoxes) { if (!((NetworkBehaviour)___spectatingPlayerBox.Value).IsOwner) { continue; } if (!(IngamePlayerSettings.Instance?.settings?.pushToTalk).GetValueOrDefault()) { break; } PlayerInput playerInput = IngamePlayerSettings.Instance.playerInput; bool? obj; if (playerInput == null) { obj = null; } else { InputActionAsset actions = playerInput.actions; if (actions == null) { obj = null; } else { InputAction obj2 = actions.FindAction("VoiceButton", false); obj = ((obj2 != null) ? new bool?(obj2.IsPressed()) : null); } } bool? flag = obj; bool valueOrDefault = flag.GetValueOrDefault(); ___spectatingPlayerBox.Key.SetBool("speaking", valueOrDefault); break; } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] private static void Update(PlayerControllerB __instance) { //IL_0034: 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_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) ((TMP_Text)__instance.usernameBillboardText).text = __instance.playerUsername; if (ColdFixer.Config.Nameplate.NAMEPLATE_VOICE_INDICATOR.Value) { SpeakingIndicator.GetSpeakingIndicator(__instance); } __instance.usernameBillboard.position = new Vector3(__instance.playerGlobalHead.position.x, __instance.playerGlobalHead.position.y + 0.55f, __instance.playerGlobalHead.position.z); if ((Object)(object)__instance == (Object)(object)StartOfRound.Instance?.localPlayerController) { __instance.usernameAlpha.alpha = 0f; } else { if (!((Object)(object)StartOfRound.Instance?.localPlayerController != (Object)null)) { return; } float num = Vector3.Distance(((Component)StartOfRound.Instance.localPlayerController.gameplayCamera).transform.position, __instance.usernameBillboard.position); if (num < (float)ColdFixer.Config.Nameplate.NAMEPLATE_DISTANCE.Value) { if (ColdFixer.Config.Nameplate.NAMEPLATE_DYNAMIC_OPACITY.Value) { __instance.usernameAlpha.alpha = 1f - num / (float)ColdFixer.Config.Nameplate.NAMEPLATE_DISTANCE.Value; } else { __instance.usernameAlpha.alpha = 1f; } ((Behaviour)__instance.usernameBillboardText).enabled = true; ((Component)__instance.usernameCanvas).gameObject.SetActive(true); } float num2 = 1f; if (ColdFixer.Config.Nameplate.NAMEPLATE_DYNAMIC_SCALING.Value) { num2 = 1f + Math.Max(0f, (num - 4f) * 0.11f); __instance.usernameBillboard.localScale = num2 * new Vector3(-0.0025f, 0.0025f, 0.0025f); } } } } [HarmonyPatch] internal static class SignalTranslatorText { [HarmonyPatch(typeof(HUDManager), "DisplaySignalTranslatorMessage")] [HarmonyPrefix] private static void DisplaySignalTranslatorMessage(ref bool __runOriginal, ref IEnumerator __result, Animator ___signalTranslatorAnimator, AudioSource ___UIAudio, TextMeshProUGUI ___signalTranslatorText, string signalMessage, int seed, SignalTranslator signalTranslator) { Animator ___signalTranslatorAnimator2 = ___signalTranslatorAnimator; SignalTranslator signalTranslator2 = signalTranslator; AudioSource ___UIAudio2 = ___UIAudio; string signalMessage2 = signalMessage; TextMeshProUGUI ___signalTranslatorText2 = ___signalTranslatorText; __runOriginal = false; __result = ReplacedRoutine(); IEnumerator ReplacedRoutine() { Random signalMessageRandom = new Random(seed + StartOfRound.Instance.randomMapSeed); ___signalTranslatorAnimator2.SetBool("transmitting", true); signalTranslator2.localAudio.Play(); ___UIAudio2.PlayOneShot(signalTranslator2.startTransmissionSFX, 1f); string trimedMessage = signalMessage2.Trim(); ((TMP_Text)___signalTranslatorText2).text = "<#00000000>" + trimedMessage + "</color>"; yield return (object)new WaitForSeconds(1.21f); for (int i = 1; i <= trimedMessage.Length; i++) { if ((Object)(object)signalTranslator2 == (Object)null) { break; } if (!((Component)signalTranslator2).gameObject.activeSelf) { break; } ___UIAudio2.PlayOneShot(signalTranslator2.typeTextClips[Random.Range(0, signalTranslator2.typeTextClips.Length)]); ((TMP_Text)___signalTranslatorText2).text = trimedMessage.Substring(0, i) + "<#00000000>" + trimedMessage.Substring(i) + "</color>"; float num = Mathf.Min((float)signalMessageRandom.Next(-1, 4) * 0.5f, 0f); if (!ColdFixer.Config.SignalTranslatorText.TRANSMIT_FAST.Value) { yield return (object)new WaitForSeconds(0.7f + num); } else { yield return (object)new WaitForSeconds(0.1f); } } if ((Object)(object)signalTranslator2 != (Object)null) { ___UIAudio2.PlayOneShot(signalTranslator2.finishTypingSFX); signalTranslator2.localAudio.Stop(); } if (!ColdFixer.Config.SignalTranslatorText.TRANSMIT_FAST.Value) { yield return (object)new WaitForSeconds(0.5f); } else { yield return (object)new WaitForSeconds(2f); } ___signalTranslatorAnimator2.SetBool("transmitting", false); } } [HarmonyPatch(typeof(HUDManager), "Awake")] [HarmonyPostfix] private static void Awake(TextMeshProUGUI ___signalTranslatorText) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: 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_0120: Unknown result type (might be due to invalid IL or missing references) Transform parent = ((TMP_Text)___signalTranslatorText).transform.parent; RectTransform val = (RectTransform)parent.GetChild(1); RectTransform val2 = (RectTransform)parent.GetChild(2); val.anchorMin = new Vector2(0f, 0.5f); val.anchorMax = new Vector2(1f, 0.5f); val.sizeDelta = new Vector2(0f, val.sizeDelta.y); TextMeshProUGUI component = ((Component)val).GetComponent<TextMeshProUGUI>(); ((TMP_Text)component).margin = new Vector4(0f, 0f, val.anchoredPosition.x * 2f, 0f); ((TMP_Text)component).alignment = (TextAlignmentOptions)258; val2.anchorMin = new Vector2(0f, 0.5f); val2.anchorMax = new Vector2(1f, 0.5f); val2.sizeDelta = new Vector2(0f, val2.sizeDelta.y); TextMeshProUGUI component2 = ((Component)val2).GetComponent<TextMeshProUGUI>(); ((TMP_Text)component2).margin = new Vector4(0f, 0f, val2.anchoredPosition.x * 2f, 0f); ((TMP_Text)component2).alignment = (TextAlignmentOptions)258; TextAlign(null, null); } public static void TextAlign(object? sender, EventArgs? e) { //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) TextMeshProUGUI val = HUDManager.Instance?.signalTranslatorText; if (!((Object)(object)val == (Object)null)) { if (ColdFixer.Config.SignalTranslatorText.TRANSMIT_ALIGN.Value) { ((TMP_Text)val).rectTransform.anchorMin = new Vector2(0f, 0.5f); ((TMP_Text)val).rectTransform.anchorMax = new Vector2(1f, 0.5f); ((TMP_Text)val).rectTransform.anchoredPosition = new Vector2(0f, ((TMP_Text)val).rectTransform.anchoredPosition.y); ((TMP_Text)val).rectTransform.sizeDelta = new Vector2(0f, ((TMP_Text)val).rectTransform.sizeDelta.y); ((TMP_Text)val).alignment = (TextAlignmentOptions)258; } else { ((TMP_Text)val).rectTransform.anchorMin = new Vector2(0.5f, 0.5f); ((TMP_Text)val).rectTransform.anchorMax = new Vector2(0.5f, 0.5f); ((TMP_Text)val).rectTransform.anchoredPosition = new Vector2(44.8f, ((TMP_Text)val).rectTransform.anchoredPosition.y); ((TMP_Text)val).rectTransform.sizeDelta = new Vector2(603.4f, ((TMP_Text)val).rectTransform.sizeDelta.y); ((TMP_Text)val).alignment = (TextAlignmentOptions)257; } } } } [HarmonyPatch] internal static class ToggleMute { private static GameObject MuteIcon; [HarmonyPatch(typeof(HUDManager), "Awake")] [HarmonyPostfix] private static void Awake() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) InputSetting.instance.ToggleMuteKey.performed += OnToggleMuteKeyPressed; Transform transform = new GameObject("ToggleMuteUI").transform; transform.SetParent(HUDManager.Instance.HUDContainer.transform.parent, false); Sprite iconSprite = ColdFixer.Asset.ToggleMute.IconSprite; HUDManager instance = HUDManager.Instance; MuteIcon = Tool.AddHUD("ToggleMuteIcon", iconSprite, (instance != null) ? instance.HUDContainer.transform : null); MuteIcon.transform.SetParent(transform, false); MuteIcon.transform.localPosition = new Vector3(-245f, 195f, 0f); MuteIcon.transform.localScale = new Vector3(0.28f, 0.28f, 0.28f); MuteIcon.SetActive(false); } [HarmonyPatch(typeof(HUDManager), "Update")] [HarmonyPostfix] private static void Update() { if ((Object)(object)MuteIcon != (Object)null && Object.op_Implicit((Object)(object)IngamePlayerSettings.Instance)) { MuteIcon.SetActive(!IngamePlayerSettings.Instance.settings.micEnabled); } } [HarmonyPatch(typeof(HUDManager), "UpdateSpectateBoxSpeakerIcons")] [HarmonyPostfix] private static void UpdateSpectateBoxSpeakerIcons(ref HUDManager __instance, ref Dictionary<Animator, PlayerControllerB> ___spectatingPlayerBoxes) { KeyValuePair<Animator, PlayerControllerB> keyValuePair = ___spectatingPlayerBoxes.FirstOrDefault((KeyValuePair<Animator, PlayerControllerB> x) => (Object)(object)x.Value == (Object)(object)GameNetworkManager.Instance.localPlayerController); if (StartOfRound.Instance.voiceChatModule.IsMuted) { keyValuePair.Key.SetBool("speaking", false); } } private static void OnToggleMuteKeyPressed(CallbackContext ctx) { if (!ColdFixer.Config.ToggleMute.TOGGLE_MUTE.Value || !((CallbackContext)(ref ctx)).performed || !Object.op_Implicit((Object)(object)IngamePlayerSettings.Instance) || !Object.op_Implicit((Object)(object)StartOfRound.Instance) || !Object.op_Implicit((Object)(object)StartOfRound.Instance.voiceChatModule) || !Application.isFocused || !Object.op_Implicit((Object)(object)GameNetworkManager.Instance)) { return; } PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController; if (!Object.op_Implicit((Object)(object)localPlayerController) || ColdFixer.Config.ToggleMute.TOGGLE_MUTE_IN_TERMINAL.Value || (!localPlayerController.inTerminalMenu && !localPlayerController.isTypingChat)) { IngamePlayerSettings.Instance.settings.micEnabled = !IngamePlayerSettings.Instance.settings.micEnabled; IngamePlayerSettings.Instance.SetMicrophoneEnabled(); SettingsOption val = Object.FindObjectsOfType<SettingsOption>(true).ToList().Find((SettingsOption x) => ((Object)x).name == "SpeakerButton"); val.ToggleEnabledImage(4); } } } [HarmonyPatch] internal static class UnlockView { [HarmonyPatch(typeof(Terminal), "BeginUsingTerminal")] [HarmonyPostfix] private static void BeginUsingTerminal() { PlayerControllerB local; if (ColdFixer.Config.UnlockView.UNLOCK_TERMINAL_VIEW.Value) { local = GameNetworkManager.Instance.localPlayerController; ((MonoBehaviour)local).StartCoroutine(RestoreCamera()); } IEnumerator RestoreCamera() { do { local.cameraUp = Mathf.Lerp(local.cameraUp, 0f, 5f * Time.deltaTime); yield return (object)new WaitForSeconds(Time.deltaTime); } while (Mathf.Abs(local.cameraUp) > 5f); } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPrefix] private static void Update(PlayerControllerB __instance, ref float ___cameraUp, ref Camera ___gameplayCamera) { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007e: 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_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) if (ColdFixer.Config.UnlockView.UNLOCK_TERMINAL_VIEW.Value) { if (__instance.inSpecialInteractAnimation && !__instance.isClimbingLadder && !__instance.inShockingMinigame && __instance.inTerminalMenu) { ___cameraUp /= 1f - 5f * Time.deltaTime; ((Component)___gameplayCamera).transform.localEulerAngles = new Vector3(___cameraUp, ((Component)___gameplayCamera).transform.localEulerAngles.y, ((Component)___gameplayCamera).transform.localEulerAngles.z); } if (Game.isControlling(__instance) && !__instance.inSpecialInteractAnimation && !__instance.inTerminalMenu && !__instance.isClimbingLadder) { float num = CorAngle(((Component)___gameplayCamera).transform.localEulerAngles.y); num = Mathf.Lerp(num, 0f, 5f * Time.deltaTime); ((Component)___gameplayCamera).transform.localEulerAngles = new Vector3(___cameraUp, num, ((Component)___gameplayCamera).transform.localEulerAngles.z); } } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] private static void Update(PlayerControllerB __instance, ref Camera ___gameplayCamera, ref float ___targetFOV) { if (Game.isControlling(__instance) && __instance.inTerminalMenu) { ___targetFOV = 66f; ___gameplayCamera.fieldOfView = Mathf.Lerp(___gameplayCamera.fieldOfView, ___targetFOV, 6f * Time.deltaTime); } } [HarmonyPatch(typeof(PlayerControllerB), "PlayerLookInput")] [HarmonyPrefix] private static void PlayerLookInput(ref PlayerControllerB __instance, ref bool __runOriginal, ref float ___cameraUp, ref Camera ___gameplayCamera) { //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_009c: 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_00a5: 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_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) if (!ColdFixer.Config.UnlockView.UNLOCK_TERMINAL_VIEW.Value) { return; } PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController; if (Game.isControlling(__instance) && __instance.inTerminalMenu && !__instance.isPlayerDead && __instance.isPlayerControlled && !__instance.quickMenuManager.isMenuOpen) { __runOriginal = false; MovementActions movement = localPlayerController.playerActions.Movement; Vector2 val = ((MovementActions)(ref movement)).Look.ReadValue<Vector2>() * 0.008f * (float)IngamePlayerSettings.Instance.settings.lookSensitivity; val.x = Mathf.Clamp(val.x, -15f, 15f); val.y = Mathf.Clamp(val.y, -15f, 15f); float num = CorAngle(((Component)___gameplayCamera).transform.localEulerAngles.y); num += val.x; if (num > 90f) { num = Mathf.Lerp(num, 90f, 5f * Time.deltaTime); } else if (num < -90f) { num = Mathf.Lerp(num, -90f, 5f * Time.deltaTime); } num = Mathf.Clamp(num, -150f, 150f); ___cameraUp -= val.y; ___cameraUp = Mathf.Clamp(___cameraUp, -80f, 80f); ((Component)___gameplayCamera).transform.localEulerAngles = new Vector3(___cameraUp, num, ((Component)___gameplayCamera).transform.localEulerAngles.z); } } private static float CorAngle(float angle) { return (angle > 180f) ? (angle - 360f) : angle; } } [HarmonyPatch] internal static class VoiceHUD { [HarmonyPatch(typeof(HUDManager), "Update")] [HarmonyPostfix] private static void Update() { //IL_00b8: Unknown result type (might be due to invalid IL or missing references) Settings settings = IngamePlayerSettings.Instance.settings; if (!ColdFixer.Config.VoiceHUD.VOICE_HUD.Value || !settings.micEnabled || settings.pushToTalk || !Object.op_Implicit((Object)(object)StartOfRound.Instance.voiceChatModule)) { return; } VoicePlayerState val = StartOfRound.Instance.voiceChatModule.FindPlayer(StartOfRound.Instance.voiceChatModule.LocalPlayerName); if (val.IsSpeaking) { float num = Mathf.Clamp(val.Amplitude * 35f, 0f, 1f); if (ColdFixer.Config.VoiceHUD.VOICE_HUD_DYNAMIC_OPACITY.Value) { ((Graphic)HUDManager.Instance.PTTIcon).color = new Color(1f, 1f, 1f, num); } ((Behaviour)HUDManager.Instance.PTTIcon).enabled = num > 0.01f; } } public static void ConfigChanged(object? sender, EventArgs? e) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) if ((!ColdFixer.Config.VoiceHUD.VOICE_HUD.Value || !ColdFixer.Config.VoiceHUD.VOICE_HUD_DYNAMIC_OPACITY.Value) && Object.op_Implicit((Object)(object)HUDManager.Instance)) { ((Graphic)HUDManager.Instance.PTTIcon).color = Color.white; } } } } namespace ColdFixer.Util { public static class Loader { static Loader() { Translation.Load(); ColdFixer.Asset.ToggleMute.Load(); Font.Load(); } public static void LoadAll() { } public static string GetAssemblyName() { string? fullName = Assembly.GetExecutingAssembly().FullName; return ((fullName != null) ? fullName.Split(',')[0] : null) ?? ""; } public static AssetBundle LoadAssetBundle(string name) { string name2 = GetAssemblyName() + ".Asset." + name; using Stream stream = Assembly.GetExecutingAssembly()?.GetManifestResourceStream(name2); return AssetBundle.LoadFromStream(stream); } public static XmlDocument LoadXML(string name) { string name2 = GetAssemblyName() + ".Asset." + name + ".xml"; using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(name2); string xml = ((stream != null) ? (new StreamReader(stream).ReadToEnd() ?? string.Empty) : string.Empty); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xml); return xmlDocument; } } public static class Game { public static bool isControlling(PlayerControllerB player) { if ((Object)(object)player == (Object)null) { return false; } return (((NetworkBehaviour)player).IsOwner && player.isPlayerControlled && (!((NetworkBehaviour)player).IsServer || player.isHostPlayerObject)) || player.isTestingPlayer; } public static bool isPlayer(PlayerControllerB player) { if ((Object)(object)player == (Object)null) { return false; } return (Object)(object)GameNetworkManager.Instance?.localPlayerController == (Object)(object)player; } } public static class Tool { public static object GetField<InstanceType>(InstanceType obj, string field) { return AccessTools.Field(typeof(InstanceType), field).GetValue(obj); } public static FieldType GetField<InstanceType, FieldType>(InstanceType obj, string field) { return (FieldType)AccessTools.Field(typeof(InstanceType), field).GetValue(obj); } public static void SetField<InstanceType, FieldType>(InstanceType obj, string field, FieldType temp) { AccessTools.Field(typeof(InstanceType), field).SetValue(obj, temp); } public static object InvokeMethod<InstanceType>(InstanceType obj, string method, object[]? parameter = null) { return AccessTools.Method(typeof(InstanceType), method, (Type[])null, (Type[])null).Invoke(obj, parameter); } public static GameObject AddHUD(string name, Transform? parent = null, bool WorldPositionStays = false) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown GameObject val = new GameObject(name); if ((Object)(object)parent == (Object)null) { parent = HUDManager.Instance.HUDContainer.transform; } val.transform.SetParent(parent, WorldPositionStays); return val; } public static GameObject AddHUD(string name, Sprite sprite, Transform? parent = null, bool WorldPositionStays = false) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown GameObject val = new GameObject(name); if ((Object)(object)parent == (Object)null) { HUDManager instance = HUDManager.Instance; object obj; if (instance == null) { obj = null; } else { GameObject hUDContainer = instance.HUDContainer; obj = ((hUDContainer != null) ? hUDContainer.transform : null); } parent = (Transform?)obj; } val.AddComponent<Image>().sprite = sprite; val.transform.SetParent(parent, WorldPositionStays); return val; } } public static class Translation { public static Dictionary<string, XmlDocument> LanguageData = new Dictionary<string, XmlDocument>(); public static string CurrentLangage() { return Setting.Language?.Value.ToString() ?? string.Empty; } public static void Load() { try { string[] names = Enum.GetNames(typeof(Setting.LanguageOption)); foreach (string text in names) { LanguageData.Add(text, Loader.LoadXML(text)); Plugin.LogInfo("Language pack loaded: " + text + ".xml"); } Plugin.LogInfo("Language data load complete"); } catch { throw; } } public static string Translate(string name, bool isDesc = false) { string key = Setting.Language?.Value.ToString() ?? "Korean"; if (isDesc) { name += "_DESC"; } return LanguageData[key].GetElementById(name)?.InnerText ?? string.Empty; } } } namespace ColdFixer.Config { public static class Setting { public enum LanguageOption { English, Korean } public static ConfigEntry<LanguageOption> Language; public static bool isLethalConfig; public static void BindAll() { Language = Bind("SECTION_GENERAL", "LANGUAGE", LanguageOption.Korean, null, null, RequireRestart: true); DeathCause.bind(); FontFallback.bind(); FOV.bind(); Grabbability.bind(); Intro.bind(); ItemHotkey.bind(); Lookdown.bind(); Movement.bind(); Nameplate.bind(); SignalTranslatorText.bind(); ToggleMute.bind(); UnlockView.bind(); VoiceHUD.bind(); } public static ConfigEntry<T> Bind<T>(string Section, string Key, T defaultValue, object? min = null, object? max = null, bool RequireRestart = false, float step = 0f) { //IL_0092: 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_00af: Expected O, but got Unknown //IL_00af: Expected O, but got Unknown //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Expected O, but got Unknown //IL_0120: Expected O, but got Unknown //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Expected O, but got Unknown //IL_0188: Expected O, but got Unknown //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Expected O, but got Unknown //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Expected O, but got Unknown //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Expected O, but got Unknown //IL_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Expected O, but got Unknown //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Expected O, but got Unknown //IL_0314: Unknown result type (might be due to invalid IL or missing references) //IL_031e: Expected O, but got Unknown //IL_02dc: Unknown result type (might be due to invalid IL or missing references) //IL_02e6: Expected O, but got Unknown //IL_034b: Unknown result type (might be due to invalid IL or missing references) //IL_0355: Expected O, but got Unknown //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02a2: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Expected O, but got Unknown //IL_02af: Unknown result type (might be due to invalid IL or missing references) //IL_02bc: Expected O, but got Unknown //IL_02bd: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Expected O, but got Unknown //IL_02c6: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Expected O, but got Unknown //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_0269: Expected O, but got Unknown //IL_026a: Unknown result type (might be due to invalid IL or missing references) //IL_0277: Expected O, but got Unknown //IL_0278: Unknown result type (might be due to invalid IL or missing references) //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Expected O, but got Unknown //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Expected O, but got Unknown //IL_03b1: Unknown result type (might be due to invalid IL or missing references) //IL_03bb: Expected O, but got Unknown try { if ((Object)(object)Plugin.Instance == (Object)null) { throw new Exception("Plugin is not Constructed"); } if ((min != null && typeof(T) != min.GetType()) || (max != null && typeof(T) != max.GetType())) { throw new ArgumentException("INVALID MIN OR MAX VALUE TYPE"); } bool flag = false; if (min != null && max != null) { flag = true; } ConfigEntry<T> val = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<T>(new ConfigDefinition(Translation.Translate(Section), Translation.Translate(Key)), defaultValue, new ConfigDescription(Translation.Translate(Key, isDesc: true), (AcceptableValueBase)null, Array.Empty<object>())); if (flag) { if (typeof(T).IsEquivalentTo(typeof(int))) { val = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<T>(new ConfigDefinition(Translation.Translate(Section), Translation.Translate(Key)), defaultValue, new ConfigDescription(Translation.Translate(Key, isDesc: true), (AcceptableValueBase)(object)new AcceptableValueRange<int>((int)min, (int)max), Array.Empty<object>())); } else if (typeof(T).IsEquivalentTo(typeof(float))) { val = ((BaseUnityPlugin)Plugin.Instance).Config.Bind<T>(new ConfigDefinition(Translation.Translate(Section), Translation.Translate(Key)), defaultValue, new ConfigDescription(Translation.Translate(Key, isDesc: true), (AcceptableValueBase)(object)new AcceptableValueRange<float>((float)min, (float)max), Array.Empty<object>())); } } if (isLethalConfig) { if (typeof(T).IsEquivalentTo(typeof(int))) { if (flag) { ConfigEntry<int> obj = val as ConfigEntry<int>; IntSliderOptions val2 = new IntSliderOptions(); ((BaseRangeOptions<int>)val2).Min = (int)min; ((BaseRangeOptions<int>)val2).Max = (int)max; ((BaseOptions)val2).RequiresRestart = RequireRestart; LethalConfigManager.AddConfigItem((BaseConfigItem)new IntSliderConfigItem(obj, val2)); } else { LethalConfigManager.AddConfigItem((BaseConfigItem)new IntInputFieldConfigItem(val as ConfigEntry<int>, RequireRestart)); } } else if (typeof(T).IsEquivalentTo(typeof(float))) { if (flag) { if (step > 0f) { ConfigEntry<float> obj2 = val as ConfigEntry<float>; FloatStepSliderOptions val3 = new FloatStepSliderOptions(); ((BaseRangeOptions<float>)val3).Min = (float)min; ((BaseRangeOptions<float>)val3).Max = (float)max; val3.Step = step; ((BaseOptions)val3).RequiresRestart = RequireRestart; LethalConfigManager.AddConfigItem((BaseConfigItem)new FloatStepSliderConfigItem(obj2, val3)); } else { ConfigEntry<float> obj3 = val as ConfigEntry<float>; FloatSliderOptions val4 = new FloatSliderOptions(); ((BaseRangeOptions<float>)val4).Min = (float)min; ((BaseRangeOptions<float>)val4).Max = (float)max; ((BaseOptions)val4).RequiresRestart = RequireRestart; LethalConfigManager.AddConfigItem((BaseConfigItem)new FloatSliderConfigItem(obj3, val4)); } } else { LethalConfigManager.AddConfigItem((BaseConfigItem)new FloatInputFieldConfigItem(val as ConfigEntry<float>, RequireRestart)); } } else if (typeof(T).IsEquivalentTo(typeof(bool))) { LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(val as ConfigEntry<bool>, RequireRestart)); } else if (typeof(T).IsEquivalentTo(typeof(string))) { LethalConfigManager.AddConfigItem((BaseConfigItem)new TextInputFieldConfigItem(val as ConfigEntry<string>, RequireRestart)); } else if (typeof(T).IsEnum) { Type settingType = ((ConfigEntryBase)val).SettingType; Type type = typeof(EnumDropDownConfigItem<>).MakeGenericType(settingType); object obj4 = Activator.CreateInstance(type, val, RequireRestart); LethalConfigManager.AddConfigItem((BaseConfigItem)obj4); } } return val; } catch (Exception ex) { Plugin.LogError(ex.StackTrace); throw ex; } } } public class InputSetting : LcInputActions { public static InputSetting instance = new InputSetting(); [InputAction("<Keyboard>/m", Name = "Toggle Mute")] public InputAction ToggleMuteKey { get; set; } [InputAction("<Keyboard>/f", Name = "Flashlight")] public InputAction FlashLightKey { get; set; } [InputAction("<Keyboard>/r", Name = "Wakie-Talkie")] public InputAction WalkieTalkieKey { get; set; } } internal static class DeathCause { public static ConfigEntry<bool>? SPECTATE_DEATH_CAUSE; public static void bind() { SPECTATE_DEATH_CAUSE = Setting.Bind("SECTION_COMMUNICATION", "SPECTATE_DEATH_CAUSE", defaultValue: false); } } internal static class FontFallback { public static ConfigEntry<bool>? NORMAL_FONT_FALLBACK; public static ConfigEntry<bool>? TRANSMIT_FONT_FALLBACK; public static void bind() { NORMAL_FONT_FALLBACK = Setting.Bind("SECTION_FONT", "NORMAL_FONT_FALLBACK", defaultValue: true); TRANSMIT_FONT_FALLBACK = Setting.Bind("SECTION_FONT", "TRANSMIT_FONT_FALLBACK", defaultValue: true); } } internal static class FOV { public static ConfigEntry<int>? FOV_NORMAL; public static ConfigEntry<int>? FOV_TERMINAL; public static ConfigEntry<int>? FOV_SPRINT; public static ConfigEntry<bool>? HIDE_VISOR; public static void bind() { FOV_NORMAL = Setting.Bind("SECTION_SIGHT", "FOV_NORMAL", 66, 30, 120); FOV_TERMINAL = Setting.Bind("SECTION_SIGHT", "FOV_TERMINAL", 60, 30, 120); FOV_SPRINT = Setting.Bind("SECTION_SIGHT", "FOV_SPRINT", 68, 30, 120); HIDE_VISOR = Setting.Bind("SECTION_SIGHT", "HIDE_VISOR", defaultValue: false); HIDE_VISOR.SettingChanged += ColdFixer.Patch.FOV.ConfigChanged; } } internal static class Grabbability { public static ConfigEntry<bool>? GRAB_BEFORE_START; public static void bind() { GRAB_BEFORE_START = Setting.Bind("SECTION_ACTION", "GRAB_BEFORE_START", defaultValue: true); } } internal static class Intro { public enum ModeOption { None, Online, Local } public static ConfigEntry<bool>? SKIP_SPLASH; public static ConfigEntry<bool>? SKIP_BOOTING_ANIMATION; public static ConfigEntry<ModeOption>? PRESELECTED_MODE; public static ConfigEntry<bool>? BLOCK_NEWS; public static ConfigEntry<bool>? BLOCK_LAN_WARNING; public static ConfigEntry<bool>? BLOCK_OFFLINE_WARNING; public static ConfigEntry<bool>? REMOVE_CREDITS_BUTTON; public static void bind() { SKIP_SPLASH = Setting.Bind("SECTION_INTRO", "SKIP_SPLASH", defaultValue: false); SKIP_BOOTING_ANIMATION = Setting.Bind("SECTION_INTRO", "SKIP_BOOTING_ANIMATION", defaultValue: false); PRESELECTED_MODE = Setting.Bind("SECTION_INTRO", "PRESELECTED_MODE", ModeOption.None); BLOCK_NEWS = Setting.Bind("SECTION_INTRO", "BLOCK_NEWS", defaultValue: false); BLOCK_LAN_WARNING = Setting.Bind("SECTION_INTRO", "BLOCK_LAN_WARNING", defaultValue: false); BLOCK_OFFLINE_WARNING = Setting.Bind("SECTION_INTRO", "BLOCK_OFFLINE_WARNING", defaultValue: false); REMOVE_CREDITS_BUTTON = Setting.Bind("SECTION_INTRO", "REMOVE_CREDITS_BUTTON", defaultValue: false); } } internal static class ItemHotkey { public static ConfigEntry<bool>? HOTKEY_FLASHLIGHT; public static ConfigEntry<bool>? HOTKEY_WALKIE_TALKIE; public static void bind() { HOTKEY_FLASHLIGHT = Setting.Bind("SECTION_HOTKEY", "HOTKEY_FLASHLIGHT", defaultValue: false); HOTKEY_WALKIE_TALKIE = Setting.Bind("SECTION_HOTKEY", "HOTKEY_WALKIE_TALKIE", defaultValue: false); } } internal static class Lookdown { public static ConfigEntry<bool>? LOOKDOWN_FIX; public static void bind() { LOOKDOWN_FIX = Setting.Bind("SECTION_SIGHT", "LOOKDOWN_FIX", defaultValue: true); } } internal static class Movement { public static ConfigEntry<bool>? NO_JUMP_DELAY; public static ConfigEntry<bool>? SPRINT_ON_LADDER; public static ConfigEntry<bool>? AUTO_LADDER_UNSNAP; public static void bind() { NO_JUMP_DELAY = Setting.Bind("SECTION_ACTION", "NO_JUMP_DELAY", defaultValue: false); SPRINT_ON_LADDER = Setting.Bind("SECTION_ACTION", "SPRINT_ON_LADDER", defaultValue: false); AUTO_LADDER_UNSNAP = Setting.Bind("SECTION_ACTION", "AUTO_LADDER_UNSNAP", defaultValue: false); } } internal static class Nameplate { public static ConfigEntry<int>? NAMEPLATE_DISTANCE; public static ConfigEntry<bool>? NAMEPLATE_DYNAMIC_SCALING; public static ConfigEntry<bool>? NAMEPLATE_DYNAMIC_OPACITY; public static ConfigEntry<bool>? NAMEPLATE_VOICE_INDICATOR; public static void bind() { NAMEPLATE_DISTANCE = Setting.Bind("SECTION_COMMUNICATION", "NAMEPLATE_DISTANCE", 20, 0, 40); NAMEPLATE_DYNAMIC_SCALING = Setting.Bind("SECTION_COMMUNICATION", "NAMEPLATE_DYNAMIC_SCALING", defaultValue: false); NAMEPLATE_DYNAMIC_OPACITY = Setting.Bind("SECTION_COMMUNICATION", "NAMEPLATE_DYNAMIC_OPACITY", defaultValue: false); NAMEPLATE_VOICE_INDICATOR = Setting.Bind("SECTION_COMMUNICATION", "NAMEPLATE_VOICE_INDICATOR", defaultValue: false); } } internal static class SignalTranslatorText { public static ConfigEntry<bool>? TRANSMIT_ALIGN; public static ConfigEntry<bool>? TRANSMIT_FAST; public static void bind() { TRANSMIT_ALIGN = Setting.Bind("SECTION_FONT", "TRANSMIT_ALIGN", defaultValue: false); TRANSMIT_FAST = Setting.Bind("SECTION_FONT", "TRANSMIT_FAST", defaultValue: false); TRANSMIT_ALIGN.SettingChanged += ColdFixer.Patch.SignalTranslatorText.TextAlign; } } internal static class ToggleMute { public static ConfigEntry<bool>? TOGGLE_MUTE; public static ConfigEntry<bool>? TOGGLE_MUTE_IN_TERMINAL; public static void bind() { TOGGLE_MUTE = Setting.Bind("SECTION_HOTKEY", "TOGGLE_MUTE", defaultValue: false); TOGGLE_MUTE_IN_TERMINAL = Setting.Bind("SECTION_HOTKEY", "TOGGLE_MUTE_IN_TERMINAL", defaultValue: false); } } internal static class UnlockView { public static ConfigEntry<bool>? UNLOCK_TERMINAL_VIEW; public static void bind() { UNLOCK_TERMINAL_VIEW = Setting.Bind("SECTION_SIGHT", "UNLOCK_TERMINAL_VIEW", defaultValue: false); } } internal static class VoiceHUD { public static ConfigEntry<bool>? VOICE_HUD; public static ConfigEntry<bool>? VOICE_HUD_DYNAMIC_OPACITY; public static void bind() { VOICE_HUD = Setting.Bind("SECTION_COMMUNICATION", "VOICE_HUD", defaultValue: false); VOICE_HUD_DYNAMIC_OPACITY = Setting.Bind("SECTION_COMMUNICATION", "VOICE_HUD_DYNAMIC_OPACITY", defaultValue: false); VOICE_HUD.SettingChanged += ColdFixer.Patch.VoiceHUD.ConfigChanged; VOICE_HUD_DYNAMIC_OPACITY.SettingChanged += ColdFixer.Patch.VoiceHUD.ConfigChanged; } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }