using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using LethalGym.Scripts; using LethalLib.Modules; using Microsoft.CodeAnalysis; using TMPro; using Unity.Collections; using Unity.Netcode; 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("LethalGym")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("LethalGym")] [assembly: AssemblyTitle("LethalGym")] [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; } } } public class Equipment : NetworkBehaviour { [CompilerGenerated] private sealed class d__37 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public PlayerControllerB player; public Equipment <>4__this; private AnimatorOverrideController 5__1; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__37(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__1 = null; <>1__state = -2; } private bool MoveNext() { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = null; <>1__state = 1; return true; case 1: <>1__state = -1; <>2__current = (object)new WaitForSeconds(0.1f); <>1__state = 2; return true; case 2: { <>1__state = -1; if ((Object)(object)player == (Object)null || (Object)(object)player.playerBodyAnimator == (Object)null) { return false; } ref AnimatorOverrideController reference = ref 5__1; RuntimeAnimatorController runtimeAnimatorController = player.playerBodyAnimator.runtimeAnimatorController; reference = (AnimatorOverrideController)(object)((runtimeAnimatorController is AnimatorOverrideController) ? runtimeAnimatorController : null); if ((Object)(object)5__1 != (Object)null) { resetAnimations(5__1); } player.playerBodyAnimator.Update(0f); return false; } } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__28 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public Equipment <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__28(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; if ((Object)(object)<>4__this.playerController != (Object)null && (Object)(object)<>4__this.playerController.playerBodyAnimator != (Object)null) { <>4__this.playerController.playerBodyAnimator.Play("SpecialAnimations.TypeOnTerminal2", -1, 0f); } if ((Object)(object)<>4__this.animator != (Object)null) { <>4__this.animator.Play("Base Layer.EquipmentRepAnimation", -1, 0f); } <>4__this.isRepping = true; <>2__current = (object)new WaitForSeconds(1f); <>1__state = 1; return true; case 1: <>1__state = -1; <>4__this.isRepping = false; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public PlayerActions playerActions; public InteractTrigger trigger; public Animator animator; public TMP_Text nameText; public TMP_Text repsText; public GameObject[] weights; public string EquipmentName; public int playerStrengthLevel; public AnimatorOverrideController overrideController; public AnimationClip equipmentEnter; public AnimationClip equipmentRep; public static AnimationClip benchEnter; public static AnimationClip benchRep; public static AnimationClip squatEnter; public static AnimationClip squatRep; public int reps; public bool inUse; public bool isRepping; public PlayerControllerB playerController; public PlayerStrengthLevel psl; public void Awake() { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Expected O, but got Unknown //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) inUse = false; playerActions = new PlayerActions(); MovementActions movement = playerActions.Movement; ((MovementActions)(ref movement)).Enable(); trigger = ((Component)this).GetComponent(); } private void OnEnable() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: 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) MovementActions movement = playerActions.Movement; ((MovementActions)(ref movement)).Interact.performed += BackOut; movement = playerActions.Movement; ((MovementActions)(ref movement)).Use.performed += Rep; } private void OnDisable() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: 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) MovementActions movement = playerActions.Movement; ((MovementActions)(ref movement)).Interact.performed -= BackOut; movement = playerActions.Movement; ((MovementActions)(ref movement)).Use.performed -= Rep; } public void Start() { nameText.text = "Enter Bench"; repsText.text = "To Start Count"; if (EquipmentName == "Bench") { equipmentEnter = benchEnter; equipmentRep = benchRep; } else if (EquipmentName == "Squat") { equipmentEnter = squatEnter; equipmentRep = squatRep; } else { Debug.LogError((object)"No Name?"); } } public void Update() { if ((Object)(object)nameText != (Object)null && (Object)(object)repsText != (Object)null && (Object)(object)psl != (Object)null && (Object)(object)playerController != (Object)null) { nameText.text = playerController.playerUsername + "'s"; repsText.text = "Reps:" + psl.currentRepsInLevel; } } public void Rep(CallbackContext context) { if (inUse && !isRepping && !((Object)(object)playerController == (Object)null) && playerController.playerClientId == GameNetworkManager.Instance.localPlayerController.playerClientId) { RepServerRpc(); } } [ServerRpc(RequireOwnership = false)] public void RepServerRpc() { if (!((Object)(object)playerController == (Object)null)) { ((MonoBehaviour)this).StartCoroutine(playRep()); reps++; PlayerStrengthLevel component = ((Component)playerController).gameObject.GetComponent(); if ((Object)(object)component != (Object)null) { component.addRep(this); } RepClientRpc(reps); } } [ClientRpc] public void RepClientRpc(int serverReps) { reps = serverReps; ((MonoBehaviour)this).StartCoroutine(playRep()); } [IteratorStateMachine(typeof(d__28))] public IEnumerator playRep() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__28(0) { <>4__this = this }; } public void OnEnter(PlayerControllerB player) { Debug.LogWarning((object)"Entered"); PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController; OnEnterServerRpc(localPlayerController.playerClientId); } [ServerRpc(RequireOwnership = false)] public void OnEnterServerRpc(ulong playerInBenchID) { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Expected O, but got Unknown inUse = true; PlayerControllerB[] array = Object.FindObjectsOfType(); PlayerControllerB[] array2 = array; foreach (PlayerControllerB val in array2) { if (val.playerClientId == playerInBenchID) { playerController = val; RuntimeAnimatorController runtimeAnimatorController = val.playerBodyAnimator.runtimeAnimatorController; overrideController = (AnimatorOverrideController)(object)((runtimeAnimatorController is AnimatorOverrideController) ? runtimeAnimatorController : null); if ((Object)(object)overrideController == (Object)null) { overrideController = new AnimatorOverrideController(runtimeAnimatorController); val.playerBodyAnimator.runtimeAnimatorController = (RuntimeAnimatorController)(object)overrideController; } psl = ((Component)val).GetComponent(); playerStrengthLevel = ((Component)val).GetComponent().playerStrength; break; } } if ((Object)(object)equipmentEnter == (Object)null) { Debug.LogError((object)"equipmentEnter is null"); } else { Debug.LogError((object)((Object)equipmentEnter).name.ToString()); } if ((Object)(object)equipmentRep == (Object)null) { Debug.LogError((object)"equipmentRep is null"); } else { Debug.LogError((object)((Object)equipmentRep).name.ToString()); } if ((Object)(object)overrideController != (Object)null) { Debug.LogError((object)((Object)overrideController).name.ToString()); overrideController["TypeOnTerminal"] = equipmentEnter; overrideController["TypeOnTerminal2"] = equipmentRep; } SetWeights(playerStrengthLevel); Debug.LogError((object)playerStrengthLevel); animator.ResetTrigger("EquipmentRep"); animator.SetTrigger("EquipmentRep"); reps = 1; OnEnterClientRpc(playerInBenchID); } [ClientRpc] public void OnEnterClientRpc(ulong playerInBenchID) { //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Expected O, but got Unknown inUse = true; PlayerControllerB[] array = Object.FindObjectsOfType(); PlayerControllerB[] array2 = array; foreach (PlayerControllerB val in array2) { if (val.playerClientId == playerInBenchID) { playerController = val; RuntimeAnimatorController runtimeAnimatorController = val.playerBodyAnimator.runtimeAnimatorController; overrideController = (AnimatorOverrideController)(object)((runtimeAnimatorController is AnimatorOverrideController) ? runtimeAnimatorController : null); if ((Object)(object)overrideController == (Object)null) { overrideController = new AnimatorOverrideController(runtimeAnimatorController); val.playerBodyAnimator.runtimeAnimatorController = (RuntimeAnimatorController)(object)overrideController; } psl = ((Component)val).GetComponent(); if ((Object)(object)psl == (Object)null) { Debug.LogWarning((object)"no psl"); } playerStrengthLevel = ((Component)val).GetComponent().playerStrength; break; } } if ((Object)(object)equipmentEnter == (Object)null) { Debug.LogError((object)"equipmentEnter is null"); } else { Debug.LogError((object)((Object)equipmentEnter).name.ToString()); } if ((Object)(object)equipmentRep == (Object)null) { Debug.LogError((object)"equipmentRep is null"); } else { Debug.LogError((object)((Object)equipmentRep).name.ToString()); } if ((Object)(object)overrideController == (Object)null) { Debug.LogError((object)"no overridecontroller"); } else { overrideController["TypeOnTerminal"] = equipmentEnter; overrideController["TypeOnTerminal2"] = equipmentRep; } SetWeights(playerStrengthLevel); Debug.LogError((object)playerStrengthLevel); animator.ResetTrigger("EquipmentRep"); animator.SetTrigger("EquipmentRep"); reps = 1; } public void BackOut(CallbackContext context) { if (inUse && !((Object)(object)playerController == (Object)null) && playerController.playerClientId == GameNetworkManager.Instance.localPlayerController.playerClientId) { StopSpecialAnimation(); BackOutServerRpc(); } } public void StopSpecialAnimation() { if ((Object)(object)trigger != (Object)null) { trigger.StopSpecialAnimation(); } } [ServerRpc(RequireOwnership = false)] public void BackOutServerRpc() { Debug.LogWarning((object)"BACKOUT CONFIRM"); LeaveEquipment(); BackOutClientRpc(); } [ClientRpc] public void BackOutClientRpc() { Debug.LogWarning((object)"BACKOUT CONFIRM"); LeaveEquipment(); } public void LeaveEquipment() { PlayerControllerB val = playerController; bool flag = EquipmentName == "Bench"; if ((Object)(object)animator != (Object)null) { animator.SetTrigger("StopAnimation"); } inUse = false; isRepping = false; playerController = null; psl = null; if (flag && (Object)(object)val != (Object)null) { ((MonoBehaviour)this).StartCoroutine(RefreshBenchAnimatorAfterExit(val)); } } [IteratorStateMachine(typeof(d__37))] private IEnumerator RefreshBenchAnimatorAfterExit(PlayerControllerB player) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__37(0) { <>4__this = this, player = player }; } public void SetWeights(int levelNumber) { for (int i = 0; i < weights.Length; i++) { if (i == 0) { weights[i].SetActive(true); } else { weights[i].SetActive(false); } } if (levelNumber == 1) { weights[0].SetActive(true); } if (levelNumber >= 2) { weights[1].SetActive(true); } if (levelNumber >= 3) { weights[2].SetActive(true); } if (levelNumber >= 4) { weights[3].SetActive(true); } if (levelNumber >= 5) { weights[4].SetActive(true); } if (levelNumber >= 6) { weights[5].SetActive(true); } } [ServerRpc(RequireOwnership = false)] public void BeginTerminalServerRPC(ulong playerID) { PlayerControllerB[] array = Object.FindObjectsOfType(); PlayerControllerB[] array2 = array; foreach (PlayerControllerB val in array2) { if (val.playerClientId == playerID) { RuntimeAnimatorController runtimeAnimatorController = val.playerBodyAnimator.runtimeAnimatorController; AnimatorOverrideController val2 = (AnimatorOverrideController)(object)((runtimeAnimatorController is AnimatorOverrideController) ? runtimeAnimatorController : null); if ((Object)(object)val2 != (Object)null) { resetAnimations(val2); } break; } } BeginTerminalClientRPC(playerID); } [ClientRpc] public void BeginTerminalClientRPC(ulong playerID) { PlayerControllerB[] array = Object.FindObjectsOfType(); PlayerControllerB[] array2 = array; foreach (PlayerControllerB val in array2) { if (val.playerClientId == playerID) { RuntimeAnimatorController runtimeAnimatorController = val.playerBodyAnimator.runtimeAnimatorController; AnimatorOverrideController val2 = (AnimatorOverrideController)(object)((runtimeAnimatorController is AnimatorOverrideController) ? runtimeAnimatorController : null); if ((Object)(object)val2 != (Object)null) { resetAnimations(val2); } break; } } } public static void resetAnimations(AnimatorOverrideController controller) { List> list = new List>(controller.overridesCount); controller.GetOverrides(list); for (int i = 0; i < list.Count; i++) { list[i] = new KeyValuePair(list[i].Key, null); } controller.ApplyOverrides((IList>)list); } } public class PlayerStrengthLevel : NetworkBehaviour { public int playerStrength = 1; public int currentRepsInLevel = 0; public static int repsNeededL1 = 25; public static int repsNeededL2 = 50; public static int repsNeededL3 = 75; public static int repsNeededL4 = 100; public static int repsNeededL5 = 200; public bool canGrab; public bool canDrop; public static bool strongerBodyStatus; public float originalCarryWeight; public PlayerControllerB playerController; public void Start() { originalCarryWeight = 1f; canGrab = true; canDrop = true; } public void Update() { } public void UpdateConfigs(bool nStrongerBodyStatus) { strongerBodyStatus = nStrongerBodyStatus; } public void addRep(Equipment bench) { currentRepsInLevel++; Debug.LogWarning((object)currentRepsInLevel.ToString()); if (playerStrength == 1 && currentRepsInLevel >= repsNeededL1) { playerStrength++; currentRepsInLevel = 0; bench.SetWeights(playerStrength); Debug.Log((object)(playerStrength + " PlayerUpgraded!")); } if (playerStrength == 2 && currentRepsInLevel >= repsNeededL2) { playerStrength++; currentRepsInLevel = 0; bench.SetWeights(playerStrength); Debug.Log((object)(playerStrength + " PlayerUpgraded!")); } if (playerStrength == 3 && currentRepsInLevel >= repsNeededL3) { playerStrength++; currentRepsInLevel = 0; bench.SetWeights(playerStrength); Debug.Log((object)(playerStrength + " PlayerUpgraded!")); } if (playerStrength == 4 && currentRepsInLevel >= repsNeededL4) { playerStrength++; currentRepsInLevel = 0; bench.SetWeights(playerStrength); Debug.Log((object)(playerStrength + " PlayerUpgraded!")); } if (playerStrength == 5 && currentRepsInLevel >= repsNeededL5) { bench.repsText.text = "MAXED OUT"; Debug.Log((object)"Bro is maxed out"); } } } namespace LethalGym { [BepInPlugin("Dryedcoolbro.LethalGym", "LethalGym", "1.0.0.0")] public class Plugin : BaseUnityPlugin { private const string modGUID = "Dryedcoolbro.LethalGym"; private const string modName = "LethalGym"; private const string modVersion = "1.0.0.0"; private readonly Harmony harmony = new Harmony("Dryedcoolbro.LethalGym"); private static Plugin Instance; internal static ManualLogSource Logger; public static AssetBundle assetBundle; public static AnimationClip pushupAnimation; public static UnlockablesList unlockablesList; public static Config Config { get; private set; } public static bool IsModLoaded(string guid) { return Chainloader.PluginInfos.ContainsKey(guid); } private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } Config = new Config(((BaseUnityPlugin)this).Config); 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); } } } Logger = Logger.CreateLogSource("Dryedcoolbro.LethalGym"); assetBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "lethalequipment")); LoadAnimations(); if ((Object)(object)pushupAnimation == (Object)null) { Logger.LogError((object)"pushupAnim not exist!"); } else { Logger.LogInfo((object)((Object)pushupAnimation).name); } if ((Object)(object)assetBundle == (Object)null) { Logger.LogError((object)"Assetbundle not exist!"); } else { Logger.LogInfo((object)((object)assetBundle).ToString()); Logger.LogInfo((object)((Object)assetBundle).name); } harmony.PatchAll(); NetworkObjectManager.assetBundle = assetBundle; unlockablesList = assetBundle.LoadAsset("Assets/MyAssets/Unlockables.asset"); unlockablesList = unlockablesList; LoadNetworkPrefabs(); RegisterUnlockables(); } public static void LoadAnimations() { Equipment.benchEnter = assetBundle.LoadAsset("Assets/MyAssets/Bench/BenchPressStart.anim"); Equipment.benchRep = assetBundle.LoadAsset("Assets/MyAssets/Bench/BenchRep.anim"); Equipment.squatEnter = assetBundle.LoadAsset("Assets/MyAssets/SquatRack/SquatEnter.anim"); Equipment.squatRep = assetBundle.LoadAsset("Assets/MyAssets/SquatRack/SquatRep.anim"); } public static void LoadNetworkPrefabs() { NetworkPrefabs.RegisterNetworkPrefab(unlockablesList.unlockables[0].prefabObject); NetworkPrefabs.RegisterNetworkPrefab(unlockablesList.unlockables[1].prefabObject); } public static void RegisterUnlockables() { ConfigApply.unlockablesList = unlockablesList; Unlockables.RegisterUnlockable(unlockablesList.unlockables[0], (StoreType)1, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, 60); Unlockables.RegisterUnlockable(unlockablesList.unlockables[1], (StoreType)1, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, 60); } } [DataContract] public class Config : SyncedInstance { [DataMember] public bool strongerBody { get; private set; } [DataMember] public bool overridePrices { get; private set; } [DataMember] public int benchPrice { get; private set; } [DataMember] public int squatPrice { get; private set; } public Config(ConfigFile cfg) { InitInstance(this); strongerBody = cfg.Bind("General", "Stronger Body", false, "More strength levels you have, the faster you can walk while carrying heavy items").Value; overridePrices = cfg.Bind("Prices", "Override Prices", false, "If set to true, all prices underneath will be set as the price no matter what.").Value; benchPrice = cfg.Bind("Prices", "Bench Price", 60, "Default is 60").Value; squatPrice = cfg.Bind("Prices", "Squat Rack Price", 60, "Default is 60").Value; } public static void RequestSync() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) if (!SyncedInstance.IsClient) { return; } FastBufferWriter stream = default(FastBufferWriter); ((FastBufferWriter)(ref stream))..ctor(SyncedInstance.IntSize, (Allocator)2, -1); try { SyncedInstance.SendMessage("ModName_OnRequestConfigSync", 0uL, stream); } finally { ((IDisposable)(FastBufferWriter)(ref stream)).Dispose(); } } public static void OnRequestSync(ulong clientId, FastBufferReader _) { //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_0072: Unknown result type (might be due to invalid IL or missing references) if (!SyncedInstance.IsHost) { return; } Plugin.Logger.LogInfo((object)$"Config sync request received from client: {clientId}"); byte[] array = SyncedInstance.SerializeToBytes(SyncedInstance.Instance); int num = array.Length; FastBufferWriter stream = default(FastBufferWriter); ((FastBufferWriter)(ref stream))..ctor(num + SyncedInstance.IntSize, (Allocator)2, -1); try { ((FastBufferWriter)(ref stream)).WriteValueSafe(ref num, default(ForPrimitives)); ((FastBufferWriter)(ref stream)).WriteBytesSafe(array, -1, 0); SyncedInstance.SendMessage("ModName_OnReceiveConfigSync", clientId, stream); } catch (Exception arg) { Plugin.Logger.LogInfo((object)$"Error occurred syncing config with client: {clientId}\n{arg}"); } finally { ((IDisposable)(FastBufferWriter)(ref stream)).Dispose(); } } public static void OnReceiveSync(ulong _, FastBufferReader reader) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) if (!((FastBufferReader)(ref reader)).TryBeginRead(SyncedInstance.IntSize)) { Plugin.Logger.LogError((object)"Config sync error: Could not begin reading buffer."); return; } int num = default(int); ((FastBufferReader)(ref reader)).ReadValueSafe(ref num, default(ForPrimitives)); if (!((FastBufferReader)(ref reader)).TryBeginRead(num)) { Plugin.Logger.LogError((object)"Config sync error: Host could not sync."); return; } byte[] data = new byte[num]; ((FastBufferReader)(ref reader)).ReadBytesSafe(ref data, num, 0); SyncedInstance.SyncInstance(data); Plugin.Logger.LogInfo((object)"Successfully synced config with host."); } [HarmonyPostfix] [HarmonyPatch(typeof(PlayerControllerB), "ConnectClientToPlayerObject")] public static void InitializeLocalPlayer() { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Expected O, but got Unknown if (SyncedInstance.IsHost) { SyncedInstance.MessageManager.RegisterNamedMessageHandler("ModName_OnRequestConfigSync", new HandleNamedMessageDelegate(OnRequestSync)); SyncedInstance.Synced = true; } else { SyncedInstance.Synced = false; SyncedInstance.MessageManager.RegisterNamedMessageHandler("ModName_OnReceiveConfigSync", new HandleNamedMessageDelegate(OnReceiveSync)); RequestSync(); } } [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "StartDisconnect")] public static void PlayerLeave() { SyncedInstance.RevertSync(); } } [Serializable] public class SyncedInstance { [NonSerialized] protected static int IntSize = 4; [NonSerialized] private static readonly DataContractSerializer serializer = new DataContractSerializer(typeof(T)); internal static bool Synced; [NonSerialized] private static int MAX_BUFFER_SIZE = 1300; public static CustomMessagingManager MessageManager => NetworkManager.Singleton.CustomMessagingManager; public static bool IsClient => NetworkManager.Singleton.IsClient; public static bool IsHost => NetworkManager.Singleton.IsHost; internal static T Default { get; private set; } internal static T Instance { get; private set; } protected void InitInstance(T instance, int maxSize = 1024) { Default = instance; Instance = instance; IntSize = 4; if (maxSize < 1300) { MAX_BUFFER_SIZE = maxSize; } } internal static void SyncInstance(byte[] data) { Instance = DeserializeFromBytes(data); Synced = true; } internal static void RevertSync() { Instance = Default; Synced = false; } public static byte[] SerializeToBytes(T val) { using MemoryStream memoryStream = new MemoryStream(); try { serializer.WriteObject(memoryStream, val); return memoryStream.ToArray(); } catch (Exception arg) { Plugin.Logger.LogError((object)$"Error serializing instance: {arg}"); return null; } } public static T DeserializeFromBytes(byte[] data) { using MemoryStream stream = new MemoryStream(data); try { return (T)serializer.ReadObject(stream); } catch (Exception arg) { Plugin.Logger.LogError((object)$"Error deserializing instance: {arg}"); return default(T); } } internal static void SendMessage(string label, ulong clientId, FastBufferWriter stream) { //IL_0017: 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_0052: Unknown result type (might be due to invalid IL or missing references) bool flag = ((FastBufferWriter)(ref stream)).Capacity > MAX_BUFFER_SIZE; NetworkDelivery val = (NetworkDelivery)(flag ? 4 : 2); if (flag) { Plugin.Logger.LogDebug((object)($"Size of stream ({((FastBufferWriter)(ref stream)).Capacity}) was past the max buffer size.\n" + "Config instance will be sent in fragments to avoid overflowing the buffer.")); } MessageManager.SendNamedMessage(label, clientId, stream, val); } } } namespace LethalGym.Scripts { [HarmonyPatch] internal class MoreEmotesPatcher { public static bool moreEmotes; [HarmonyPatch(typeof(PreInitSceneScript), "Awake")] [HarmonyPostfix] public static void ApplyPatch() { //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Expected O, but got Unknown //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Expected O, but got Unknown //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Expected O, but got Unknown //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Expected O, but got Unknown if (!Plugin.IsModLoaded("MoreEmotes") || !Chainloader.PluginInfos.TryGetValue("MoreEmotes", out var value)) { return; } Assembly assembly = ((object)value.Instance).GetType().Assembly; if (assembly != null) { Plugin.Logger.LogWarning((object)"Applying compatibility patch for More_Emotes"); Type type = assembly.GetType("MoreEmotes.Patch.EmotePatch"); FieldInfo field = type.GetField("local", BindingFlags.Static | BindingFlags.Public); RuntimeAnimatorController val = (RuntimeAnimatorController)field.GetValue(null); if ((Object)(object)val != (Object)null && !(val is AnimatorOverrideController)) { field.SetValue(null, (object?)new AnimatorOverrideController(val)); } FieldInfo field2 = type.GetField("others", BindingFlags.Static | BindingFlags.Public); RuntimeAnimatorController val2 = (RuntimeAnimatorController)field2.GetValue(null); if ((Object)(object)val2 != (Object)null && !(val2 is AnimatorOverrideController)) { field2.SetValue(null, (object?)new AnimatorOverrideController(val2)); } moreEmotes = true; } } [HarmonyPatch(typeof(StartOfRound), "Awake")] [HarmonyPostfix] public static void AddEmote(StartOfRound __instance) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown __instance.localClientAnimatorController = (RuntimeAnimatorController)new AnimatorOverrideController(__instance.localClientAnimatorController); __instance.otherClientsAnimatorController = (RuntimeAnimatorController)new AnimatorOverrideController(__instance.otherClientsAnimatorController); } } public class EquipmentNetworkHandler : NetworkBehaviour { [CompilerGenerated] private sealed class d__14 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public PlayerControllerB player; public PlayerStrengthLevel psl; public EquipmentNetworkHandler <>4__this; private int <>s__1; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__14(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSeconds(0.1f); <>1__state = 1; return true; case 1: { <>1__state = -1; int playerStrength = psl.playerStrength; <>s__1 = playerStrength; switch (<>s__1) { case 1: player.carryWeight = psl.originalCarryWeight / 1f; break; case 2: player.carryWeight = psl.originalCarryWeight / 1.05f; break; case 3: player.carryWeight = psl.originalCarryWeight / 1.1f; break; case 4: player.carryWeight = psl.originalCarryWeight / 1.3f; break; case 5: player.carryWeight = psl.originalCarryWeight / 1.5f; break; } Debug.LogError((object)("(Grab) Middle instance: " + player.carryWeight)); if (player.carryWeight < 1f) { player.carryWeight = 1f; psl.originalCarryWeight = 1f; Debug.LogWarning((object)"Carry weight less than 1.0"); } Debug.LogError((object)("(grab) Last original: " + psl.originalCarryWeight)); Debug.LogError((object)("(Grab) Last instance: " + player.carryWeight)); <>4__this.DoubleCheckGrabFunction(psl, GrabOrDrop: false); psl.canDrop = false; return false; } } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__12 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public PlayerStrengthLevel psl; public bool GrabOrDrop; public EquipmentNetworkHandler <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__12(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSeconds(0.1f); <>1__state = 1; return true; case 1: <>1__state = -1; if (GrabOrDrop) { psl.canGrab = true; } else { psl.canDrop = true; } return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__21 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public UnlockablesList unlockablesList; public EquipmentNetworkHandler <>4__this; private int 5__1; private int 5__2; private int 5__3; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__21(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSeconds(2f); <>1__state = 1; return true; case 1: <>1__state = -1; if (!SyncedInstance.Instance.overridePrices) { if (SyncedInstance.Instance.strongerBody) { 5__1 = 0; while (5__1 < Unlockables.registeredUnlockables.Count) { if (Unlockables.registeredUnlockables[5__1].unlockable == unlockablesList.unlockables[0]) { Unlockables.UpdateUnlockablePrice(Unlockables.registeredUnlockables[5__1].unlockable, 299); } else if (Unlockables.registeredUnlockables[5__1].unlockable == unlockablesList.unlockables[1]) { Unlockables.UpdateUnlockablePrice(Unlockables.registeredUnlockables[5__1].unlockable, 299); } 5__1++; } } else { 5__2 = 0; while (5__2 < Unlockables.registeredUnlockables.Count) { if (Unlockables.registeredUnlockables[5__2].unlockable == unlockablesList.unlockables[0]) { Unlockables.UpdateUnlockablePrice(Unlockables.registeredUnlockables[5__2].unlockable, 60); } else if (Unlockables.registeredUnlockables[5__2].unlockable == unlockablesList.unlockables[1]) { Unlockables.UpdateUnlockablePrice(Unlockables.registeredUnlockables[5__2].unlockable, 60); } 5__2++; } } } else { 5__3 = 0; while (5__3 < Unlockables.registeredUnlockables.Count) { if (Unlockables.registeredUnlockables[5__3].unlockable == unlockablesList.unlockables[0]) { Unlockables.UpdateUnlockablePrice(Unlockables.registeredUnlockables[5__3].unlockable, SyncedInstance.Instance.benchPrice); } else if (Unlockables.registeredUnlockables[5__3].unlockable == unlockablesList.unlockables[1]) { Unlockables.UpdateUnlockablePrice(Unlockables.registeredUnlockables[5__3].unlockable, SyncedInstance.Instance.squatPrice); } 5__3++; } } setConfigs(SyncedInstance.Instance.strongerBody); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static bool strongerBody; public static bool overridePrices; public static int benchPrce; public static int squatPrice; public static EquipmentNetworkHandler Instance { get; private set; } public override void OnNetworkSpawn() { if (NetworkManager.Singleton.IsHost || NetworkManager.Singleton.IsServer) { EquipmentNetworkHandler instance = Instance; if (instance != null) { ((Component)instance).gameObject.GetComponent().Despawn(true); } } Instance = this; ((NetworkBehaviour)this).OnNetworkSpawn(); } [ServerRpc(RequireOwnership = false)] public void SyncStrengthValuesServerRpc() { PlayerControllerB[] array = Object.FindObjectsOfType(); PlayerControllerB[] array2 = array; foreach (PlayerControllerB val in array2) { PlayerStrengthLevel component = ((Component)val).GetComponent(); SyncStrengthValuesClientRpc(val.playerClientId, component.playerStrength, component.currentRepsInLevel, component.originalCarryWeight, strongerBody); } } [ClientRpc] public void SyncStrengthValuesClientRpc(ulong playerID, int playerStrength, int currentRepsInLevel, float carryWeight, bool strongerBody) { PlayerControllerB[] array = Object.FindObjectsOfType(); PlayerControllerB[] array2 = array; foreach (PlayerControllerB val in array2) { if (val.playerClientId == playerID) { PlayerStrengthLevel playerStrengthLevel = ((Component)val).GetComponent(); if ((Object)(object)playerStrengthLevel == (Object)null) { playerStrengthLevel = ((Component)val).gameObject.AddComponent(); } playerStrengthLevel.playerStrength = playerStrength; playerStrengthLevel.currentRepsInLevel = currentRepsInLevel; playerStrengthLevel.originalCarryWeight = carryWeight; PlayerStrengthLevel.strongerBodyStatus = strongerBody; } } } public void DoubleCheckGrabFunction(PlayerStrengthLevel psl, bool GrabOrDrop) { ((MonoBehaviour)this).StartCoroutine(DoubleCheckGrab(psl, GrabOrDrop)); } [IteratorStateMachine(typeof(d__12))] public IEnumerator DoubleCheckGrab(PlayerStrengthLevel psl, bool GrabOrDrop) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__12(0) { <>4__this = this, psl = psl, GrabOrDrop = GrabOrDrop }; } public void ChangeWeightsFunction(PlayerControllerB player, PlayerStrengthLevel psl) { ((MonoBehaviour)this).StartCoroutine(ChangeWeights(player, psl)); } [IteratorStateMachine(typeof(d__14))] public IEnumerator ChangeWeights(PlayerControllerB player, PlayerStrengthLevel psl) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__14(0) { <>4__this = this, player = player, psl = psl }; } public static void setConfigs(bool strongerBodyValue) { strongerBody = strongerBodyValue; PlayerStrengthLevel[] array = Object.FindObjectsOfType(); PlayerStrengthLevel[] array2 = array; foreach (PlayerStrengthLevel playerStrengthLevel in array2) { playerStrengthLevel.UpdateConfigs(strongerBody); } } [ServerRpc] public void GrabWeightServerRpc(ulong playerID, float grabbedObjectWeight) { PlayerControllerB val = null; PlayerStrengthLevel playerStrengthLevel = null; PlayerControllerB[] array = Object.FindObjectsOfType(); PlayerControllerB[] array2 = array; foreach (PlayerControllerB val2 in array2) { if (val2.playerClientId == playerID) { val = val2; playerStrengthLevel = ((Component)val).GetComponent(); break; } } GrabWeightClientRpc(playerID, grabbedObjectWeight); } [ClientRpc] public void GrabWeightClientRpc(ulong playerID, float grabbedObjectWeight) { PlayerControllerB val = null; PlayerStrengthLevel playerStrengthLevel = null; PlayerControllerB[] array = Object.FindObjectsOfType(); PlayerControllerB[] array2 = array; foreach (PlayerControllerB val2 in array2) { if (val2.playerClientId == playerID) { val = val2; playerStrengthLevel = ((Component)val).GetComponent(); break; } } playerStrengthLevel.originalCarryWeight += Mathf.Clamp(grabbedObjectWeight - 1f, 0f, 10f); switch (playerStrengthLevel.playerStrength) { case 1: val.carryWeight = playerStrengthLevel.originalCarryWeight / 1f; break; case 2: val.carryWeight = playerStrengthLevel.originalCarryWeight / 1.05f; break; case 3: val.carryWeight = playerStrengthLevel.originalCarryWeight / 1.1f; break; case 4: val.carryWeight = playerStrengthLevel.originalCarryWeight / 1.3f; break; case 5: val.carryWeight = playerStrengthLevel.originalCarryWeight / 1.5f; break; } if (val.carryWeight < 1f) { val.carryWeight = 1f; playerStrengthLevel.originalCarryWeight = 1f; } Debug.LogWarning((object)playerStrengthLevel.originalCarryWeight.ToString()); } [ServerRpc] public void DropWeightServerRpc(ulong playerID, float grabbedObjectWeight) { PlayerControllerB val = null; PlayerStrengthLevel playerStrengthLevel = null; PlayerControllerB[] array = Object.FindObjectsOfType(); PlayerControllerB[] array2 = array; foreach (PlayerControllerB val2 in array2) { if (val2.playerClientId == playerID) { val = val2; playerStrengthLevel = ((Component)val).GetComponent(); break; } } DropWeightClientRpc(playerID, grabbedObjectWeight); } [ClientRpc] public void DropWeightClientRpc(ulong playerID, float grabbedObjectWeight) { PlayerControllerB val = null; PlayerStrengthLevel playerStrengthLevel = null; PlayerControllerB[] array = Object.FindObjectsOfType(); PlayerControllerB[] array2 = array; foreach (PlayerControllerB val2 in array2) { if (val2.playerClientId == playerID) { val = val2; playerStrengthLevel = ((Component)val).GetComponent(); break; } } playerStrengthLevel.originalCarryWeight -= Mathf.Clamp(grabbedObjectWeight - 1f, 0f, 10f); switch (playerStrengthLevel.playerStrength) { case 1: val.carryWeight = playerStrengthLevel.originalCarryWeight / 1f; break; case 2: val.carryWeight = playerStrengthLevel.originalCarryWeight / 1.05f; break; case 3: val.carryWeight = playerStrengthLevel.originalCarryWeight / 1.1f; break; case 4: val.carryWeight = playerStrengthLevel.originalCarryWeight / 1.3f; break; case 5: val.carryWeight = playerStrengthLevel.originalCarryWeight / 1.5f; break; } if (val.carryWeight < 1f) { val.carryWeight = 1f; playerStrengthLevel.originalCarryWeight = 1f; } Debug.LogWarning((object)playerStrengthLevel.originalCarryWeight.ToString()); Debug.LogWarning((object)playerStrengthLevel.originalCarryWeight.ToString()); } public void UpdateDecorPriceStart(UnlockablesList unlockablesList) { ((MonoBehaviour)this).StartCoroutine(UpdateDecorPrice(unlockablesList)); } [IteratorStateMachine(typeof(d__21))] public IEnumerator UpdateDecorPrice(UnlockablesList unlockablesList) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__21(0) { <>4__this = this, unlockablesList = unlockablesList }; } [ServerRpc(RequireOwnership = false)] public void BeginTerminalServerRPC(ulong playerID) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown PlayerControllerB[] array = Object.FindObjectsOfType(); PlayerControllerB[] array2 = array; foreach (PlayerControllerB val in array2) { if (val.playerClientId == playerID) { AnimatorOverrideController controller = (AnimatorOverrideController)val.playerBodyAnimator.runtimeAnimatorController; Debug.LogWarning((object)((object)val.playerBodyAnimator.runtimeAnimatorController).ToString()); resetAnimations(controller); break; } } BeginTerminalClientRPC(playerID); } [ClientRpc] public void BeginTerminalClientRPC(ulong playerID) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown PlayerControllerB[] array = Object.FindObjectsOfType(); PlayerControllerB[] array2 = array; foreach (PlayerControllerB val in array2) { if (val.playerClientId == playerID) { AnimatorOverrideController controller = (AnimatorOverrideController)val.playerBodyAnimator.runtimeAnimatorController; resetAnimations(controller); break; } } } public static void resetAnimations(AnimatorOverrideController controller) { List> list = new List>(controller.overridesCount); controller.GetOverrides(list); for (int i = 0; i < list.Count; i++) { list[i] = new KeyValuePair(list[i].Key, null); } controller.ApplyOverrides((IList>)list); } } [HarmonyPatch] internal class LethalGymPatches { public static AnimationClip benchEnter; public static AnimationClip benchRep; public static AnimationClip term1; public static AnimationClip term2; [HarmonyPatch(typeof(Terminal), "BeginUsingTerminal")] [HarmonyPostfix] public static void ResetAnimation(Terminal __instance) { EquipmentNetworkHandler equipmentNetworkHandler = Object.FindObjectOfType(); if ((Object)(object)equipmentNetworkHandler != (Object)null) { equipmentNetworkHandler.BeginTerminalServerRPC(GameNetworkManager.Instance.localPlayerController.playerClientId); } } [HarmonyPatch(typeof(ShipBuildModeManager), "StoreShipObjectClientRpc")] [HarmonyPrefix] public static void KickPlayerOutClientRpc() { Equipment equipment = Object.FindObjectOfType(); if ((Object)(object)equipment != (Object)null) { equipment.LeaveEquipment(); equipment.StopSpecialAnimation(); } } [HarmonyPatch(typeof(ShipBuildModeManager), "StoreObjectServerRpc")] [HarmonyPrefix] public static void KickPlayerOutServerRpc() { Equipment equipment = Object.FindObjectOfType(); if ((Object)(object)equipment != (Object)null) { equipment.LeaveEquipment(); } } [HarmonyPatch(typeof(PlayerControllerB), "Start")] [HarmonyPrefix] public static void CheckLiftName() { Equipment[] array = Object.FindObjectsOfType(); Equipment[] array2 = array; foreach (Equipment equipment in array2) { if (equipment.EquipmentName == "Bench") { equipment.equipmentEnter = Equipment.benchEnter; equipment.equipmentRep = Equipment.benchRep; } else if (equipment.EquipmentName == "Squat") { equipment.equipmentEnter = Equipment.squatEnter; equipment.equipmentRep = Equipment.squatRep; } else { Debug.LogError((object)"No Name?"); } } } } [HarmonyPatch] internal class NetworkObjectManager { public static AssetBundle assetBundle; private static GameObject networkPrefab; [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager), "Start")] public static void Init() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown if (!((Object)(object)networkPrefab != (Object)null)) { networkPrefab = (GameObject)assetBundle.LoadAsset("Assets/MyAssets/EquipmentNetworkHandlerPrefab.prefab"); networkPrefab.AddComponent(); NetworkManager.Singleton.AddNetworkPrefab(networkPrefab); } } [HarmonyPostfix] [HarmonyPatch(typeof(StartOfRound), "Awake")] private static void SpawnNetworkHandler() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) if (NetworkManager.Singleton.IsHost || NetworkManager.Singleton.IsServer) { GameObject val = Object.Instantiate(networkPrefab, Vector3.zero, Quaternion.identity); val.GetComponent().Spawn(false); } } } [HarmonyPatch] internal class StrengthValuesSaveAndLoad : NetworkBehaviour { private static StrengthValuesSaveAndLoad Instance; public void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } } [HarmonyPatch(typeof(GameNetworkManager), "SaveGameValues")] [HarmonyPostfix] private static void SaveStrengthValues(GameNetworkManager __instance) { PlayerControllerB[] array = Object.FindObjectsOfType(); PlayerControllerB[] array2 = array; foreach (PlayerControllerB val in array2) { PlayerStrengthLevel component = ((Component)val).GetComponent(); if ((Object)(object)component != (Object)null) { ES3.Save("PlayerStrength" + val.playerSteamId, component.playerStrength, __instance.currentSaveFileName); ES3.Save("PlayerReps" + val.playerSteamId, component.currentRepsInLevel, __instance.currentSaveFileName); Debug.LogWarning((object)val.playerSteamId.ToString()); Debug.LogWarning((object)(component.playerStrength + " " + component.currentRepsInLevel)); } } } [HarmonyPatch(typeof(PlayerControllerB), "SendNewPlayerValuesClientRpc")] [HarmonyPostfix] private static void LoadStrengthValues(PlayerControllerB __instance) { PlayerStrengthLevel playerStrengthLevel = ((Component)__instance).gameObject.GetComponent(); if ((Object)(object)((Component)__instance).gameObject.GetComponent() == (Object)null) { playerStrengthLevel = ((Component)__instance).gameObject.AddComponent(); } if ((Object)(object)playerStrengthLevel != (Object)null) { Debug.LogWarning((object)"psl not null"); playerStrengthLevel.playerController = __instance; string currentSaveFileName = Object.FindObjectOfType().currentSaveFileName; Debug.LogWarning((object)currentSaveFileName); playerStrengthLevel.playerStrength = ES3.Load("PlayerStrength" + __instance.playerSteamId, currentSaveFileName, 1); playerStrengthLevel.currentRepsInLevel = ES3.Load("PlayerReps" + __instance.playerSteamId, currentSaveFileName, 0); Debug.LogWarning((object)__instance.playerSteamId.ToString()); Debug.LogWarning((object)(playerStrengthLevel.playerStrength + " " + playerStrengthLevel.currentRepsInLevel)); } Object.FindObjectOfType().SyncStrengthValuesServerRpc(); } } [HarmonyPatch] internal class StrengthPatches : NetworkBehaviour { [HarmonyPatch(typeof(PlayerControllerB), "GrabObjectClientRpc")] [HarmonyPostfix] private static void BeginGrab(PlayerControllerB __instance) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown PlayerStrengthLevel component = ((Component)__instance).GetComponent(); GrabbableObject val = (GrabbableObject)Traverse.Create((object)__instance).Field("currentlyGrabbingObject").GetValue(); if (component.canGrab && PlayerStrengthLevel.strongerBodyStatus) { Object.FindObjectOfType().DoubleCheckGrabFunction(component, GrabOrDrop: true); Object.FindObjectOfType().GrabWeightServerRpc(__instance.playerClientId, val.itemProperties.weight); component.canGrab = false; } } [HarmonyPatch(typeof(PlayerControllerB), "DiscardHeldObject")] [HarmonyPrefix] private static void BeginDrop(PlayerControllerB __instance, bool placeObject = false, NetworkObject parentObjectTo = null, Vector3 placePosition = default(Vector3), bool matchRotationOfParent = true) { PlayerStrengthLevel component = ((Component)__instance).GetComponent(); if (component.canDrop && PlayerStrengthLevel.strongerBodyStatus) { Object.FindObjectOfType().ChangeWeightsFunction(__instance, component); Object.FindObjectOfType().DropWeightServerRpc(__instance.playerClientId, __instance.currentlyHeldObjectServer.itemProperties.weight); component.canDrop = false; } } [HarmonyPatch(typeof(HUDManager), "Update")] [HarmonyPostfix] private static void ChangeHUDWeight(HUDManager __instance) { if (PlayerStrengthLevel.strongerBodyStatus) { PlayerStrengthLevel component = ((Component)GameNetworkManager.Instance.localPlayerController).gameObject.GetComponent(); if ((Object)(object)component == (Object)null) { Debug.LogWarning((object)"no psl?>?>"); } float num = Mathf.RoundToInt(Mathf.Clamp(component.originalCarryWeight - 1f, 0f, 100f) * 105f); ((TMP_Text)__instance.weightCounter).text = $"{num} lb"; __instance.weightCounterAnimator.SetFloat("weight", num / 130f); } } } [HarmonyPatch] internal class ConfigApply : NetworkBehaviour { public static UnlockablesList unlockablesList; [HarmonyPatch(typeof(PlayerControllerB), "Start")] [HarmonyPostfix] private static void UpdateBenchPriceController() { Object.FindObjectOfType().UpdateDecorPriceStart(unlockablesList); } } }