Decompiled source of ModdedCompany0 v0.0.8
BepInEx/plugins/plugins/BetterClock.dll
Decompiled a day agousing System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using GameNetcodeStuff; using HarmonyLib; using TMPro; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("BetterClock")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("BetterClock")] [assembly: AssemblyCopyright("Copyright © BlueAmulet 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("de27b4d1-820d-4505-a953-6001420281e4")] [assembly: AssemblyFileVersion("1.0.3")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.3.0")] namespace BetterClock { [BepInPlugin("BlueAmulet.BetterClock", "BetterClock", "1.0.3")] public class BetterClock : BaseUnityPlugin { internal const string Name = "BetterClock"; internal const string Author = "BlueAmulet"; internal const string ID = "BlueAmulet.BetterClock"; internal const string Version = "1.0.3"; public void Awake() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) Settings.InitConfig(((BaseUnityPlugin)this).Config); Harmony val = new Harmony("BlueAmulet.BetterClock"); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Applying Harmony patches"); val.PatchAll(Assembly.GetExecutingAssembly()); int num = 0; foreach (MethodBase patchedMethod in val.GetPatchedMethods()) { ((BaseUnityPlugin)this).Logger.LogInfo((object)("Patched " + patchedMethod.DeclaringType.Name + "." + patchedMethod.Name)); num++; } ((BaseUnityPlugin)this).Logger.LogInfo((object)(num + " patches applied")); } } internal static class Settings { internal static ConfigEntry<bool> compact; internal static ConfigEntry<bool> leadingZero; internal static ConfigEntry<bool> darkZero; internal static ConfigEntry<bool> fasterUpdate; internal static ConfigEntry<bool> raiseClock; internal static ConfigEntry<bool> hours24; internal static ConfigEntry<bool> properTime; internal static ConfigEntry<float> visibilityShip; internal static ConfigEntry<float> visibilityOutside; internal static ConfigEntry<float> visibilityInside; internal static ConfigEntry<float> visibilityOverride; internal static ConfigEntry<KeyboardShortcut> overrideKeybind; internal static ConfigEntry<bool> overrideToggle; public static void InitConfig(ConfigFile config) { //IL_0144: Unknown result type (might be due to invalid IL or missing references) compact = config.Bind<bool>("Clock", "CompactClock", true, "Makes the clock more compact"); leadingZero = config.Bind<bool>("Clock", "LeadingZero", true, "Adds a leading zero to hours before 10"); darkZero = config.Bind<bool>("Clock", "DarkZero", true, "Leading zeros are dark"); fasterUpdate = config.Bind<bool>("Clock", "FasterUpdate", true, "Update the clock more often"); raiseClock = config.Bind<bool>("Clock", "RaiseClock", true, "Raise the clock near the top of the screen"); hours24 = config.Bind<bool>("Clock", "24Hours", false, "Use 24 hour time"); properTime = config.Bind<bool>("Clock", "ProperTime", true, "Fix time formatting caused by the game or other mods"); visibilityShip = config.Bind<float>("Clock", "VisibilityShip", 1f, "Visibility of clock inside ship"); visibilityOutside = config.Bind<float>("Clock", "VisibilityOutside", 1f, "Visibility of clock outside"); visibilityInside = config.Bind<float>("Clock", "VisibilityInside", 0.25f, "Visibility of clock inside factory"); visibilityOverride = config.Bind<float>("Clock", "VisibilityOverride", 1f, "Visibility when using override keybind"); overrideKeybind = config.Bind<KeyboardShortcut>("Clock", "OverrideKeybind", KeyboardShortcut.Empty, "Keybind to trigger visibility override"); overrideToggle = config.Bind<bool>("Clock", "OverrideToggle", false, "Switch the override keybind between toggle or hold"); } } } namespace BetterClock.Patches { [HarmonyPatch(typeof(HUDManager))] internal static class ClockPatch { private static int lastTime = -1; private static bool overrideDisplay = false; [HarmonyPostfix] [HarmonyPatch("Awake")] public static void PostfixAwake(ref HUDManager __instance) { //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00af: 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_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) if (!Settings.compact.Value) { return; } Transform parent = ((TMP_Text)__instance.clockNumber).transform.parent; if (Settings.raiseClock.Value) { Dictionary<string, PluginInfo> pluginInfos = Chainloader.PluginInfos; if (pluginInfos.ContainsKey("SolosRingCompass") || pluginInfos.ContainsKey("LineCompassPlugin")) { parent.localPosition += new Vector3(0f, 20f, 0f); } else { parent.localPosition += new Vector3(0f, 40f, 0f); } } RectTransform component = ((Component)parent).GetComponent<RectTransform>(); component.sizeDelta = new Vector2(component.sizeDelta.x, 50f); ((TMP_Text)__instance.clockNumber).enableWordWrapping = false; RectTransform component2 = ((Component)__instance.clockIcon).GetComponent<RectTransform>(); component2.sizeDelta *= 0.6f; if (!Settings.hours24.Value) { Transform transform = ((TMP_Text)__instance.clockNumber).transform; transform.localPosition += new Vector3(10f, -1f, 0f); Transform transform2 = ((Component)__instance.clockIcon).transform; transform2.localPosition += new Vector3(-25f, -2f, 0f); } } [HarmonyPrefix] [HarmonyPatch("SetClockVisible")] public static bool PrefixVisible(ref HUDManager __instance) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) KeyboardShortcut value = Settings.overrideKeybind.Value; if (Settings.overrideToggle.Value) { if (((KeyboardShortcut)(ref value)).IsDown()) { overrideDisplay = !overrideDisplay; } } else { overrideDisplay = ((KeyboardShortcut)(ref value)).IsPressed(); } if (overrideDisplay) { __instance.Clock.targetAlpha = Settings.visibilityOverride.Value; return false; } GameNetworkManager instance = GameNetworkManager.Instance; PlayerControllerB val = null; if ((Object)(object)instance != (Object)null) { val = instance.localPlayerController; } if ((Object)(object)val != (Object)null) { if (val.isInHangarShipRoom) { __instance.Clock.targetAlpha = Settings.visibilityShip.Value; } else if (val.isInsideFactory) { __instance.Clock.targetAlpha = Settings.visibilityInside.Value; } else { __instance.Clock.targetAlpha = Settings.visibilityOutside.Value; } return false; } return true; } [HarmonyPostfix] [HarmonyPatch("SetClock")] public static void PostfixSetClock(ref HUDManager __instance, ref float timeNormalized, ref float numberOfHours) { int num = (int)(timeNormalized * (60f * numberOfHours)) + 360; int num2 = num / 60 % 24; int num3 = num % 60; string text = ((!Settings.hours24.Value) ? ((TMP_Text)__instance.clockNumber).text : $"{num2}:{num3:00}"); if (Settings.properTime.Value) { if (text.Length >= 3 && text[0] == '0' && text[2] == ':') { text = text.Substring(1); } else if (text.StartsWith("24:")) { text = "0:" + text.Substring(3); } if (text.StartsWith("0:") && text.EndsWith("M")) { text = "12:" + text.Substring(2); } if (num2 < 12 && text.EndsWith("PM")) { text = text.Substring(0, text.Length - 2) + "AM"; } else if (num2 >= 12 && text.EndsWith("AM")) { text = text.Substring(0, text.Length - 2) + "PM"; } } if (Settings.compact.Value) { text = text.Replace('\n', ' ').Replace(" ", " "); } if (Settings.leadingZero.Value && (text.Length <= 4 || text.Length == 7)) { text = ((!Settings.darkZero.Value) ? ("0" + text) : ("<color=#602000>0</color>" + text)); } ((TMP_Text)__instance.clockNumber).text = text; } [HarmonyPostfix] [HarmonyPatch(typeof(TimeOfDay))] [HarmonyPatch("MoveTimeOfDay")] public static void PostfixMoveTimeOfDay(ref TimeOfDay __instance, ref float ___changeHUDTimeInterval) { if (Settings.fasterUpdate.Value) { int num = (int)(__instance.normalizedTimeOfDay * (60f * (float)__instance.numberOfHours)); if (num != lastTime) { lastTime = num; HUDManager.Instance.SetClock(__instance.normalizedTimeOfDay, (float)__instance.numberOfHours, true); ___changeHUDTimeInterval = 0f; } } } } }
BepInEx/plugins/plugins/BetterStamina.dll
Decompiled a day agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Versioning; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using BetterStamina.Config; using BetterStamina.Patches; using GameNetcodeStuff; using HarmonyLib; using Unity.Collections; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("BetterStamina")] [assembly: AssemblyDescription("Mod made by flipf17")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("BetterStamina")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("1c42022e-b386-4342-baf0-67de1b7529e2")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace BetterStamina { [BepInPlugin("FlipMods.BetterStamina", "BetterStamina", "1.5.7")] public class Plugin : BaseUnityPlugin { private Harmony _harmony; public static Plugin instance; private static ManualLogSource logger; private void Awake() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown instance = this; CreateCustomLogger(); ConfigSettings.BindConfigSettings(); _harmony = new Harmony("BetterStamina"); PatchAll(); Log("BetterStamina loaded"); } private void PatchAll() { IEnumerable<Type> enumerable; try { enumerable = Assembly.GetExecutingAssembly().GetTypes(); } catch (ReflectionTypeLoadException ex) { enumerable = ex.Types.Where((Type t) => t != null); } foreach (Type item in enumerable) { _harmony.PatchAll(item); } } private void CreateCustomLogger() { try { logger = Logger.CreateLogSource(string.Format("{0}-{1}", "BetterStamina", "1.5.7")); } catch { logger = ((BaseUnityPlugin)this).Logger; } } public static void Log(string message) { logger.LogInfo((object)message); } public static void LogError(string message) { logger.LogError((object)message); } public static void LogWarning(string message) { logger.LogWarning((object)message); } public static bool IsModLoaded(string guid) { return Chainloader.PluginInfos.ContainsKey(guid); } } public static class PluginInfo { public const string PLUGIN_GUID = "FlipMods.BetterStamina"; public const string PLUGIN_NAME = "BetterStamina"; public const string PLUGIN_VERSION = "1.5.7"; } } namespace BetterStamina.Patches { [HarmonyPatch] public static class PlayerSpeedPatch { private static float defaultMovementSpeed = -1f; private static float defaultCrouchSpeed = 0.6666666f; private static float defaultSprintSpeed = 2.25f; private static float defaultLimpMultiplier = -1f; private static float defaultClimbSpeed = -1f; private static float defaultJumpForce = 5f; private static Dictionary<PlayerControllerB, float> previousPlayerMovementSpeeds = new Dictionary<PlayerControllerB, float>(); private static Dictionary<PlayerControllerB, float> previousPlayerClimbSpeeds = new Dictionary<PlayerControllerB, float>(); private static PlayerControllerB localPlayerController => StartOfRound.Instance?.localPlayerController; internal static void OnSyncedWithHost() { PatchLocalPlayerController(); } private static void PatchLocalPlayerController() { if (Object.op_Implicit((Object)(object)localPlayerController)) { float num = ConfigSync.instance.jumpForceMultiplier; if (localPlayerController.drunkness > 0f) { num *= ConfigSync.instance.drunkJumpForceMultiplier; } PlayerControllerB obj = localPlayerController; obj.jumpForce *= Mathf.Pow(num, 0.55f); } } [HarmonyPatch(typeof(StartOfRound), "Start")] [HarmonyPostfix] private static void Init() { previousPlayerMovementSpeeds?.Clear(); previousPlayerClimbSpeeds?.Clear(); } [HarmonyPatch(typeof(PlayerControllerB), "Start")] [HarmonyPostfix] private static void InitPlayer(PlayerControllerB __instance) { if (ConfigSync.isSynced && (Object)(object)__instance == (Object)(object)localPlayerController) { PatchLocalPlayerController(); } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPrefix] private static void UpdatePrefix(ref bool ___isPlayerControlled, ref bool ___isWalking, ref bool ___isCrouching, ref bool ___isSprinting, ref bool ___isClimbingLadder, ref bool ___isInsideFactory, ref float ___movementSpeed, ref float ___sprintMultiplier, ref float ___climbSpeed, ref float ___drunkness, PlayerControllerB __instance) { previousPlayerMovementSpeeds[__instance] = ___movementSpeed; previousPlayerClimbSpeeds[__instance] = ___climbSpeed; if (!___isPlayerControlled || !ConfigSync.isSynced) { return; } ___movementSpeed *= ConfigSync.instance.walkSpeedMultiplier; if (___isCrouching) { ___movementSpeed *= ConfigSync.instance.crouchSpeedMultiplier / defaultCrouchSpeed; } ___movementSpeed *= (___isInsideFactory ? ConfigSync.instance.speedMultiplierInsideFactory : ConfigSync.instance.speedMultiplierOutsideFactory); ___climbSpeed *= ConfigSync.instance.ladderClimbSpeedMultiplier; if (___isClimbingLadder & ___isSprinting) { ___climbSpeed *= ConfigSync.instance.ladderSprintSpeedMultiplier; } if (___drunkness > 0f) { ___movementSpeed *= ConfigSync.instance.drunkSpeedMultiplier; ___climbSpeed *= ConfigSync.instance.drunkSpeedMultiplier; } if ((Object)(object)__instance == (Object)(object)StartOfRound.Instance?.localPlayerController) { float num = Mathf.Max((ConfigSync.instance.sprintSpeedMultiplier - defaultSprintSpeed) / defaultSprintSpeed, 0f); if (___isSprinting) { ___sprintMultiplier = Mathf.Lerp(___sprintMultiplier, ConfigSync.instance.sprintSpeedMultiplier, Time.deltaTime * num * 0.5f); } else if (!___isWalking) { ___sprintMultiplier = (ConfigSync.instance.enableInstantSprinting ? 1f : Mathf.Lerp(___sprintMultiplier, 1f, Time.deltaTime * 10f * (1f + num * 0.1f))); } else { ___sprintMultiplier = (ConfigSync.instance.enableInstantSprinting ? 1f : Mathf.Lerp(___sprintMultiplier, 1f, Time.deltaTime * 10f * num * 0.1f)); } } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] private static void UpdatePostfix(ref float ___movementSpeed, ref float ___climbSpeed, PlayerControllerB __instance) { if (ConfigSync.isSynced && previousPlayerMovementSpeeds.ContainsKey(__instance)) { ___movementSpeed = previousPlayerMovementSpeeds[__instance]; ___climbSpeed = previousPlayerClimbSpeeds[__instance]; } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyTranspiler] private static IEnumerable<CodeInstruction> SpoofSprintMultiplierUpdate(IEnumerable<CodeInstruction> instructions) { //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown List<CodeInstruction> list = new List<CodeInstruction>(instructions); MethodInfo method = typeof(PlayerSpeedPatch).GetMethod("GetAdjustedSprintMultiplier", BindingFlags.Static | BindingFlags.Public); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldc_R4 && list[i].operand is float num && num == defaultSprintSpeed) { list[i] = new CodeInstruction(OpCodes.Call, (object)method); } } return list.AsEnumerable(); } public static float GetAdjustedSprintMultiplier() { if ((Object)(object)StartOfRound.Instance?.localPlayerController == (Object)null || !ConfigSync.isSynced) { return defaultSprintSpeed; } return ConfigSync.instance.sprintSpeedMultiplier; } } [HarmonyPatch(typeof(PlayerControllerB))] public static class PlayerWeightPenaltyPatch { [HarmonyPatch("Update")] [HarmonyTranspiler] private static IEnumerable<CodeInstruction> SpoofWeightValuesUpdate(IEnumerable<CodeInstruction> instructions) { //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Expected O, but got Unknown if (Plugin.IsModLoaded("com.malco.lethalcompany.moreshipupgrades")) { return instructions; } bool flag = false; List<CodeInstruction> list = new List<CodeInstruction>(instructions); FieldInfo field = typeof(PlayerControllerB).GetField("carryWeight", BindingFlags.Instance | BindingFlags.Public); MethodInfo method = typeof(PlayerWeightPenaltyPatch).GetMethod("GetAdjustedWeight", BindingFlags.Static | BindingFlags.Public); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldfld && (FieldInfo)list[i].operand == field) { list[i] = new CodeInstruction(OpCodes.Call, (object)method); list.RemoveAt(i - 1); flag = true; } } if (!flag) { Plugin.LogError("Failed to apply Transpiler patch on PlayerControllerB.Update. Modified carry weight penalty may not work as intended."); } return list.AsEnumerable(); } [HarmonyPatch("LateUpdate")] [HarmonyTranspiler] private static IEnumerable<CodeInstruction> SpoofWeightValuesLateUpdate(IEnumerable<CodeInstruction> instructions) { //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Expected O, but got Unknown if (Plugin.IsModLoaded("com.malco.lethalcompany.moreshipupgrades")) { return instructions; } bool flag = false; List<CodeInstruction> list = new List<CodeInstruction>(instructions); FieldInfo field = typeof(PlayerControllerB).GetField("carryWeight", BindingFlags.Instance | BindingFlags.Public); MethodInfo method = typeof(PlayerWeightPenaltyPatch).GetMethod("GetAdjustedWeight", BindingFlags.Static | BindingFlags.Public); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldfld && (FieldInfo)list[i].operand == field) { list[i] = new CodeInstruction(OpCodes.Call, (object)method); list.RemoveAt(i - 1); flag = true; } } if (!flag) { Plugin.LogError("Failed to apply Transpiler patch on PlayerControllerB.LateUpdate. Modified carry weight penalty may not work as intended."); } return list.AsEnumerable(); } public static float GetAdjustedWeight() { if ((Object)(object)StartOfRound.Instance?.localPlayerController == (Object)null) { return 1f; } float num = StartOfRound.Instance.localPlayerController.carryWeight - 1f; return num * ConfigSync.instance.carryWeightPenaltyMultiplier + 1f; } } [HarmonyPatch(typeof(PlayerControllerB))] public static class PlayerStaminaPatch { private static float previousSprintMeter; [HarmonyPatch("LateUpdate")] [HarmonyPrefix] private static void LateUpdatePrefix(ref bool ___isPlayerControlled, ref float ___sprintMeter, PlayerControllerB __instance) { if (___isPlayerControlled && (Object)(object)__instance == (Object)(object)StartOfRound.Instance?.localPlayerController) { previousSprintMeter = ___sprintMeter; } } [HarmonyPatch("LateUpdate")] [HarmonyPostfix] private static void LateUpdatePostfix(ref bool ___isPlayerControlled, ref bool ___isWalking, ref bool ___isCrouching, ref bool ___isSprinting, ref bool ___isClimbingLadder, ref bool ___isInsideFactory, ref float ___sprintMeter, ref float ___drunkness, PlayerControllerB __instance) { if (!((ConfigSync.isSynced && (Object)(object)__instance == (Object)(object)StartOfRound.Instance?.localPlayerController) & ___isPlayerControlled)) { return; } float num = 1f; float num2 = ___sprintMeter - previousSprintMeter; if (num2 < 0f) { if (___isSprinting) { num *= ConfigSync.instance.sprintStaminaConsumptionMultiplier; } if (___drunkness > 0f) { num *= ConfigSync.instance.drunkStaminaConsumptionMultiplier; } num *= (___isInsideFactory ? ConfigSync.instance.staminaRegenMultiplierInsideFactory : ConfigSync.instance.staminaRegenMultiplierOutsideFactory); } else if (num2 > 0f) { num *= ((!___isWalking && !___isSprinting && !___isClimbingLadder) ? ConfigSync.instance.idleStaminaRegenMultiplier : ConfigSync.instance.walkStaminaRegenMultiplier); if (___isCrouching) { num *= ConfigSync.instance.crouchStaminaRegenMultiplier; } if (___drunkness > 0f) { num *= ConfigSync.instance.drunkStaminaRegenMultiplier; } num *= (___isInsideFactory ? ConfigSync.instance.staminaConsumptionMultiplierInsideFactory : ConfigSync.instance.staminaConsumptionMultiplierOutsideFactory); } if (num != 1f) { ___sprintMeter = Mathf.Clamp(previousSprintMeter + num2 * num, 0f, 1f); } } [HarmonyPatch("Jump_performed")] [HarmonyPrefix] private static void JumpPerformedPrefix(ref bool ___isPlayerControlled, ref float ___sprintMeter, PlayerControllerB __instance) { if (((Object)(object)__instance == (Object)(object)StartOfRound.Instance?.localPlayerController) & ___isPlayerControlled) { previousSprintMeter = ___sprintMeter; } else { previousSprintMeter = -1f; } } [HarmonyPatch("Jump_performed")] [HarmonyPostfix] private static void JumpPerformedPostfix(ref bool ___isPlayerControlled, ref bool ___isInsideFactory, ref float ___sprintMeter, ref float ___drunkness, PlayerControllerB __instance) { if (!((ConfigSync.isSynced && (Object)(object)__instance == (Object)(object)StartOfRound.Instance?.localPlayerController) & ___isPlayerControlled) || !(previousSprintMeter >= 0f)) { return; } float num = ___sprintMeter - previousSprintMeter; if (num < 0f) { float num2 = ConfigSync.instance.jumpStaminaConsumptionMultiplier; if (___drunkness > 0f) { num2 *= ConfigSync.instance.drunkStaminaConsumptionMultiplier; } num2 *= (___isInsideFactory ? ConfigSync.instance.staminaConsumptionMultiplierInsideFactory : ConfigSync.instance.staminaConsumptionMultiplierOutsideFactory); if (num2 != 1f) { ___sprintMeter = Mathf.Max(previousSprintMeter + num * num2, 0f); } } } } } namespace BetterStamina.Config { [Serializable] public static class ConfigSettings { public static ConfigEntry<float> carryWeightPenaltyMultiplierConfig; public static ConfigEntry<float> idleStaminaRegenMultiplierConfig; public static ConfigEntry<float> walkStaminaRegenMultiplierConfig; public static ConfigEntry<float> crouchStaminaRegenMultiplierConfig; public static ConfigEntry<float> drunkStaminaRegenMultiplierConfig; public static ConfigEntry<float> sprintStaminaConsumptionMultiplierConfig; public static ConfigEntry<float> jumpStaminaConsumptionMultiplierConfig; public static ConfigEntry<float> drunkStaminaConsumptionMultiplierConfig; public static ConfigEntry<float> walkSpeedMultiplierConfig; public static ConfigEntry<float> crouchSpeedMultiplierConfig; public static ConfigEntry<float> sprintSpeedMultiplierConfig; public static ConfigEntry<float> limpSpeedMultiplierConfig; public static ConfigEntry<float> ladderClimbSpeedMultiplierConfig; public static ConfigEntry<float> ladderSprintSpeedMultiplierConfig; public static ConfigEntry<float> drunkSpeedMultiplierConfig; public static ConfigEntry<bool> enableInstantSprintingConfig; public static ConfigEntry<float> jumpForceMultiplierConfig; public static ConfigEntry<float> drunkJumpForceMultiplierConfig; public static ConfigEntry<float> staminaRegenMultiplierInsideFactoryConfig; public static ConfigEntry<float> staminaRegenMultiplierOutsideFactoryConfig; public static ConfigEntry<float> staminaConsumptionMultiplierInsideFactoryConfig; public static ConfigEntry<float> staminaConsumptionMultiplierOutsideFactoryConfig; public static ConfigEntry<float> speedMultiplierInsideFactoryConfig; public static ConfigEntry<float> speedMultiplierOutsideFactoryConfig; public static Dictionary<string, ConfigEntryBase> currentConfigEntries = new Dictionary<string, ConfigEntryBase>(); public static List<ConfigEntryBase> configEntries = new List<ConfigEntryBase>(); public static void BindConfigSettings() { Plugin.Log("Binding Configs"); carryWeightPenaltyMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("CarryWeight", "CarryWeightPenaltyMultiplier", 0.5f, "[Host-only] Multiplier for how much your speed/stamina consumption are affected by weight. (Lower is better/forgiving)")); idleStaminaRegenMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Stamina Regen", "IdleStaminaRegenMultiplier", 1.4f, "[Host-only] Multiplier for how fast your stamina regens while idle.")); walkStaminaRegenMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Stamina Regen", "WalkStaminaRegenMultiplier", 1.25f, "[Host-only] Multiplier for how fast your stamina regens while walking.")); crouchStaminaRegenMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Stamina Regen", "CrouchStaminaRegenMultiplier", 1.2f, "[Host-only] Multiplier for how fast your stamina regens while crouching.\nThis will be applied on top of other stamina regen modifiers.\nExample multiplier while crouching and idle: 1.4 * 1.25 = 1.75")); drunkStaminaRegenMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Stamina Regen", "DrunkStaminaRegenMultiplier", 1f, "[Host-only] Multiplier for how fast your stamina regens while drunk.\nThis will be applied on top of other stamina regen modifiers.")); sprintStaminaConsumptionMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Stamina Consumption", "SprintStaminaConsumptionMultiplier", 0.75f, "[Host-only] Multiplier for how much stamina drains while sprinting.")); jumpStaminaConsumptionMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Stamina Consumption", "JumpStaminaConsumptionMultiplier", 0.75f, "[Host-only] Multiplier for how much stamina jumping consumes.")); drunkStaminaConsumptionMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Stamina Consumption", "DrunkStaminaConsumptionMultiplier", 1f, "[Host-only] Multiplier for how much stamina drains while drunk.\nThis will be applied on top of other stamina consumption modifiers.")); walkSpeedMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Movement Speed", "WalkSpeedMultiplier", 1f, "[Host-only] Movement speed multiplier while walking.\nThis modifier will ultimately affect crouching, sprinting, and limping speed.")); crouchSpeedMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Movement Speed", "CrouchSpeedMultiplier", 0.66f, "[Host-only] Movement speed multiplier while crouching.\nVanilla default: ~0.66")); sprintSpeedMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Movement Speed", "SprintSpeedMultiplier", 2.25f, "[Host-only] Movement speed multiplier while sprinting.\nVanilla default: 2.25")); limpSpeedMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Movement Speed", "LimpSpeedMultiplier", 0.2f, "[Host-only] Movement speed multiplier while limping.\nVanilla default: 0.2")); ladderClimbSpeedMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Movement Speed", "LadderClimbSpeedMultiplier", 1f, "[Host-only] Player speed multiplier while climbing ladders.")); ladderSprintSpeedMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Movement Speed", "LadderClimbSprintSpeedMultiplier", 1.5f, "[Host-only] Player sprint speed multiplier while climbing on ladders.\nSet this value to 1 if the vanilla game ever decides to implement this. This will avoid applied multiple sprint speed modifiers.")); drunkSpeedMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Movement Speed", "DrunkSpeedMultiplier", 1f, "[Host-only] Movement speed multiplier while drunk.\nThis will be applied on top of other speed modifiers.")); enableInstantSprintingConfig = AddConfigEntry<bool>(((BaseUnityPlugin)Plugin.instance).Config.Bind<bool>("Movement Speed", "EnableInstantSprinting", false, "[Host-only] If true, sprinting to max speed will be instant, rather than a build up in speed over time.")); jumpForceMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Jumping", "JumpForceMultiplier", 1f, "[Host-only] Player jump force multiplier.\nNOTE: Jump force may might represent jump height perfectly due to how Unity's force physics work.\nNOTE: You may take fall damage if this value is set too high.")); drunkJumpForceMultiplierConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Jumping", "DrunkJumpForceMultiplier", 1f, "[Host-only] Player jump height multiplier while drunk.\nThis will be applied on top of other jump force modifiers.")); staminaRegenMultiplierInsideFactoryConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Factory", "StaminaRegenMultiplierInsideFactory", 1f, "[Host-only] Multiplier for stamina regen while inside the factory/dungeon.\nThis will be applied on top of other stamina regen modifiers.")); staminaRegenMultiplierOutsideFactoryConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Factory", "StaminaRegenMultiplierOutsideFactory", 1f, "[Host-only] Multiplier for stamina regen while outside the factory/dungeon.\nThis will be applied on top of other stamina regen modifiers.")); staminaConsumptionMultiplierInsideFactoryConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Factory", "SprintStaminaConsumptionInsideFactory", 1f, "[Host-only] Multiplier for sprinting stamina consumption while inside the factory/dungeon.\nThis will be applied on top of other stamina consumption modifiers.")); staminaConsumptionMultiplierOutsideFactoryConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Factory", "SprintStaminaConsumptionOutsideFactory", 1f, "[Host-only] Multiplier for sprinting stamina consumption while outside the factory/dungeon.\nThis will be applied on top of other stamina consumption modifiers.")); speedMultiplierInsideFactoryConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Factory", "SpeedMultiplierInsideFactory", 1f, "[Host-only] Movement speed multiplier while inside the factory/dungeon.\nThis will be applied on top of other speed modifiers.")); speedMultiplierOutsideFactoryConfig = AddConfigEntry<float>(((BaseUnityPlugin)Plugin.instance).Config.Bind<float>("Factory", "SpeedMultiplierOutsideFactory", 1f, "[Host-only] Movement speed multiplier while outside the factory/dungeon.\nThis will be applied on top of other speed modifiers.")); crouchSpeedMultiplierConfig.Value = Mathf.Clamp(crouchSpeedMultiplierConfig.Value, 0f, 1f); sprintSpeedMultiplierConfig.Value = Mathf.Max(sprintSpeedMultiplierConfig.Value, 1f); limpSpeedMultiplierConfig.Value = Mathf.Clamp(limpSpeedMultiplierConfig.Value, 0f, 1f); TryRemoveOldConfigSettings(); } public static ConfigEntry<T> AddConfigEntry<T>(ConfigEntry<T> configEntry) { currentConfigEntries.Add(((ConfigEntryBase)configEntry).Definition.Key, (ConfigEntryBase)(object)configEntry); return configEntry; } public static void TryRemoveOldConfigSettings() { HashSet<string> hashSet = new HashSet<string>(); HashSet<string> hashSet2 = new HashSet<string>(); foreach (ConfigEntryBase value in currentConfigEntries.Values) { hashSet.Add(value.Definition.Section); hashSet2.Add(value.Definition.Key); } try { ConfigFile config = ((BaseUnityPlugin)Plugin.instance).Config; string configFilePath = config.ConfigFilePath; if (!File.Exists(configFilePath)) { return; } string text = File.ReadAllText(configFilePath); string[] array = File.ReadAllLines(configFilePath); string text2 = ""; for (int i = 0; i < array.Length; i++) { array[i] = array[i].Replace("\n", ""); if (array[i].Length <= 0) { continue; } if (array[i].StartsWith("[")) { if (text2 != "" && !hashSet.Contains(text2)) { text2 = "[" + text2 + "]"; int num = text.IndexOf(text2); int num2 = text.IndexOf(array[i]); text = text.Remove(num, num2 - num); } text2 = array[i].Replace("[", "").Replace("]", "").Trim(); } else { if (!(text2 != "")) { continue; } if (i <= array.Length - 4 && array[i].StartsWith("##")) { int j; for (j = 1; i + j < array.Length && array[i + j].Length > 3; j++) { } if (hashSet.Contains(text2)) { int num3 = array[i + j - 1].IndexOf("="); string item = array[i + j - 1].Substring(0, num3 - 1); if (!hashSet2.Contains(item)) { int num4 = text.IndexOf(array[i]); int num5 = text.IndexOf(array[i + j - 1]) + array[i + j - 1].Length; text = text.Remove(num4, num5 - num4); } } i += j - 1; } else if (array[i].Length > 3) { text = text.Replace(array[i], ""); } } } if (!hashSet.Contains(text2)) { text2 = "[" + text2 + "]"; int num6 = text.IndexOf(text2); text = text.Remove(num6, text.Length - num6); } while (text.Contains("\n\n\n")) { text = text.Replace("\n\n\n", "\n\n"); } File.WriteAllText(configFilePath, text); config.Reload(); } catch { } } } [Serializable] [HarmonyPatch] public class ConfigSync { public static ConfigSync instance; public static PlayerControllerB localPlayerController; public static bool isSynced; public float carryWeightPenaltyMultiplier = 1f; public float idleStaminaRegenMultiplier = 1f; public float walkStaminaRegenMultiplier = 1f; public float crouchStaminaRegenMultiplier = 1f; public float drunkStaminaRegenMultiplier = 1f; public float staminaRegenMultiplierInsideFactory = 1f; public float staminaRegenMultiplierOutsideFactory = 1f; public float sprintStaminaConsumptionMultiplier = 1f; public float jumpStaminaConsumptionMultiplier = 1f; public float drunkStaminaConsumptionMultiplier = 1f; public float staminaConsumptionMultiplierInsideFactory = 1f; public float staminaConsumptionMultiplierOutsideFactory = 1f; public float walkSpeedMultiplier = 1f; public float crouchSpeedMultiplier = 0.6666666f; public float sprintSpeedMultiplier = 2.25f; public float limpSpeedMultiplier = 0.2f; public float ladderClimbSpeedMultiplier = 1f; public float ladderSprintSpeedMultiplier = 1f; public float drunkSpeedMultiplier = 1f; public bool enableInstantSprinting = false; public float speedMultiplierInsideFactory = 1f; public float speedMultiplierOutsideFactory = 1f; public float jumpForceMultiplier = 1f; public float drunkJumpForceMultiplier = 1f; public static void BuildDefaultConfigSync() { instance = new ConfigSync(); } public static void BuildServerConfigSync() { instance = new ConfigSync(); instance.carryWeightPenaltyMultiplier = Mathf.Max(ConfigSettings.carryWeightPenaltyMultiplierConfig.Value, 0f); instance.idleStaminaRegenMultiplier = Mathf.Max(ConfigSettings.idleStaminaRegenMultiplierConfig.Value, 0f); instance.walkStaminaRegenMultiplier = Mathf.Max(ConfigSettings.walkStaminaRegenMultiplierConfig.Value, 0f); instance.crouchStaminaRegenMultiplier = Mathf.Max(ConfigSettings.crouchStaminaRegenMultiplierConfig.Value, 0f); instance.drunkStaminaRegenMultiplier = Mathf.Max(ConfigSettings.drunkStaminaRegenMultiplierConfig.Value, 0f); instance.staminaRegenMultiplierInsideFactory = Mathf.Max(ConfigSettings.staminaRegenMultiplierInsideFactoryConfig.Value, 0f); instance.staminaRegenMultiplierOutsideFactory = Mathf.Max(ConfigSettings.staminaRegenMultiplierOutsideFactoryConfig.Value, 0f); instance.sprintStaminaConsumptionMultiplier = Mathf.Max(ConfigSettings.sprintStaminaConsumptionMultiplierConfig.Value, 0f); instance.jumpStaminaConsumptionMultiplier = Mathf.Max(ConfigSettings.jumpStaminaConsumptionMultiplierConfig.Value, 0f); instance.drunkStaminaConsumptionMultiplier = Mathf.Max(ConfigSettings.drunkStaminaConsumptionMultiplierConfig.Value, 0f); instance.staminaConsumptionMultiplierInsideFactory = Mathf.Max(ConfigSettings.staminaConsumptionMultiplierInsideFactoryConfig.Value, 0f); instance.staminaConsumptionMultiplierOutsideFactory = Mathf.Max(ConfigSettings.staminaConsumptionMultiplierOutsideFactoryConfig.Value, 0f); instance.walkSpeedMultiplier = Mathf.Max(ConfigSettings.walkSpeedMultiplierConfig.Value, 0.1f); instance.crouchSpeedMultiplier = Mathf.Clamp(ConfigSettings.crouchSpeedMultiplierConfig.Value, 0f, 1f); instance.sprintSpeedMultiplier = Mathf.Max(ConfigSettings.sprintSpeedMultiplierConfig.Value, 1f); instance.limpSpeedMultiplier = Mathf.Clamp(ConfigSettings.limpSpeedMultiplierConfig.Value, 0f, 1f); instance.ladderClimbSpeedMultiplier = Mathf.Max(ConfigSettings.ladderClimbSpeedMultiplierConfig.Value, 0f); instance.ladderSprintSpeedMultiplier = Mathf.Max(ConfigSettings.ladderSprintSpeedMultiplierConfig.Value, 1f); instance.drunkSpeedMultiplier = Mathf.Max(ConfigSettings.drunkSpeedMultiplierConfig.Value, 0f); instance.enableInstantSprinting = ConfigSettings.enableInstantSprintingConfig.Value; instance.speedMultiplierInsideFactory = Mathf.Max(ConfigSettings.speedMultiplierInsideFactoryConfig.Value, 0f); instance.speedMultiplierOutsideFactory = Mathf.Max(ConfigSettings.speedMultiplierOutsideFactoryConfig.Value, 0f); instance.jumpForceMultiplier = Mathf.Max(ConfigSettings.jumpForceMultiplierConfig.Value, 0f); instance.drunkJumpForceMultiplier = Mathf.Max(ConfigSettings.drunkJumpForceMultiplierConfig.Value, 0f); } [HarmonyPatch(typeof(StartOfRound), "Awake")] [HarmonyPostfix] public static void ResetValues() { isSynced = false; BuildDefaultConfigSync(); } [HarmonyPatch(typeof(PlayerControllerB), "ConnectClientToPlayerObject")] [HarmonyPostfix] public static void InitializeLocalPlayer(PlayerControllerB __instance) { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown localPlayerController = __instance; if (NetworkManager.Singleton.IsServer) { BuildServerConfigSync(); NetworkManager.Singleton.CustomMessagingManager.RegisterNamedMessageHandler("BetterStamina-OnRequestConfigSync", new HandleNamedMessageDelegate(OnReceiveConfigSyncRequest)); OnLocalClientConfigSync(); } else { isSynced = false; NetworkManager.Singleton.CustomMessagingManager.RegisterNamedMessageHandler("BetterStamina-OnReceiveConfigSync", new HandleNamedMessageDelegate(OnReceiveConfigSync)); RequestConfigSync(); } } public static void RequestConfigSync() { //IL_0036: Unknown result type (might be due to invalid IL or missing references) if (NetworkManager.Singleton.IsClient) { Plugin.Log("Sending config sync request to server."); FastBufferWriter val = default(FastBufferWriter); ((FastBufferWriter)(ref val))..ctor(4, (Allocator)2, -1); NetworkManager.Singleton.CustomMessagingManager.SendNamedMessage("BetterStamina-OnRequestConfigSync", 0uL, val, (NetworkDelivery)3); } else { Plugin.LogError("Failed to send config sync request."); } } public static void OnReceiveConfigSyncRequest(ulong clientId, FastBufferReader reader) { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) if (NetworkManager.Singleton.IsServer) { Plugin.Log("Receiving config sync request from client with id: " + clientId + ". Sending config sync to client."); byte[] array = SerializeConfigToByteArray(instance); FastBufferWriter val = default(FastBufferWriter); ((FastBufferWriter)(ref val))..ctor(array.Length + 4, (Allocator)2, -1); int num = array.Length; ((FastBufferWriter)(ref val)).WriteValueSafe<int>(ref num, default(ForPrimitives)); ((FastBufferWriter)(ref val)).WriteBytesSafe(array, -1, 0); NetworkManager.Singleton.CustomMessagingManager.SendNamedMessage("BetterStamina-OnReceiveConfigSync", clientId, val, (NetworkDelivery)3); } } public static void OnReceiveConfigSync(ulong clientId, FastBufferReader reader) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) int num = default(int); ((FastBufferReader)(ref reader)).ReadValueSafe<int>(ref num, default(ForPrimitives)); if (((FastBufferReader)(ref reader)).TryBeginRead(num)) { Plugin.Log("Receiving config sync from server."); byte[] data = new byte[num]; ((FastBufferReader)(ref reader)).ReadBytesSafe(ref data, num, 0); instance = DeserializeFromByteArray(data); OnLocalClientConfigSync(); } else { Plugin.LogError("Error receiving sync from server."); } } public static void OnLocalClientConfigSync() { isSynced = true; PlayerSpeedPatch.OnSyncedWithHost(); } public static byte[] SerializeConfigToByteArray(ConfigSync config) { BinaryFormatter binaryFormatter = new BinaryFormatter(); MemoryStream memoryStream = new MemoryStream(); binaryFormatter.Serialize(memoryStream, config); return memoryStream.ToArray(); } public static ConfigSync DeserializeFromByteArray(byte[] data) { MemoryStream serializationStream = new MemoryStream(data); BinaryFormatter binaryFormatter = new BinaryFormatter(); return (ConfigSync)binaryFormatter.Deserialize(serializationStream); } } }
BepInEx/plugins/plugins/BuyableShotgunShells/BuyableShotgunShells.dll
Decompiled a day agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using LethalLib.Modules; using Microsoft.CodeAnalysis; using Unity.Collections; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("BuyableShotgunShells")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyCopyright("Copyright © 2023 MegaPiggy")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+d6d2c0f918043d4e4353ef5c47682e34337a1e68")] [assembly: AssemblyProduct("BuyableShotgunShells")] [assembly: AssemblyTitle("BuyableShotgunShells")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace BuyableShotgunShells { [BepInDependency("evaisa.lethallib", "0.13.2")] [BepInPlugin("MegaPiggy.BuyableShotgunShells", "Buyable Shotgun Shells", "1.3.0")] public class BuyableShotgunShells : BaseUnityPlugin { public class ClonedItem : Item { public Item original; } internal class Unflagger : MonoBehaviour { public void Awake() { ((Object)((Component)this).gameObject).hideFlags = (HideFlags)0; } } [HarmonyPatch] internal static class Patches { [CompilerGenerated] private static class <>O { public static HandleNamedMessageDelegate <0>__OnRequestSync; public static HandleNamedMessageDelegate <1>__OnReceiveSync; } [HarmonyPostfix] [HarmonyPatch(typeof(PlayerControllerB), "ConnectClientToPlayerObject")] public static void ServerConnect() { //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown if (IsHost) { LoggerInstance.LogInfo((object)"Started hosting, using local settings"); CustomMessagingManager customMessagingManager = NetworkManager.Singleton.CustomMessagingManager; object obj = <>O.<0>__OnRequestSync; if (obj == null) { HandleNamedMessageDelegate val = OnRequestSync; <>O.<0>__OnRequestSync = val; obj = (object)val; } customMessagingManager.RegisterNamedMessageHandler("BuyableShotgunShells_OnRequestConfigSync", (HandleNamedMessageDelegate)obj); UpdateShopItemPrice(); } else { LoggerInstance.LogInfo((object)"Connected to server, requesting settings"); CustomMessagingManager customMessagingManager2 = NetworkManager.Singleton.CustomMessagingManager; object obj2 = <>O.<1>__OnReceiveSync; if (obj2 == null) { HandleNamedMessageDelegate val2 = OnReceiveSync; <>O.<1>__OnReceiveSync = val2; obj2 = (object)val2; } customMessagingManager2.RegisterNamedMessageHandler("BuyableShotgunShells_OnReceiveConfigSync", (HandleNamedMessageDelegate)obj2); NetworkManager.Singleton.CustomMessagingManager.SendNamedMessage("BuyableShotgunShells_OnRequestConfigSync", 0uL, new FastBufferWriter(0, (Allocator)2, -1), (NetworkDelivery)2); } } [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "Start")] public static void Start() { LoggerInstance.LogWarning((object)"Game network manager start"); CloneShells(); } [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "StartDisconnect")] public static void ServerDisconnect() { LoggerInstance.LogInfo((object)"Server disconnect"); ShellPriceRemote = -1; } } private const string modGUID = "MegaPiggy.BuyableShotgunShells"; private const string modName = "Buyable Shotgun Shells"; private const string modVersion = "1.3.0"; private readonly Harmony harmony = new Harmony("MegaPiggy.BuyableShotgunShells"); private static BuyableShotgunShells Instance; private static ConfigEntry<int> ShellPriceConfig; internal static int ShellPriceRemote = -1; private static Dictionary<string, TerminalNode> infoNodes = new Dictionary<string, TerminalNode>(); public static byte CurrentVersionByte = 1; private static ManualLogSource LoggerInstance => ((BaseUnityPlugin)Instance).Logger; public static List<Item> AllItems => Resources.FindObjectsOfTypeAll<Item>().Reverse().ToList(); public static Item ShotgunShell => ((IEnumerable<Item>)AllItems).FirstOrDefault((Func<Item, bool>)((Item item) => ((Object)item).name.Equals("GunAmmo") && (Object)(object)item.spawnPrefab != (Object)null)); public static ClonedItem ShotgunShellClone { get; private set; } public static int ShellPriceLocal => ShellPriceConfig.Value; public static int ShellPrice => (ShellPriceRemote > -1) ? ShellPriceRemote : ShellPriceLocal; private static bool IsHost => NetworkManager.Singleton.IsHost; private static ulong LocalClientId => NetworkManager.Singleton.LocalClientId; private void Awake() { if ((Object)(object)Instance == (Object)null) { Object.DontDestroyOnLoad((Object)(object)this); Instance = this; } harmony.PatchAll(); ShellPriceConfig = ((BaseUnityPlugin)this).Config.Bind<int>("Prices", "ShotgunShellPrice", 20, "Credits needed to buy shotgun shells"); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin Buyable Shotgun Shells is loaded with version 1.3.0!"); } private static ClonedItem CloneNonScrap(Item original, int price) { ClonedItem clonedItem = ScriptableObject.CreateInstance<ClonedItem>(); Object.DontDestroyOnLoad((Object)(object)clonedItem); clonedItem.original = original; GameObject val = NetworkPrefabs.CloneNetworkPrefab(original.spawnPrefab, "Buyable" + ((Object)original).name); val.AddComponent<Unflagger>(); Object.DontDestroyOnLoad((Object)(object)val); CopyFields(original, (Item)(object)clonedItem); val.GetComponent<GrabbableObject>().itemProperties = (Item)(object)clonedItem; ((Item)clonedItem).spawnPrefab = val; ((Object)clonedItem).name = "Buyable" + ((Object)original).name; ((Item)clonedItem).creditsWorth = price; ((Item)clonedItem).isScrap = false; return clonedItem; } public static void CopyFields(Item source, Item destination) { FieldInfo[] fields = typeof(Item).GetFields(); FieldInfo[] array = fields; foreach (FieldInfo fieldInfo in array) { fieldInfo.SetValue(destination, fieldInfo.GetValue(source)); } } private static TerminalNode CreateInfoNode(string name, string description) { if (infoNodes.ContainsKey(name)) { return infoNodes[name]; } TerminalNode val = ScriptableObject.CreateInstance<TerminalNode>(); val.clearPreviousText = true; ((Object)val).name = name + "InfoNode"; val.displayText = description + "\n\n"; infoNodes.Add(name, val); return val; } private static void CloneShells() { if (!((Object)(object)ShotgunShell == (Object)null) && !((Object)(object)ShotgunShellClone != (Object)null)) { ShotgunShellClone = CloneNonScrap(ShotgunShell, ShellPrice); ((Item)ShotgunShellClone).itemName = "Shells"; AddToShop(); } } private static void AddToShop() { ClonedItem shotgunShellClone = ShotgunShellClone; int shellPrice = ShellPrice; Items.RegisterShopItem((Item)(object)shotgunShellClone, (TerminalNode)null, (TerminalNode)null, CreateInfoNode("ShotgunShell", "Ammo for the Nutcracker's Shotgun."), shellPrice); LoggerInstance.LogInfo((object)$"Shotgun Shell added to Shop for {ShellPrice} credits"); } private static void UpdateShopItemPrice() { ((Item)ShotgunShellClone).creditsWorth = ShellPrice; Items.UpdateShopItemPrice((Item)(object)ShotgunShellClone, ShellPrice); LoggerInstance.LogInfo((object)$"Shotgun Shell price updated to {ShellPrice} credits"); } public static void WriteData(FastBufferWriter writer) { ((FastBufferWriter)(ref writer)).WriteByte(CurrentVersionByte); ((FastBufferWriter)(ref writer)).WriteBytes(BitConverter.GetBytes(ShellPriceLocal), -1, 0); } public static void ReadData(FastBufferReader reader) { byte b = default(byte); ((FastBufferReader)(ref reader)).ReadByte(ref b); if (b == CurrentVersionByte) { byte[] value = new byte[4]; ((FastBufferReader)(ref reader)).ReadBytes(ref value, 4, 0); ShellPriceRemote = BitConverter.ToInt32(value, 0); UpdateShopItemPrice(); LoggerInstance.LogInfo((object)"Host config set successfully"); return; } throw new Exception("Invalid version byte"); } public static void OnRequestSync(ulong clientID, FastBufferReader reader) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) if (!IsHost) { return; } LoggerInstance.LogInfo((object)("Sending config to client " + clientID)); FastBufferWriter val = default(FastBufferWriter); ((FastBufferWriter)(ref val))..ctor(5, (Allocator)2, 5); try { WriteData(val); NetworkManager.Singleton.CustomMessagingManager.SendNamedMessage("BuyableShotgunShells_OnReceiveConfigSync", clientID, val, (NetworkDelivery)2); } catch (Exception arg) { LoggerInstance.LogError((object)$"Failed to send config: {arg}"); } finally { ((FastBufferWriter)(ref val)).Dispose(); } } public static void OnReceiveSync(ulong clientID, FastBufferReader reader) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) LoggerInstance.LogInfo((object)"Received config from host"); try { ReadData(reader); } catch (Exception arg) { LoggerInstance.LogError((object)$"Failed to receive config: {arg}"); ShellPriceRemote = -1; } } } }
BepInEx/plugins/plugins/CoilHeadStare.dll
Decompiled a day agousing System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using TDP.CoilHeadStare.Patch; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("CoilHeadStare")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("CoilHeadStare")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("9d96f0c2-6393-4d02-99d7-34538a0dad5c")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace TDP.CoilHeadStare { [BepInPlugin("TDP.CoilHeadStare", "CoilHeadStare", "1.1.0")] public class ModBase : BaseUnityPlugin { private const string modGUID = "TDP.CoilHeadStare"; private const string modName = "CoilHeadStare"; private const string modVersion = "1.1.0"; private Harmony harmony; internal static ModBase instance; internal ManualLogSource mls; public static ConfigEntry<float> config_timeUntilStare; public static ConfigEntry<float> config_maxStareDistance; public static ConfigEntry<float> config_turnHeadSpeed; public static ConfigEntry<bool> config_shovelReact; private void Awake() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown if ((Object)(object)instance == (Object)null) { instance = this; } else { Object.Destroy((Object)(object)this); } ConfigFile(); harmony = new Harmony("TDP.CoilHeadStare"); harmony.PatchAll(typeof(CoilHeadPatch)); mls = Logger.CreateLogSource("TDP.CoilHeadStare"); mls.LogInfo((object)string.Format("{0} {1} loaded. (TUS={2}, MSD={3}, HTS={4}, SR={5})", "CoilHeadStare", "1.1.0", Stare.timeUntilStare, Stare.maxStareDistance, Stare.turnHeadSpeed, CoilHeadPatch.shovelReact)); } private void ConfigFile() { config_timeUntilStare = ((BaseUnityPlugin)this).Config.Bind<float>("CoilHeadStare", "Time Until Stare", 8f, "Time between moving and looking at closest player (in seconds)"); config_maxStareDistance = ((BaseUnityPlugin)this).Config.Bind<float>("CoilHeadStare", "Max Stare Distance", 6f, "Coilhead will only stare at players closer than this (for reference: coilhead's height is ca. 4)"); config_turnHeadSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("CoilHeadStare", "Head Turn Speed", 0.3f, "The speed at which the head turns towards the player"); config_shovelReact = ((BaseUnityPlugin)this).Config.Bind<bool>("CoilHeadStare", "Head Bounce on Shovel Hit", true, "Should the coilhead spring recoil when hit with a shovel (or with anything else)"); Stare.timeUntilStare = config_timeUntilStare.Value; Stare.maxStareDistance = config_maxStareDistance.Value; Stare.turnHeadSpeed = config_turnHeadSpeed.Value; CoilHeadPatch.shovelReact = config_shovelReact.Value; } } } namespace TDP.CoilHeadStare.Patch { internal class CoilHeadPatch { public static bool shovelReact; [HarmonyPatch(typeof(EnemyAI), "Start")] [HarmonyPostfix] [HarmonyPriority(200)] private static void StartPostFix(EnemyAI __instance) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown if (__instance is SpringManAI) { Debug.Log((object)"CoilHead found. Adding stare script."); Stare stare = ((Component)__instance).gameObject.AddComponent<Stare>(); stare.Initialize((SpringManAI)__instance); } } [HarmonyPatch(typeof(EnemyAI), "HitEnemy")] [HarmonyPrefix] public static void HitEnemyPreFix(EnemyAI __instance) { if (__instance is SpringManAI) { if ((Object)(object)__instance == (Object)null) { ModBase.instance.mls.LogError((object)"On player hit Coil Head: Coil Head instance is missing."); } else if ((Object)(object)__instance.creatureAnimator == (Object)null) { ModBase.instance.mls.LogError((object)"On player hit Coil Head: Coil Head animator is missing."); } else if (__instance.creatureAnimator.parameters.All((AnimatorControllerParameter x) => x.name == "springBoing")) { ModBase.instance.mls.LogError((object)"On player hit Coil Head: Coil Head animatorcontroller is missing the parameter \"springBoing\"."); } else if (shovelReact) { __instance.creatureAnimator.SetTrigger("springBoing"); } } } } public class Stare : MonoBehaviour { private SpringManAI coilHeadInstance; public static float timeUntilStare; public static float maxStareDistance; public static float turnHeadSpeed; public static bool keepRunningOnDeath; public const string headParentBone = "springBone.002"; private Transform head; private float timeSinceMoving; private bool isTurningHead; private PlayerControllerB stareTarget; public void Initialize(SpringManAI instance) { Debug.Log((object)"Initializing Stare on Coil Head."); coilHeadInstance = instance; if ((Object)(object)coilHeadInstance == (Object)null) { ModBase.instance.mls.LogError((object)"Coil Head instance missing. Harmony Patch failed?"); } List<Transform> list = FindChildren(((Component)coilHeadInstance).transform, "springBone.002"); if (list == null) { ModBase.instance.mls.LogError((object)"Search for head parent returned null. This should not be possible, something went wrong."); } else if (list.Count > 0) { if (list.Last().childCount > 0) { head = list.Last().GetChild(list.Last().childCount - 1); } else { ModBase.instance.mls.LogWarning((object)"Found head parent (springBone.002), but it has no child transforms. (Likely due to an incompatible reskin mod)"); } } else { ModBase.instance.mls.LogError((object)"Could not find head parent bone. Possibly missing or renamed? Head must be parented to \"springBone.002\"."); } if ((Object)(object)head == (Object)null) { ModBase.instance.mls.LogError((object)"Could not find head transform. Destroying script. (Coil Head should be unaffected by this)"); Object.Destroy((Object)(object)this); } else { ModBase.instance.mls.LogInfo((object)("Found head transform: " + ((Object)head).name)); } } private List<Transform> FindChildren(Transform parent, string name) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown List<Transform> list = new List<Transform>(); foreach (Transform item in parent) { Transform val = item; if (((Object)val).name == name) { list.Add(val); } else { list.AddRange(FindChildren(val, name)); } } return list; } private void Start() { if ((Object)(object)head != (Object)null) { ModBase.instance.mls.LogInfo((object)"Stare initialization successful. Note: If a reskin is being used and the head does not turn, it is most likely incompatible."); } else { ModBase.instance.mls.LogWarning((object)"Stare initialization unsuccessful. An error has probably occurred."); } } private void Update() { //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: 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_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)coilHeadInstance == (Object)null || (((EnemyAI)coilHeadInstance).isEnemyDead && !keepRunningOnDeath)) { isTurningHead = false; stareTarget = null; return; } if ((Object)(object)head == (Object)null) { ModBase.instance.mls.LogError((object)"Head transform missing. Destroying script."); Object.Destroy((Object)(object)this); return; } if (!isTurningHead) { stareTarget = ((EnemyAI)coilHeadInstance).GetClosestPlayer(false, false, false); } if (!((Object)(object)stareTarget == (Object)null)) { Vector3 val = ((Component)stareTarget.gameplayCamera).transform.position - head.position; float num = Vector3.Distance(head.position, ((Component)((EnemyAI)coilHeadInstance).GetClosestPlayer(false, false, false)).transform.position); if ((double)((EnemyAI)coilHeadInstance).creatureAnimator.GetFloat("walkSpeed") > 0.01 || num > maxStareDistance || Vector3.Angle(head.forward, val) < 5f) { timeSinceMoving = 0f; } else { timeSinceMoving += Time.deltaTime; } if (timeSinceMoving > timeUntilStare) { isTurningHead = true; } else { isTurningHead = false; } if (isTurningHead) { head.forward = Vector3.RotateTowards(head.forward, val, turnHeadSpeed * Time.deltaTime, 0f); } } } } }
BepInEx/plugins/plugins/com.doudgeorges.NoPenaltyOnGordion.dll
Decompiled a day agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using TMPro; [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("AmazingAssets.TerrainToMesh")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("ClientNetworkTransform")] [assembly: IgnoresAccessChecksTo("DissonanceVoip")] [assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")] [assembly: IgnoresAccessChecksTo("Unity.Burst")] [assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")] [assembly: IgnoresAccessChecksTo("Unity.Collections")] [assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Jobs")] [assembly: IgnoresAccessChecksTo("Unity.Mathematics")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")] [assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")] [assembly: IgnoresAccessChecksTo("Unity.Services.QoS")] [assembly: IgnoresAccessChecksTo("Unity.Services.Relay")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: AssemblyCompany("doudgeorges")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Removes the penalty incurred from deaths on the Company moon.")] [assembly: AssemblyFileVersion("1.1.0.0")] [assembly: AssemblyInformationalVersion("1.1.0+89a53e49ffe02c9149abf4512309cca1ffa23b32")] [assembly: AssemblyProduct("NoPenaltyOnGordion")] [assembly: AssemblyTitle("com.doudgeorges.NoPenaltyOnGordion")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.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 NoPenaltyOnGordion { [BepInPlugin("com.doudgeorges.NoPenaltyOnGordion", "NoPenaltyOnGordion", "1.1.0")] public class Plugin : BaseUnityPlugin { internal static ManualLogSource Logger { get; private set; } internal static Harmony? Harmony { get; set; } public static ConfigEntry<string> PenaltyText { get; private set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; PenaltyText = ((BaseUnityPlugin)this).Config.Bind<string>("General", "PenaltyText", "(No penalty from deaths on the Company moon)", "Text displayed in the penalty HUD"); Patch(); Logger.LogInfo((object)"com.doudgeorges.NoPenaltyOnGordion v1.1.0 has loaded!"); } internal static void Patch() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown if (Harmony == null) { Harmony = new Harmony("com.doudgeorges.NoPenaltyOnGordion"); } Logger.LogDebug((object)"Patching..."); Harmony.PatchAll(); Logger.LogDebug((object)"Finished patching!"); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "com.doudgeorges.NoPenaltyOnGordion"; public const string PLUGIN_NAME = "NoPenaltyOnGordion"; public const string PLUGIN_VERSION = "1.1.0"; } } namespace NoPenaltyOnGordion.Patches { [HarmonyPatch(typeof(HUDManager))] public class HUDManagerPatch { [HarmonyPatch("ApplyPenalty")] [HarmonyPrefix] private static bool ApplyPenaltyPrefix(HUDManager __instance, int playersDead, int bodiesInsured) { if (RoundManager.Instance.currentLevel.levelID == 3) { ((TMP_Text)__instance.statsUIElements.penaltyAddition).text = Plugin.PenaltyText.Value; ((TMP_Text)__instance.statsUIElements.penaltyTotal).text = "DUE: $0"; return false; } return true; } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }
BepInEx/plugins/plugins/com.spycibot.cozyimprovements.dll
Decompiled a day agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using Microsoft.CodeAnalysis; using SpyciBot.LC.CozyImprovements.Improvements; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("com.spycibot.cozyimprovements")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("\r\n Enhance the experience inside the ship to create a more immersive, cozy, and accessible environment. v47 compatible.\r\n ")] [assembly: AssemblyFileVersion("1.2.2.0")] [assembly: AssemblyInformationalVersion("1.2.2+39da0e927e7ba9e69220c8a7b7ef50abc7f605fb")] [assembly: AssemblyProduct("Cozy Improvements")] [assembly: AssemblyTitle("com.spycibot.cozyimprovements")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.2.2.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace SpyciBot.LC.CozyImprovements { public class Config { public ConfigEntry<bool> configStorageLights; public ConfigEntry<bool> configLightSwitchGlow; public ConfigEntry<bool> configTerminalGlow; public ConfigEntry<bool> configTerminalMonitorAlwaysOn; public ConfigEntry<bool> configChargeStationGlow; public ConfigEntry<bool> configBigDoorButtons; public ConfigEntry<bool> configEasyLaunchLever; public ConfigEntry<bool> configBigTeleporterButtons; public ConfigEntry<bool> configBigMonitorButtons; public Config(ConfigFile cfg) { configStorageLights = cfg.Bind<bool>("General", "StorageLightsEnabled", true, "Enables the Storage Lights System"); configLightSwitchGlow = cfg.Bind<bool>("General", "LightSwitchGlowEnabled", true, "Makes the LightSwitch glow in the dark"); configTerminalGlow = cfg.Bind<bool>("General", "TerminalGlowEnabled", true, "Makes the Terminal glow active all the time"); configTerminalMonitorAlwaysOn = cfg.Bind<bool>("General", "TerminalMonitorAlwaysOn", true, "Makes the Terminal screen active all the time; Will show the screen you left it on"); configChargeStationGlow = cfg.Bind<bool>("General", "ChargeStationGlowEnabled", true, "Makes the Charging Station glow with a yellow light"); configBigDoorButtons = cfg.Bind<bool>("General.Accessibility", "BigDoorButtonsEnabled", false, "Enlarges the door buttons so they're easier to press"); configEasyLaunchLever = cfg.Bind<bool>("General.Accessibility", "EasyLaunchLeverEnabled", true, "Enlarges the hitbox for the Launch Lever to cover more of the table so it's easier to pull"); configBigTeleporterButtons = cfg.Bind<bool>("General.Accessibility", "BigTeleporterButtonsEnabled", false, "Enlarges the teleporter buttons so they're easier to press"); configBigMonitorButtons = cfg.Bind<bool>("General.Accessibility", "BigMonitorButtonsEnabled", false, "Enlarges the Monitor buttons so they're easier to press"); } } [BepInPlugin("com.spycibot.cozyimprovements", "Cozy Improvements", "1.2.2")] [HarmonyPatch] public class CozyImprovements : BaseUnityPlugin { private static GameObject gameObject; private static Terminal TermInst; public static Config CozyConfig { get; internal set; } private void Awake() { ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin Cozy Improvements - com.spycibot.cozyimprovements - 1.2.2 is loaded!"); Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null); CozyConfig = new Config(((BaseUnityPlugin)this).Config); } [HarmonyPatch(typeof(Terminal), "Start")] [HarmonyPostfix] private static void Postfix_Terminal_Start(Terminal __instance) { TermInst = __instance; if (CozyConfig.configTerminalMonitorAlwaysOn.Value) { TermInst.LoadNewNode(TermInst.terminalNodes.specialNodes[1]); } if (CozyConfig.configTerminalGlow.Value) { ((Behaviour)TermInst.terminalLight).enabled = true; } } [HarmonyPatch(typeof(Terminal), "waitUntilFrameEndToSetActive")] [HarmonyPrefix] private static void Prefix_Terminal_WaitUntilFrameEndToSetActive(Terminal __instance, ref bool active) { TermInst = __instance; if (CozyConfig.configTerminalMonitorAlwaysOn.Value) { active = true; } } [HarmonyPatch(typeof(Terminal), "SetTerminalInUseClientRpc")] [HarmonyPostfix] private static void Postfix_Terminal_SetTerminalInUseClientRpc(Terminal __instance, bool inUse) { TermInst = __instance; if (CozyConfig.configTerminalGlow.Value) { ((Behaviour)TermInst.terminalLight).enabled = true; } } [HarmonyPatch(typeof(StartOfRound), "OnPlayerConnectedClientRpc")] [HarmonyPostfix] private static void PostfixOnPlayerConnectedClientRpc(StartOfRound __instance, ulong clientId, int connectedPlayers, ulong[] connectedPlayerIdsOrdered, int assignedPlayerObjectId, int serverMoneyAmount, int levelID, int profitQuota, int timeUntilDeadline, int quotaFulfilled, int randomSeed) { if (clientId == NetworkManager.Singleton.LocalClientId) { DoAllTheThings(); } } [HarmonyPatch(typeof(StartOfRound), "LoadUnlockables")] [HarmonyPostfix] private static void PostfixLoadUnlockables(StartOfRound __instance) { DoAllTheThings(); } private static void DoAllTheThings() { try { manageInteractables(); } catch (Exception arg) { Debug.LogError((object)$"Caught Exception in manageInteractables(): {arg}"); } try { manageStorageCupboard(); } catch (Exception arg2) { Debug.LogError((object)$"Caught Exception in manageStorageCupboard(): {arg2}"); } } private static void manageInteractables() { //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012c: 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_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) _ = GameNetworkManager.Instance.localPlayerController; GameObject[] array = GameObject.FindGameObjectsWithTag("InteractTrigger"); for (int i = 0; i < array.Length; i++) { if (((Object)array[i]).name == "LightSwitch" && CozyConfig.configLightSwitchGlow.Value) { makeEmissive(array[i], new Color32((byte)182, (byte)240, (byte)150, (byte)102)); makeEmissive(((Component)array[i].transform.GetChild(0)).gameObject, new Color32((byte)241, (byte)80, (byte)80, (byte)10), 0.15f); } if (((Object)array[i]).name == "Trigger" && ((Object)((Component)array[i].transform.parent).gameObject).name == "ChargeStationTrigger" && CozyConfig.configChargeStationGlow.Value) { GameObject val = ((Component)array[i].transform.parent.parent).gameObject; GameObject val2 = new GameObject("ChargeStationLight"); Light obj = val2.AddComponent<Light>(); obj.type = (LightType)2; obj.color = Color32.op_Implicit(new Color32((byte)240, (byte)240, (byte)140, byte.MaxValue)); obj.intensity = 0.05f; obj.range = 0.3f; obj.shadows = (LightShadows)2; val2.layer = LayerMask.NameToLayer("Room"); val2.transform.localPosition = new Vector3(0.5f, 0f, 0f); val2.transform.SetParent(val.transform, false); } if (((Object)array[i]).name == "Cube (2)" && ((Object)((Component)array[i].transform.parent).gameObject).name.StartsWith("CameraMonitor") && CozyConfig.configBigMonitorButtons.Value) { Accessibility.adjustMonitorButtons(array[i].gameObject); } } } private static void makeEmissive(GameObject gameObject, Color32 glowColor, float brightness = 0.02f) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) MeshRenderer component = gameObject.GetComponent<MeshRenderer>(); Material material = ((Renderer)component).material; material.SetColor("_EmissiveColor", Color32.op_Implicit(glowColor) * brightness); ((Renderer)component).material = material; } private static void manageStorageCupboard() { PlaceableShipObject[] array = Object.FindObjectsOfType<PlaceableShipObject>(); for (int i = 0; i < array.Length; i++) { UnlockableItem obj = StartOfRound.Instance.unlockablesList.unlockables[array[i].unlockableID]; _ = obj.unlockableType; if (obj.unlockableName == "Cupboard") { gameObject = ((Component)array[i].parentObject).gameObject; break; } } if (!((Object)(object)gameObject == (Object)null) && CozyConfig.configStorageLights.Value) { spawnStorageLights(gameObject); } } private static void spawnStorageLights(GameObject storageCloset) { //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_0121: 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_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) float num = -1.1175f; List<float> obj = new List<float> { 2.804f, 2.163f, 1.48f, 0.999f }; float num2 = 0.55f; float num3 = obj[0]; AttachLightToStorageCloset(storageCloset, new Vector3(num - num2, 0.4f, num3)); AttachLightToStorageCloset(storageCloset, new Vector3(num, 0.4f, num3)); AttachLightToStorageCloset(storageCloset, new Vector3(num + num2, 0.4f, num3)); num3 = obj[1]; AttachLightToStorageCloset(storageCloset, new Vector3(num - num2, 0.4f, num3)); AttachLightToStorageCloset(storageCloset, new Vector3(num, 0.4f, num3)); AttachLightToStorageCloset(storageCloset, new Vector3(num + num2, 0.4f, num3)); num3 = obj[2]; AttachLightToStorageCloset(storageCloset, new Vector3(num - num2, 0.4f, num3), 2f); AttachLightToStorageCloset(storageCloset, new Vector3(num, 0.4f, num3), 2f); AttachLightToStorageCloset(storageCloset, new Vector3(num + num2, 0.4f, num3), 2f); num3 = obj[3]; AttachLightToStorageCloset(storageCloset, new Vector3(num - num2, 0.4f, num3)); AttachLightToStorageCloset(storageCloset, new Vector3(num, 0.4f, num3)); AttachLightToStorageCloset(storageCloset, new Vector3(num + num2, 0.4f, num3)); } private static void AttachLightToStorageCloset(GameObject storageCloset, Vector3 lightPositionOffset, float intensity = 3f) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0011: 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_003f: Expected O, but got Unknown //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: 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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject("StorageClosetLight"); MeshFilter val2 = val.AddComponent<MeshFilter>(); MeshRenderer obj = val.AddComponent<MeshRenderer>(); GameObject val3 = GameObject.CreatePrimitive((PrimitiveType)0); val2.mesh = val3.GetComponent<MeshFilter>().mesh; Material val4 = new Material(Shader.Find("HDRP/Lit")); Color val5 = Color32.op_Implicit(new Color32((byte)249, (byte)240, (byte)202, byte.MaxValue)); val4.SetColor("_BaseColor", val5); float num = 1f; val4.SetColor("_EmissiveColor", val5 * num); ((Renderer)obj).material = val4; Object.DestroyImmediate((Object)(object)val3); Light obj2 = val.AddComponent<Light>(); obj2.type = (LightType)0; obj2.color = val5; obj2.intensity = intensity; obj2.range = 1.05f; obj2.spotAngle = 125f; obj2.shadows = (LightShadows)2; val.layer = LayerMask.NameToLayer("Room"); val.transform.localScale = new Vector3(0.125f, 0.125f, 0.04f); val.transform.localPosition = lightPositionOffset; val.transform.rotation = Quaternion.Euler(170f, 0f, 0f); val.transform.SetParent(storageCloset.transform, false); } private static string padString(string baseStr, char padChar, int width) { int totalWidth = (width - (baseStr.Length + 8)) / 2 + (baseStr.Length + 8); return (" " + baseStr + " ").PadLeft(totalWidth, padChar).PadRight(width, padChar); } private static void obviousDebug(string baseStr) { Debug.Log((object)"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); Debug.Log((object)"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); Debug.Log((object)"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); Debug.Log((object)padString(baseStr ?? "", '~', 65)); Debug.Log((object)"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); Debug.Log((object)"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); Debug.Log((object)"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); } } public static class PluginInfo { public const string PLUGIN_GUID = "com.spycibot.cozyimprovements"; public const string PLUGIN_NAME = "Cozy Improvements"; public const string PLUGIN_VERSION = "1.2.2"; } } namespace SpyciBot.LC.CozyImprovements.Improvements { [HarmonyPatch] public static class Accessibility { private static HangarShipDoor hangarShipDoor; [HarmonyPatch(typeof(StartMatchLever), "Start")] [HarmonyPostfix] private static void Postfix_StartMatchLever_Start(StartMatchLever __instance) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) if (CozyImprovements.CozyConfig.configEasyLaunchLever.Value) { ((Component)__instance).transform.localScale = new Vector3(1.139f, 0.339f, 1.539f); ((Component)__instance).transform.localPosition = new Vector3(8.7938f, 1.479f, -7.0767f); ((Component)__instance).transform.GetChild(0).position = new Vector3(8.8353f, 0.2931f, -14.5767f); } } [HarmonyPatch(typeof(HangarShipDoor), "Start")] [HarmonyPostfix] private static void Postfix_HangarShipDoor_Start(HangarShipDoor __instance) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_02af: Unknown result type (might be due to invalid IL or missing references) //IL_02b4: Unknown result type (might be due to invalid IL or missing references) //IL_02d7: Unknown result type (might be due to invalid IL or missing references) //IL_02dc: Unknown result type (might be due to invalid IL or missing references) //IL_032a: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Unknown result type (might be due to invalid IL or missing references) //IL_033b: Unknown result type (might be due to invalid IL or missing references) //IL_0342: Unknown result type (might be due to invalid IL or missing references) //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) if (!CozyImprovements.CozyConfig.configBigDoorButtons.Value) { return; } hangarShipDoor = __instance; GameObject gameObject = ((Component)__instance.hydraulicsDisplay.transform.parent).gameObject; gameObject.transform.localScale = new Vector3(-2f, -2f, -2f); gameObject.transform.localPosition = new Vector3(-5.2085f, 1.8882f, -8.823f); GameObject gameObject2 = ((Component)gameObject.transform.Find("StartButton")).gameObject; GameObject gameObject3 = ((Component)gameObject.transform.Find("StopButton")).gameObject; gameObject3.transform.localScale = new Vector3(-1.1986f, -0.1986f, -1.1986f); gameObject2.transform.localScale = gameObject3.transform.localScale; gameObject2.transform.GetChild(0).localPosition = gameObject3.transform.GetChild(0).localPosition; gameObject2.transform.GetChild(0).localScale = gameObject3.transform.GetChild(0).localScale; Material[] materials = ((Renderer)gameObject2.GetComponent<MeshRenderer>()).materials; for (int i = 0; i < materials.Length; i++) { if (((Object)materials[i]).name == "GreenButton (Instance)") { materials[i].SetColor("_EmissiveColor", Color32.op_Implicit(new Color32((byte)39, (byte)51, (byte)39, byte.MaxValue))); } if (((Object)materials[i]).name == "ButtonWhite (Instance)") { materials[i].SetColor("_EmissiveColor", Color32.op_Implicit(new Color32((byte)179, (byte)179, (byte)179, byte.MaxValue))); } } ((Renderer)gameObject2.GetComponent<MeshRenderer>()).materials = materials; Material[] materials2 = ((Renderer)gameObject3.GetComponent<MeshRenderer>()).materials; for (int j = 0; j < materials2.Length; j++) { if (((Object)materials2[j]).name == "RedButton (Instance)") { materials2[j].SetColor("_EmissiveColor", Color32.op_Implicit(new Color32((byte)64, (byte)24, (byte)24, byte.MaxValue))); } if (((Object)materials2[j]).name == "ButtonWhite (Instance)") { materials2[j].SetColor("_EmissiveColor", Color32.op_Implicit(new Color32((byte)179, (byte)179, (byte)179, byte.MaxValue))); } } ((Renderer)gameObject3.GetComponent<MeshRenderer>()).materials = materials2; Transform child = gameObject.transform.Find("StartButton").GetChild(0); Transform child2 = gameObject.transform.Find("StopButton").GetChild(0); ((Renderer)((Component)child).GetComponent<MeshRenderer>()).material.color = Color32.op_Implicit(new Color32((byte)39, byte.MaxValue, (byte)39, byte.MaxValue)); ((Renderer)((Component)child2).GetComponent<MeshRenderer>()).material.color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)24, (byte)24, byte.MaxValue)); Vector3 position = default(Vector3); ((Vector3)(ref position))..ctor(-3.7205f, 2.0504f, -16.3018f); Vector3 localScale = default(Vector3); ((Vector3)(ref localScale))..ctor(0.7393f, 0.4526f, 0.6202f); Vector3 localScale2 = default(Vector3); ((Vector3)(ref localScale2))..ctor(0.003493f, 0.000526f, 0.002202f); child.position = position; child.localScale = localScale; child2.position = position; child2.localScale = localScale2; } [HarmonyPatch(typeof(StartOfRound), "SetShipDoorsClosed")] [HarmonyPostfix] private static void Postfix_StartOfRound_SetShipDoorsClosed(StartOfRound __instance, bool closed) { //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: 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) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) if (CozyImprovements.CozyConfig.configBigDoorButtons.Value) { GameObject gameObject = ((Component)hangarShipDoor.hydraulicsDisplay.transform.parent).gameObject; Transform child = gameObject.transform.Find("StartButton").GetChild(0); Transform child2 = gameObject.transform.Find("StopButton").GetChild(0); Vector3 localScale = default(Vector3); ((Vector3)(ref localScale))..ctor(0.7393f, 0.4526f, 0.6202f); Vector3 localScale2 = default(Vector3); ((Vector3)(ref localScale2))..ctor(0.003493f, 0.000526f, 0.002202f); child.localScale = localScale; child2.localScale = localScale; if (closed) { child.localScale = localScale; child2.localScale = localScale2; } else { child2.localScale = localScale; child.localScale = localScale2; } } } [HarmonyPatch(typeof(ShipTeleporter), "Awake")] [HarmonyPostfix] private static void Postfix_ShipTeleporter_Awake(ShipTeleporter __instance) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) if (CozyImprovements.CozyConfig.configBigTeleporterButtons.Value) { ((Component)((Component)__instance.buttonTrigger).gameObject.transform.parent).gameObject.transform.localScale = Vector3.one * 3f; } } public static void adjustMonitorButtons(GameObject ButtonCube) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) if (CozyImprovements.CozyConfig.configBigMonitorButtons.Value) { GameObject gameObject = ((Component)ButtonCube.transform.parent).gameObject; gameObject.transform.localScale = new Vector3(1.852f, 1.8475f, 1.852f); if (((Object)gameObject).name == "CameraMonitorSwitchButton") { gameObject.transform.localPosition = new Vector3(-0.28f, -1.807f, -0.29f); } } } } }
BepInEx/plugins/plugins/CrouchToStand.dll
Decompiled a day agousing System.Collections; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using GameNetcodeStuff; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("CrouchToStand")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("CrouchToStand")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("666C668E-9A5E-40B0-BA2F-6CD63B92BDAD")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8.1", FrameworkDisplayName = ".NET Framework 4.8.1")] [assembly: AssemblyVersion("1.0.0.0")] namespace CrouchToStand; [BepInPlugin("Mhz.CrouchToStand", "CrouchToStand", "1.0.0")] public class StandUp : BaseUnityPlugin { [HarmonyPatch(typeof(PlayerControllerB), "Jump_performed")] private class JumpPerformedPatch { private static void Prefix(PlayerControllerB __instance) { ((MonoBehaviour)__instance).StartCoroutine(PerformDelayedAction(__instance)); } } private static Harmony _harmony; private void Awake() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown _harmony = new Harmony("Mhz.CrouchToStand"); _harmony.PatchAll(); } private static IEnumerator PerformDelayedAction(PlayerControllerB instance) { yield return null; if (instance.isCrouching) { instance.Crouch(false); } } }
BepInEx/plugins/plugins/DynamicDeadline1.2.2.dll
Decompiled a day agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using DynamicDeadlineMod.Patches; using HarmonyLib; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("DynamicDeadlineMod")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("DynamicDeadlineMod")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("78c98d39-8b11-4a2c-bccb-e32338f5bacf")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace DynamicDeadlineMod { [BepInPlugin("Haha.DynamicDeadline", "Dynamic Deadline", "1.2.2")] public class DynamicDeadlineMod : BaseUnityPlugin { private const string modGUID = "Haha.DynamicDeadline"; private const string modName = "Dynamic Deadline"; private const string modVersion = "1.2.2"; private readonly Harmony harmony = new Harmony("Haha.DynamicDeadline"); public static DynamicDeadlineMod Instance; internal static ConfigEntry<float> MinScrapValuePerDay; internal static ConfigEntry<bool> legacyCal; internal static ConfigEntry<float> legacyDailyValue; internal static ConfigEntry<bool> useMinMax; internal static ConfigEntry<float> setMinimumDays; internal static ConfigEntry<float> setMaximumDays; internal ManualLogSource mls; internal void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("Dynamic Deadline"); mls.LogInfo((object)"No more short deadlines for excessive quotas."); MinScrapValuePerDay = ((BaseUnityPlugin)this).Config.Bind<float>("Customizable Values", "Minimum Daily ScrapValue", 200f, "Set this value to the minimum scrap value you should achieve per day. This will ignore the calculation for daily scrap if it's below this number."); useMinMax = ((BaseUnityPlugin)this).Config.Bind<bool>("Customizable Values", "Use Custom Deadline Range", false, "Set to true if you want to use the custom minimum/maximum deadline range."); setMinimumDays = ((BaseUnityPlugin)this).Config.Bind<float>("Customizable Values", "Minimum Deadline", 3f, "If Use Custom Deadline Range is enabled, this is the minimum deadline you will have."); setMaximumDays = ((BaseUnityPlugin)this).Config.Bind<float>("Customizable Values", "Maximum Deadline", float.MaxValue, "If use Custom Deadline Range is enabled, this is the maximum deadline you will have."); legacyCal = ((BaseUnityPlugin)this).Config.Bind<bool>("Customizeable Values - Legacy", "Legacy Calculations", false, "Set to true if you want to use the deadline calculation from 1.1.0 prior."); legacyDailyValue = ((BaseUnityPlugin)this).Config.Bind<float>("Customizeable Values - Legacy", "Daily Scrap Value", 200f, "Set this number to the value of scrap you can reasonably achieve in a single day."); harmony.PatchAll(typeof(DynamicDeadlineMod)); harmony.PatchAll(typeof(ProfitQuotaPatch)); } } } namespace DynamicDeadlineMod.Patches { [HarmonyPatch(typeof(TimeOfDay), "SyncTimeClientRpc")] public class FixTheDeadline { [HarmonyPrefix] public static void DeadlineBroke() { string currentSaveFileName = GameNetworkManager.Instance.currentSaveFileName; float num; if (ES3.KeyExists("totalOfAverage")) { num = ES3.Load<float>("totalOfAverage", currentSaveFileName, 0f); } else { ES3.Save<float>("totalOfAverage", 0f, currentSaveFileName); num = ES3.Load<float>("totalOfAverage", currentSaveFileName, 0f); } if (num < DynamicDeadlineMod.MinScrapValuePerDay.Value * (float)TimeOfDay.Instance.timesFulfilledQuota) { num = DynamicDeadlineMod.MinScrapValuePerDay.Value * (float)TimeOfDay.Instance.timesFulfilledQuota; float num2 = num / (float)TimeOfDay.Instance.timesFulfilledQuota; float num3 = Mathf.Clamp(Mathf.Ceil((float)TimeOfDay.Instance.profitQuota / num2), 3f, float.MaxValue); ES3.Save<float>("totalOfAverage", num, currentSaveFileName); TimeOfDay.Instance.timeUntilDeadline = 700f * num3; ES3.Save<float>("previousDeadline", num3, currentSaveFileName); } } } [HarmonyPatch(typeof(GameNetworkManager), "ResetSavedGameValues")] public class ResetSavedValuesPatch { [HarmonyPrefix] public static void ResetSavedValues() { string currentSaveFileName = GameNetworkManager.Instance.currentSaveFileName; ES3.Save<float>("previousDeadline", 3f, currentSaveFileName); ES3.Save<float>("totalOfAverage", 0f, currentSaveFileName); } } [HarmonyPatch(typeof(TimeOfDay), "SetNewProfitQuota")] public class ProfitQuotaPatch { private static float quotaFulfilled; [HarmonyPrefix] public static void GetQuotaFulfilled() { quotaFulfilled = TimeOfDay.Instance.quotaFulfilled; } [HarmonyPostfix] private static void DynamicDeadline(TimeOfDay __instance) { string currentSaveFileName = GameNetworkManager.Instance.currentSaveFileName; bool isHost = ((NetworkBehaviour)RoundManager.Instance).NetworkManager.IsHost; float num = TimeOfDay.Instance.timesFulfilledQuota; float num2 = ((!DynamicDeadlineMod.useMinMax.Value) ? 3f : DynamicDeadlineMod.setMinimumDays.Value); float num3 = ((!DynamicDeadlineMod.useMinMax.Value) ? float.MaxValue : DynamicDeadlineMod.setMaximumDays.Value); float num4; if (ES3.KeyExists("previousDeadline")) { num4 = ES3.Load<float>("previousDeadline", currentSaveFileName, 3f); DynamicDeadlineMod.Instance.mls.LogInfo((object)$"Successfully loaded the previous totalOfAverage variable! totalofAverage is: {num4}"); } else { ES3.Save<float>("previousDeadline", 3f, currentSaveFileName); num4 = ES3.Load<float>("previousDeadline", currentSaveFileName, 3f); DynamicDeadlineMod.Instance.mls.LogInfo((object)"Could not load previousDeadline variable as it does not exist! Creating now!"); } float num5; if (ES3.KeyExists("totalOfAverage")) { num5 = ES3.Load<float>("totalOfAverage", currentSaveFileName, 0f); DynamicDeadlineMod.Instance.mls.LogInfo((object)$"Successfully loaded the previous totalOfAverage variable! totalofAverage is: {num5}"); } else { ES3.Save<float>("totalOfAverage", 0f, currentSaveFileName); num5 = ES3.Load<float>("totalOfAverage", currentSaveFileName, 0f); DynamicDeadlineMod.Instance.mls.LogInfo((object)"Could not load totalOfAverage variable as it does not exist! Creating now!"); } if (isHost && !DynamicDeadlineMod.legacyCal.Value) { float num6 = Mathf.Clamp(Mathf.Ceil(quotaFulfilled / num4), DynamicDeadlineMod.MinScrapValuePerDay.Value, 1000f); if (num5 == 0f && num != 0f) { num5 = DynamicDeadlineMod.MinScrapValuePerDay.Value * num - 1f; } float num7 = num5 / num; float num8 = Mathf.Clamp(Mathf.Ceil((float)__instance.profitQuota / num7), num2, num3); num5 += num6; __instance.timeUntilDeadline = __instance.totalTime * num8; DynamicDeadlineMod.Instance.mls.LogInfo((object)$"This person is the host, changing deadline. DailyValue registered as {num6}, new average is {num7}, and host is currently on their {num} run!"); TimeOfDay.Instance.SyncTimeClientRpc(__instance.globalTime, (int)__instance.timeUntilDeadline); DynamicDeadlineMod.Instance.mls.LogInfo((object)$"The new deadline is {num8} days."); num4 = num8; DynamicDeadlineMod.Instance.mls.LogInfo((object)$"Did the value get assigned properly? Previous deadline is {num4}"); ES3.Save<float>("previousDeadline", num4, currentSaveFileName); ES3.Save<float>("totalOfAverage", num5, currentSaveFileName); } else if (isHost && DynamicDeadlineMod.legacyCal.Value) { __instance.timeUntilDeadline = __instance.totalTime * Mathf.Clamp(Mathf.Ceil((float)__instance.profitQuota / DynamicDeadlineMod.legacyDailyValue.Value), num2, num3); DynamicDeadlineMod.Instance.mls.LogInfo((object)"This person is the host and using the legacy difficulty calculations. Changing deadline."); TimeOfDay.Instance.SyncTimeClientRpc(__instance.globalTime, (int)__instance.timeUntilDeadline); } else { DynamicDeadlineMod.Instance.mls.LogInfo((object)"This person is not the host. Will not change deadline or send rpc."); } } } }
BepInEx/plugins/plugins/EladsHUD.dll
Decompiled a day agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using CustomHUD; using GameNetcodeStuff; using HarmonyLib; using Jotunn.Utils; using Microsoft.CodeAnalysis; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("EladsHUD")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Custom HUD for lethal company :]")] [assembly: AssemblyFileVersion("1.3.0.0")] [assembly: AssemblyInformationalVersion("1.3.0")] [assembly: AssemblyProduct("EladsHUD")] [assembly: AssemblyTitle("EladsHUD")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.3.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } public enum PocketFlashlightOptions { Disabled, Vanilla, Separate } public enum StaminaTextOptions { Disabled, PercentageOnly, Full } internal class CustomHUD_Mono : MonoBehaviour { public static CustomHUD_Mono instance; [Header("Health")] public CanvasGroup healthGroup; public Image healthBar; public TextMeshProUGUI healthText; public TextMeshProUGUI healthText2; [Header("Stamina")] public CanvasGroup staminaGroup; public Image staminaBar; public Image staminaBarChangeFG; public TextMeshProUGUI staminaText; public TextMeshProUGUI carryText; [Header("Battery")] public CanvasGroup batteryGroup; public Image batteryBar; public TextMeshProUGUI batteryText; [Header("Flashlight")] public CanvasGroup flashlightGroup; public Image flashlightBar; public TextMeshProUGUI flashlightText; private Color staminaColor; private Color staminaWarnColor = new Color(255f, 0f, 0f); private float colorLerp; private int lastHealth = 100; private float lastHealthChange = 0f; private void Awake() { if ((Object)(object)instance != (Object)null) { throw new Exception("2 instances of CustomHUD_Mono!"); } instance = this; } private void Start() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) staminaColor = ((Graphic)staminaBar).color; } public void UpdateFromPlayer(PlayerControllerB player) { //IL_00d8: 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_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) lastHealthChange += Time.deltaTime; if (player.health < lastHealth) { Debug.Log((object)"o shit"); Debug.Log((object)player.health); Debug.Log((object)lastHealth); lastHealthChange = 0f; } lastHealth = player.health; int health = player.health; float sprintMeter = player.sprintMeter; float sprintTime = player.sprintTime; if ((double)sprintMeter < 0.3) { colorLerp = Mathf.Clamp01(colorLerp + Time.deltaTime * 8f); } else { colorLerp = Mathf.Clamp01(colorLerp - Time.deltaTime * 8f); } ((Graphic)staminaBar).color = Color.Lerp(staminaColor, staminaWarnColor, colorLerp); int num = Mathf.FloorToInt(sprintMeter * 100f); float num2 = CalculateStaminaOverTime(player); float num3 = num2 * 100f; if (Plugin.detailedStamina.Value != 0) { ((TMP_Text)staminaText).text = $"{num}<size=75%><voffset=1>%</voffset></size>"; } else { ((TMP_Text)staminaText).text = ""; } float num4 = Mathf.Sign(num2); float num5 = num4; if (num5 != -1f) { if (num5 != 0f) { if (num5 != 1f) { } staminaBar.fillAmount = sprintMeter; staminaBarChangeFG.fillAmount = 0f; if (Plugin.detailedStamina.Value == StaminaTextOptions.Full) { TextMeshProUGUI obj = staminaText; ((TMP_Text)obj).text = ((TMP_Text)obj).text + " | +" + num3.ToString("0.0") + "<size=75%>/sec</size>"; } } else { staminaBar.fillAmount = sprintMeter; staminaBarChangeFG.fillAmount = 0f; if (Plugin.detailedStamina.Value == StaminaTextOptions.Full) { TextMeshProUGUI obj2 = staminaText; ((TMP_Text)obj2).text = ((TMP_Text)obj2).text + " | +0.0<size=75%>/sec</size>"; } } } else { staminaBar.fillAmount = sprintMeter - Mathf.Abs(num2); ((Graphic)staminaBarChangeFG).color = Color.Lerp(Color.white, staminaWarnColor, colorLerp); staminaBarChangeFG.fillAmount = Mathf.Min(sprintMeter, Mathf.Abs(num2)); ((Transform)((Graphic)staminaBarChangeFG).rectTransform).localPosition = new Vector3(1f + 276f * Mathf.Max(0f, sprintMeter - Mathf.Abs(num2)) + 0.05f, 0f); if (Plugin.detailedStamina.Value == StaminaTextOptions.Full) { TextMeshProUGUI obj3 = staminaText; ((TMP_Text)obj3).text = ((TMP_Text)obj3).text + " | " + num3.ToString("0.0") + "<size=75%>/sec</size>"; } } float num6 = Mathf.RoundToInt(Mathf.Clamp(player.carryWeight - 1f, 0f, 100f) * 105f); if (Plugin.shouldDoKGConversion) { num6 *= 0.453592f; ((TMP_Text)carryText).text = $"{num6}<size=60%>kg</size>"; } else { ((TMP_Text)carryText).text = $"{num6}<size=60%>lb</size>"; } healthBar.fillAmount = (float)health / 100f; ((TMP_Text)healthText).text = health.ToString(); if ((Object)(object)healthText2 != (Object)null) { ((TMP_Text)healthText2).text = health.ToString(); } float value = Plugin.healthbarHideDelay.Value; healthGroup.alpha = (Plugin.autoHideHealthbar.Value ? Mathf.InverseLerp(value + 1f, value, lastHealthChange) : 1f); ((Component)flashlightGroup).gameObject.SetActive(UpdateFlashlight(player)); ((Component)batteryGroup).gameObject.SetActive(UpdateBattery(player)); } private bool UpdateFlashlight(PlayerControllerB player) { if (Plugin.pocketedFlashlightDisplayMode.Value != PocketFlashlightOptions.Separate) { return false; } if (!((Behaviour)player.helmetLight).enabled) { return false; } GrabbableObject pocketedFlashlight = player.pocketedFlashlight; if ((Object)(object)pocketedFlashlight == (Object)null) { return false; } if (!pocketedFlashlight.itemProperties.requiresBattery) { return false; } flashlightBar.fillAmount = pocketedFlashlight.insertedBattery.charge; int num = Mathf.CeilToInt(pocketedFlashlight.insertedBattery.charge * pocketedFlashlight.itemProperties.batteryUsage); ((TMP_Text)flashlightText).text = $"{Mathf.CeilToInt(pocketedFlashlight.insertedBattery.charge * 100f)}%"; if (!Plugin.displayTimeLeft.Value) { return true; } TextMeshProUGUI obj = flashlightText; ((TMP_Text)obj).text = ((TMP_Text)obj).text + string.Format(" <size=60%>{0}:{1}", num / 60, (num % 60).ToString("D2")); return true; } private bool UpdateBattery(PlayerControllerB player) { GrabbableObject val = player.currentlyHeldObjectServer; if ((Object)(object)val == (Object)null && Plugin.pocketedFlashlightDisplayMode.Value == PocketFlashlightOptions.Vanilla) { val = player.pocketedFlashlight; } if ((Object)(object)val == (Object)null) { return false; } if (!val.itemProperties.requiresBattery) { return false; } batteryBar.fillAmount = val.insertedBattery.charge; int num = (int)(val.insertedBattery.charge / val.itemProperties.batteryUsage); int num2 = Mathf.CeilToInt(val.insertedBattery.charge * val.itemProperties.batteryUsage); ((TMP_Text)batteryText).text = $"{Mathf.CeilToInt(val.insertedBattery.charge * 100f)}%"; if (!Plugin.displayTimeLeft.Value) { return true; } if (val.itemProperties.itemIsTrigger) { TextMeshProUGUI obj = batteryText; ((TMP_Text)obj).text = ((TMP_Text)obj).text + $" ({num} uses remaining)"; } else { TextMeshProUGUI obj2 = batteryText; ((TMP_Text)obj2).text = ((TMP_Text)obj2).text + string.Format(" ({0}:{1} remaining)", num2 / 60, (num2 % 60).ToString("D2")); } return true; } private float CalculateStaminaOverTime(PlayerControllerB player) { if (player.sprintMeter == 1f) { return 0f; } bool privateField = player.GetPrivateField<bool>("isWalking"); float sprintTime = player.sprintTime; float num = 1f; if ((double)player.drunkness > 0.019999999552965164) { num *= Mathf.Abs(StartOfRound.Instance.drunknessSpeedEffect.Evaluate(player.drunkness) - 1.25f); } return player.isSprinting ? (-1f / sprintTime * player.carryWeight * num) : ((player.isMovementHindered > 0 && privateField) ? (-1f / sprintTime * num * 0.5f) : ((!privateField) ? (1f / (sprintTime + 4f) * num) : (1f / (sprintTime + 9f) * num))); } } namespace EladsHUD { public static class PluginInfo { public const string PLUGIN_GUID = "EladsHUD"; public const string PLUGIN_NAME = "EladsHUD"; public const string PLUGIN_VERSION = "1.3.0"; } } namespace CustomHUD { [BepInPlugin("me.eladnlg.customhud", "Elads HUD", "1.2.3")] public class Plugin : BaseUnityPlugin { public static Plugin instance; public AssetBundle assets; public GameObject HUD; public static bool shouldDoKGConversion; internal static ConfigEntry<PocketFlashlightOptions> pocketedFlashlightDisplayMode; internal static ConfigEntry<StaminaTextOptions> detailedStamina; internal static ConfigEntry<bool> displayTimeLeft; internal static ConfigEntry<float> hudScale; internal static ConfigEntry<bool> autoHideHealthbar; internal static ConfigEntry<float> healthbarHideDelay; internal static ConfigEntry<bool> hidePlanetInfo; private void Awake() { //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Expected O, but got Unknown if ((Object)(object)instance != (Object)null) { throw new Exception("what the cuck??? more than 1 plugin instance."); } instance = this; hudScale = ((BaseUnityPlugin)this).Config.Bind<float>("General", "HUDScale", 1f, "The size of the HUD."); autoHideHealthbar = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "HideHealthbarAutomatically", true, "Should the healthbar be hidden after not taking damage for a while."); healthbarHideDelay = ((BaseUnityPlugin)this).Config.Bind<float>("General", "HealthbarHideDelay", 4f, "The amount of time before the healthbar starts fading away."); pocketedFlashlightDisplayMode = ((BaseUnityPlugin)this).Config.Bind<PocketFlashlightOptions>("General", "FlashlightBattery", PocketFlashlightOptions.Separate, "How the flashlight battery is displayed whilst unequipped.\r\nDisabled - Flashlight battery will not be displayed.\r\nVanilla - Flashlight battery will be displayed when you don't have a battery-using item equipped.\r\nSeparate - Flashlight battery will be displayed using a dedicated panel. (recommended)"); detailedStamina = ((BaseUnityPlugin)this).Config.Bind<StaminaTextOptions>("General", "DetailedStamina", StaminaTextOptions.PercentageOnly, "What the stamina text should display.\r\nDisabled - The stamina text will be hidden.\r\nPercentageOnly - Only the percentage will be displayed. (recommended)\r\nFull - Both percentage and rate of gain/loss will be displayed."); displayTimeLeft = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "DisplayTimeLeft", true, "Should the uses/time left for a battery-using item be displayed."); hidePlanetInfo = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "HidePlanetInfo", false, "Should planet info be hidden. If modifying from an in-game menu, this requires you to rejoin the game."); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin Elad's HUD is loaded!"); assets = AssetUtils.LoadAssetBundleFromResources("customhud", typeof(PlayerPatches).Assembly); HUD = assets.LoadAsset<GameObject>("PlayerInfo"); Harmony val = new Harmony("me.eladnlg.customhud"); val.PatchAll(Assembly.GetExecutingAssembly()); } private void Start() { ((BaseUnityPlugin)this).Logger.LogInfo((object)(Chainloader.PluginInfos.Count + " plugins loaded")); foreach (KeyValuePair<string, PluginInfo> pluginInfo in Chainloader.PluginInfos) { ((BaseUnityPlugin)this).Logger.LogInfo((object)("Plugin GUID: " + pluginInfo.Value.Metadata.GUID)); } shouldDoKGConversion = Chainloader.PluginInfos.Any((KeyValuePair<string, PluginInfo> pair) => pair.Value.Metadata.GUID == "com.zduniusz.lethalcompany.lbtokg"); } } [HarmonyPatch(typeof(HUDManager))] public class HUDPatches { [HarmonyPostfix] [HarmonyPatch("Awake")] private static void Awake_Postfix(HUDManager __instance) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) HUDElement[] privateField = __instance.GetPrivateField<HUDElement[]>("HUDElements"); HUDElement val = privateField[2]; GameObject val2 = Object.Instantiate<GameObject>(Plugin.instance.HUD, ((Component)val.canvasGroup).transform.parent); val2.transform.localScale = Vector3.one * 0.75f * Plugin.hudScale.Value; val.canvasGroup.alpha = 0f; Transform val3 = ((Component)val.canvasGroup).transform.Find("CinematicGraphics"); if ((Object)(object)val3 != (Object)null && !Plugin.hidePlanetInfo.Value) { val3.SetParent(val2.transform.parent); } privateField[2].canvasGroup = val2.GetComponent<CanvasGroup>(); } } [HarmonyPatch(typeof(PlayerControllerB))] public static class PlayerPatches { [HarmonyPrefix] [HarmonyPatch("LateUpdate")] private static void LateUpdate_Prefix(PlayerControllerB __instance) { if (((NetworkBehaviour)__instance).IsOwner && (!((NetworkBehaviour)__instance).IsServer || __instance.isHostPlayerObject) && !((Object)(object)CustomHUD_Mono.instance == (Object)null)) { CustomHUD_Mono.instance.UpdateFromPlayer(__instance); } } } internal static class ReflectionUtils { public static T GetPrivateField<T>(this object obj, string field) { return (T)obj.GetType().GetField(field, BindingFlags.Instance | BindingFlags.NonPublic).GetValue(obj); } } } namespace Jotunn.Utils { public static class AssetUtils { public const char AssetBundlePathSeparator = '$'; public static Texture2D LoadTexture(string texturePath, bool relativePath = true) { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown string text = texturePath; if (relativePath) { text = Path.Combine(Paths.PluginPath, texturePath); } if (!File.Exists(text)) { return null; } if (!text.EndsWith(".png") && !text.EndsWith(".jpg")) { throw new Exception("LoadTexture can only load png or jpg textures"); } byte[] array = File.ReadAllBytes(text); Texture2D val = new Texture2D(2, 2); val.LoadRawTextureData(array); return val; } public static Sprite LoadSpriteFromFile(string spritePath) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) Texture2D val = LoadTexture(spritePath); if ((Object)(object)val != (Object)null) { return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), default(Vector2), 100f); } return null; } public static AssetBundle LoadAssetBundle(string bundlePath) { string text = Path.Combine(Paths.PluginPath, bundlePath); if (!File.Exists(text)) { return null; } return AssetBundle.LoadFromFile(text); } public static AssetBundle LoadAssetBundleFromResources(string bundleName, Assembly resourceAssembly) { if (resourceAssembly == null) { throw new ArgumentNullException("Parameter resourceAssembly can not be null."); } string text = null; try { text = resourceAssembly.GetManifestResourceNames().Single((string str) => str.EndsWith(bundleName)); } catch (Exception) { } if (text == null) { Debug.LogError((object)("AssetBundle " + bundleName + " not found in assembly manifest")); return null; } AssetBundle result; using (Stream stream = resourceAssembly.GetManifestResourceStream(text)) { result = AssetBundle.LoadFromStream(stream); } return result; } public static string LoadText(string path) { string text = Path.Combine(Paths.PluginPath, path); if (!File.Exists(text)) { Debug.LogError((object)("Error, failed to load contents from non-existant path: $" + text)); return null; } return File.ReadAllText(text); } public static Sprite LoadSprite(string assetPath) { //IL_00a8: 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) string text = Path.Combine(Paths.PluginPath, assetPath); if (!File.Exists(text)) { return null; } if (text.Contains('$'.ToString())) { string[] array = text.Split('$'); string text2 = array[0]; string text3 = array[1]; AssetBundle val = AssetBundle.LoadFromFile(text2); Sprite result = val.LoadAsset<Sprite>(text3); val.Unload(false); return result; } Texture2D val2 = LoadTexture(text, relativePath: false); if (!Object.op_Implicit((Object)(object)val2)) { return null; } return Sprite.Create(val2, new Rect(0f, 0f, (float)((Texture)val2).width, (float)((Texture)val2).height), Vector2.zero); } } }
BepInEx/plugins/plugins/Fixes/LC_Optim.dll
Decompiled a day agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("LC_Optim")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Source moment")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("LC_Optim")] [assembly: AssemblyTitle("LC_Optim")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace LC_Optim; [BepInPlugin("mnc.fixcentipedelag", "FixCentipedeLag", "2023.12.7")] public class Plugin : BaseUnityPlugin { private Harmony thisHarmony; private static Dictionary<int, ulong> instanceMap = new Dictionary<int, ulong>(); private static ulong deadtimer = 100uL; private static ManualLogSource Log; private static ConfigEntry<bool> configShowDebug; private static void Debug(object data, LogLevel logLevel = 16) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) if (configShowDebug.Value) { Log.Log(logLevel, data); } } private void Awake() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Expected O, but got Unknown configShowDebug = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Enable debug printing", true, "Enabling this will show debug info in console, e.g. when a new centipede gets tracked or removed."); thisHarmony = new Harmony("mnc.fixcentipedelag"); thisHarmony.Patch((MethodBase)typeof(CentipedeAI).GetMethod("DoAIInterval"), new HarmonyMethod(typeof(Plugin), "RemoveLagCentipede", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); Debug("Registered the patch method", (LogLevel)4); Log = ((BaseUnityPlugin)this).Logger; } public static void RemoveLagCentipede(CentipedeAI __instance) { if (((EnemyAI)__instance).TargetClosestPlayer(1.5f, false, 70f)) { return; } int instanceID = ((Object)__instance).GetInstanceID(); ulong num = (ulong)Time.frameCount; if (!instanceMap.ContainsKey(instanceID)) { instanceMap.Add(instanceID, num); Debug($"Tracked {instanceID}", (LogLevel)16); return; } ulong num2 = instanceMap[instanceID]; if (num - num2 <= deadtimer) { ((EnemyAI)__instance).KillEnemy(true); instanceMap.Remove(instanceID); Debug($"Removed centipede at {instanceID}", (LogLevel)16); } else { instanceMap[instanceID] = num; } } public void OnDestroy() { thisHarmony.UnpatchSelf(); } } internal class PluginMetadata { public const string PLUGIN_GUID = "mnc.fixcentipedelag"; public const string PLUGIN_NAME = "FixCentipedeLag"; public const string PLUGIN_VERSION = "2023.12.7"; } public static class MyPluginInfo { public const string PLUGIN_GUID = "LC_Optim"; public const string PLUGIN_NAME = "LC_Optim"; public const string PLUGIN_VERSION = "1.0.0"; }
BepInEx/plugins/plugins/Fixes/NameFix.dll
Decompiled a day agousing System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using GameNetcodeStuff; using HarmonyLib; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("NameFix")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("NameFix")] [assembly: AssemblyCopyright("Copyright © BlueAmulet 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("9a85f7c4-c974-4bff-b83a-5cbcde42b246")] [assembly: AssemblyFileVersion("1.0.1")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.1.0")] namespace NameFix { [BepInPlugin("BlueAmulet.NameFix", "NameFix", "1.0.1")] public class NameFix : BaseUnityPlugin { internal const string Name = "NameFix"; internal const string Author = "BlueAmulet"; internal const string ID = "BlueAmulet.NameFix"; internal const string Version = "1.0.1"; public void Awake() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) Harmony val = new Harmony("BlueAmulet.NameFix"); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Applying Harmony patches"); val.PatchAll(Assembly.GetExecutingAssembly()); int num = 0; foreach (MethodBase patchedMethod in val.GetPatchedMethods()) { ((BaseUnityPlugin)this).Logger.LogInfo((object)("Patched " + patchedMethod.DeclaringType.Name + "." + patchedMethod.Name)); num++; } ((BaseUnityPlugin)this).Logger.LogInfo((object)(num + " patches applied")); } public static string NoPunctuation(string input) { return new string(input.Where((char c) => char.IsLetterOrDigit(c) || c == '_').ToArray()); } } } namespace NameFix.Patches { [HarmonyPatch] internal static class NameSanitizePatch { [HarmonyPrefix] [HarmonyPatch(typeof(PlayerControllerB), "NoPunctuation")] public static bool Prefix1(ref string __result, string input) { __result = NameFix.NoPunctuation(input); return false; } [HarmonyPrefix] [HarmonyPatch(typeof(GameNetworkManager), "NoPunctuation")] public static bool Prefix2(ref string __result, string input) { __result = NameFix.NoPunctuation(input); return false; } [HarmonyPrefix] [HarmonyPatch(typeof(StartOfRound), "NoPunctuation")] public static bool Prefix3(ref string __result, string input) { __result = NameFix.NoPunctuation(input); return false; } } }
BepInEx/plugins/plugins/Fixes/SlimeTamingFix.dll
Decompiled a day agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("EliteMasterEric")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Fixes a bug that made Hygroderes unable to be tamed with Boomboxes.")] [assembly: AssemblyFileVersion("1.0.2.0")] [assembly: AssemblyInformationalVersion("1.0.2+38f01b21fff41249851eaa3d5a7686cfd554bb79")] [assembly: AssemblyProduct("SlimeTamingFix")] [assembly: AssemblyTitle("SlimeTamingFix")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.2.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace SlimeTamingFix { public static class PluginInfo { public const string PLUGIN_ID = "SlimeTamingFix"; public const string PLUGIN_NAME = "SlimeTamingFix"; public const string PLUGIN_VERSION = "1.0.2"; public const string PLUGIN_GUID = "com.elitemastereric.slimetamingfix"; } [BepInPlugin("com.elitemastereric.slimetamingfix", "SlimeTamingFix", "1.0.2")] public class Plugin : BaseUnityPlugin { public ManualLogSource PluginLogger; public static Plugin Instance { get; private set; } private void Awake() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown Instance = this; PluginLogger = ((BaseUnityPlugin)this).Logger; Harmony val = new Harmony("com.elitemastereric.slimetamingfix"); val.PatchAll(); PluginLogger.LogInfo((object)"Plugin SlimeTamingFix (com.elitemastereric.slimetamingfix) is loaded!"); } } } namespace SlimeTamingFix.Patch { [HarmonyPatch(typeof(BlobAI))] [HarmonyPatch("OnCollideWithPlayer")] internal class BlobAIOnCollideWithPlayerPatch { public static bool Prefix(BlobAI __instance) { float value = Traverse.Create((object)__instance).Field("tamedTimer").GetValue<float>(); float value2 = Traverse.Create((object)__instance).Field("angeredTimer").GetValue<float>(); if (value > 0f && value2 <= 0f) { return false; } return true; } } }
BepInEx/plugins/plugins/Fixes/WeedKillerFixes.dll
Decompiled a day agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Logging; using HarmonyLib; using LobbyCompatibility.Enums; using LobbyCompatibility.Features; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: AssemblyCompany("WeedKillerFixes")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Fixes some major issues with weed killer")] [assembly: AssemblyFileVersion("1.1.2.0")] [assembly: AssemblyInformationalVersion("1.1.2+d8dc6bb9ea6ec4ac16c67ecf3d1f289afcc6f868")] [assembly: AssemblyProduct("WeedKillerFixes")] [assembly: AssemblyTitle("WeedKillerFixes")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.2.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace WeedKillerFixes { internal static class LobbyCompatibility { internal static void Init() { PluginHelper.RegisterPlugin("butterystancakes.lethalcompany.weedkillerfixes", Version.Parse("1.1.2"), (CompatibilityLevel)0, (VersionStrictness)0); } } [BepInPlugin("butterystancakes.lethalcompany.weedkillerfixes", "Weed Killer Fixes", "1.1.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { internal const string PLUGIN_GUID = "butterystancakes.lethalcompany.weedkillerfixes"; internal const string PLUGIN_NAME = "Weed Killer Fixes"; internal const string PLUGIN_VERSION = "1.1.2"; internal static ManualLogSource Logger; private const string GUID_LOBBY_COMPATIBILITY = "BMX.LobbyCompatibility"; private void Awake() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) Logger = ((BaseUnityPlugin)this).Logger; if (Chainloader.PluginInfos.ContainsKey("BMX.LobbyCompatibility")) { Logger.LogInfo((object)"CROSS-COMPATIBILITY - Lobby Compatibility detected"); LobbyCompatibility.Init(); } new Harmony("butterystancakes.lethalcompany.weedkillerfixes").PatchAll(); Logger.LogInfo((object)"Weed Killer Fixes v1.1.2 loaded"); } } [HarmonyPatch] internal class WeedKillerFixesPatches { private static MoldSpreadManager moldSpreadManager; private static VehicleController vehicleController; private static readonly MethodInfo MOLD_SPREAD_MANAGER_INSTANCE = AccessTools.DeclaredPropertyGetter(typeof(WeedKillerFixesPatches), "MoldSpreadManager"); private static readonly FieldInfo VEHICLE_CONTROLLER_INSTANCE = AccessTools.Field(typeof(WeedKillerFixesPatches), "vehicleController"); private static MoldSpreadManager MoldSpreadManager { get { if ((Object)(object)moldSpreadManager == (Object)null) { moldSpreadManager = Object.FindAnyObjectByType<MoldSpreadManager>(); } return moldSpreadManager; } } [HarmonyPatch(typeof(SprayPaintItem), "TrySprayingWeedKillerBottle")] [HarmonyTranspiler] private static IEnumerable<CodeInstruction> SprayPaintItem_Trans_TrySprayingWeedKillerBottle(IEnumerable<CodeInstruction> instructions) { //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Expected O, but got Unknown List<CodeInstruction> list = instructions.ToList(); MethodInfo methodInfo = AccessTools.Method(typeof(GameObject), "CompareTag", (Type[])null, (Type[])null); MethodInfo methodInfo2 = AccessTools.DeclaredPropertyGetter(typeof(Time), "deltaTime"); for (int i = 2; i < list.Count - 3; i++) { if (list[i].opcode == OpCodes.Call) { string text = list[i].operand.ToString(); if (text.Contains("Raycast") && list[i - 2].opcode == OpCodes.Ldc_I4) { list[i - 2].operand = (int)list[i - 2].operand & ~(1 << LayerMask.NameToLayer("Room")); Plugin.Logger.LogDebug((object)"Transpiler (SprayPaintItem.TrySprayingWeedKillerBottle): Simplify layer mask"); } else if ((MethodInfo)list[i].operand == methodInfo2) { list[i].opcode = OpCodes.Ldfld; list[i].operand = AccessTools.Field(typeof(SprayPaintItem), "sprayIntervalSpeed"); list.Insert(i, new CodeInstruction(OpCodes.Ldarg_0, (object)null)); Plugin.Logger.LogDebug((object)"Transpiler (SprayPaintItem.TrySprayingWeedKillerBottle): Fix addVehicleHPInterval time"); } else if (text.Contains("VehicleController")) { list[i].opcode = OpCodes.Ldsfld; list[i].operand = VEHICLE_CONTROLLER_INSTANCE; Plugin.Logger.LogDebug((object)"Transpiler (SprayPaintItem.TrySprayingWeedKillerBottle): Cache Cruiser script"); } } else if (list[i].opcode == OpCodes.Ldstr && (string)list[i].operand == "MoldSporeCollider" && list[i + 1].opcode == OpCodes.Callvirt && (MethodInfo)list[i + 1].operand == methodInfo) { list[i].operand = "MoldSpore"; Plugin.Logger.LogDebug((object)"Transpiler (SprayPaintItem.TrySprayingWeedKillerBottle): Fix wrong tag being checked"); } } return list; } [HarmonyPatch(typeof(SprayPaintItem), "KillWeedClientRpc")] [HarmonyPatch(typeof(SprayPaintItem), "LateUpdate")] [HarmonyTranspiler] private static IEnumerable<CodeInstruction> CacheMoldSpreadManager(IEnumerable<CodeInstruction> instructions, MethodBase __originalMethod) { List<CodeInstruction> list = instructions.ToList(); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Call) { string text = list[i].operand.ToString(); if (text.Contains("FindObjectOfType") && text.Contains("MoldSpreadManager")) { list[i].operand = MOLD_SPREAD_MANAGER_INSTANCE; Plugin.Logger.LogDebug((object)$"Transpiler ({__originalMethod.DeclaringType}.{__originalMethod.Name}): Cache weed script"); } } } return list; } [HarmonyPatch(typeof(VehicleController), "Awake")] [HarmonyPostfix] private static void VehicleController_Post_Awake(VehicleController __instance) { if ((Object)(object)vehicleController == (Object)null) { vehicleController = __instance; } } } public static class PluginInfo { public const string PLUGIN_GUID = "WeedKillerFixes"; public const string PLUGIN_NAME = "WeedKillerFixes"; public const string PLUGIN_VERSION = "1.1.2"; } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }
BepInEx/plugins/plugins/ForestGiantMotionsense.dll
Decompiled a day agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("TanmanG")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyCopyright("CC BY-NC-SA")] [assembly: AssemblyDescription("A Harmony patch to adjust Forest Giant AI to only detect motion.")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+884e96a4438d7ff5cff13942e224a52cc46655dc")] [assembly: AssemblyProduct("ForestGiantMotionsense")] [assembly: AssemblyTitle("ForestGiantMotionsense")] [assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/TanmanG/LethalCompany_ForestGiantMotionsense")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace ForestGiantMotionsense { [BepInPlugin("ForestGiantMotionsense", "ForestGiantMotionsense", "1.0.0")] public class FoGiMoSeMod : BaseUnityPlugin { private static ConfigEntry<float> _configMoveTime; private static FoGiMoSeMod _instance; private static bool _patchFailed; private void Awake() { _instance = this; _patchFailed = false; ((BaseUnityPlugin)this).Logger.LogInfo((object)"Loading..."); _configMoveTime = ((BaseUnityPlugin)this).Config.Bind<float>("General", "TimeSinceMovingThreshold", 2.25f, "The amount of time the player must remain still before being invisible to a Forest Giant."); Harmony val = Harmony.CreateAndPatchAll(typeof(FoGiMoSeMod), (string)null); if (_patchFailed) { ((BaseUnityPlugin)this).Logger.LogError((object)"Failure to find patch location, reverting!"); Harmony.UnpatchID(val.Id); } else { ((BaseUnityPlugin)this).Logger.LogInfo((object)"Loaded!"); } } [HarmonyPatch(typeof(ForestGiantAI), "LookForPlayers")] [HarmonyTranspiler] private static IEnumerable<CodeInstruction> MotionPatch(IEnumerable<CodeInstruction> instructions, ILGenerator generator) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Expected O, but got Unknown //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Expected O, but got Unknown //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Expected O, but got Unknown //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Expected O, but got Unknown //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Expected O, but got Unknown //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Expected O, but got Unknown //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Expected O, but got Unknown //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Expected O, but got Unknown //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Expected O, but got Unknown //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Expected O, but got Unknown //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Expected O, but got Unknown CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null); val.Start(); val.MatchForward(false, (CodeMatch[])(object)new CodeMatch[6] { new CodeMatch((OpCode?)OpCodes.Call, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldfld, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldloc_S, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldelem_Ref, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldfld, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldc_R4, (object)null, (string)null) }); if (val.Remaining == 0) { ((BaseUnityPlugin)_instance).Logger.LogFatal((object)"Could not find LookForPlayers time since moved code block to patch, flagging to abort!"); _patchFailed = true; } List<CodeInstruction> list = new List<CodeInstruction>(); for (int i = 0; i < 6; i++) { CodeInstruction item = new CodeInstruction(val.Instruction); list.Add(item); val.Advance(1); } list[list.Count - 1].operand = _configMoveTime.Value; list.Add(new CodeInstruction(OpCodes.Clt, (object)null)); val.Start(); val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[7] { new CodeMatch((OpCode?)OpCodes.Ldloc_0, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Call, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldfld, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldloc_S, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldelem_Ref, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Call, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Brfalse, (object)null, (string)null) }); if (val.Remaining == 0) { ((BaseUnityPlugin)_instance).Logger.LogFatal((object)"Could not find LookForPlayers IF condition to patch, flagging to abort!"); _patchFailed = true; return val.InstructionEnumeration(); } list.Add(new CodeInstruction(val.Instruction)); val.Advance(1); val.InsertAndAdvance((IEnumerable<CodeInstruction>)list); return val.InstructionEnumeration(); } private static IEnumerable<CodeInstruction> TimeSinceMovePatch(IEnumerable<CodeInstruction> instructions) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Expected O, but got Unknown //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Expected O, but got Unknown //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Expected O, but got Unknown //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Expected O, but got Unknown //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Expected O, but got Unknown //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Expected O, but got Unknown //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Expected O, but got Unknown //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Expected O, but got Unknown CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null).MatchForward(true, (CodeMatch[])(object)new CodeMatch[8] { new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldfld, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldfld, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Dup, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldfld, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldc_I4_1, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Add, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Stfld, (object)null, (string)null) }); if (val.Remaining == 0) { ((BaseUnityPlugin)_instance).Logger.LogFatal((object)"Could not find UpdatePlayerPositionClientRPC patch location, flagging abort!"); _patchFailed = true; } val.InsertAndAdvance((CodeInstruction[])(object)new CodeInstruction[3] { new CodeInstruction(OpCodes.Ldarg_0, (object)null), new CodeInstruction(OpCodes.Ldc_R4, (object)0f), new CodeInstruction(OpCodes.Stfld, (object)AccessTools.Field(typeof(PlayerControllerB), "timeSincePlayerMoving")) }); return val.InstructionEnumeration(); } } public static class PluginInfo { public const string PLUGIN_GUID = "ForestGiantMotionsense"; public const string PLUGIN_NAME = "ForestGiantMotionsense"; public const string PLUGIN_VERSION = "1.0.0"; } }
BepInEx/plugins/plugins/HoldScanButton.dll
Decompiled a day agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using HoldScanButton.Patches; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.InputSystem; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("HoldScanButton")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("A mod which allows you to hold the scan button instead of needing to spam it.")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+e176b95ccf205ccfcd919c056ec842f624ca0c1a")] [assembly: AssemblyProduct("HoldScanButton")] [assembly: AssemblyTitle("HoldScanButton")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } [BepInPlugin("HoldScanButton", "HoldScanButton", "1.0.0")] public class HoldScanButtonPlugin : BaseUnityPlugin { private readonly Harmony harmony = new Harmony("HoldScanButton"); public static HoldScanButtonPlugin Instance; internal ManualLogSource logger; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } logger = Logger.CreateLogSource("HoldScanButton"); logger.LogInfo((object)"Plugin HoldScanButton has loaded!"); harmony.PatchAll(typeof(HoldScanButtonPatch)); } } internal static class LCMPluginInfo { public const string PLUGIN_GUID = "HoldScanButton"; public const string PLUGIN_NAME = "HoldScanButton"; public const string PLUGIN_VERSION = "1.0.0"; } namespace HoldScanButton.Patches { internal class HoldScanButtonPatch { private static CallbackContext pingContext; [HarmonyPatch(typeof(HUDManager), "Update")] [HarmonyPostfix] private static void UpdatePatch(HUDManager __instance) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) if (IngamePlayerSettings.Instance.playerInput.actions.FindAction("PingScan", false).IsPressed()) { __instance.PingScan_performed(pingContext); } } [HarmonyPatch(typeof(HUDManager), "PingScan_performed")] [HarmonyPrefix] private static void OnScan(HUDManager __instance, CallbackContext context) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) pingContext = context; } } }
BepInEx/plugins/plugins/JetpackWarning.dll
Decompiled a day agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Hamunii")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("A Lethal Company Mod that adds a visual and audio indicator for when your jetpack is about to explode.")] [assembly: AssemblyFileVersion("2.2.0.0")] [assembly: AssemblyInformationalVersion("2.2.0")] [assembly: AssemblyProduct("JetpackWarning")] [assembly: AssemblyTitle("JetpackWarning")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("2.2.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace JetpackWarning { public static class Assets { public static string mainAssetBundleName = "jetpackAssets"; public static AssetBundle MainAssetBundle = null; private static string GetAssemblyName() { return Assembly.GetExecutingAssembly().FullName.Split(',')[0]; } public static void PopulateAssets() { if ((Object)(object)MainAssetBundle == (Object)null) { using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(GetAssemblyName() + "." + mainAssetBundleName)) { MainAssetBundle = AssetBundle.LoadFromStream(stream); } } } } [BepInPlugin("JetpackWarning", "JetpackWarning", "2.2.0")] public class JetpackWarningPlugin : BaseUnityPlugin { public static Harmony _harmony; public static AudioClip jetpackCriticalBeep; public static GameObject meterContainer; public static GameObject meter; public static GameObject frame; public static GameObject warning; private void Awake() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin JetpackWarning is loaded!"); Assets.PopulateAssets(); _harmony = new Harmony("JetpackWarning"); _harmony.PatchAll(typeof(Patches)); SceneManager.sceneLoaded += OnSceneRelayLoaded; jetpackCriticalBeep = Assets.MainAssetBundle.LoadAsset<AudioClip>("JetpackCriticalBeep"); } private void OnSceneRelayLoaded(Scene scene, LoadSceneMode loadMode) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0091: 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_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) if (((Scene)(ref scene)).name == "SampleSceneRelay") { GameObject val = GameObject.Find("IngamePlayerHUD"); meterContainer = new GameObject("jetpackMeterContainer"); meterContainer.AddComponent<CanvasGroup>(); RectTransform obj = meterContainer.AddComponent<RectTransform>(); ((Transform)obj).parent = val.transform; ((Transform)obj).localScale = Vector3.one; obj.anchoredPosition = Vector2.zero; ((Transform)obj).localPosition = Vector2.op_Implicit(new Vector2(50f, 0f)); obj.sizeDelta = Vector2.one; meter = AddImageToHUD("jetpackMeter", scene); frame = AddImageToHUD("jetpackMeterFrame", scene); warning = AddImageToHUD("jetpackMeterWarning", scene); GameObject[] array = (GameObject[])(object)new GameObject[3] { meter, frame, warning }; foreach (GameObject obj2 in array) { obj2.transform.parent = meterContainer.transform; obj2.transform.localPosition = Vector2.op_Implicit(Vector2.zero); } meter.GetComponent<Image>().type = (Type)3; meter.GetComponent<Image>().fillMethod = (FillMethod)1; Transform transform = warning.transform; transform.localPosition += new Vector3(30f, 0f); } } private GameObject AddImageToHUD(string imageName, Scene scene) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Expected O, but got Unknown Sprite val = Assets.MainAssetBundle.LoadAsset<Sprite>(imageName); GameObject val2 = new GameObject(imageName); SceneManager.MoveGameObjectToScene(val2, scene); GameObject val3 = GameObject.Find("IngamePlayerHUD"); RectTransform obj = val2.AddComponent<RectTransform>(); ((Transform)obj).parent = val3.transform; ((Transform)obj).localScale = Vector2.op_Implicit(Vector2.one); obj.anchoredPosition = Vector2.zero; ((Transform)obj).localPosition = Vector2.op_Implicit(Vector2.zero); Rect rect = val.rect; float num = ((Rect)(ref rect)).width / 2f; rect = val.rect; obj.sizeDelta = new Vector2(num, ((Rect)(ref rect)).height / 2f); val2.AddComponent<Image>().sprite = val; val2.AddComponent<CanvasRenderer>(); return val2; } } internal class Patches { private static bool playJetpackCritical = false; private static bool playingJetpackCritical = false; private static float criticalFill = 0.75f; [HarmonyPatch(typeof(PlayerControllerB), "LateUpdate")] [HarmonyPostfix] private static void PlayerControllerB_LateUpdate_Postfix(ref PlayerControllerB __instance) { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Expected O, but got Unknown //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Unknown result type (might be due to invalid IL or missing references) if (!((NetworkBehaviour)__instance).IsOwner || (((NetworkBehaviour)__instance).IsServer && !__instance.isHostPlayerObject) || !__instance.isPlayerControlled || __instance.isPlayerDead) { return; } if (__instance.isHoldingObject && __instance.currentlyHeldObjectServer is JetpackItem) { JetpackItem val = (JetpackItem)__instance.currentlyHeldObjectServer; JetpackWarningPlugin.meterContainer.SetActive(true); Vector3 val2 = (Vector3)typeof(JetpackItem).GetField("forces", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(val); float num = (float)typeof(JetpackItem).GetField("jetpackPower", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(val); float num2 = ((!(num < 80f)) ? (0.5f - Mathf.Clamp(num / 20f - 4f, 0f, 1f) / 2f) : (Mathf.Clamp(num / 25f - 2.2f, 0f, 1f) / 2f)); if (((Vector3)(ref val2)).magnitude > 47f) { num2 = Mathf.Clamp(((Vector3)(ref val2)).magnitude / 3f - 15.6666f, 0f, 1f); } float num3 = ((((Vector3)(ref val2)).magnitude >= 0f) ? (((Vector3)(ref val2)).magnitude / 50f) : 0f); float num4 = Mathf.Lerp((((Vector3)(ref val2)).magnitude / 2f + num / 2.25f >= 0f) ? ((((Vector3)(ref val2)).magnitude / 2f + num / 2.25f) / 50f) : 0f, num3, num2); JetpackWarningPlugin.meter.GetComponent<Image>().fillAmount = num4; JetpackWarningPlugin.warning.SetActive(num4 > criticalFill); playJetpackCritical = num4 > criticalFill; Color color = Color.Lerp(new Color(1f, 0.82f, 0.405f, 1f), new Color(0.769f, 0.243f, 0.243f, 1f), num4); ((Graphic)JetpackWarningPlugin.meter.GetComponent<Image>()).color = color; ((Graphic)JetpackWarningPlugin.frame.GetComponent<Image>()).color = color; ((Graphic)JetpackWarningPlugin.warning.GetComponent<Image>()).color = color; if (playJetpackCritical) { if (!playingJetpackCritical) { playingJetpackCritical = true; val.jetpackBeepsAudio.clip = JetpackWarningPlugin.jetpackCriticalBeep; val.jetpackBeepsAudio.Play(); } } else { playingJetpackCritical = false; } } else { JetpackWarningPlugin.meterContainer.SetActive(false); } } [HarmonyPatch(typeof(JetpackItem), "SetJetpackAudios")] [HarmonyPrefix] private static bool JetpackItem_SetJetpackAudios_Prefix(ref bool ___jetpackActivated, ref AudioSource ___jetpackBeepsAudio) { return !playingJetpackCritical; } [HarmonyPatch(typeof(JetpackItem), "JetpackEffect")] [HarmonyPostfix] private static void JetpackItem_JetpackEffect_Postfix(ref bool __0, JetpackItem __instance) { if (__0 && playJetpackCritical) { playingJetpackCritical = true; __instance.jetpackBeepsAudio.clip = JetpackWarningPlugin.jetpackCriticalBeep; __instance.jetpackBeepsAudio.Play(); } } } public static class PluginInfo { public const string PLUGIN_GUID = "JetpackWarning"; public const string PLUGIN_NAME = "JetpackWarning"; public const string PLUGIN_VERSION = "2.2.0"; } }
BepInEx/plugins/plugins/KarmaForBeingAnnoying.dll
Decompiled a day agousing System.Collections; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using KarmaForBeingAnnoying.Patches; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("KarmaForBeingAnnoying")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("KarmaForBeingAnnoying")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("06f7acd4-c565-4c95-829c-d167f1aee2c2")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace KarmaForBeingAnnoying { [BepInPlugin("Chrigi.KarmaForBeingAnnoyingMod", "Karma For Being Annoying Mod", "1.1.0")] public class KarmaForBeingAnnoyingModBase : BaseUnityPlugin { private const string modGUID = "Chrigi.KarmaForBeingAnnoyingMod"; private const string modName = "Karma For Being Annoying Mod"; private const string modVersion = "1.1.0"; private readonly Harmony harmony = new Harmony("Chrigi.KarmaForBeingAnnoyingMod"); private static KarmaForBeingAnnoyingModBase Instance; internal static ConfigEntry<bool> AnnoyingItemSetting; internal static ConfigEntry<float> ProbabilitySetting; internal static ConfigEntry<float> ProbabilityRemoteSetting; internal static ConfigEntry<float> ProbabilityAirhornSetting; internal static ConfigEntry<float> ProbabilityClownhornSetting; internal static ConfigEntry<float> ProbabilityCashRegisterSetting; internal static ConfigEntry<float> ProbabilityHairDryerSetting; internal static ConfigEntry<float> DelaySetting; internal static ConfigEntry<float> KillRangeSetting; internal static ConfigEntry<float> DamageRangeSetting; internal static ConfigEntry<bool> RemoteSetting; public static ManualLogSource mls; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("Chrigi.KarmaForBeingAnnoyingMod"); mls.LogInfo((object)"________________\nKarma is a bitch!\n________________"); SetCFG(); harmony.PatchAll(typeof(NoisemakerPropPatch)); } private static void SetCFG() { AnnoyingItemSetting = ((BaseUnityPlugin)Instance).Config.Bind<bool>("KarmaForBeingAnnoying Settings", "ON OFF switch", true, "Turns functionality on or off"); ProbabilitySetting = ((BaseUnityPlugin)Instance).Config.Bind<float>("Probability Settings", "General Probability", 0.1f, "Set probability of exploding"); ProbabilityRemoteSetting = ((BaseUnityPlugin)Instance).Config.Bind<float>("Probability Settings", "Remote Probability", 0.1f, "Set probability of exploding when using Remote"); ProbabilityAirhornSetting = ((BaseUnityPlugin)Instance).Config.Bind<float>("Probability Settings", "Airhorn Probability", 0.1f, "Set probability of exploding when using Airhorn"); ProbabilityClownhornSetting = ((BaseUnityPlugin)Instance).Config.Bind<float>("Probability Settings", "Clownhorn Probability", 0.1f, "Set probability of exploding when using Clownhorn"); ProbabilityCashRegisterSetting = ((BaseUnityPlugin)Instance).Config.Bind<float>("Probability Settings", "Cashregister Probability", 0.1f, "Set probability of exploding when using Cashregister"); ProbabilityHairDryerSetting = ((BaseUnityPlugin)Instance).Config.Bind<float>("Probability Settings", "Hairdryer Probability", 0.1f, "Set probability of exploding when using Hairdryer"); DelaySetting = ((BaseUnityPlugin)Instance).Config.Bind<float>("Delay Settings", "General Delay", 0.5f, "Set delay of explosion"); KillRangeSetting = ((BaseUnityPlugin)Instance).Config.Bind<float>("Kill Range Settings", "General Kill Range", 10f, "Set kill range of explosion"); DamageRangeSetting = ((BaseUnityPlugin)Instance).Config.Bind<float>("Damage Range Settings", "General Damage Range", 1f, "Set damage range of explosion"); RemoteSetting = ((BaseUnityPlugin)Instance).Config.Bind<bool>("KarmaForBeingAnnoying Settings", "UseOnRemote", true, "Defines if Remote sets off explosion based on params"); } } } namespace KarmaForBeingAnnoying.Patches { internal class NoisemakerPropPatch { private static ManualLogSource logger = KarmaForBeingAnnoyingModBase.mls; private static IEnumerator DelayedExplosion(Vector3 position, bool effect, float killrange, float damagerange, float delay) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) logger.LogInfo((object)"C'ya"); yield return (object)new WaitForSeconds(delay); Landmine.SpawnExplosion(position, effect, killrange, damagerange); logger.LogInfo((object)"Boom"); } [HarmonyPatch(typeof(NoisemakerProp), "ItemActivate")] [HarmonyPostfix] private static void NoiseMakerPropItemActivatePatch(ref PlayerControllerB ___playerHeldBy, ref NoisemakerProp __instance) { //IL_0115: Unknown result type (might be due to invalid IL or missing references) logger.LogInfo((object)("NoiseMakerPropItemActivatePacth ACTIVATED BRUHHHHH: " + ((Object)__instance).name)); NetworkBehaviour val = (NetworkBehaviour)(object)___playerHeldBy; if ((KarmaForBeingAnnoyingModBase.AnnoyingItemSetting.Value && val.IsOwner && ___playerHeldBy.isPlayerControlled && (!val.IsServer || ___playerHeldBy.isHostPlayerObject)) || ___playerHeldBy.isTestingPlayer) { float value = KarmaForBeingAnnoyingModBase.ProbabilitySetting.Value; switch (((Object)__instance).name.Replace("(Clone)", "").ToLower()) { case "airhorn": value = KarmaForBeingAnnoyingModBase.ProbabilityAirhornSetting.Value; break; case "clownhorn": value = KarmaForBeingAnnoyingModBase.ProbabilityClownhornSetting.Value; break; case "cashregisteritem": value = KarmaForBeingAnnoyingModBase.ProbabilityCashRegisterSetting.Value; break; case "hairdryer": value = KarmaForBeingAnnoyingModBase.ProbabilityHairDryerSetting.Value; break; } if (Random.value < value) { ((MonoBehaviour)__instance).StartCoroutine(DelayedExplosion(((Component)val).transform.position, effect: true, KarmaForBeingAnnoyingModBase.KillRangeSetting.Value, KarmaForBeingAnnoyingModBase.DamageRangeSetting.Value, KarmaForBeingAnnoyingModBase.DelaySetting.Value)); logger.LogInfo((object)"Karma"); } } } [HarmonyPatch(typeof(RemoteProp), "ItemActivate")] [HarmonyPostfix] private static void RemotePropPatch(ref PlayerControllerB ___playerHeldBy, ref RemoteProp __instance) { //IL_006c: Unknown result type (might be due to invalid IL or missing references) logger.LogInfo((object)"RemotePropPatch ACTIVATED BRUHHHHH"); NetworkBehaviour val = (NetworkBehaviour)(object)__instance; if (((KarmaForBeingAnnoyingModBase.RemoteSetting.Value && val.IsOwner && ___playerHeldBy.isPlayerControlled && (!val.IsServer || ___playerHeldBy.isHostPlayerObject)) || ___playerHeldBy.isTestingPlayer) && Random.value < KarmaForBeingAnnoyingModBase.ProbabilityRemoteSetting.Value) { ((MonoBehaviour)__instance).StartCoroutine(DelayedExplosion(((Component)val).transform.position, effect: true, KarmaForBeingAnnoyingModBase.KillRangeSetting.Value, KarmaForBeingAnnoyingModBase.DamageRangeSetting.Value, KarmaForBeingAnnoyingModBase.DelaySetting.Value)); logger.LogInfo((object)"Karma"); } } } }
BepInEx/plugins/plugins/LCAmmoCheck.dll
Decompiled a day agousing System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("LCAmmoCheck")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Mod that allows you to check ammo in shotgun")] [assembly: AssemblyFileVersion("1.1.1.0")] [assembly: AssemblyInformationalVersion("1.1.1+09faa498f4a0e28be67bf9ce9655783d408c92ee")] [assembly: AssemblyProduct("LCAmmoCheck")] [assembly: AssemblyTitle("LCAmmoCheck")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.1.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 System.Runtime.Versioning { [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class RequiresPreviewFeaturesAttribute : Attribute { public string? Message { get; } public string? Url { get; set; } public RequiresPreviewFeaturesAttribute() { } public RequiresPreviewFeaturesAttribute(string? message) { Message = message; } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class CallerArgumentExpressionAttribute : Attribute { public string ParameterName { get; } public CallerArgumentExpressionAttribute(string parameterName) { ParameterName = parameterName; } } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class CollectionBuilderAttribute : Attribute { public Type BuilderType { get; } public string MethodName { get; } public CollectionBuilderAttribute(Type builderType, string methodName) { BuilderType = builderType; MethodName = methodName; } } [AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class CompilerFeatureRequiredAttribute : Attribute { public const string RefStructs = "RefStructs"; public const string RequiredMembers = "RequiredMembers"; public string FeatureName { get; } public bool IsOptional { get; set; } public CompilerFeatureRequiredAttribute(string featureName) { FeatureName = featureName; } } [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class InterpolatedStringHandlerArgumentAttribute : Attribute { public string[] Arguments { get; } public InterpolatedStringHandlerArgumentAttribute(string argument) { Arguments = new string[1] { argument }; } public InterpolatedStringHandlerArgumentAttribute(params string[] arguments) { Arguments = arguments; } } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class InterpolatedStringHandlerAttribute : Attribute { } [EditorBrowsable(EditorBrowsableState.Never)] [ExcludeFromCodeCoverage] internal static class IsExternalInit { } [AttributeUsage(AttributeTargets.Method, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class ModuleInitializerAttribute : Attribute { } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class RequiredMemberAttribute : Attribute { } [AttributeUsage(AttributeTargets.Parameter, Inherited = false)] [EditorBrowsable(EditorBrowsableState.Never)] [ExcludeFromCodeCoverage] internal sealed class RequiresLocationAttribute : Attribute { } [AttributeUsage(AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Event | AttributeTargets.Interface, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class SkipLocalsInitAttribute : Attribute { } } namespace System.Diagnostics.CodeAnalysis { [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class ExperimentalAttribute : Attribute { public string DiagnosticId { get; } public string? UrlFormat { get; set; } public ExperimentalAttribute(string diagnosticId) { DiagnosticId = diagnosticId; } } [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)] [ExcludeFromCodeCoverage] internal sealed class MemberNotNullAttribute : Attribute { public string[] Members { get; } public MemberNotNullAttribute(string member) { Members = new string[1] { member }; } public MemberNotNullAttribute(params string[] members) { Members = members; } } [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)] [ExcludeFromCodeCoverage] internal sealed class MemberNotNullWhenAttribute : Attribute { public bool ReturnValue { get; } public string[] Members { get; } public MemberNotNullWhenAttribute(bool returnValue, string member) { ReturnValue = returnValue; Members = new string[1] { member }; } public MemberNotNullWhenAttribute(bool returnValue, params string[] members) { ReturnValue = returnValue; Members = members; } } [AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class SetsRequiredMembersAttribute : Attribute { } [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class StringSyntaxAttribute : Attribute { public const string CompositeFormat = "CompositeFormat"; public const string DateOnlyFormat = "DateOnlyFormat"; public const string DateTimeFormat = "DateTimeFormat"; public const string EnumFormat = "EnumFormat"; public const string GuidFormat = "GuidFormat"; public const string Json = "Json"; public const string NumericFormat = "NumericFormat"; public const string Regex = "Regex"; public const string TimeOnlyFormat = "TimeOnlyFormat"; public const string TimeSpanFormat = "TimeSpanFormat"; public const string Uri = "Uri"; public const string Xml = "Xml"; public string Syntax { get; } public object?[] Arguments { get; } public StringSyntaxAttribute(string syntax) { Syntax = syntax; Arguments = new object[0]; } public StringSyntaxAttribute(string syntax, params object?[] arguments) { Syntax = syntax; Arguments = arguments; } } [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] internal sealed class UnscopedRefAttribute : Attribute { } } namespace LCAmmoCheck { [BepInPlugin("me.axd1x8a.lcammocheck", "LCAmmoCheck", "1.1.1")] public class LCAmmoCheckPlugin : BaseUnityPlugin { private static Harmony? harmony; public static LCAmmoCheckPlugin? Instance { get; private set; } public static AnimationClip? ShotgunInspectClip { get; private set; } public static AudioClip? ShotgunInspectSFX { get; private set; } private static void LoadAssetBundle() { AssetBundle obj = AssetBundle.LoadFromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream("LCAmmoCheck.lcammocheck")); ShotgunInspectClip = obj.LoadAsset<AnimationClip>("Assets/AnimationClip/ShotgunInspect.anim"); ShotgunInspectSFX = obj.LoadAsset<AudioClip>("Assets/AudioClip/ShotgunInspect.ogg"); AudioClip? shotgunInspectSFX = ShotgunInspectSFX; if (shotgunInspectSFX != null) { shotgunInspectSFX.LoadAudioData(); } obj.Unload(false); } public void Awake() { Instance = this; LoadAssetBundle(); harmony = Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "me.axd1x8a.lcammocheck"); ((BaseUnityPlugin)this).Logger.Log((LogLevel)8, (object)"LCAmmoCheck loaded!"); } public static void OnDestroy() { Harmony? obj = harmony; if (obj != null) { obj.UnpatchSelf(); } Instance = null; harmony = null; Debug.Log((object)"LCAmmoCheck unloaded!"); } } internal static class GeneratedPluginInfo { public const string Identifier = "me.axd1x8a.lcammocheck"; public const string Name = "LCAmmoCheck"; public const string Version = "1.1.1"; } } namespace LCAmmoCheck.Patches { [HarmonyPatch(typeof(ShotgunItem))] internal sealed class ShotgunItemPatch { private static readonly Dictionary<int, AnimationClip> originalClips = new Dictionary<int, AnimationClip>(); private static AnimatorOverrideController OverrideController(Animator animator) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown RuntimeAnimatorController runtimeAnimatorController = animator.runtimeAnimatorController; AnimatorOverrideController val = (AnimatorOverrideController)(object)((runtimeAnimatorController is AnimatorOverrideController) ? runtimeAnimatorController : null); if (val != null) { return val; } return (AnimatorOverrideController)(object)(animator.runtimeAnimatorController = (RuntimeAnimatorController)new AnimatorOverrideController(animator.runtimeAnimatorController)); } private static IEnumerator CheckAmmoAnimation(ShotgunItem s) { AnimatorOverrideController overrideController = OverrideController(((GrabbableObject)s).playerHeldBy.playerBodyAnimator); int playerAnimatorId = ((Object)((GrabbableObject)s).playerHeldBy.playerBodyAnimator).GetInstanceID(); originalClips[playerAnimatorId] = overrideController["ShotgunReloadOneShell"]; overrideController["ShotgunReloadOneShell"] = LCAmmoCheckPlugin.ShotgunInspectClip; s.isReloading = true; ((Renderer)s.shotgunShellLeft).enabled = s.shellsLoaded > 0; ((Renderer)s.shotgunShellRight).enabled = s.shellsLoaded > 1; ((GrabbableObject)s).playerHeldBy.playerBodyAnimator.SetBool("ReloadShotgun", true); yield return (object)new WaitForSeconds(0.3f); s.gunAudio.PlayOneShot(LCAmmoCheckPlugin.ShotgunInspectSFX); s.gunAnimator.SetBool("Reloading", true); yield return (object)new WaitForSeconds(0.95f); yield return (object)new WaitForSeconds(0.95f); yield return (object)new WaitForSeconds(0.15f); s.gunAnimator.SetBool("Reloading", false); yield return (object)new WaitForSeconds(0.25f); ((GrabbableObject)s).playerHeldBy.playerBodyAnimator.SetBool("ReloadShotgun", false); yield return (object)new WaitForSeconds(0.25f); originalClips.Remove(playerAnimatorId, out AnimationClip value); overrideController["ShotgunReloadOneShell"] = value; s.isReloading = false; } private static void CleanUp(Animator animator) { RuntimeAnimatorController runtimeAnimatorController = animator.runtimeAnimatorController; AnimatorOverrideController val = (AnimatorOverrideController)(object)((runtimeAnimatorController is AnimatorOverrideController) ? runtimeAnimatorController : null); if (val != null && originalClips.Remove(((Object)animator).GetInstanceID(), out AnimationClip value)) { val["ShotgunReloadOneShell"] = value; } } [HarmonyPrefix] [HarmonyPatch("StopUsingGun")] public static bool StopUsingGunPrefix(ShotgunItem __instance) { CleanUp((((GrabbableObject)__instance).playerHeldBy ?? __instance.previousPlayerHeldBy).playerBodyAnimator); return true; } [HarmonyPrefix] [HarmonyPatch("StartReloadGun")] public static bool StartReloadGunPrefix(ShotgunItem __instance) { if (!__instance.ReloadedGun() || __instance.shellsLoaded >= 2) { if (__instance.gunCoroutine != null) { ((MonoBehaviour)__instance).StopCoroutine(__instance.gunCoroutine); } __instance.gunCoroutine = ((MonoBehaviour)__instance).StartCoroutine(CheckAmmoAnimation(__instance)); return false; } return true; } [HarmonyPrefix] [HarmonyPatch("ItemInteractLeftRight")] public static bool ItemInteractLeftRightPrefix(ShotgunItem __instance, bool right) { if (!right) { return true; } if ((Object)(object)((RaycastHit)(ref ((GrabbableObject)__instance).playerHeldBy.hit)).collider != (Object)null && ((Component)((RaycastHit)(ref ((GrabbableObject)__instance).playerHeldBy.hit)).collider).tag == "InteractTrigger") { return false; } return true; } [HarmonyPrefix] [HarmonyPatch("Start")] public static bool StartPrefix(ShotgunItem __instance) { ((GrabbableObject)__instance).itemProperties.toolTips[1] = "Reload / Check ammo : [E]"; return true; } [HarmonyTranspiler] [HarmonyPatch(typeof(ShotgunItem), "StartReloadGun")] public static IEnumerable<CodeInstruction> StartReloadGunTranspiler(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Call && ((MethodInfo)list[i].operand).Name == "ReloadedGun") { list[i - 1].opcode = OpCodes.Nop; list[i].opcode = OpCodes.Ldc_I4_1; list[i].operand = null; break; } } return list.AsEnumerable(); } [HarmonyTranspiler] [HarmonyPatch(typeof(ShotgunItem), "ItemInteractLeftRight")] public static IEnumerable<CodeInstruction> ItemInteractLeftRightTranspiler(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 0; i < list.Count; i++) { if (list[i].opcode == OpCodes.Ldfld && list[i].operand.ToString().Contains("shellsLoaded")) { list[i + 1].opcode = OpCodes.Ldc_I4_3; break; } } return list.AsEnumerable(); } } }
BepInEx/plugins/plugins/LCBetterSaves.dll
Decompiled a day agousing System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text.RegularExpressions; using BepInEx; using HarmonyLib; using LCBetterSaves; using LCBetterSaves.Properties; using Microsoft.CodeAnalysis; using TMPro; using UnityEngine; using UnityEngine.Events; 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: AssemblyCompany("LCBetterSaves")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Better save files for Lethal Company")] [assembly: AssemblyFileVersion("1.7.3.0")] [assembly: AssemblyInformationalVersion("1.7.3+a2dc06eb8878819ddec7c1fd8cd6bac050c25d3c")] [assembly: AssemblyProduct("LCBetterSaves")] [assembly: AssemblyTitle("LCBetterSaves")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.7.3.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } public class NewFileUISlot_BetterSaves : MonoBehaviour { public Animator buttonAnimator; public Button button; public bool isSelected; public void Awake() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown buttonAnimator = ((Component)this).GetComponent<Animator>(); button = ((Component)this).GetComponent<Button>(); ((UnityEvent)button.onClick).AddListener(new UnityAction(SetFileToThis)); } public void SetFileToThis() { string currentSaveFileName = "LCSaveFile" + Plugin.newSaveFileNum; GameNetworkManager.Instance.currentSaveFileName = currentSaveFileName; GameNetworkManager.Instance.saveFileNum = Plugin.newSaveFileNum; SetButtonColorForAllFileSlots(); isSelected = true; SetButtonColor(); } public void SetButtonColorForAllFileSlots() { SaveFileUISlot_BetterSaves[] array = Object.FindObjectsOfType<SaveFileUISlot_BetterSaves>(); SaveFileUISlot_BetterSaves[] array2 = array; foreach (SaveFileUISlot_BetterSaves saveFileUISlot_BetterSaves in array2) { saveFileUISlot_BetterSaves.SetButtonColor(); saveFileUISlot_BetterSaves.deleteButton.SetActive(false); saveFileUISlot_BetterSaves.renameButton.SetActive(false); } } public void SetButtonColor() { buttonAnimator.SetBool("isPressed", isSelected); } } public class SaveFileUISlot_BetterSaves : MonoBehaviour { public Animator buttonAnimator; public Button button; public TextMeshProUGUI fileStatsText; public int fileNum; public string fileString; public TextMeshProUGUI fileNotCompatibleAlert; public GameObject deleteButton; public GameObject renameButton; public void Awake() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown buttonAnimator = ((Component)this).GetComponent<Animator>(); button = ((Component)this).GetComponent<Button>(); ((UnityEvent)button.onClick).AddListener(new UnityAction(SetFileToThis)); fileStatsText = ((Component)((Component)this).transform.GetChild(2)).GetComponent<TextMeshProUGUI>(); fileNotCompatibleAlert = ((Component)((Component)this).transform.GetChild(4)).GetComponent<TextMeshProUGUI>(); deleteButton = ((Component)((Component)this).transform.GetChild(3)).gameObject; } public void Start() { UpdateStats(); } private void OnEnable() { if (!Object.FindObjectOfType<MenuManager>().filesCompatible[fileNum]) { ((Behaviour)fileNotCompatibleAlert).enabled = true; } } public void UpdateStats() { try { if (ES3.FileExists(fileString)) { int num = ES3.Load<int>("GroupCredits", fileString, 30); int num2 = ES3.Load<int>("Stats_DaysSpent", fileString, 0); ((TMP_Text)fileStatsText).text = $"${num}\nDays: {num2}"; } else { ((TMP_Text)fileStatsText).text = ""; } } catch (Exception ex) { Debug.LogError((object)("Error updating stats: " + ex.Message)); } } public void SetButtonColor() { buttonAnimator.SetBool("isPressed", GameNetworkManager.Instance.currentSaveFileName == fileString); } public void SetFileToThis() { Plugin.fileToModify = fileNum; GameNetworkManager.Instance.currentSaveFileName = fileString; GameNetworkManager.Instance.saveFileNum = fileNum; SetButtonColorForAllFileSlots(); } public void SetButtonColorForAllFileSlots() { SaveFileUISlot_BetterSaves[] array = Object.FindObjectsOfType<SaveFileUISlot_BetterSaves>(); SaveFileUISlot_BetterSaves[] array2 = array; foreach (SaveFileUISlot_BetterSaves saveFileUISlot_BetterSaves in array2) { saveFileUISlot_BetterSaves.SetButtonColor(); saveFileUISlot_BetterSaves.deleteButton.SetActive((Object)(object)saveFileUISlot_BetterSaves == (Object)(object)this); saveFileUISlot_BetterSaves.renameButton.SetActive((Object)(object)saveFileUISlot_BetterSaves == (Object)(object)this); } NewFileUISlot_BetterSaves newFileUISlot_BetterSaves = Object.FindObjectOfType<NewFileUISlot_BetterSaves>(); newFileUISlot_BetterSaves.isSelected = false; newFileUISlot_BetterSaves.SetButtonColor(); } } public class RenameFileButton_BetterSaves : MonoBehaviour { public void RenameFile() { string text = $"LCSaveFile{Plugin.fileToModify}"; string text2 = GameObject.Find("Canvas/MenuContainer/LobbyHostSettings/HostSettingsContainer/LobbyHostOptions/OptionsNormal/ServerNameField/Text Area/Text").GetComponent<TMP_Text>().text; if (ES3.FileExists(text)) { ES3.Save<string>("Alias_BetterSaves", text2, text); Debug.Log((object)("Granted alias " + text2 + " to file " + text)); } Plugin.RefreshNameFields(); } } public class DeleteFileButton_BetterSaves : MonoBehaviour { public int fileToDelete; public AudioClip deleteFileSFX; public TextMeshProUGUI deleteFileText; public void UpdateFileToDelete() { fileToDelete = Plugin.fileToModify; if (ES3.Load<string>("Alias_BetterSaves", $"LCSaveFile{fileToDelete}", "") != "") { ((TMP_Text)deleteFileText).text = "Do you want to delete file (" + ES3.Load<string>("Alias_BetterSaves", $"LCSaveFile{fileToDelete}", "") + ")?"; } else { ((TMP_Text)deleteFileText).text = $"Do you want to delete File {fileToDelete + 1}?"; } } public void DeleteFile() { string text = $"LCSaveFile{fileToDelete}"; if (ES3.FileExists(text)) { ES3.DeleteFile(text); Object.FindObjectOfType<MenuManager>().MenuAudio.PlayOneShot(deleteFileSFX); } SaveFileUISlot_BetterSaves[] array = Object.FindObjectsOfType<SaveFileUISlot_BetterSaves>(true); SaveFileUISlot_BetterSaves[] array2 = array; foreach (SaveFileUISlot_BetterSaves saveFileUISlot_BetterSaves in array2) { Debug.Log((object)$"Deleted {fileToDelete}"); if (saveFileUISlot_BetterSaves.fileNum == fileToDelete) { ((Behaviour)saveFileUISlot_BetterSaves.fileNotCompatibleAlert).enabled = false; Object.FindObjectOfType<MenuManager>().filesCompatible[fileToDelete] = true; if (ES3.FileExists($"LGU_{fileToDelete}.json")) { Debug.Log((object)("Deleting LGU file located at " + text)); ES3.DeleteFile($"LGU_{fileToDelete}.json"); } } } Plugin.InitializeBetterSaves(); } } namespace LCBetterSaves { [BepInPlugin("LCBetterSaves", "LCBetterSaves", "1.7.3")] public class Plugin : BaseUnityPlugin { private Harmony _harmony = new Harmony("BetterSaves"); public static int fileToModify = -1; public static int newSaveFileNum; public static Sprite renameSprite; public static MenuManager menuManager; public static AudioClip deleteFileSFX; public static TextMeshProUGUI deleteFileText; public static float buttonBaseY; public void Awake() { _harmony.PatchAll(typeof(Plugin)); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin LCBetterSaves is loaded!"); } [HarmonyPatch(typeof(MenuManager), "Start")] public static void Postfix(MenuManager __instance) { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) menuManager = __instance; if ((Object)(object)renameSprite == (Object)null) { AssetBundle val = AssetBundle.LoadFromMemory(Resources.lcbettersaves); Texture2D val2 = val.LoadAsset<Texture2D>("Assets/RenameSprite.png"); renameSprite = Sprite.Create(val2, new Rect(0f, 0f, (float)((Texture)val2).width, (float)((Texture)val2).height), new Vector2(0.5f, 0.5f)); } InitializeBetterSaves(); } public static void InitializeBetterSaves() { try { DestroyBetterSavesButtons(); DestroyOriginalSaveButtons(); UpdateTopText(); CreateModdedDeleteFileButton(); CreateBetterSaveButtons(); UpdateFilesPanelRect(CountSaveFiles() + 1); GameObject val = GameObject.Find("Canvas/MenuContainer/LobbyHostSettings/FilesPanel/File1"); val.SetActive(false); } catch (Exception ex) { Debug.LogError((object)("An error occurred during initialization: " + ex.Message)); } } public static void DestroyBetterSavesButtons() { try { SaveFileUISlot_BetterSaves[] array = Object.FindObjectsOfType<SaveFileUISlot_BetterSaves>(); foreach (SaveFileUISlot_BetterSaves saveFileUISlot_BetterSaves in array) { Object.Destroy((Object)(object)((Component)saveFileUISlot_BetterSaves).gameObject); } NewFileUISlot_BetterSaves[] array2 = Object.FindObjectsOfType<NewFileUISlot_BetterSaves>(); foreach (NewFileUISlot_BetterSaves newFileUISlot_BetterSaves in array2) { Object.Destroy((Object)(object)((Component)newFileUISlot_BetterSaves).gameObject); } } catch (Exception ex) { Debug.LogError((object)("Error occurred while destroying better saves buttons: " + ex.Message)); } } public static void UpdateTopText() { GameObject val = GameObject.Find("Canvas/MenuContainer/LobbyHostSettings/FilesPanel/EnterAName"); if ((Object)(object)val == (Object)null) { Debug.LogError((object)"Panel label not found."); } else { ((TMP_Text)val.GetComponent<TextMeshProUGUI>()).text = "BetterSaves"; } } public static void CreateModdedDeleteFileButton() { //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Expected O, but got Unknown GameObject val = GameObject.Find("Canvas/MenuContainer/DeleteFileConfirmation/Panel/Delete"); if ((Object)(object)val == (Object)null) { Debug.LogError((object)"Delete file game object not found."); return; } if ((Object)(object)val.GetComponent<DeleteFileButton_BetterSaves>() != (Object)null) { Debug.LogWarning((object)"DeleteFileButton_BetterSaves component already exists on deleteFileGO"); return; } DeleteFileButton component = val.GetComponent<DeleteFileButton>(); if ((Object)(object)component == (Object)null) { Debug.LogError((object)"DeleteFileButton component not found on deleteFileGO"); return; } if ((Object)(object)deleteFileSFX == (Object)null) { deleteFileSFX = component.deleteFileSFX; } if ((Object)(object)deleteFileText == (Object)null) { deleteFileText = component.deleteFileText; } Object.Destroy((Object)(object)component); if ((Object)(object)val.GetComponent<DeleteFileButton_BetterSaves>() == (Object)null) { DeleteFileButton_BetterSaves deleteFileButton_BetterSaves = val.AddComponent<DeleteFileButton_BetterSaves>(); deleteFileButton_BetterSaves.deleteFileSFX = deleteFileSFX; deleteFileButton_BetterSaves.deleteFileText = deleteFileText; Button component2 = val.GetComponent<Button>(); if ((Object)(object)component2 != (Object)null) { ((UnityEventBase)component2.onClick).RemoveAllListeners(); ((UnityEvent)component2.onClick).AddListener(new UnityAction(deleteFileButton_BetterSaves.DeleteFile)); } else { Debug.LogError((object)"Button component not found on deleteFileGO"); } } else { Debug.LogWarning((object)"DeleteFileButton_BetterSaves component already exists on deleteFileGO"); } } public static void CreateBetterSaveButtons() { try { GameObject val = GameObject.Find("Canvas/MenuContainer/LobbyHostSettings/FilesPanel/File1"); val.SetActive(true); int numSaves = CountSaveFiles(); Debug.Log((object)("Positioning based on " + numSaves + " saves.")); NewFileUISlot_BetterSaves newFileUISlot_BetterSaves = CreateNewFileNode(numSaves); List<string> list = NormalizeFileNames(); newSaveFileNum = list.Count + 1; menuManager.filesCompatible = new bool[16]; for (int i = 0; i < menuManager.filesCompatible.Length; i++) { menuManager.filesCompatible[i] = true; } for (int j = 0; j < list.Count; j++) { CreateModdedSaveNode(int.Parse(list[j].Replace("LCSaveFile", "")), ((Component)newFileUISlot_BetterSaves).gameObject); } val.SetActive(false); } catch (Exception ex) { Debug.LogError((object)("Error occurred while refreshing save buttons: " + ex.Message)); } } public static NewFileUISlot_BetterSaves CreateNewFileNode(int numSaves) { //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) GameObject val = GameObject.Find("Canvas/MenuContainer/LobbyHostSettings/FilesPanel/File1"); if ((Object)(object)val == (Object)null) { Debug.LogError((object)"Original GameObject not found."); return null; } Transform parent = val.transform.parent; SaveFileUISlot component = val.GetComponent<SaveFileUISlot>(); if ((Object)(object)component != (Object)null) { Object.Destroy((Object)(object)component); } GameObject val2 = Object.Instantiate<GameObject>(val, parent); ((Object)val2).name = "NewFile"; TMP_Text component2 = ((Component)val2.transform.GetChild(1)).GetComponent<TMP_Text>(); if ((Object)(object)component2 != (Object)null) { component2.text = "New File"; NewFileUISlot_BetterSaves newFileUISlot_BetterSaves = val2.AddComponent<NewFileUISlot_BetterSaves>(); if ((Object)(object)newFileUISlot_BetterSaves == (Object)null) { Debug.LogError((object)"Failed to add NewFileUISlot_BetterSaves component."); return null; } Transform child = val2.transform.GetChild(3); if ((Object)(object)child != (Object)null) { Object.Destroy((Object)(object)((Component)child).gameObject); try { RectTransform component3 = val2.GetComponent<RectTransform>(); if (!((Object)(object)component3 != (Object)null)) { Debug.LogError((object)"RectTransform component not found."); return null; } float x = component3.anchoredPosition.x; if (buttonBaseY == 0f) { buttonBaseY = component3.anchoredPosition.y - component3.sizeDelta.y * 1.75f; } float num = buttonBaseY + component3.sizeDelta.y * (float)(numSaves + 1) / 2f; component3.anchoredPosition = new Vector2(x, num); } catch (Exception ex) { Debug.LogError((object)("Error setting anchored position: " + ex.Message)); return null; } return newFileUISlot_BetterSaves; } Debug.LogError((object)"Delete button not found."); return null; } Debug.LogError((object)"Text component not found."); return null; } private static int CountSaveFiles() { int num = 0; string[] files = ES3.GetFiles(); foreach (string text in files) { if (ES3.FileExists(text) && Regex.IsMatch(text, "^LCSaveFile\\d+$")) { num++; } } return num; } public static void DestroyOriginalSaveButtons() { Object.Destroy((Object)(object)GameObject.Find("Canvas/MenuContainer/LobbyHostSettings/FilesPanel/File2")); Object.Destroy((Object)(object)GameObject.Find("Canvas/MenuContainer/LobbyHostSettings/FilesPanel/File3")); } public static List<string> NormalizeFileNames() { List<string> list = new List<string>(); List<string> list2 = new List<string>(); string text = "PH"; string format = "LGUTempFile{0}"; string format2 = "LGU_{0}.json"; string[] files = ES3.GetFiles(); foreach (string text2 in files) { if (ES3.FileExists(text2) && Regex.IsMatch(text2, "^LCSaveFile\\d+$")) { Debug.Log((object)("Found file: " + text2)); list.Add(text2); string text3 = string.Format(format2, text2.Substring("LCSaveFile".Length)); if (ES3.FileExists(text3)) { Debug.Log((object)("Found LGU file: " + text3)); list2.Add(text3); } else { list2.Add(text); } } } list.Sort(delegate(string a, string b) { int num3 = int.Parse(a.Substring("LCSaveFile".Length)); int value = int.Parse(b.Substring("LCSaveFile".Length)); return num3.CompareTo(value); }); int num = 1; foreach (string item in list) { string text4 = "TempFile" + num; ES3.RenameFile(item, text4); Debug.Log((object)("Renamed " + item + " to " + text4)); num++; } num = 1; foreach (string item2 in list2) { if (item2 == text) { num++; continue; } string text5 = string.Format(format, num.ToString()); ES3.RenameFile(item2, text5); Debug.Log((object)("Renamed " + item2 + " to " + text5)); num++; } int num2 = 1; List<string> list3 = new List<string>(); foreach (string item3 in list) { string text6 = "TempFile" + num2; string text7 = "LCSaveFile" + num2; if (ES3.FileExists(text6)) { ES3.RenameFile(text6, text7); list3.Add(text7); Debug.Log((object)("Renamed " + text6 + " to " + text7)); } else { Debug.Log((object)("Temporary file " + text6 + " not found. It might have been moved or deleted.")); } num2++; } num2 = 1; foreach (string item4 in list2) { string text8 = string.Format(format, num2.ToString()); string text9 = string.Format(format2, num2.ToString()); if (item4 == text) { num2++; continue; } if (ES3.FileExists(text8)) { ES3.RenameFile(text8, text9); list3.Add(text9); Debug.Log((object)("Renamed " + text8 + " to " + text9)); } else { Debug.Log((object)("Temporary file " + text8 + " not found. It might have been moved or deleted.")); } num2++; } return list3; } public static void CreateModdedSaveNode(int fileNum, GameObject newFileButton) { //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Expected O, but got Unknown //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) GameObject val = GameObject.Find("Canvas/MenuContainer/LobbyHostSettings/FilesPanel/File1"); if ((Object)(object)val == (Object)null) { Debug.LogError((object)"Original GameObject not found."); return; } Transform parent = val.transform.parent; GameObject val2 = Object.Instantiate<GameObject>(val, parent); ((Object)val2).name = "File" + fileNum + "_BetterSaves"; string text = ES3.Load<string>("Alias_BetterSaves", "LCSaveFile" + fileNum, ""); if (text == "") { ((Component)val2.transform.GetChild(1)).GetComponent<TMP_Text>().text = "File " + fileNum; } else { ((Component)val2.transform.GetChild(1)).GetComponent<TMP_Text>().text = text; } val2.AddComponent<SaveFileUISlot_BetterSaves>(); SaveFileUISlot_BetterSaves component = val2.GetComponent<SaveFileUISlot_BetterSaves>(); if ((Object)(object)component != (Object)null) { component.fileNum = fileNum; component.fileString = "LCSaveFile" + fileNum; RectTransform component2 = val2.GetComponent<RectTransform>(); if ((Object)(object)component2 != (Object)null) { float x = component2.anchoredPosition.x; float y = newFileButton.GetComponent<RectTransform>().anchoredPosition.y; float num = y - component2.sizeDelta.y * (float)fileNum; component2.anchoredPosition = new Vector2(x, num); } GameObject gameObject = ((Component)val2.transform.GetChild(3)).gameObject; DeleteFileButton_BetterSaves component3 = GameObject.Find("Canvas/MenuContainer/DeleteFileConfirmation/Panel/Delete").GetComponent<DeleteFileButton_BetterSaves>(); ((UnityEvent)gameObject.gameObject.GetComponent<Button>().onClick).AddListener(new UnityAction(component3.UpdateFileToDelete)); gameObject.SetActive(false); component.renameButton = CreateRenameFileButton(val2); } else { Debug.LogError((object)"SaveFileUISlot_BetterSaves component not found on the cloned GameObject."); Object.Destroy((Object)(object)val2); } } public static GameObject CreateRenameFileButton(GameObject fileNode) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Expected O, but got Unknown //IL_00ae: 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_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) try { GameObject gameObject = ((Component)fileNode.transform.GetChild(3)).gameObject; GameObject val = Object.Instantiate<GameObject>(gameObject, fileNode.transform); ((Object)val).name = "RenameButton"; val.GetComponent<Image>().sprite = renameSprite; Button component = val.GetComponent<Button>(); component.onClick = new ButtonClickedEvent(); val.AddComponent<RenameFileButton_BetterSaves>(); RenameFileButton_BetterSaves component2 = val.GetComponent<RenameFileButton_BetterSaves>(); if ((Object)(object)component2 != (Object)null) { ((UnityEvent)component.onClick).AddListener(new UnityAction(component2.RenameFile)); } else { Debug.LogError((object)"RenameFileButton_BetterSaves component not found on renameButton"); } RectTransform component3 = val.GetComponent<RectTransform>(); if ((Object)(object)component3 != (Object)null) { float num = ((Transform)component3).localPosition.x + 20f; float y = ((Transform)component3).localPosition.y; ((Transform)component3).localPosition = Vector2.op_Implicit(new Vector2(num, y)); } val.SetActive(false); return val; } catch (Exception ex) { Debug.LogError((object)("Error occurred while creating rename file button: " + ex.Message)); return null; } } public static void UpdateFilesPanelRect(int numSaves) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) try { GameObject obj = GameObject.Find("Canvas/MenuContainer/LobbyHostSettings/FilesPanel"); RectTransform val = ((obj != null) ? obj.GetComponent<RectTransform>() : null); if ((Object)(object)val == (Object)null) { throw new Exception("Failed to find FilesPanel RectTransform."); } Vector2 sizeDelta = val.sizeDelta; GameObject obj2 = GameObject.Find("Canvas/MenuContainer/LobbyHostSettings/FilesPanel/File1"); RectTransform val2 = ((obj2 != null) ? obj2.GetComponent<RectTransform>() : null); if ((Object)(object)val2 == (Object)null) { throw new Exception("Failed to find File1 RectTransform."); } float y = val2.sizeDelta.y; sizeDelta.y = y * (float)(numSaves + 3); val.sizeDelta = sizeDelta; GameObject val3 = GameObject.Find("Canvas/MenuContainer/LobbyHostSettings/FilesPanel/ChallengeMoonButton"); RectTransform component = val3.GetComponent<RectTransform>(); if ((Object)(object)component != (Object)null) { component.anchorMin = new Vector2(0.5f, 0.05f); component.anchorMax = new Vector2(0.5f, 0.05f); component.pivot = new Vector2(0.5f, 0.05f); component.anchoredPosition = new Vector2(0f, 0f); } } catch (Exception ex) { Debug.LogError((object)("Error occurred while updating files panel rect: " + ex.Message)); } } public static void RefreshNameFields() { SaveFileUISlot_BetterSaves[] array = Object.FindObjectsOfType<SaveFileUISlot_BetterSaves>(); SaveFileUISlot_BetterSaves[] array2 = array; foreach (SaveFileUISlot_BetterSaves saveFileUISlot_BetterSaves in array2) { string text = ES3.Load<string>("Alias_BetterSaves", saveFileUISlot_BetterSaves.fileString, ""); if (text == "") { ((Component)((Component)saveFileUISlot_BetterSaves).transform.GetChild(1)).GetComponent<TMP_Text>().text = "File " + (saveFileUISlot_BetterSaves.fileNum + 1); } else { ((Component)((Component)saveFileUISlot_BetterSaves).transform.GetChild(1)).GetComponent<TMP_Text>().text = text; } } } } public static class PluginInfo { public const string PLUGIN_GUID = "LCBetterSaves"; public const string PLUGIN_NAME = "LCBetterSaves"; public const string PLUGIN_VERSION = "1.7.3"; } } namespace LCBetterSaves.Properties { [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [DebuggerNonUserCode] [CompilerGenerated] public class Resources { private static ResourceManager resourceMan; private static CultureInfo resourceCulture; [EditorBrowsable(EditorBrowsableState.Advanced)] public static ResourceManager ResourceManager { get { if (resourceMan == null) { ResourceManager resourceManager = new ResourceManager("LCBetterSaves.Properties.Resources", typeof(Resources).Assembly); resourceMan = resourceManager; } return resourceMan; } } [EditorBrowsable(EditorBrowsableState.Advanced)] public static CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } public static byte[] lcbettersaves { get { object @object = ResourceManager.GetObject("lcbettersaves", resourceCulture); return (byte[])@object; } } internal Resources() { } } }
BepInEx/plugins/plugins/menstalker_yaboiduckisnickerbar.dll
Decompiled a day ago#define DEBUG using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using LethalLib.Modules; using Menstalker_ybdkSKB.Configuration; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; using menstalker_yaboiduckisnickerbar.NetcodePatcher; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("menstalker_yaboiduckisnickerbar")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Example Enemy for Lethal Company.")] [assembly: AssemblyFileVersion("1.2.2.0")] [assembly: AssemblyInformationalVersion("1.2.2")] [assembly: AssemblyProduct("menstalker_yaboiduckisnickerbar")] [assembly: AssemblyTitle("menstalker_yaboiduckisnickerbar")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.2.2.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Menstalker_ybdkSKB { internal class Menstalker_ybdkSKB : EnemyAI { private enum State { IDLE, STALK, PRERUSH, RUSH, ROAM } private enum SubState { ADVANCE, RETREAT, WATCH } public Transform turnCompass; public Transform attackArea; public int subState = 0; public Vector3 spawnPosition; public AISearchRoutine roamMap; public Vector3 mainEntrancePos; private float defaultTimer_chaseDuration = -1f; private float defaultTimer_targetLost = -1f; private const float defaultTimer_stalkingScared = 30f; private const float defaultTimer_stalkingDetected = 50f; private const float defaultTimer_stalkWithLOS = 15f; private const float defaultTimer_preRushTimeout = 15f; private const float defaultTimer_roamTimeout = 120f; private const float defaultTimer_stunTimeout = 1f; public bool targetLost; private bool isDeadAnimationDone; private bool flag = false; private bool is_stunned = false; private bool can_seePlayer = false; public int clawDamage = 20; private const float longDistance = 14f; public float timer_chaseDuration = -1f; public float timer_targetLost = -1f; public float timer_stalking = 50f; public float timer_stalkWithLOS = 15f; public float timer_preRushTimeout = 15f; public float timer_roamTimeout = 120f; public float timer_stun = 0f; public float timeSinceHittingLocalPlayer = 0f; [Conditional("DEBUG")] private void LogIfDebugBuild(string text) { Plugin.Logger.LogInfo((object)text); } public override void Start() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) ((EnemyAI)this).Start(); spawnPosition = ((Component)this).transform.position; mainEntrancePos = RoundManager.FindMainEntrancePosition(false, false); isDeadAnimationDone = false; targetLost = true; base.targetPlayer = null; defaultTimer_chaseDuration = 25 + StartOfRound.Instance.randomMapSeed % 11; defaultTimer_targetLost = StartOfRound.Instance.randomMapSeed % 6 + 9; timer_targetLost = defaultTimer_targetLost; timer_chaseDuration = defaultTimer_chaseDuration; base.currentBehaviourStateIndex = 0; LogIfDebugBuild("Man-stalker spawned"); } private void computing_death() { if (!isDeadAnimationDone) { base.creatureAnimator.SetBool("isAngry", false); isDeadAnimationDone = true; base.creatureVoice.Stop(); base.creatureVoice.PlayOneShot(base.dieSFX); } base.creatureAnimator.SetBool("isAngry", false); } private void computing_stun() { if (timer_stun > 0f) { timer_stun -= Time.deltaTime; is_stunned = true; } else { is_stunned = false; } } private void computing_timer() { switch (base.currentBehaviourStateIndex) { case 1: if (targetLost) { timer_targetLost -= Time.deltaTime; timer_stalking += Time.deltaTime * 1.5f; } else { timer_stalking -= Time.deltaTime; } if (can_seePlayer) { timer_stalkWithLOS -= Time.deltaTime; } break; case 2: timer_preRushTimeout -= Time.deltaTime; break; case 3: timer_chaseDuration -= Time.deltaTime; if ((double)timeSinceHittingLocalPlayer > 0.75) { base.creatureAnimator.SetBool("isAngry", true); base.creatureAnimator.ResetTrigger("slash"); } else { timeSinceHittingLocalPlayer += Time.deltaTime; } if (!is_stunned) { base.creatureAnimator.SetBool("isAngry", true); base.creatureAnimator.ResetTrigger("stunned"); } break; case 4: timer_roamTimeout -= Time.deltaTime; break; case 0: break; } } public override void Update() { //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) ((EnemyAI)this).Update(); if (base.isEnemyDead) { computing_death(); base.creatureAnimator.ResetTrigger("slash"); return; } computing_stun(); computing_timer(); int currentBehaviourStateIndex = base.currentBehaviourStateIndex; if ((Object)(object)base.targetPlayer != (Object)null && (currentBehaviourStateIndex == 1 || currentBehaviourStateIndex == 3)) { Vector3 val = ((Component)this).transform.position - (((Component)base.targetPlayer).transform.position - ((Component)this).transform.position); turnCompass.LookAt(val); ((Component)this).transform.rotation = Quaternion.Lerp(((Component)this).transform.rotation, Quaternion.Euler(new Vector3(0f, turnCompass.eulerAngles.y, 0f)), 1f); } } private void animationManager() { switch (base.currentBehaviourStateIndex) { case 3: if (!((double)timeSinceHittingLocalPlayer < 0.75) && !is_stunned) { base.creatureAnimator.speed = 1f; base.creatureAnimator.SetBool("isAngry", true); } break; case 1: base.creatureAnimator.speed = 1f; base.creatureAnimator.SetBool("isAngry", false); switch (subState) { case 2: base.creatureAnimator.SetBool("forwardWalk", false); base.creatureAnimator.SetBool("backwardWalk", false); break; case 0: base.creatureAnimator.SetBool("forwardWalk", true); base.creatureAnimator.SetBool("backwardWalk", false); break; case 1: base.creatureAnimator.SetBool("forwardWalk", false); base.creatureAnimator.SetBool("backwardWalk", true); break; } break; case 2: case 4: base.creatureAnimator.SetBool("isAngry", false); base.creatureAnimator.SetBool("forwardWalk", false); base.creatureAnimator.SetBool("backwardWalk", false); base.creatureAnimator.speed = 1f; break; case 0: base.creatureAnimator.SetBool("isAngry", false); base.creatureAnimator.SetBool("forwardWalk", true); base.creatureAnimator.SetBool("backwardWalk", false); break; } } private void stop_movement() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) base.agent.speed = 0f; Vector3 velocity = base.agent.velocity; ((Vector3)(ref velocity)).Set(0f, 0f, 0f); } private void reset_variables() { flag = false; targetLost = true; timer_chaseDuration = defaultTimer_chaseDuration; timer_targetLost = -1f; timer_stalking = 50f; timer_stalkWithLOS = 15f; timer_preRushTimeout = 15f; timer_roamTimeout = 120f; } private void SwitchToBehaviourClientRpcAndReset(int nextState) { ((EnemyAI)this).SwitchToBehaviourClientRpc(nextState); reset_variables(); } private void wander() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_008d: 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) base.creatureAnimator.ResetTrigger("slash"); base.creatureVoice.Stop(); if (Vector3.Distance(((Component)this).transform.position, mainEntrancePos) >= 42f) { stop_movement(); } else { setup_moveAndOpen(10f, 1f); } _ = mainEntrancePos; if (0 == 0 && !((Object)(object)((EnemyAI)this).ChooseFarthestNodeFromPosition(mainEntrancePos, false, 0, false, 50, false) == (Object)null)) { ((EnemyAI)this).SetDestinationToPosition(((Component)((EnemyAI)this).ChooseFarthestNodeFromPosition(mainEntrancePos, false, 0, false, 50, false)).transform.position, false); SwitchToBehaviourClientRpcAndReset(0); } } private void setup_moveAndOpen(float a, float b) { base.openDoorSpeedMultiplier = b; base.agent.speed = a; } private void force_movingTowardsTarget(PlayerControllerB target_) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) ((EnemyAI)this).SetMovingTowardsTargetPlayer(target_); if (base.agent.velocity == new Vector3(0f, 0f, 0f) && !((EnemyAI)this).SetDestinationToPosition(((Component)target_).transform.position, false)) { } } public override void DoAIInterval() { //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02d7: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Unknown result type (might be due to invalid IL or missing references) if (base.isEnemyDead || StartOfRound.Instance.allPlayersDead) { return; } ((EnemyAI)this).DoAIInterval(); animationManager(); if (is_stunned) { stop_movement(); return; } PlayerControllerB closestPlayer = ((EnemyAI)this).GetClosestPlayer(false, false, false); float num = -1f; PlayerControllerB closestPlayer2 = ((EnemyAI)this).GetClosestPlayer(true, false, false); float num2 = -1f; if ((Object)(object)closestPlayer == (Object)null && base.currentBehaviourStateIndex != 1) { wander(); return; } if ((Object)(object)closestPlayer != (Object)null) { num = Vector3.Distance(((Component)closestPlayer).transform.position, ((Component)this).transform.position); } if ((Object)(object)closestPlayer2 != (Object)null) { num2 = Vector3.Distance(((Component)closestPlayer2).transform.position, ((Component)this).transform.position); can_seePlayer = true; } else { num2 = -1f; can_seePlayer = false; } switch (base.currentBehaviourStateIndex) { case 0: base.creatureVoice.Stop(); setup_moveAndOpen(1.5f, 1f); base.targetPlayer = null; if ((Object)(object)closestPlayer != (Object)null && (closestPlayer.isCrouching || !closestPlayer.isSprinting) && Vector3.Distance(((Component)this).transform.position, ((Component)closestPlayer).transform.position) <= 14f) { SwitchToBehaviourClientRpcAndReset(1); timer_stalking = 30f; if (roamMap.inProgress) { ((EnemyAI)this).StopSearch(roamMap, true); } } else if ((Object)(object)closestPlayer != (Object)null && ((closestPlayer.isSprinting && (double)Vector3.Distance(((Component)this).transform.position, ((Component)closestPlayer).transform.position) <= 31.5) || (Object)(object)closestPlayer2 != (Object)null)) { SwitchToBehaviourClientRpcAndReset(1); timer_stalking = 50f; if (roamMap.inProgress) { ((EnemyAI)this).StopSearch(roamMap, true); } } else if ((Object)(object)closestPlayer != (Object)null && Vector3.Distance(((Component)this).transform.position, ((Component)closestPlayer).transform.position) <= 56f) { setup_moveAndOpen(2f, 1f); force_movingTowardsTarget(closestPlayer); } else if ((Object)(object)base.targetPlayer == (Object)null && base.agent.velocity == new Vector3(0f, 0f, 0f)) { roamMap = null; ((EnemyAI)this).StartSearch(spawnPosition, roamMap); } break; case 1: subState = 1; if ((num > 38.5f && (Object)(object)closestPlayer2 == (Object)null) || (Object)(object)closestPlayer == (Object)null) { targetLost = true; if (timer_targetLost < 0f) { SwitchToBehaviourClientRpcAndReset(4); break; } subState = 0; setup_moveAndOpen(4f, 1f); if ((Object)(object)closestPlayer != (Object)null) { force_movingTowardsTarget(closestPlayer); } break; } targetLost = false; timer_targetLost = defaultTimer_targetLost; if (timer_stalking < 0f) { if (timer_stalkWithLOS < 0f) { SwitchToBehaviourClientRpcAndReset(2); } else if ((double)num < 11.200000000000001) { setup_moveAndOpen(8f, 1f); AvoidClosestPlayer(11.48f, avoidLOS: false, closestPlayer); } else if (num > 14f && (Object)(object)closestPlayer2 == (Object)null) { setup_moveAndOpen(5f, 1f); if (!((Object)(object)closestPlayer == (Object)null)) { force_movingTowardsTarget(closestPlayer); } } else if ((Object)(object)closestPlayer2 != (Object)null || (double)num > 11.200000000000001) { stop_movement(); subState = 2; } } else if (num <= 2f) { SwitchToBehaviourClientRpcAndReset(3); } else if ((Object)(object)closestPlayer2 != (Object)null && num2 < 28f) { subState = 1; setup_moveAndOpen(12f, 1f); AvoidClosestPlayer(28f, avoidLOS: true, closestPlayer); } else if (num < 14f) { subState = 1; setup_moveAndOpen(11f, 1f); AvoidClosestPlayer(14f, avoidLOS: true, closestPlayer); } else if (num < 19.6f) { subState = 1; setup_moveAndOpen(5f, 0f); AvoidClosestPlayer(14f, avoidLOS: true, closestPlayer); } else { subState = 2; setup_moveAndOpen(0f, 1f); stop_movement(); base.moveTowardsDestination = false; base.movingTowardsTargetPlayer = false; } break; case 2: setup_moveAndOpen(8f, 1f); if (timer_preRushTimeout < 0f || num < 2f) { SwitchToBehaviourClientRpcAndReset(3); } else if (num < 14f) { AvoidClosestPlayer(14f, avoidLOS: true, closestPlayer); } break; case 3: scareLocalPlayer(); setup_moveAndOpen(10.5f, 0.15f); if (base.enemyHP <= 2) { base.openDoorSpeedMultiplier = 2f; } force_movingTowardsTarget(closestPlayer); if (!flag && (Object)(object)closestPlayer2 == (Object)null) { timer_chaseDuration = defaultTimer_chaseDuration; break; } flag = true; if (timer_chaseDuration < 0f && (Object)(object)closestPlayer2 == (Object)null && num > 14f) { SwitchToBehaviourClientRpcAndReset(4); } break; case 4: base.creatureVoice.Stop(); if (num < 1.5f) { SwitchToBehaviourClientRpcAndReset(3); } setup_moveAndOpen(14f, 1f); AvoidClosestPlayer(14f, avoidLOS: true, closestPlayer); if (num > 28f && (Object)(object)closestPlayer2 == (Object)null && timer_roamTimeout < 0f) { SwitchToBehaviourClientRpcAndReset(0); } break; default: LogIfDebugBuild("Error : invalid behavior index"); break; } } public void AvoidClosestPlayer(float optimalDistance, bool avoidLOS, PlayerControllerB closestPlayer) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) Transform val = ((EnemyAI)this).ChooseFarthestNodeFromPosition(((Component)closestPlayer).transform.position, avoidLOS, 0, false, 50, false); if ((Object)(object)val != (Object)null && base.mostOptimalDistance > optimalDistance && Physics.Linecast(((Component)val).transform.position, ((Component)closestPlayer.gameplayCamera).transform.position, StartOfRound.Instance.collidersAndRoomMaskAndDefault, (QueryTriggerInteraction)1)) { base.targetNode = val; ((EnemyAI)this).SetDestinationToPosition(base.targetNode.position, false); } } public void scareLocalPlayer() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) if (Vector3.Distance(((Component)this).transform.position, ((Component)GameNetworkManager.Instance.localPlayerController).transform.position) < 14f) { GameNetworkManager.Instance.localPlayerController.JumpToFearLevel(1f, true); } } public override void OnCollideWithPlayer(Collider other) { //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) if (!(timeSinceHittingLocalPlayer < 0.75f) && !(timer_stun > 0f) && !base.isEnemyDead && base.currentBehaviourStateIndex == 3) { PlayerControllerB val = ((EnemyAI)this).MeetsStandardPlayerCollisionConditions(other, false, false); if ((Object)(object)val != (Object)null) { base.creatureAnimator.SetBool("isAngry", false); DoAnimationClientRpc("slash"); base.creatureSFX.PlayOneShot(base.currentBehaviourState.SFXClip); timeSinceHittingLocalPlayer = 0f; val.DamagePlayer(clawDamage, true, true, (CauseOfDeath)0, 0, false, default(Vector3)); LogIfDebugBuild("Player " + val.playerUsername + " hit by dust stalker"); } } } public override void HitEnemy(int force = 1, PlayerControllerB playerWhoHit = null, bool playHitSFX = false, int hitID = -1) { if (base.isEnemyDead || timer_stun > 0f) { return; } ((EnemyAI)this).HitEnemy(force, playerWhoHit, playHitSFX, hitID = -1); base.enemyHP -= force; if (((NetworkBehaviour)this).IsOwner) { if (base.enemyHP <= 0 && !base.isEnemyDead) { ((EnemyAI)this).KillEnemyOnOwnerClient(false); return; } base.creatureAnimator.SetBool("isAngry", false); DoAnimationClientRpc("stunned"); base.creatureVoice.PlayOneShot(base.dieSFX); timer_stun = 1f; ((EnemyAI)this).SwitchToBehaviourClientRpc(3); } } [ClientRpc] public void DoAnimationClientRpc(string animationName) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3719444039u, val, (RpcDelivery)0); bool flag = animationName != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe(animationName, false); } ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3719444039u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; LogIfDebugBuild("Animation: " + animationName); base.creatureAnimator.SetTrigger(animationName); } } [ClientRpc] public void SwingAttackHitClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: 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_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(121933789u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 121933789u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; LogIfDebugBuild("SwingAttackHitClientRPC"); int num = 8; Collider[] array = Physics.OverlapBox(attackArea.position, attackArea.localScale, Quaternion.identity, num); if (array.Length == 0) { return; } Collider[] array2 = array; foreach (Collider val3 in array2) { PlayerControllerB val4 = ((EnemyAI)this).MeetsStandardPlayerCollisionConditions(val3, false, false); if ((Object)(object)val4 != (Object)null) { LogIfDebugBuild("Swing attack hit player!"); timeSinceHittingLocalPlayer = 0f; val4.DamagePlayer(40, true, true, (CauseOfDeath)0, 0, false, default(Vector3)); } } } protected override void __initializeVariables() { ((EnemyAI)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(3719444039u, new RpcReceiveHandler(__rpc_handler_3719444039), "DoAnimationClientRpc"); ((NetworkBehaviour)this).__registerRpc(121933789u, new RpcReceiveHandler(__rpc_handler_121933789), "SwingAttackHitClientRpc"); ((EnemyAI)this).__initializeRpcs(); } private static void __rpc_handler_3719444039(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives)); string animationName = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe(ref animationName, false); } target.__rpc_exec_stage = (__RpcExecStage)1; ((Menstalker_ybdkSKB)(object)target).DoAnimationClientRpc(animationName); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_121933789(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((Menstalker_ybdkSKB)(object)target).SwingAttackHitClientRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "Menstalker_ybdkSKB"; } } [BepInPlugin("snickerbarYaboiDucki.menstalker_yaboiduckisnickerbar", "menstalker_yaboiduckisnickerbar", "1.2.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { public const string pluginName = "Men stalker (Hostile entity)"; public const string ModGUID = "snickerbarYaboiDucki.menstalker_yaboiduckisnickerbar"; public const string pluginVersion = "1.2.2"; internal static ManualLogSource Logger; public static AssetBundle ModAssets; internal static PluginConfig BoundConfig { get; private set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; BoundConfig = new PluginConfig((BaseUnityPlugin)(object)this); InitializeNetworkBehaviours(); string path = "yaboiduckimenstalkerassets"; ModAssets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), path)); if ((Object)(object)ModAssets == (Object)null) { Logger.LogError((object)"Failed to load custom assets."); return; } EnemyType val = ModAssets.LoadAsset<EnemyType>("Menstalker_type"); TerminalNode val2 = ModAssets.LoadAsset<TerminalNode>("duskStalkerTN"); TerminalKeyword val3 = ModAssets.LoadAsset<TerminalKeyword>("duskStalkerTK"); NetworkPrefabs.RegisterNetworkPrefab(val.enemyPrefab); Enemies.RegisterEnemy(val, BoundConfig.SpawnWeight.Value, (LevelTypes)(-1), (SpawnType)0, val2, val3); Logger.LogInfo((object)"Plugin menstalker_yaboiduckisnickerbar is loaded!"); } private static void InitializeNetworkBehaviours() { Type[] types = Assembly.GetExecutingAssembly().GetTypes(); Type[] array = types; foreach (Type type in array) { MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); MethodInfo[] array2 = methods; foreach (MethodInfo methodInfo in array2) { object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false); if (customAttributes.Length != 0) { methodInfo.Invoke(null, null); } } } } } public static class PluginInfo { public const string PLUGIN_GUID = "menstalker_yaboiduckisnickerbar"; public const string PLUGIN_NAME = "menstalker_yaboiduckisnickerbar"; public const string PLUGIN_VERSION = "1.2.2"; } } namespace Menstalker_ybdkSKB.Configuration { public class PluginConfig { public ConfigEntry<int> SpawnWeight; public PluginConfig(BaseUnityPlugin plugin) { SpawnWeight = plugin.Config.Bind<int>("Man stalker", "Spawn weight", 20, "The spawn chance weight for ExampleEnemy, relative to other existing enemies.\nGoes up from 0, lower is more rare, 100 and up is very common."); ClearUnusedEntries(plugin); } private void ClearUnusedEntries(BaseUnityPlugin plugin) { PropertyInfo property = ((object)plugin.Config).GetType().GetProperty("OrphanedEntries", BindingFlags.Instance | BindingFlags.NonPublic); Dictionary<ConfigDefinition, string> dictionary = (Dictionary<ConfigDefinition, string>)property.GetValue(plugin.Config, null); dictionary.Clear(); plugin.Config.Save(); } } } namespace __GEN { internal class NetworkVariableSerializationHelper { [RuntimeInitializeOnLoadMethod] internal static void InitializeSerialization() { } } } namespace menstalker_yaboiduckisnickerbar.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }
BepInEx/plugins/plugins/MoreSuits/MoreSuits.dll
Decompiled a day agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("MoreSuits")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("A mod that adds more suit options to Lethal Company")] [assembly: AssemblyFileVersion("1.4.5.0")] [assembly: AssemblyInformationalVersion("1.4.5")] [assembly: AssemblyProduct("MoreSuits")] [assembly: AssemblyTitle("MoreSuits")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.4.5.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace MoreSuits { [BepInPlugin("x753.More_Suits", "More Suits", "1.4.5")] public class MoreSuitsMod : BaseUnityPlugin { [HarmonyPatch(typeof(StartOfRound))] internal class StartOfRoundPatch { [HarmonyPatch("Start")] [HarmonyPrefix] private static void StartPatch(ref StartOfRound __instance) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_070a: Unknown result type (might be due to invalid IL or missing references) //IL_070f: Unknown result type (might be due to invalid IL or missing references) //IL_0715: Unknown result type (might be due to invalid IL or missing references) //IL_071a: Unknown result type (might be due to invalid IL or missing references) //IL_0477: Unknown result type (might be due to invalid IL or missing references) //IL_047e: Expected O, but got Unknown //IL_0310: Unknown result type (might be due to invalid IL or missing references) //IL_0317: Expected O, but got Unknown //IL_0626: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Expected O, but got Unknown try { if (SuitsAdded) { return; } int count = __instance.unlockablesList.unlockables.Count; UnlockableItem val = new UnlockableItem(); int num = 0; for (int i = 0; i < __instance.unlockablesList.unlockables.Count; i++) { UnlockableItem val2 = __instance.unlockablesList.unlockables[i]; if (!((Object)(object)val2.suitMaterial != (Object)null) || !val2.alreadyUnlocked) { continue; } val = val2; List<string> list = Directory.GetDirectories(Paths.PluginPath, "moresuits", SearchOption.AllDirectories).ToList(); List<string> list2 = new List<string>(); List<string> list3 = new List<string>(); List<string> list4 = DisabledSuits.ToLower().Replace(".png", "").Split(',') .ToList(); List<string> list5 = new List<string>(); if (!LoadAllSuits) { foreach (string item2 in list) { if (File.Exists(Path.Combine(item2, "!less-suits.txt"))) { string[] collection = new string[9] { "glow", "kirby", "knuckles", "luigi", "mario", "minion", "skeleton", "slayer", "smile" }; list5.AddRange(collection); break; } } } foreach (string item3 in list) { if (item3 != "") { string[] files = Directory.GetFiles(item3, "*.png"); string[] files2 = Directory.GetFiles(item3, "*.matbundle"); list2.AddRange(files); list3.AddRange(files2); } } list3.Sort(); list2.Sort(); try { foreach (string item4 in list3) { Object[] array = AssetBundle.LoadFromFile(item4).LoadAllAssets(); foreach (Object val3 in array) { if (val3 is Material) { Material item = (Material)val3; customMaterials.Add(item); } } } } catch (Exception ex) { Debug.Log((object)("Something went wrong with More Suits! Could not load materials from asset bundle(s). Error: " + ex)); } foreach (string item5 in list2) { if (list4.Contains(Path.GetFileNameWithoutExtension(item5).ToLower())) { continue; } string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); if (list5.Contains(Path.GetFileNameWithoutExtension(item5).ToLower()) && item5.Contains(directoryName)) { continue; } UnlockableItem val4; Material val5; if (Path.GetFileNameWithoutExtension(item5).ToLower() == "default") { val4 = val; val5 = val4.suitMaterial; } else { val4 = JsonUtility.FromJson<UnlockableItem>(JsonUtility.ToJson((object)val)); val5 = Object.Instantiate<Material>(val4.suitMaterial); } byte[] array2 = File.ReadAllBytes(item5); Texture2D val6 = new Texture2D(2, 2); ImageConversion.LoadImage(val6, array2); val6.Apply(true, true); val5.mainTexture = (Texture)(object)val6; val4.unlockableName = Path.GetFileNameWithoutExtension(item5); try { string path = Path.Combine(Path.GetDirectoryName(item5), "advanced", val4.unlockableName + ".json"); string text = Path.Combine(Path.GetDirectoryName(Paths.ConfigPath), "config\\MoreSuitsConfig", val4.unlockableName + ".json"); if (File.Exists(text)) { ((BaseUnityPlugin)Instance).Logger.LogInfo((object)("Utilizing [ " + text + " ] for suit - " + val4.unlockableName + "!")); path = text; } if (File.Exists(path)) { string[] array3 = File.ReadAllLines(path); for (int j = 0; j < array3.Length; j++) { string[] array4 = array3[j].Trim().Split(':'); if (array4.Length != 2) { continue; } string text2 = array4[0].Trim('"', ' ', ','); string text3 = array4[1].Trim('"', ' ', ','); if (text3.Contains(".png")) { byte[] array5 = File.ReadAllBytes(Path.Combine(Path.GetDirectoryName(item5), "advanced", text3)); Texture2D val7 = new Texture2D(2, 2); ImageConversion.LoadImage(val7, array5); val7.Apply(true, true); val5.SetTexture(text2, (Texture)(object)val7); continue; } if (text2 == "PRICE" && int.TryParse(text3, out var result)) { try { if (!UnlockAll) { val4 = AddToRotatingShop(val4, result, __instance.unlockablesList.unlockables.Count); } } catch (Exception ex2) { Debug.Log((object)("Something went wrong with More Suits! Could not add a suit to the rotating shop. Error: " + ex2)); } continue; } switch (text3) { case "KEYWORD": val5.EnableKeyword(text2); continue; case "DISABLEKEYWORD": val5.DisableKeyword(text2); continue; case "SHADERPASS": val5.SetShaderPassEnabled(text2, true); continue; case "DISABLESHADERPASS": val5.SetShaderPassEnabled(text2, false); continue; } float result2; Vector4 vector; if (text2 == "SHADER") { Shader shader = Shader.Find(text3); val5.shader = shader; } else if (text2 == "MATERIAL") { foreach (Material customMaterial in customMaterials) { if (((Object)customMaterial).name == text3) { val5 = Object.Instantiate<Material>(customMaterial); val5.mainTexture = (Texture)(object)val6; break; } } } else if (float.TryParse(text3, out result2)) { val5.SetFloat(text2, result2); } else if (TryParseVector4(text3, out vector)) { val5.SetVector(text2, vector); } } } } catch (Exception ex3) { Debug.Log((object)("Something went wrong with More Suits! Error: " + ex3)); } val4.suitMaterial = val5; if (val4.unlockableName.ToLower() != "default") { if (num == MaxSuits) { Debug.Log((object)"Attempted to add a suit, but you've already reached the max number of suits! Modify the config if you want more."); continue; } __instance.unlockablesList.unlockables.Add(val4); num++; } } SuitsAdded = true; break; } UnlockableItem val8 = JsonUtility.FromJson<UnlockableItem>(JsonUtility.ToJson((object)val)); val8.alreadyUnlocked = false; val8.hasBeenMoved = false; val8.placedPosition = Vector3.zero; val8.placedRotation = Vector3.zero; val8.unlockableType = 753; while (__instance.unlockablesList.unlockables.Count < count + MaxSuits) { __instance.unlockablesList.unlockables.Add(val8); } } catch (Exception ex4) { Debug.Log((object)("Something went wrong with More Suits! Error: " + ex4)); } } [HarmonyPatch("PositionSuitsOnRack")] [HarmonyPrefix] private static bool PositionSuitsOnRackPatch(ref StartOfRound __instance) { //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) List<UnlockableSuit> source = Object.FindObjectsOfType<UnlockableSuit>().ToList(); source = source.OrderBy((UnlockableSuit suit) => suit.syncedSuitID.Value).ToList(); int num = 0; foreach (UnlockableSuit item in source) { AutoParentToShip component = ((Component)item).gameObject.GetComponent<AutoParentToShip>(); component.overrideOffset = true; float num2 = 0.18f; if (MakeSuitsFitOnRack && source.Count > 13) { num2 /= (float)Math.Min(source.Count, 20) / 12f; } component.positionOffset = new Vector3(-2.45f, 2.75f, -8.41f) + __instance.rightmostSuitPosition.forward * num2 * (float)num; component.rotationOffset = new Vector3(0f, 90f, 0f); num++; } return false; } } private const string modGUID = "x753.More_Suits"; private const string modName = "More Suits"; private const string modVersion = "1.4.5"; private readonly Harmony harmony = new Harmony("x753.More_Suits"); private static MoreSuitsMod Instance; public static bool SuitsAdded = false; public static string DisabledSuits; public static bool LoadAllSuits; public static bool MakeSuitsFitOnRack; public static bool UnlockAll; public static int MaxSuits; public static List<Material> customMaterials = new List<Material>(); private static TerminalNode cancelPurchase; private static TerminalKeyword buyKeyword; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } DisabledSuits = ((BaseUnityPlugin)this).Config.Bind<string>("General", "Disabled Suit List", "UglySuit751.png,UglySuit752.png,UglySuit753.png", "Comma-separated list of suits that shouldn't be loaded").Value; LoadAllSuits = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Ignore !less-suits.txt", false, "If true, ignores the !less-suits.txt file and will attempt to load every suit, except those in the disabled list. This should be true if you're not worried about having too many suits.").Value; MakeSuitsFitOnRack = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Make Suits Fit on Rack", true, "If true, squishes the suits together so more can fit on the rack.").Value; UnlockAll = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Unlock All Suits", false, "If true, unlocks all custom suits that would normally be sold in the shop.").Value; MaxSuits = ((BaseUnityPlugin)this).Config.Bind<int>("General", "Max Suits", 100, "The maximum number of suits to load. If you have more, some will be ignored.").Value; harmony.PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin More Suits is loaded!"); } private static UnlockableItem AddToRotatingShop(UnlockableItem newSuit, int price, int unlockableID) { //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) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Expected O, but got Unknown //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Expected O, but got Unknown //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_029f: Expected O, but got Unknown Terminal val = Object.FindObjectOfType<Terminal>(); for (int i = 0; i < val.terminalNodes.allKeywords.Length; i++) { if (((Object)val.terminalNodes.allKeywords[i]).name == "Buy") { buyKeyword = val.terminalNodes.allKeywords[i]; break; } } newSuit.alreadyUnlocked = false; newSuit.hasBeenMoved = false; newSuit.placedPosition = Vector3.zero; newSuit.placedRotation = Vector3.zero; newSuit.shopSelectionNode = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)newSuit.shopSelectionNode).name = newSuit.unlockableName + "SuitBuy1"; newSuit.shopSelectionNode.creatureName = newSuit.unlockableName + " suit"; newSuit.shopSelectionNode.displayText = "You have requested to order " + newSuit.unlockableName + " suits.\nTotal cost of item: [totalCost].\n\nPlease CONFIRM or DENY.\n\n"; newSuit.shopSelectionNode.clearPreviousText = true; newSuit.shopSelectionNode.shipUnlockableID = unlockableID; newSuit.shopSelectionNode.itemCost = price; newSuit.shopSelectionNode.overrideOptions = true; CompatibleNoun val2 = new CompatibleNoun(); val2.noun = ScriptableObject.CreateInstance<TerminalKeyword>(); val2.noun.word = "confirm"; val2.noun.isVerb = true; val2.result = ScriptableObject.CreateInstance<TerminalNode>(); ((Object)val2.result).name = newSuit.unlockableName + "SuitBuyConfirm"; val2.result.creatureName = ""; val2.result.displayText = "Ordered " + newSuit.unlockableName + " suits! Your new balance is [playerCredits].\n\n"; val2.result.clearPreviousText = true; val2.result.shipUnlockableID = unlockableID; val2.result.buyUnlockable = true; val2.result.itemCost = price; val2.result.terminalEvent = ""; CompatibleNoun val3 = new CompatibleNoun(); val3.noun = ScriptableObject.CreateInstance<TerminalKeyword>(); val3.noun.word = "deny"; val3.noun.isVerb = true; if ((Object)(object)cancelPurchase == (Object)null) { cancelPurchase = ScriptableObject.CreateInstance<TerminalNode>(); } val3.result = cancelPurchase; ((Object)val3.result).name = "MoreSuitsCancelPurchase"; val3.result.displayText = "Cancelled order.\n"; newSuit.shopSelectionNode.terminalOptions = (CompatibleNoun[])(object)new CompatibleNoun[2] { val2, val3 }; TerminalKeyword val4 = ScriptableObject.CreateInstance<TerminalKeyword>(); ((Object)val4).name = newSuit.unlockableName + "Suit"; val4.word = newSuit.unlockableName.ToLower() + " suit"; val4.defaultVerb = buyKeyword; CompatibleNoun val5 = new CompatibleNoun(); val5.noun = val4; val5.result = newSuit.shopSelectionNode; List<CompatibleNoun> list = buyKeyword.compatibleNouns.ToList(); list.Add(val5); buyKeyword.compatibleNouns = list.ToArray(); List<TerminalKeyword> list2 = val.terminalNodes.allKeywords.ToList(); list2.Add(val4); list2.Add(val2.noun); list2.Add(val3.noun); val.terminalNodes.allKeywords = list2.ToArray(); return newSuit; } public static bool TryParseVector4(string input, out Vector4 vector) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) vector = Vector4.zero; string[] array = input.Split(','); if (array.Length == 4 && float.TryParse(array[0], out var result) && float.TryParse(array[1], out var result2) && float.TryParse(array[2], out var result3) && float.TryParse(array[3], out var result4)) { vector = new Vector4(result, result2, result3, result4); return true; } return false; } } }
BepInEx/plugins/plugins/NameplateTweaks.dll
Decompiled a day agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Dissonance; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("NameplateTweaks")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Configurable client-side mod for player username billboards. Speaking indicators, better visibility, etc.")] [assembly: AssemblyFileVersion("1.0.6.0")] [assembly: AssemblyInformationalVersion("1.0.6+c97f76d05208be5c08fc6b88bca796c1fe5bcf02")] [assembly: AssemblyProduct("NameplateTweaks")] [assembly: AssemblyTitle("NameplateTweaks")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.6.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace NameplateTweaks { [BepInPlugin("taffyko.NameplateTweaks", "NameplateTweaks", "1.0.6")] public class Plugin : BaseUnityPlugin { public const string modGUID = "taffyko.NameplateTweaks"; public const string modName = "NameplateTweaks"; public const string modVersion = "1.0.6"; public static ConfigEntry<bool> ConfigEnableSpeakingIndicator; public static ConfigEntry<bool> ConfigVariableSpeakingIndicatorOpacity; public static ConfigEntry<bool> ConfigSpeakingIndicatorAlwaysVisible; public static ConfigEntry<bool> ConfigHideNameplates; public static ConfigEntry<float> ConfigNameplateScale; public static ConfigEntry<float> ConfigNameplateVisibilityDistance; public static ConfigEntry<bool> ConfigNameplateScaleWithDistance; public static ManualLogSource log; private readonly Harmony harmony = new Harmony("taffyko.NameplateTweaks"); public static Vector3? OriginalNameplateScale = new Vector3(-0.0025f, 0.0025f, 0.0025f); private void Awake() { log = Logger.CreateLogSource("NameplateTweaks"); log.LogInfo((object)"Loading taffyko.NameplateTweaks"); ConfigEnableSpeakingIndicator = ((BaseUnityPlugin)this).Config.Bind<bool>("Speaking Indicator", "EnableSpeakingIndicator", true, "Enable a voice-activity speaking indicator above player nameplates"); ConfigVariableSpeakingIndicatorOpacity = ((BaseUnityPlugin)this).Config.Bind<bool>("Speaking Indicator", "VariableSpeakingIndicatorOpacity", true, "Speaking indicator opacity changes depending on volume"); ConfigSpeakingIndicatorAlwaysVisible = ((BaseUnityPlugin)this).Config.Bind<bool>("Speaking Indicator", "SpeakingIndicatorAlwaysVisible", true, "Display speaking indicators even when the nameplate is hidden"); ConfigHideNameplates = ((BaseUnityPlugin)this).Config.Bind<bool>("Nameplate", "HideNameplates", false, "Do not show player nameplates at all"); ConfigNameplateScale = ((BaseUnityPlugin)this).Config.Bind<float>("Nameplate", "NameplateScale", 1.5f, "Nameplate size multiplier (1.0 is the vanilla size)"); ConfigNameplateVisibilityDistance = ((BaseUnityPlugin)this).Config.Bind<float>("Nameplate", "NameplateVisibilityDistance", 20f, "Distance from the camera within which nameplates are visible (0.0 reverts to vanilla behavior). The length of the ship is ~20 units, for reference"); ConfigNameplateScaleWithDistance = ((BaseUnityPlugin)this).Config.Bind<bool>("Nameplate", "NameplateScaleWithDistance", false, "Scale nameplates so that they retain their apparent size as they get further away"); harmony.PatchAll(Assembly.GetExecutingAssembly()); } private void OnDestroy() { } } public class SpeakingIndicator : MonoBehaviour { public PlayerControllerB player; public Canvas canvas; public GameObject canvasItem; public CanvasGroup canvasItemAlpha; public static Dictionary<PlayerControllerB, SpeakingIndicator> speakingIndicators = new Dictionary<PlayerControllerB, SpeakingIndicator>(); private static Texture2D speakingIconTexture = null; public 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_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) speakingIndicators.TryGetValue(player, out var 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; } public void Awake() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_0073: 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_00b0: 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); canvasItem.AddComponent<Image>().sprite = Sprite.Create(GetSpeakingIconTexture(), new Rect(0f, 0f, 260f, 280f), new Vector2(130f, 140f), 100f); } private float lexp(float a, float b, float t) { return Mathf.Lerp(a, b, Mathf.Exp(0f - t)); } public void Update() { VoicePlayerState voicePlayerState = player.voicePlayerState; if (voicePlayerState != null) { float num = Mathf.Clamp(voicePlayerState.Amplitude * 35f, 0f, 1f); if (Plugin.ConfigVariableSpeakingIndicatorOpacity.Value) { if (num > 0.01f) { canvasItemAlpha.alpha = lexp(canvasItemAlpha.alpha, num, Time.deltaTime * 100f); } else { canvasItemAlpha.alpha = lexp(canvasItemAlpha.alpha, num, Time.deltaTime * 50f); } } else if (num > 0.05f) { canvasItemAlpha.alpha = 1f; } else if (num < 0.01f) { canvasItemAlpha.alpha = 0f; } } if (!Plugin.ConfigSpeakingIndicatorAlwaysVisible.Value) { canvasItemAlpha.alpha = Math.Min(canvasItemAlpha.alpha, player.usernameAlpha.alpha); } if (((NetworkBehaviour)player).IsOwner) { canvasItemAlpha.alpha = 0f; } if (!Plugin.ConfigEnableSpeakingIndicator.Value) { Object.Destroy((Object)(object)((Component)this).gameObject); } } public void OnDestroy() { speakingIndicators.Remove(player); Object.Destroy((Object)(object)canvasItem); } } [HarmonyPatch] public class Patches { [HarmonyPatch(typeof(HUDManager), "UpdateSpectateBoxSpeakerIcons")] [HarmonyPostfix] public static void UpdateSpectateBoxSpeakerIcons(HUDManager __instance, ref Dictionary<Animator, PlayerControllerB> ___spectatingPlayerBoxes) { foreach (var (val3, val4) in ___spectatingPlayerBoxes) { if (!((NetworkBehaviour)val4).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(); val3.SetBool("speaking", valueOrDefault); break; } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] [HarmonyPostfix] public static void PlayerUpdate(PlayerControllerB __instance) { //IL_001f: 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_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: 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_00da: Unknown result type (might be due to invalid IL or missing references) //IL_015a: 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_016f: Unknown result type (might be due to invalid IL or missing references) if (Plugin.ConfigEnableSpeakingIndicator.Value) { SpeakingIndicator.GetSpeakingIndicator(__instance); } __instance.usernameBillboard.position = new Vector3(__instance.playerGlobalHead.position.x, __instance.playerGlobalHead.position.y + 0.55f, __instance.playerGlobalHead.position.z); if (Plugin.ConfigHideNameplates.Value || (Object)(object)__instance == (Object)(object)StartOfRound.Instance?.localPlayerController) { __instance.usernameAlpha.alpha = 0f; __instance.usernameBillboard.localScale = Vector3.zero; } else if ((Object)(object)StartOfRound.Instance?.localPlayerController != (Object)null) { float num = Vector3.Distance(((Component)StartOfRound.Instance.localPlayerController.gameplayCamera).transform.position, __instance.usernameBillboard.position); if (num < Plugin.ConfigNameplateVisibilityDistance.Value) { __instance.usernameAlpha.alpha = 1f; ((Behaviour)__instance.usernameBillboardText).enabled = true; ((Component)__instance.usernameCanvas).gameObject.SetActive(true); } float num2 = 1f; if (Plugin.ConfigNameplateScaleWithDistance.Value) { num2 = 1f + Math.Max(0f, (num - 4f) * 0.11f); } __instance.usernameBillboard.localScale = Plugin.OriginalNameplateScale.Value * Plugin.ConfigNameplateScale.Value * num2; } } } public static class PluginInfo { public const string PLUGIN_GUID = "NameplateTweaks"; public const string PLUGIN_NAME = "NameplateTweaks"; public const string PLUGIN_VERSION = "1.0.6"; } }
BepInEx/plugins/plugins/PersistentPurchases.dll
Decompiled a day agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; using UnityEngine.UIElements.Collections; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("PersistentPurchases")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Keeps bought ship objects after failing to meet quota")] [assembly: AssemblyFileVersion("1.1.1.0")] [assembly: AssemblyInformationalVersion("1.1.1")] [assembly: AssemblyProduct("PersistentPurchases")] [assembly: AssemblyTitle("PersistentPurchases")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.1.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace PersistentPurchases { [HarmonyPatch] public class Patches { [HarmonyPostfix] [HarmonyPatch(typeof(Terminal), "Start")] [HarmonyPriority(-23)] public static void generateConfig() { Plugin.setupConfig(StartOfRound.Instance.unlockablesList.unlockables); } [HarmonyPrefix] [HarmonyPatch(typeof(StartOfRound), "ResetShip")] public static void storeUnlocked(StartOfRound __instance, out List<Tuple<int, Vector3, Vector3>> __state) { //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) Plugin.log.LogInfo((object)"Taking note of bought unlockables"); __state = new List<Tuple<int, Vector3, Vector3>>(); List<UnlockableItem> unlockables = __instance.unlockablesList.unlockables; for (int i = 0; i < unlockables.Count; i++) { Plugin.log.LogDebug((object)$"{unlockables[i].unlockableName} - unlocked({unlockables[i].hasBeenUnlockedByPlayer}) - should persist({Plugin.unlockableConfig[i].Value})"); if (unlockables[i].hasBeenUnlockedByPlayer && Plugin.unlockableConfig[i].Value) { __state.Add(Tuple.Create<int, Vector3, Vector3>(i, unlockables[i].placedPosition, unlockables[i].placedRotation)); } } } [HarmonyPostfix] [HarmonyPatch(typeof(StartOfRound), "ResetShip")] public static void loadUnlocked(StartOfRound __instance, List<Tuple<int, Vector3, Vector3>> __state) { //IL_00c5: Unknown result type (might be due to invalid IL or missing references) Plugin.log.LogInfo((object)"Rebuying unlockables"); foreach (Tuple<int, Vector3, Vector3> item in __state) { Plugin.log.LogDebug((object)__instance.unlockablesList.unlockables[item.Item1].unlockableName); UnlockableItem val = __instance.unlockablesList.unlockables[item.Item1]; __instance.BuyShipUnlockableServerRpc(item.Item1, TimeOfDay.Instance.quotaVariables.startingCredits); if (__instance.SpawnedShipUnlockables.ContainsKey(item.Item1)) { NetworkObject component = DictionaryExtensions.Get<int, GameObject>((IDictionary<int, GameObject>)__instance.SpawnedShipUnlockables, item.Item1, (GameObject)null).GetComponent<NetworkObject>(); if ((Object)(object)component != (Object)null) { ShipBuildModeManager.Instance.StoreObjectServerRpc(NetworkObjectReference.op_Implicit(component), 0); } else { Plugin.log.LogWarning((object)("Failed to find NetworkObject for " + val.unlockableName)); } } else { Plugin.log.LogWarning((object)("SpawnedShipUnlockables did not contain " + val.unlockableName)); } } } } [HarmonyPatch(typeof(GameNetworkManager), "ResetSavedGameValues")] public class RemoveUneccesaryAndAnnoyingReset { private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { Plugin.log.LogInfo((object)"Beginning patching of GameNetworkManager.ResetSavedGameValues"); List<CodeInstruction> list = new List<CodeInstruction>(instructions); bool flag = false; for (int i = 0; i < list.Count; i++) { if (CodeInstructionExtensions.Calls(list[i], typeof(GameNetworkManager).GetMethod("ResetUnlockablesListValues"))) { flag = true; list[i - 1].opcode = OpCodes.Nop; list[i].opcode = OpCodes.Nop; list[i].operand = null; break; } } if (flag) { Plugin.log.LogInfo((object)"Patched GameNetworkManager.ResetSavedGameValues"); } else { Plugin.log.LogError((object)"Failed to patch GameNetworkManager.ResetSavedGameValues!"); } return list.AsEnumerable(); } } [BepInPlugin("PersistentPurchases", "PersistentPurchases", "1.1.1")] public class Plugin : BaseUnityPlugin { public static ConfigEntry<bool> placeUnlockables; public static ManualLogSource log = new ManualLogSource("PersistentPurchases"); public static Harmony harmony = new Harmony("PersistentPurchases"); public static string[] knownFurniture = new string[19] { "Cozy lights", "Television", "Cupboard", "File Cabinet", "Toilet", "Shower", "Light switch", "Record player", "Table", "Bunkbeds", "Terminal", "Romantic table", "JackOLantern", "Welcome mat", "Goldfish", "Plushie pajama man", "SmallRug", "LargeRug", "FatalitiesSign" }; public static List<ConfigFile> despair = new List<ConfigFile>(); public static List<ConfigEntry<bool>> unlockableConfig = new List<ConfigEntry<bool>>(); private void Awake() { Logger.Sources.Add((ILogSource)(object)log); despair.Add(((BaseUnityPlugin)this).Config); harmony.PatchAll(typeof(Patches)); harmony.PatchAll(typeof(RemoveUneccesaryAndAnnoyingReset)); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin PersistentPurchases is loaded!"); } public static void setupConfig(List<UnlockableItem> unlockables) { log.LogInfo((object)$"Registering {unlockables.Count} unlockables"); for (int i = 0; i < unlockables.Count; i++) { log.LogDebug((object)(unlockables[i].unlockableName ?? "")); unlockableConfig.Add(despair[0].Bind<bool>("Unlockables", unlockables[i].unlockableName, unlockables[i].unlockableType == 0 || knownFurniture.Contains(unlockables[i].unlockableName), (ConfigDescription)null)); } } } public static class PluginInfo { public const string PLUGIN_GUID = "PersistentPurchases"; public const string PLUGIN_NAME = "PersistentPurchases"; public const string PLUGIN_VERSION = "1.1.1"; } }
BepInEx/plugins/plugins/PushToMute.dll
Decompiled a day agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using PushToMute.Patches; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("PushToMute")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("PushToMute")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("faaa231e-a5f3-481d-a1d9-f1f5799855fc")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace PushToMute { [BepInPlugin("Baba.PushToMute", "PushToMute", "1.0.0")] public class PTMModBase : BaseUnityPlugin { private const string modGUID = "Baba.PushToMute"; private const string modName = "PushToMute"; private const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("Baba.PushToMute"); private static PTMModBase Instance; internal ManualLogSource mls; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("Baba.PushToMute"); harmony.PatchAll(typeof(PTMModBase)); harmony.PatchAll(typeof(UpdatePatch)); harmony.PatchAll(typeof(InGamePlayerSettingsPatch)); mls.LogInfo((object)"Push To Mute successfully loaded!"); } } } namespace PushToMute.Patches { [HarmonyPatch(typeof(StartOfRound), "Update")] internal class UpdatePatch { private static void Postfix(StartOfRound __instance) { if ((Object)(object)__instance.voiceChatModule != (Object)null && !IngamePlayerSettings.Instance.settings.pushToTalk) { __instance.voiceChatModule.IsMuted = IngamePlayerSettings.Instance.playerInput.actions.FindAction("VoiceButton", false).IsPressed(); } } } [HarmonyPatch(typeof(IngamePlayerSettings))] internal class InGamePlayerSettingsPatch { [HarmonyPatch("SetMicPushToTalk")] [HarmonyPostfix] private static void SetMicPushToTalkPatch(IngamePlayerSettings __instance) { if (!__instance.unsavedSettings.pushToTalk) { __instance.SetSettingsOptionsText((SettingsOptionType)3, "MODE: Push to mute"); } } [HarmonyPatch("UpdateMicPushToTalkButton")] [HarmonyPostfix] private static void UpdateMicPushToTalkButtonPatch(IngamePlayerSettings __instance) { if (!__instance.settings.pushToTalk) { __instance.SetSettingsOptionsText((SettingsOptionType)3, "MODE: Push to mute"); } } } }
BepInEx/plugins/plugins/RushOfAdrenaline.dll
Decompiled a day agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("RushOfAdrenaline")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("A template for Lethal Company")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+43206f0475d7dae18e393eaa115cfd192399712f")] [assembly: AssemblyProduct("RushOfAdrenaline")] [assembly: AssemblyTitle("RushOfAdrenaline")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace RushOfAdrenaline { [BepInPlugin("Uprank.RushOfAdrenaline", "Rush of Adrenaline", "1.0.0.0")] public class Plugin : BaseUnityPlugin { private readonly Harmony harmony = new Harmony("Uprank.RushOfAdrenaline"); private void Awake() { ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin Uprank.RushOfAdrenaline is loaded!"); harmony.PatchAll(typeof(Plugin)); harmony.PatchAll(typeof(PlayerControllerBPatch)); } } public class PluginInfo { public const string PLUGIN_GUID = "Uprank.RushOfAdrenaline"; public const string PLUGIN_NAME = "Rush of Adrenaline"; public const string PLUGIN_VERSION = "1.0.0.0"; } [HarmonyPatch(typeof(PlayerControllerB))] internal class PlayerControllerBPatch { [HarmonyPatch("Update")] [HarmonyPostfix] private static void AdjustSpeedBasedOnPanic(ref StartOfRound ___playersManager, ref float ___targetFOV, ref float ___sprintMultiplier) { if (___playersManager.fearLevel >= 0.4f) { ___sprintMultiplier = Mathf.Lerp(___sprintMultiplier, 1f + ___playersManager.fearLevel / 2f, Time.deltaTime * 0.25f); } } } }
BepInEx/plugins/plugins/SellTracker.dll
Decompiled a day agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyCompany("SellTracker")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("SellTracker")] [assembly: AssemblyTitle("SellTracker")] [assembly: AssemblyVersion("1.0.0.0")] namespace SellTracker; [BepInPlugin("NutNutty.SellTracker", "Sell Tracker", "1.2.1")] public class SellTracker : BaseUnityPlugin { public ConfigEntry<string> SellTrackerColorConfig; public ConfigEntry<string> SellPercentageColorConfig; public static Color SellTrackerColor; public static Color SellPercentageColor; public void Awake() { //IL_007c: Unknown result type (might be due to invalid IL or missing references) SellTrackerColorConfig = ((BaseUnityPlugin)this).Config.Bind<string>("Colors", "SellTrackerColor", "#FF0000", "The hex color of the sell tracker text (use a site like https://htmlcolorcodes.com to generate a hex code)"); SellPercentageColorConfig = ((BaseUnityPlugin)this).Config.Bind<string>("Colors", "SellPercentageColor", "#FF0000", "The hex color of the sell percentage text (use a site like https://htmlcolorcodes.com to generate a hex code)"); ColorUtility.TryParseHtmlString(SellTrackerColorConfig.Value, ref SellTrackerColor); ColorUtility.TryParseHtmlString(SellPercentageColorConfig.Value, ref SellPercentageColor); new Harmony("SellTracker").PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Sell Tracker plugin loaded!"); } } public class Patches { [HarmonyPatch(typeof(DisplayCompanyBuyingRate))] public class DisplayCompanyBuyingRatePatch { [HarmonyPrefix] [HarmonyPatch("Update")] public static bool OverwriteText(ref DisplayCompanyBuyingRate __instance) { //IL_0045: Unknown result type (might be due to invalid IL or missing references) int num = TimeOfDay.Instance.quotaFulfilled + calculatedValue; ((TMP_Text)__instance.displayText).text = $"PROFIT QUOTA: {num}/{TimeOfDay.Instance.profitQuota}"; ((TMP_Text)__instance.displayText).color = SellTracker.SellTrackerColor; ((TMP_Text)__instance.displayText).fontSize = 28f; return false; } } [HarmonyPatch(typeof(DepositItemsDesk))] public class DepositItemsDeskPatch { [HarmonyPostfix] [HarmonyPatch("AddObjectToDeskClientRpc")] public static void FetchValue(ref DepositItemsDesk __instance) { if (!NetworkManager.Singleton.IsServer && NetworkManager.Singleton.IsClient) { object value = Traverse.Create((object)__instance).Field("lastObjectAddedToDesk").GetValue(); NetworkObject val = (NetworkObject)((value is NetworkObject) ? value : null); __instance.itemsOnCounter.Add(((Component)val).GetComponentInChildren<GrabbableObject>()); } int num = 0; for (int i = 0; i < __instance.itemsOnCounter.Count; i++) { if (__instance.itemsOnCounter[i].itemProperties.isScrap) { num += __instance.itemsOnCounter[i].scrapValue; } } calculatedValue = (int)((float)num * StartOfRound.Instance.companyBuyingRate); } [HarmonyPostfix] [HarmonyPatch("SellItemsClientRpc")] public static void ClearValue(ref DepositItemsDesk __instance) { if (!NetworkManager.Singleton.IsServer && NetworkManager.Singleton.IsClient) { __instance.itemsOnCounter.Clear(); } calculatedValue = 0; } [HarmonyPostfix] [HarmonyPatch("Start")] public static void CreateScreen() { //IL_0006: 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_003c: 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_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: 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_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) Scene sceneByName = SceneManager.GetSceneByName("CompanyBuilding"); if (((Scene)(ref sceneByName)).IsValid()) { GameObject val = Object.Instantiate<GameObject>(GameObject.Find("/Cube")); GameObject val2 = Object.Instantiate<GameObject>(GameObject.Find("/Canvas")); SceneManager.MoveGameObjectToScene(val, sceneByName); SceneManager.MoveGameObjectToScene(val2, sceneByName); Transform transform = val.transform; transform.position += new Vector3(0f, 0f, -3f); Transform transform2 = val2.transform; transform2.position += new Vector3(0f, 0f, -3f); Object.Destroy((Object)(object)val2.GetComponentInChildren<DisplayCompanyBuyingRate>()); TextMeshProUGUI componentInChildren = val2.GetComponentInChildren<TextMeshProUGUI>(); ((TMP_Text)componentInChildren).text = $"{Mathf.RoundToInt(StartOfRound.Instance.companyBuyingRate * 100f)}%"; ((TMP_Text)componentInChildren).color = SellTracker.SellPercentageColor; ((TMP_Text)componentInChildren).fontSize = 64.37f; } } } public static int calculatedValue; }
BepInEx/plugins/plugins/ShipDecorations.dll
Decompiled a day agousing System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using ShipDecorations.Patches; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("ShipDecorations")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ShipDecorations")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("752b4a5e-d779-490a-a540-e85dd73f2bd2")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace ShipDecorations { public static class ConfigSettings { public static ConfigEntry<bool> makeShipDecorationsFree; public static void BindConfigSettings() { } public static string GetDisplayName(string key) { key = key.Replace("<Keyboard>/", ""); key = key.Replace("<Mouse>/", ""); string text = key; text = text.Replace("leftAlt", "Alt"); text = text.Replace("rightAlt", "Alt"); text = text.Replace("leftCtrl", "Ctrl"); text = text.Replace("rightCtrl", "Ctrl"); text = text.Replace("leftShift", "Shift"); text = text.Replace("rightShift", "Shift"); text = text.Replace("leftButton", "LMB"); text = text.Replace("rightButton", "RMB"); return text.Replace("middleButton", "MMB"); } } [BepInPlugin("Sant.ShipDecorationsUnlock", "Unlock Ship Decorations", "1.0.0.0")] public class ShipDecorationsUnlockedModBase : BaseUnityPlugin { private const string modGUID = "Sant.ShipDecorationsUnlock"; private const string modName = "Unlock Ship Decorations"; private const string modVersion = "1.0.0.0"; private readonly Harmony harmony = new Harmony("Sant.ShipDecorationsUnlock"); public static ShipDecorationsUnlockedModBase instance; internal ManualLogSource mls; private void Awake() { if ((Object)(object)instance == (Object)null) { instance = this; } mls = Logger.CreateLogSource("Sant.ShipDecorationsUnlock"); mls.LogInfo((object)"The Ship Decorations Unlock mod has awaken"); harmony.PatchAll(typeof(ShipDecorationsUnlockedModBase)); harmony.PatchAll(typeof(ShipDecorationsUnlockedPatch)); } public static void Log(string message) { Log(message); } } } namespace ShipDecorations.Patches { [HarmonyPatch(typeof(Terminal))] internal class ShipDecorationsUnlockedPatch { [HarmonyPatch("RotateShipDecorSelection")] [HarmonyPostfix] private static void unlockAllShipDecorations(ref List<TerminalNode> ___ShipDecorSelection) { ___ShipDecorSelection.Clear(); List<TerminalNode> list = new List<TerminalNode>(); for (int i = 0; i < StartOfRound.Instance.unlockablesList.unlockables.Count; i++) { if ((Object)(object)StartOfRound.Instance.unlockablesList.unlockables[i].shopSelectionNode != (Object)null && !StartOfRound.Instance.unlockablesList.unlockables[i].alwaysInStock) { list.Add(StartOfRound.Instance.unlockablesList.unlockables[i].shopSelectionNode); } } for (int j = 0; j < list.Count; j++) { TerminalNode item = list[j]; ___ShipDecorSelection.Add(item); } } } }
BepInEx/plugins/plugins/ShipLobby.dll
Decompiled a day agousing System; using System.Collections; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("ShipLobby")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyProduct("ShipLobby")] [assembly: AssemblyCopyright("Copyright © tinyhoot 2023")] [assembly: ComVisible(false)] [assembly: AssemblyFileVersion("1.0.2")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.2.0")] [module: UnverifiableCode] namespace ShipLobby { [BepInPlugin("com.github.tinyhoot.ShipLobby", "ShipLobby", "1.0.2")] internal class ShipLobby : BaseUnityPlugin { public const string GUID = "com.github.tinyhoot.ShipLobby"; public const string NAME = "ShipLobby"; public const string VERSION = "1.0.2"; internal static ManualLogSource Log; private void Awake() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) Log = ((BaseUnityPlugin)this).Logger; new Harmony("com.github.tinyhoot.ShipLobby").PatchAll(Assembly.GetExecutingAssembly()); } } } namespace ShipLobby.Patches { [HarmonyPatch] internal class GameNetworkManagerPatcher { private static QuickMenuManager _quickMenuManager; [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "Singleton_OnClientConnectedCallback")] private static void LogConnect() { ShipLobby.Log.LogDebug((object)"Player connected."); } [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "Singleton_OnClientDisconnectCallback")] private static void LogDisconnect() { ShipLobby.Log.LogDebug((object)"Player disconnected."); } [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "ConnectionApproval")] private static void FixConnectionApproval(GameNetworkManager __instance, ConnectionApprovalResponse response) { if (!response.Approved && !(response.Reason != "Game has already started!") && __instance.gameHasStarted && StartOfRound.Instance.inShipPhase) { ShipLobby.Log.LogDebug((object)"Approving incoming late connection."); response.Reason = ""; response.Approved = true; } } [HarmonyPostfix] [HarmonyPatch(typeof(QuickMenuManager), "InviteFriendsButton")] private static void FixFriendInviteButton() { if (GameNetworkManager.Instance.gameHasStarted && StartOfRound.Instance.inShipPhase) { GameNetworkManager.Instance.InviteFriendsUI(); } } [HarmonyPrefix] [HarmonyPatch(typeof(GameNetworkManager), "LeaveLobbyAtGameStart")] private static bool PreventSteamLobbyLeaving(GameNetworkManager __instance) { ShipLobby.Log.LogDebug((object)"Preventing the closing of Steam lobby."); return false; } [HarmonyPrefix] [HarmonyPatch(typeof(StartOfRound), "StartGame")] private static void CloseSteamLobby(StartOfRound __instance) { if (((NetworkBehaviour)__instance).IsServer && __instance.inShipPhase) { ShipLobby.Log.LogDebug((object)"Setting lobby to not joinable."); GameNetworkManager.Instance.SetLobbyJoinable(false); } } [HarmonyPostfix] [HarmonyPatch(typeof(StartOfRound), "EndOfGame")] private static IEnumerator ReopenSteamLobby(IEnumerator coroutine, StartOfRound __instance) { while (coroutine.MoveNext()) { yield return coroutine.Current; } if (!((NetworkBehaviour)__instance).IsServer) { yield break; } yield return (object)new WaitForSeconds(0.5f); yield return (object)new WaitUntil((Func<bool>)(() => !__instance.firingPlayersCutsceneRunning)); ShipLobby.Log.LogDebug((object)"Reopening lobby, setting to joinable."); GameNetworkManager instance = GameNetworkManager.Instance; if (instance.currentLobby.HasValue) { instance.SetLobbyJoinable(true); if ((Object)(object)_quickMenuManager == (Object)null) { _quickMenuManager = Object.FindObjectOfType<QuickMenuManager>(); } _quickMenuManager.inviteFriendsTextAlpha.alpha = 1f; } } } }
BepInEx/plugins/plugins/ShootableMouthDogs.dll
Decompiled a day agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.AI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("AgentRev")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+0eac58e2c712170b22b29352fe20cbcc1cec04b3")] [assembly: AssemblyProduct("ShootableMouthDogs")] [assembly: AssemblyTitle("ShootableMouthDogs")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace ShootableMouthDogs { [BepInPlugin("ShootableMouthDogs", "ShootableMouthDogs", "1.0.0")] public class Plugin : BaseUnityPlugin { public void Awake() { ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin ShootableMouthDogs v1.0.0 loaded!"); Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null); } } [HarmonyPatch(typeof(Physics))] public static class PhysicsPatch { [HarmonyPatch("SphereCastNonAlloc")] [HarmonyPatch(new Type[] { typeof(Ray), typeof(float), typeof(RaycastHit[]), typeof(float), typeof(int), typeof(QueryTriggerInteraction) })] private static void Postfix(RaycastHit[] results, int layerMask, ref int __result) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) if ((layerMask & 0x80000) == 0) { return; } int num = 0; for (int i = 0; i < __result; i++) { Transform transform = ((RaycastHit)(ref results[i])).transform; if ((Object)(object)((transform != null) ? ((Component)transform).GetComponent<NavMeshAgent>() : null) == (Object)null) { if (i > num) { results[num] = results[i]; } num++; } } __result = num; } } public static class PluginInfo { public const string PLUGIN_GUID = "ShootableMouthDogs"; public const string PLUGIN_NAME = "ShootableMouthDogs"; public const string PLUGIN_VERSION = "1.0.0"; } }
BepInEx/plugins/plugins/VanillaContentExpansion/VanillaContentExpansion.dll
Decompiled a day agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using LethalLib.Modules; using Microsoft.CodeAnalysis; using Newtonsoft.Json; using Unity.Netcode; using UnityEngine; using VanillaContentExpansion; using VanillaContentPlus; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("VanillaContentExpansion")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("VanillaContentExpansion")] [assembly: AssemblyTitle("VanillaContentExpansion")] [assembly: AssemblyVersion("1.0.0.0")] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace VanillaContentPlus { [BepInPlugin("bigmcnugget.vanillaContentExpansion", "Vanilla Content Expansion", "0.1.7")] public class Plugin : BaseUnityPlugin { private const string GUID = "bigmcnugget.vanillaContentExpansion"; private const string NAME = "Vanilla Content Expansion"; private const string VERSION = "0.1.7"; public static Plugin instance; public ConfigEntry<bool> AllowDebugLogs; public static AssetBundle scrapAssetBundle; public static string scrapListJson; public static AssetBundle monsterAssetBundle; public static ConfigFile mainConfig { get; internal set; } public static ConfigFile scrapConfig { get; internal set; } public static ConfigFile monsterConfig { get; internal set; } private void Awake() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Expected O, but got Unknown instance = this; mainConfig = new ConfigFile(Utility.CombinePaths(new string[2] { Paths.ConfigPath, "bigmcnugget.vanillaContentExpansion-main.cfg" }), true); AllowDebugLogs = mainConfig.Bind<bool>("Main", "Allow Debug Logs", true, "Allow printing logs to the console, really only needed for debug"); PrepareForPatching(); scrapAssetBundle = LoadAssetBundle("Scrap", Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "customscrap")); scrapListJson = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "ScrapList.json"); scrapConfig = new ConfigFile(Utility.CombinePaths(new string[2] { Paths.ConfigPath, "bigmcnugget.vanillaContentExpansion-scrap.cfg" }), false); CustomScrap.Init(); Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "bigmcnugget.vanillaContentExpansion"); } private static void PrepareForPatching() { Type[] types = Assembly.GetExecutingAssembly().GetTypes(); Type[] array = types; foreach (Type type in array) { MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); MethodInfo[] array2 = methods; foreach (MethodInfo methodInfo in array2) { object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false); if (customAttributes.Length != 0) { methodInfo.Invoke(null, null); } } } } private static AssetBundle LoadAssetBundle(string debugName, string path) { AssetBundle result = AssetBundle.LoadFromFile(path); instance.LogInfo("Loaded " + debugName + " Asset bundle from " + path); return result; } public void LogInfo(string message) { if (AllowDebugLogs.Value) { ((BaseUnityPlugin)this).Logger.LogInfo((object)message); } } public void LogWarning(string message) { ((BaseUnityPlugin)this).Logger.LogWarning((object)message); } } } namespace VanillaContentPlus.CustomBehaviour { public class FlipPhone : GrabbableObject { public AudioSource src; public AudioClip[] ringtones; public bool isPlaying; public override void ItemActivate(bool used, bool buttonDown = true) { ((GrabbableObject)this).ItemActivate(used, buttonDown); if (((NetworkBehaviour)this).IsOwner && isPlaying) { } } [ServerRpc(RequireOwnership = false)] public void PlayServerRpc() { int i = Random.Range(0, ringtones.Length); PlayClientRpc(i); } [ClientRpc] public void PlayClientRpc(int i) { ((MonoBehaviour)this).StartCoroutine(PlayOneShotIEnum(i)); } public IEnumerator PlayOneShotIEnum(int i) { isPlaying = true; AudioClip clip = ringtones[i]; Debug.Log((object)("Phone item: Playing clip " + ((Object)clip).name)); src.PlayOneShot(clip); yield return (object)new WaitForSeconds(clip.length + 0.2f); isPlaying = false; } } } namespace VanillaContentExpansion { public class ChatterboxAI : EnemyAI { } public class CustomEnemy { public class CustomEnemyData { public string name; public string enemyPath; public int rarity; public LevelTypes levelFlags; public SpawnType spawnType; public string infoKeyword; public string infoNode; public bool enabled = true; private CustomEnemyConfig config; public CustomEnemyData(string name, string enemyPath, int rarity, LevelTypes levelFlags, SpawnType spawnType, string infoKeyword, string infoNode) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) this.name = name; this.enemyPath = enemyPath; this.rarity = rarity; this.levelFlags = levelFlags; this.spawnType = spawnType; this.infoKeyword = infoKeyword; this.infoNode = infoNode; config = new CustomEnemyConfig(name, rarity); enabled = config.ENABLED.Value; this.rarity = config.RARITY.Value; allMonsters.Add(this); } } public static List<CustomEnemyData> allMonsters = new List<CustomEnemyData>(); public static CustomEnemyData chatterbox = new CustomEnemyData("chatterbox", "Assets/content/enemies/chatterbox/data/chatterbox_enemy_type.asset", 1000, (LevelTypes)(-1), (SpawnType)0, null, ""); public static void Init() { foreach (CustomEnemyData allMonster in allMonsters) { RegisterCustomMonster(allMonster); } } private static void RegisterCustomMonster(CustomEnemyData monster) { //IL_00a8: 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) Plugin.instance.LogInfo("Attempting To register Custom Monster: " + monster.name + " at " + monster.enemyPath); if (!monster.enabled) { Plugin.instance.LogInfo("Register Skipped" + monster.name + " Disabled in config"); return; } EnemyType val = Plugin.monsterAssetBundle.LoadAsset<EnemyType>(monster.enemyPath); if ((Object)(object)val == (Object)null) { Plugin.instance.LogWarning("!!!!!!!!!!!!!CANNOT FIND!!!!!!!!!!!!!!" + monster.name); return; } NetworkPrefabs.RegisterNetworkPrefab(val.enemyPrefab); Enemies.RegisterEnemy(val, monster.rarity, monster.levelFlags, monster.spawnType, (TerminalNode)null, (TerminalKeyword)null); Plugin.instance.LogInfo("Registered Custom Monster: " + monster.name); Plugin.instance.LogInfo("\n"); } } public class CustomEnemyConfig { public string name; public int rarity; public ConfigEntry<bool> ENABLED; public ConfigEntry<int> RARITY; public CustomEnemyConfig(string _name, int _defaultRarity) { name = _name; rarity = _defaultRarity; ENABLED = Plugin.monsterConfig.Bind<bool>(name, name + " Enabled", true, (ConfigDescription)null); RARITY = Plugin.monsterConfig.Bind<int>(name, name + " Rarity", rarity, ""); Plugin.instance.LogInfo(name + " Config Loaded: [ENABLED] " + ENABLED.Value + " | [RARITY] " + RARITY.Value); } } public class CustomScrap { public class CustomScrapItem { public string scrapName; public string path; public Dictionary<LevelTypes, int> moonWeights; public bool enabled; public int minValue; public int maxValue; public float itemWeight; private CustomScrapConfig config; public CustomScrapItem(string name, string path, int[] weights, int minValue, int maxValue, float weight) { scrapName = name; this.path = path; moonWeights = new Dictionary<LevelTypes, int> { { (LevelTypes)4, weights[0] }, { (LevelTypes)8, weights[1] }, { (LevelTypes)16, weights[2] }, { (LevelTypes)32, weights[3] }, { (LevelTypes)64, weights[4] }, { (LevelTypes)128, weights[5] }, { (LevelTypes)256, weights[6] }, { (LevelTypes)512, weights[7] }, { (LevelTypes)1024, weights[0] } }; this.minValue = minValue; this.maxValue = maxValue; itemWeight = weight; config = new CustomScrapConfig(scrapName, this); enabled = config.ENABLED.Value; this.minValue = config.valueMin.Value; this.maxValue = config.valueMax.Value; itemWeight = config.itemWeight.Value; } } public class CustomScrapConfig { public string name; public ConfigEntry<bool> ENABLED; public ConfigEntry<int> valueMin; public ConfigEntry<int> valueMax; public ConfigEntry<float> itemWeight; public CustomScrapConfig(string _name, CustomScrapItem item) { name = _name; ENABLED = Plugin.scrapConfig.Bind<bool>("SCRAP " + name, name + " Enabled", true, (ConfigDescription)null); valueMin = Plugin.scrapConfig.Bind<int>("SCRAP " + name, name + " Minimum Value", item.minValue, (ConfigDescription)null); valueMax = Plugin.scrapConfig.Bind<int>("SCRAP " + name, name + " Maximum Value", item.maxValue, (ConfigDescription)null); itemWeight = Plugin.scrapConfig.Bind<float>("SCRAP " + name, name + " Item Weight", item.itemWeight, (ConfigDescription)null); Plugin.instance.LogInfo(name + " Config Loaded: [ENABLED] " + ENABLED.Value); } } public class JsonRoot { [JsonProperty("SCRAP")] public JsonData[] scraplist { get; set; } } public class JsonData { [JsonProperty("name")] public string name; [JsonProperty("path")] public string path; [JsonProperty("weights")] public int[] weights; [JsonProperty("minValue")] public int minValue; [JsonProperty("maxValue")] public int maxValue; [JsonProperty("itemWeight")] public float itemWeight; } public static List<CustomScrapItem> allScrapItems = new List<CustomScrapItem>(); public static void Init() { ParseJsonList(); } private static void RegisterCustomScrapItem(CustomScrapItem scrap) { if (!scrap.enabled) { Plugin.instance.LogInfo("Register Skipped" + scrap.scrapName + " Disabled in config"); return; } Item val = Plugin.scrapAssetBundle.LoadAsset<Item>(scrap.path); if ((Object)(object)val == (Object)null) { Plugin.instance.LogWarning("!!!!!!!!!!!!!CANNOT FIND!!!!!!!!!!!!!!" + scrap.scrapName); return; } val.minValue = (int)((double)scrap.minValue * 2.5); val.maxValue = (int)((double)scrap.maxValue * 2.5); val.weight = scrap.itemWeight; NetworkPrefabs.RegisterNetworkPrefab(val.spawnPrefab); Items.RegisterScrap(val, scrap.moonWeights, (Dictionary<string, int>)null); Plugin.instance.LogInfo("Succesfully Registered Scrap: " + scrap.scrapName); } private static void ParseJsonList() { StreamReader streamReader = new StreamReader(Plugin.scrapListJson); string text = streamReader.ReadToEnd(); JsonRoot jsonRoot = JsonConvert.DeserializeObject<JsonRoot>(text); int num = jsonRoot.scraplist.Length; for (int i = 0; i < num; i++) { JsonData jsonData = jsonRoot.scraplist[i]; CustomScrapItem scrap = new CustomScrapItem(jsonData.name, jsonData.path, jsonData.weights, jsonData.minValue, jsonData.maxValue, jsonData.itemWeight); RegisterCustomScrapItem(scrap); } } } } namespace VanillaContentExpansion.CustomBehaviour { public class AlarmClock { public Transform hHand; public Transform mHand; public Transform sHand; public AudioSource src; public AudioClip tick; public AudioClip alarm; } public class Lighter : GrabbableObject { private bool enabled; public AudioSource src; public AudioClip enabledSfx; public AudioClip disabledSfx; public Light pointLight; private float defaultlightRange = 5f; private Vector2 lightRangeRandom = new Vector2(4f, 8f); private float currentLightRange; private float defaultlightIntensity = 500f; private Vector2 lightIntensityRandom = new Vector2(125f, 150f); private float currentLightIntensity; private Vector2 flickerTimerRandom = new Vector2(0.01f, 0.15f); private float flickerTimer = 0.1f; public float fuel = 100f; private float fuelLeft; public override void ItemActivate(bool used, bool buttonDown = true) { ((GrabbableObject)this).ItemActivate(used, buttonDown); if (((NetworkBehaviour)this).IsOwner) { ((Behaviour)pointLight).enabled = false; } } public void Toggle() { enabled = !enabled; if (enabled) { Debug.Log((object)"Lighter enabled"); src.PlayOneShot(enabledSfx); ((Behaviour)pointLight).enabled = true; } else { Debug.Log((object)"Lighter disabled"); src.PlayOneShot(disabledSfx); ((Behaviour)pointLight).enabled = false; pointLight.intensity = defaultlightIntensity; pointLight.range = defaultlightRange; } } public void Tick() { flickerTimer -= Time.deltaTime; if (flickerTimer <= 0f) { currentLightIntensity = Random.Range(lightIntensityRandom.x, lightIntensityRandom.y); currentLightRange = Random.Range(lightRangeRandom.x, lightRangeRandom.y); pointLight.intensity = currentLightIntensity; pointLight.range = currentLightRange; flickerTimer = Random.Range(flickerTimerRandom.x, flickerTimerRandom.y); } } public override void Update() { ((GrabbableObject)this).Update(); Tick(); } public override void PocketItem() { ((GrabbableObject)this).PocketItem(); if (enabled) { Toggle(); } } } public class Missile : GrabbableObject { } public class PolaroidCamera : GrabbableObject { private bool canUse; public Light light; private float flashTimer; public AudioSource src; public AudioClip flashSFX; public AudioClip primedSFX; public override void Start() { ((GrabbableObject)this).Start(); ((Behaviour)light).enabled = false; canUse = true; } public override void ItemActivate(bool used, bool buttonDown = true) { ((GrabbableObject)this).ItemActivate(used, buttonDown); if (!((NetworkBehaviour)this).IsOwner) { } } public IEnumerator Flash() { canUse = false; src.PlayOneShot(flashSFX); ((Behaviour)light).enabled = true; light.intensity = 10f; Light obj = light; obj.intensity += Time.deltaTime * 50000f; yield return (object)new WaitForSeconds(0.3f); ((Behaviour)light).enabled = false; light.intensity = 0f; yield return (object)new WaitForSeconds(3f); src.PlayOneShot(primedSFX); canUse = true; } } public class TrafficLight : GrabbableObject { private bool enabled = false; private bool switching; public Light[] lights; public AudioSource src; public AudioClip changeClickClip; private Vector2 timerRandom = new Vector2(5f, 20f); private float currentTimer = 0f; public override void Start() { ((GrabbableObject)this).Start(); Light[] array = lights; foreach (Light val in array) { ((Behaviour)val).enabled = false; } } public override void Update() { ((GrabbableObject)this).Update(); if (!enabled) { return; } currentTimer -= Time.deltaTime; if (currentTimer <= 0f && !switching) { Light[] array = lights; foreach (Light val in array) { ((Behaviour)val).enabled = false; } ((MonoBehaviour)this).StartCoroutine(ToggleLights()); } } public override void PocketItem() { ((GrabbableObject)this).PocketItem(); enabled = false; Light[] array = lights; foreach (Light val in array) { ((Behaviour)val).enabled = false; } } public override void EquipItem() { enabled = true; } private IEnumerator ToggleLights() { switching = true; yield return (object)new WaitForSeconds(0.75f); src.PlayOneShot(changeClickClip); int i = Random.Range(0, lights.Length); ((Behaviour)lights[i]).enabled = true; currentTimer = Random.Range(timerRandom.x, timerRandom.y); switching = false; } } }
BepInEx/plugins/plugins/VoiceHUD.dll
Decompiled a day agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Dissonance; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.UI; using VoiceHUD.Configuration; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("VoiceHUD")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Displays push-to-talk icon on voice activation")] [assembly: AssemblyFileVersion("1.0.1.0")] [assembly: AssemblyInformationalVersion("1.0.1+f1e0a0cfa0a629002418c9e0aa3a753676e33192")] [assembly: AssemblyProduct("VoiceHUD")] [assembly: AssemblyTitle("VoiceHUD")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.1.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace VoiceHUD { [BepInPlugin("5Bit.VoiceHUD", "VoiceHUD", "1.0.4")] public class VoiceHUD : BaseUnityPlugin { private const string modGUID = "5Bit.VoiceHUD"; private const string modName = "VoiceHUD"; private const string modVersion = "1.0.4"; private readonly Harmony harmony = new Harmony("5Bit.VoiceHUD"); private static VoiceHUD Instance; internal static ManualLogSource mls; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("5Bit.VoiceHUD"); Config.Init(); harmony.PatchAll(); } } public static class PluginInfo { public const string PLUGIN_GUID = "VoiceHUD"; public const string PLUGIN_NAME = "VoiceHUD"; public const string PLUGIN_VERSION = "1.0.1"; } } namespace VoiceHUD.Patches { [HarmonyPatch(typeof(HUDManager))] internal class VoiceHUDPatch { private static Color Start = new Color(0f, 255f, 0f, 255f); private static Color Center = new Color(165f, 255f, 0f, 255f); private static Color End = new Color(255f, 0f, 0f, 255f); [HarmonyPatch("Update")] [HarmonyPostfix] private static void Update() { //IL_00ab: Unknown result type (might be due to invalid IL or missing references) if (!IngamePlayerSettings.Instance.settings.micEnabled || IngamePlayerSettings.Instance.settings.pushToTalk || (Object)(object)StartOfRound.Instance.voiceChatModule == (Object)null) { return; } VoicePlayerState val = StartOfRound.Instance.voiceChatModule.FindPlayer(StartOfRound.Instance.voiceChatModule.LocalPlayerName); if (val.IsSpeaking) { float num = Mathf.Clamp(val.Amplitude * 35f, 0f, 1f); if (Config.ColorsEnabled) { ((Graphic)HUDManager.Instance.PTTIcon).color = GetColorByVolume(num * 100f); } ((Behaviour)HUDManager.Instance.PTTIcon).enabled = num > 0.01f; } } public static Color GetColorByVolume(float volume) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) if (volume < 20f) { return Start; } if (volume > 70f) { return End; } return Center; } } } namespace VoiceHUD.Configuration { internal static class Config { private const string CONFIG_FILE_NAME = "VoiceHUD.cfg"; private static ConfigFile config; private static ConfigEntry<bool> colorsEnabled; public static bool ColorsEnabled => colorsEnabled.Value; public static void Init() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown string text = Path.Combine(Paths.ConfigPath, "VoiceHUD.cfg"); config = new ConfigFile(text, true); colorsEnabled = config.Bind<bool>("Config", "Colors enabled", false, "Change icon color based on volume."); } } }