using 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)
{
}
}
}