Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Enhanced Enterprises inc v1.0.1
EnhancedEnterprises.dll
Decompiled 2 years agousing 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.Logging; using EnhancedEnterprises.NetcodePatcher; using GameNetcodeStuff; using HarmonyLib; using LethalLib.Modules; using Microsoft.CodeAnalysis; using MoreUpgrades.Networking; using MoreUpgrades.Utils; using TerminalApi; using TerminalApi.Classes; 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(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("EnhancedEnterprises")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Adds Upgrades to be bought via the Terminal")] [assembly: AssemblyFileVersion("1.0.1.0")] [assembly: AssemblyInformationalVersion("1.0.1+788ba98ccb45eb88f8890088edb2d4f0ea7a352a")] [assembly: AssemblyProduct("EnhancedEnterprises")] [assembly: AssemblyTitle("EnhancedEnterprises")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.1.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] internal class <Module> { static <Module>() { } } 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 MoreUpgrades { [HarmonyPatch(typeof(PlayerControllerB))] internal class PlayerControllerBPatch { private static UpgradeManager upgradeManager; public static RaycastHit hit; private static int firstEmptyItemSlot; [HarmonyPatch("BeginGrabObject")] [HarmonyPrefix] private static void BeginGrabObjectPrePatch(PlayerControllerB __instance, ref int ___interactableObjectsMask) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) Ray val = default(Ray); ((Ray)(ref val))..ctor(((Component)__instance.gameplayCamera).transform.position, ((Component)__instance.gameplayCamera).transform.forward); Physics.Raycast(val, ref hit, __instance.grabDistance, ___interactableObjectsMask); } [HarmonyPatch("BeginGrabObject")] [HarmonyPostfix] private static void BeginGrabObjectPostPatch(PlayerControllerB __instance, ref GrabbableObject ___currentlyGrabbingObject, ref int ___interactableObjectsMask) { if (!((Object)(object)__instance != (Object)(object)GameNetworkManager.Instance.localPlayerController)) { if ((Object)(object)upgradeManager == (Object)null) { upgradeManager = GameObject.Find("MoreUpgrades.Upgrademanager").GetComponent<UpgradeManager>(); } if (!((Object)(object)___currentlyGrabbingObject == (Object)null) && ((Component)((RaycastHit)(ref hit)).collider).gameObject.layer != 8 && ((Component)((RaycastHit)(ref hit)).collider).gameObject.tag == "PhysicsProp" && ___currentlyGrabbingObject.grabbable && firstEmptyItemSlot != -1) { float num = Mathf.Clamp(___currentlyGrabbingObject.itemProperties.weight - 1f, 0f, 10f) * ((float)upgradeManager.postman.Upgradelevel / 10f); float num2 = Mathf.Clamp(___currentlyGrabbingObject.itemProperties.weight - 1f, 0f, 10f); upgradeManager.postman.UpdateWeightOffset(___currentlyGrabbingObject.itemProperties.weight, reduce: false); upgradeManager.postman.ReduceWeight(___currentlyGrabbingObject.itemProperties.weight); } } } [HarmonyPatch("SetObjectAsNoLongerHeld")] [HarmonyPostfix] private static void SetObjectAsNoLongerHeldPatch(PlayerControllerB __instance) { if (!((Object)(object)__instance != (Object)(object)GameNetworkManager.Instance.localPlayerController)) { GrabbableObject currentlyHeldObjectServer = __instance.currentlyHeldObjectServer; float num = Mathf.Clamp(currentlyHeldObjectServer.itemProperties.weight - 1f, 0f, 10f) * ((float)upgradeManager.postman.Upgradelevel / 10f); float num2 = Mathf.Clamp(currentlyHeldObjectServer.itemProperties.weight - 1f, 0f, 10f); upgradeManager.postman.UpdateWeightOffset(currentlyHeldObjectServer.itemProperties.weight, reduce: true); upgradeManager.postman.AddWeigth(currentlyHeldObjectServer.itemProperties.weight); } } [HarmonyPatch("FirstEmptyItemSlot")] [HarmonyPostfix] private static void FirstEmptyItemSlotPatch(ref int __result) { firstEmptyItemSlot = __result; } } [BepInPlugin("EnhancedEnterprises", "EnhancedEnterprises", "1.0.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { private AssetBundle Assets; private List<Item> shopItems = new List<Item>(); private Logger logger = new Logger("Plugin"); private void Awake() { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown LoadModAssets(); if ((Object)(object)Assets == (Object)null) { logger.LogError("Failed to load custom assets. Skipping plugin..."); return; } NetcodePatcher(); Harmony val = new Harmony("EnhancedEnterprises"); val.PatchAll(); logger.LogInfo("Plugin EnhancedEnterprises is loaded!"); } private void LoadModAssets() { try { logger.LogInfo("Loading Mod Assets..."); string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); if (File.Exists(Path.Combine(directoryName, "modassets"))) { Assets = NetworkAssets.LoadAsset(); } } catch (Exception ex) { logger.LogError("Error in Mod Asset loading: " + ex.Message); } } private void LoadShopItems() { logger.LogInfo("Loading Shop Items..."); Item item = Assets.LoadAsset<Item>("assets/items/energydrink/energydrink.asset"); shopItems.Add(item); } private void RegisterItemsToShop() { logger.LogInfo("Registering Items to Shop..."); foreach (Item shopItem in shopItems) { if ((Object)(object)shopItem == (Object)null) { logger.LogInfo("item is null"); } Items.RegisterShopItem(shopItem, shopItem.creditsWorth); logger.LogInfo($"Loaded item: {((Object)shopItem).name} worth: {shopItem.creditsWorth}!"); } } private static void NetcodePatcher() { 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); } } } } } [HarmonyPatch(typeof(RoundManager))] internal class RoundManagerPatch { private static UpgradeManager upgradeManager; [HarmonyPatch("SpawnScrapInLevel")] [HarmonyPrefix] private static void SpawnScrapInLevelPatch(RoundManager __instance) { if ((Object)(object)upgradeManager == (Object)null) { upgradeManager = GameObject.Find("MoreUpgrades.Upgrademanager").GetComponent<UpgradeManager>(); } __instance.scrapValueMultiplier = upgradeManager.scrapPurifier.UpdateValue(); __instance.scrapAmountMultiplier = upgradeManager.scrapMagnet.UpdateValue(); } [HarmonyPatch("DespawnPropsAtEndOfRound")] [HarmonyPostfix] private static void DespawnPropsAtEndOfRoundPatch(RoundManager __instance) { if (GameNetworkManager.Instance.isHostingGame) { new SaveController().SaveToFile(); } } } public class SaveController { private Logger logger = new Logger("SaveController"); private UpgradeManager upgradeManager; private SaveFile saveFile; private string GetSaveFile() { string currentSaveFileName = GameNetworkManager.Instance.currentSaveFileName; return Path.Combine(GetSaveDir(), currentSaveFileName + ".json"); } private string GetSaveDir() { string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); return Path.Combine(directoryName, "Saves"); } private void CreateSaveFile() { if (!Directory.Exists(GetSaveDir())) { Directory.CreateDirectory(GetSaveDir()); } if (!File.Exists(GetSaveFile())) { File.Create(GetSaveFile()).Dispose(); } } public void SaveToFile() { if ((Object)(object)upgradeManager == (Object)null) { upgradeManager = GameObject.Find("MoreUpgrades.Upgrademanager").GetComponent<UpgradeManager>(); } logger.LogInfo("Saving to file: " + GetSaveFile()); CreateSaveFile(); PrepareSaveFile(); StreamWriter streamWriter = new StreamWriter(GetSaveFile()); streamWriter.Write(saveFile.ToJson()); streamWriter.Close(); } private void PrepareSaveFile() { saveFile = new SaveFile(upgradeManager.postman.Upgradelevel, upgradeManager.biggerPockets.Upgradelevel, upgradeManager.scrapPurifier.Upgradelevel, upgradeManager.scrapMagnet.Upgradelevel, upgradeManager.weatherCleaner.Upgradelevel); } public void LoadFromSave() { if ((Object)(object)upgradeManager == (Object)null) { upgradeManager = GameObject.Find("MoreUpgrades.Upgrademanager").GetComponent<UpgradeManager>(); } logger.LogInfo("Loading Save from file"); if (!File.Exists(GetSaveFile())) { logger.LogWarning("No save file found. Setting Upgrade Levels to 0..."); upgradeManager.postman.ResetValues(); upgradeManager.biggerPockets.ResetValues(); upgradeManager.scrapPurifier.ResetValues(); upgradeManager.scrapMagnet.ResetValues(); upgradeManager.weatherCleaner.ResetValues(); } else { StreamReader streamReader = new StreamReader(GetSaveFile()); string text = streamReader.ReadLine(); streamReader.Close(); saveFile = new SaveFile(); JsonUtility.FromJsonOverwrite(text, (object)saveFile); upgradeManager.postman.LevelUpTo(saveFile.postmanLevel); upgradeManager.biggerPockets.LevelUpTo(saveFile.biggerPocketsLevel); upgradeManager.scrapPurifier.LevelUpTo(saveFile.scrapPurifierLevel); upgradeManager.scrapMagnet.LevelUpTo(saveFile.scrapMagnetLevel); upgradeManager.weatherCleaner.LevelUpTo(saveFile.weatherCleanerLevel); logger.LogInfo("Loading Save ile Complete!"); } } } public class SaveFile : MonoBehaviour { public int postmanLevel; public int biggerPocketsLevel; public int scrapPurifierLevel; public int scrapMagnetLevel; public int weatherCleanerLevel; public SaveFile() { } public SaveFile(int postmanLevel, int biggerPocketsLevel, int scrapPurifierLevel, int scrapMagnetLevel, int weatherCleanerLevel) { this.postmanLevel = postmanLevel; this.biggerPocketsLevel = biggerPocketsLevel; this.scrapPurifierLevel = scrapPurifierLevel; this.scrapMagnetLevel = scrapMagnetLevel; this.weatherCleanerLevel = weatherCleanerLevel; } public string ToJson() { return JsonUtility.ToJson((object)this); } } [HarmonyPatch(typeof(DeleteFileButton))] internal class DeleteFileButtonPatch { private static Logger logger = new Logger("DeleteFileButtonPatch"); [HarmonyPatch("DeleteFile")] [HarmonyPostfix] private static void DeleteFilePatch(DeleteFileButton __instance) { if (__instance.fileToDelete >= 0 && __instance.fileToDelete <= 2) { string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Saves", $"LCSaveFile{__instance.fileToDelete + 1}.json"); logger.LogInfo($"Deleting savefile: {__instance.fileToDelete + 1}"); if (File.Exists(path)) { File.Delete(path); } } } } [HarmonyPatch(typeof(StartOfRound))] internal class StartOfRoundPatch { private static UpgradeManager upgradeManager; [HarmonyPatch("Start")] [HarmonyPostfix] private static void StartPatch(StartOfRound __instance) { CreateUpgrademanager(); if ((Object)(object)upgradeManager == (Object)null) { upgradeManager = GameObject.Find("MoreUpgrades.Upgrademanager").GetComponent<UpgradeManager>(); } upgradeManager.weatherCleaner.StartOfRound = __instance; } private static void CreateUpgrademanager() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown GameObject val = Object.Instantiate<GameObject>(new GameObject()); val.AddComponent<UpgradeManager>(); ((Object)val).name = "MoreUpgrades.Upgrademanager"; } } [HarmonyPatch(typeof(Terminal))] internal class TerminalPatch { private static readonly Logger logger = new Logger("TerminalPatch"); [SerializeField] public static UpgradeManager upgradeManager; private static Terminal terminal; private static bool firstBoot = true; [HarmonyPatch("Start")] [HarmonyPostfix] private static void StartPatch(Terminal __instance) { terminal = __instance; upgradeManager = GameObject.Find("MoreUpgrades.Upgrademanager").GetComponent<UpgradeManager>(); if (firstBoot) { upgradeManager.CreateUpgrades(); AddShopCommand(); AddUpgradeCommands(); AddInfoCommands(); } } private static void AddShopCommand() { //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_0017: 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_0050: Expected O, but got Unknown TerminalApi.AddCommand("Enhanced", new CommandInfo { Category = "other", Description = "Displays upgrades from the Enhanced Enterprises Inc. Company Shop.", DisplayTextSupplier = delegate { upgradeManager = GameObject.Find("MoreUpgrades.Upgrademanager").GetComponent<UpgradeManager>(); return MoreUpgradesStore(upgradeManager.upgrades); } }, (string)null, true); } private static void AddUpgradeCommands() { //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) //IL_0065: Expected O, but got Unknown foreach (Upgrade upgrade2 in upgradeManager.upgrades) { TerminalApi.AddCommand(upgrade2.Name, new CommandInfo { Category = "hidden", DisplayTextSupplier = delegate { upgradeManager = GameObject.Find("MoreUpgrades.Upgrademanager").GetComponent<UpgradeManager>(); Upgrade upgrade = null; foreach (Upgrade upgrade3 in upgradeManager.upgrades) { if (upgrade3.Name.ToLower().IndexOf(TerminalApi.GetTerminalInput().ToLower()) == 0) { upgrade = upgrade3; } } if (upgrade == null) { return "Failed to level up '" + TerminalApi.GetTerminalInput() + "'.\nTry to input the full upgrade name.\n\n"; } if (upgrade.Upgradelevel < upgrade.UpgradelevelCap) { if (!CheckForEnoughCredits(upgrade.Price)) { return "You don't have enought credits to buy this upgrade\n\n"; } string text = ""; text = ((!upgrade.OnetimeUse) ? $"{upgrade.Name} has been upgraded to LVL {upgrade.Upgradelevel + 1}\n\n" : (upgrade.Name + " has been purchased successfully\n\n")); upgrade.ClientLevelUp(((NetworkBehaviour)terminal).IsHost); return text; } return upgrade.OnetimeUse ? (upgrade.Name + " has already been purchased\n\n") : $"{upgrade.Name} is already at max LVL {upgrade.UpgradelevelCap}\n\n"; } }, "buy", true); } } private static void AddInfoCommands() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Expected O, but got Unknown foreach (Upgrade upgrade2 in upgradeManager.upgrades) { TerminalApi.AddCommand("info " + upgrade2.Name, new CommandInfo { Category = "hidden", DisplayTextSupplier = delegate { upgradeManager = GameObject.Find("MoreUpgrades.Upgrademanager").GetComponent<UpgradeManager>(); Upgrade upgrade = null; foreach (Upgrade upgrade3 in upgradeManager.upgrades) { if (upgrade3.Name.ToLower() == TerminalApi.GetTerminalInput().ToLower()) { upgrade = upgrade3; } } return (upgrade == null) ? ("Failed to find info about '" + TerminalApi.GetTerminalInput() + "'.\nTry to input the full upgrade name.\n\n") : ("\nINFO: " + upgrade.Name + "\n----------------------------\n" + upgrade.Description + "\n\n"); } }, (string)null, true); } } private static bool CheckForEnoughCredits(int price) { if (terminal.groupCredits >= price) { Terminal obj = terminal; SetGroupCredits(obj.groupCredits -= price); return true; } return false; } private static void SetGroupCredits(int newAmount) { terminal.groupCredits = newAmount; if (((NetworkBehaviour)terminal).IsClient) { terminal.BuyItemsServerRpc(new int[0], newAmount, terminal.numberOfItemsInDropship); } else { terminal.SyncGroupCreditsServerRpc(newAmount, terminal.numberOfItemsInDropship); } } private static string MoreUpgradesStore(List<Upgrade> upgrades) { string text = "Welcome to the Enhanced Enterprises Inc. Store!\nBuy an upgrade or find out more about it using INFO.\n----------------------------\n"; foreach (Upgrade upgrade in upgrades) { text = text + "\n* " + upgrade.Name; if (upgrade.Upgradelevel < upgrade.UpgradelevelCap) { text += $" // Price: ${upgrade.Price}"; } if (upgrade.Upgradelevel > 0 && upgrade.Upgradelevel < upgrade.UpgradelevelCap) { text += $" // LVL {upgrade.Upgradelevel}"; } else if (upgrade.Upgradelevel >= upgrade.UpgradelevelCap) { text += $" // Max LVL {upgrade.Upgradelevel}"; } } return text + "\n\n"; } } internal class UpgradeManager : MonoBehaviour { private Logger logger = new Logger("UpgradeManager"); private PlayerControllerB player; private bool playerWasInsideFactory = false; public Postman postman = new Postman(); public BiggerPockets biggerPockets = new BiggerPockets(); public ScrapPurifier scrapPurifier = new ScrapPurifier(); public ScrapMagnet scrapMagnet = new ScrapMagnet(); public WeatherCleaner weatherCleaner = new WeatherCleaner(); public List<Upgrade> upgrades = new List<Upgrade>(); private bool syncLevelsDone = false; private void Start() { if ((Object)(object)player == (Object)null) { player = GameNetworkManager.Instance.localPlayerController; } } public void CreateUpgrades() { upgrades.Add(postman); upgrades.Add(scrapPurifier); upgrades.Add(scrapMagnet); upgrades.Add(weatherCleaner); } public void SetupUpgrades() { if (GameNetworkManager.Instance.isHostingGame) { new SaveController().LoadFromSave(); } foreach (Upgrade upgrade in upgrades) { upgrade.Setup(); } } public void SyncUpgradeLevelsWithHost(int[] level) { if (!syncLevelsDone) { logger.LogInfo("Trying to sync upgrade Leves with Host..."); for (int i = 0; i < upgrades.Count; i++) { upgrades[i].ResetValues(); upgrades[i].LevelUpTo(level[i]); } syncLevelsDone = true; } } private void Update() { if ((Object)(object)player == (Object)null) { if ((Object)(object)GameNetworkManager.Instance.localPlayerController != (Object)null) { player = GameNetworkManager.Instance?.localPlayerController; } if (!((Object)(object)player != (Object)null)) { return; } logger.LogInfo("Setting up upgrades..."); SetupUpgrades(); GameObject val = GameObject.Find("MoreUpgrades.NetworkHandler"); if ((Object)(object)val == (Object)null) { val = GameObject.Find("MoreUpgrades.NetworkHandler(Clone)"); if ((Object)(object)val == (Object)null) { logger.LogInfo("No NetworkHandler found"); return; } } MoreUpgradesNetworkHandler component = val.GetComponent<MoreUpgradesNetworkHandler>(); component.SyncUpgradesServerRpc(); } else if (player.isInsideFactory != playerWasInsideFactory) { playerWasInsideFactory = player.isInsideFactory; postman.UpdateSpeed(); postman.ToggleWeight(player.isInsideFactory); } } } internal abstract class Upgrade { private int price = 0; private string name = "UpgradeName"; private string description = "UpgradeDescription"; private int upgradelevel = 0; private int upgradelevelCap = 10; private bool onetimeUse = false; private bool debug = true; private readonly Logger logger = new Logger("Upgrade"); private MoreUpgradesNetworkHandler networkHandler; public int Price { get { return price; } set { price = value; } } public string Name { get { return name; } set { name = value; } } public string Description { get { return description; } set { description = value; } } public int Upgradelevel { get { return upgradelevel; } set { upgradelevel = value; } } public int UpgradelevelCap { get { return upgradelevelCap; } set { upgradelevelCap = value; } } public bool OnetimeUse { get { return onetimeUse; } set { onetimeUse = value; } } public bool Debug => debug; public Logger Logger => logger; public MoreUpgradesNetworkHandler NetworkHandler { get { return networkHandler; } set { networkHandler = value; } } public virtual void Setup() { MoreUpgradesNetworkHandler.UpgradeEvent += RpcLevelUp; } public void CheckForNetworkHandler() { if (!((Object)(object)networkHandler != (Object)null)) { GameObject val = GameObject.Find("MoreUpgrades.NetworkHandler"); if ((Object)(object)val == (Object)null) { val = GameObject.Find("MoreUpgrades.NetworkHandler(Clone)"); } networkHandler = val.GetComponent<MoreUpgradesNetworkHandler>(); } } public void RpcLevelUp(string eventName) { if (!(eventName != GetUpgradeName())) { Logger.LogInfo("RpcLevelUp: " + GetUpgradeName()); LevelUp(); } } public void ClientLevelUp(bool isHost) { CheckForNetworkHandler(); Logger.LogInfo($"ClientLevelUp: {GetUpgradeName()}, Level: {Upgradelevel + 1}"); if (!isHost) { NetworkHandler.UpgradeLevelUpServerRpc(GetUpgradeName()); } else { NetworkHandler.UpgradeLevelUpClientRpc(GetUpgradeName()); } } public virtual string GetUpgradeName() { return GetType().Name.ToString(); } public abstract void LevelUp(); public void LevelUpTo(int level) { for (int i = Upgradelevel; i < level; i++) { LevelUp(); } } public virtual void ResetValues() { upgradelevel = 0; networkHandler = null; } } internal class Postman : Upgrade { private bool speedUpgradeApplyed = false; private PlayerControllerB player; private float speedOffset = 0f; private float speedOffsetTotal = 0f; private float weightOffset = 0f; private float vanillaWeight = 0f; public Postman() { base.Price = 500; base.Name = "Postman"; base.Description = "This is a suit attachment created by The Company to allow you to move more quickly and carry more weight. For some currently unknown reason, this device is deactivated while inside of a building. The Company promised to repair it, once you finished work."; base.UpgradelevelCap = 5; } public override void Setup() { CheckForPlayer(); CheckForNetworkHandler(); base.Setup(); } public override void ResetValues() { base.ResetValues(); speedUpgradeApplyed = false; player = null; speedOffset = 0f; speedOffsetTotal = 0f; weightOffset = 0f; vanillaWeight = 0f; } public override string GetUpgradeName() { return GetType().Name.ToString(); } private void CheckForPlayer() { if (!((Object)(object)player != (Object)null)) { player = GameNetworkManager.Instance.localPlayerController; } } public void UpdateSpeed(bool updateTotal = true) { if (base.Upgradelevel > 0) { CheckForPlayer(); float num = ((!updateTotal) ? speedOffset : speedOffsetTotal); if (player.isInsideFactory && speedUpgradeApplyed) { PlayerControllerB obj = player; obj.movementSpeed -= num; speedUpgradeApplyed = false; } if (!player.isInsideFactory && !speedUpgradeApplyed) { PlayerControllerB obj2 = player; obj2.movementSpeed += num; speedUpgradeApplyed = true; } if (base.Debug) { base.Logger.LogDebug("----UpdateSpeed() called----"); base.Logger.LogDebug($"player found?: {(Object)(object)player != (Object)null}"); base.Logger.LogDebug($"player.isInsideFactory: {player.isInsideFactory}"); base.Logger.LogDebug($"player.movementSpeed: {player.movementSpeed}"); base.Logger.LogDebug($"currentSpeedOffset: {num}"); base.Logger.LogDebug("----UpdateSpeed() called----"); } } } public void ReduceWeight(float objectWeight) { if (base.Upgradelevel > 0) { CheckForPlayer(); vanillaWeight += objectWeight; objectWeight = Mathf.Round(objectWeight * 100f) / 100f; float num = 0f; if (!player.isInsideFactory) { num = (float)base.Upgradelevel / 10f; } float num2 = Mathf.Clamp(objectWeight - 1f, 0f, 10f) * num; PlayerControllerB obj = player; obj.carryWeight -= num2; if (base.Debug) { base.Logger.LogDebug("----ReduceWeight() called----"); base.Logger.LogDebug($"objectWeight: {objectWeight}"); base.Logger.LogDebug($"Upgradelevel: {base.Upgradelevel}"); base.Logger.LogDebug($"player found?: {(Object)(object)player != (Object)null}"); base.Logger.LogDebug($"player.isInsideFactory: {player.isInsideFactory}"); base.Logger.LogDebug($"player.carryWeight: {player.carryWeight}"); base.Logger.LogDebug("----ReduceWeight() called----"); } } } public void AddWeigth(float objectWeight) { if (base.Upgradelevel > 0) { CheckForPlayer(); vanillaWeight -= objectWeight; objectWeight = Mathf.Round(objectWeight * 100f) / 100f; float num = 0f; if (!player.isInsideFactory) { num = (float)base.Upgradelevel / 10f; } float num2 = Mathf.Clamp(objectWeight - 1f, 0f, 10f) * num; PlayerControllerB obj = player; obj.carryWeight += num2; if (base.Debug) { base.Logger.LogDebug("----AddWeigth() called----"); base.Logger.LogDebug($"objectWeight: {objectWeight}"); base.Logger.LogDebug($"Upgradelevel: {base.Upgradelevel}"); base.Logger.LogDebug($"player found?: {(Object)(object)player != (Object)null}"); base.Logger.LogDebug($"player.isInsideFactory: {player.isInsideFactory}"); base.Logger.LogDebug($"player.carryWeight: {player.carryWeight}"); base.Logger.LogDebug("----AddWeigth() called----"); } } } public void ToggleWeight(bool isInsideFactory) { if (base.Upgradelevel > 0) { CheckForPlayer(); if (isInsideFactory) { PlayerControllerB obj = player; obj.carryWeight += weightOffset; } else { PlayerControllerB obj2 = player; obj2.carryWeight -= weightOffset; } if (base.Debug) { base.Logger.LogDebug("----ToggleWeight() called----"); base.Logger.LogDebug($"new player.carryWeight: {player.carryWeight}"); base.Logger.LogDebug($"weightOffset: {weightOffset}"); base.Logger.LogDebug("----ToggleWeight() called----"); } } } public void UpdateWeightOffset(float vanillaWeightChange, bool reduce) { vanillaWeightChange -= 1f; float num = Mathf.Clamp(vanillaWeightChange, 0f, 10f) * ((float)(10 - base.Upgradelevel) / 10f); if (reduce) { weightOffset -= vanillaWeightChange - num; } else { weightOffset += vanillaWeightChange - num; } if (base.Debug) { base.Logger.LogDebug("----UpdateWeightOffset() called----"); base.Logger.LogDebug($"upgradeWeightChange: {num}"); base.Logger.LogDebug($"weightOffset: {weightOffset}"); base.Logger.LogDebug("----UpdateWeightOffset() called----"); } } private void SetWeightOffset(float totalWeight) { totalWeight = Mathf.Round(totalWeight * 100f) / 100f - 1f; totalWeight = Mathf.Clamp(totalWeight, 0f, 10f); float num = (float)base.Upgradelevel / 10f; weightOffset = totalWeight * num; if (base.Debug) { base.Logger.LogDebug("----SetWeightOffset() called----"); base.Logger.LogDebug($"totalWeight: {totalWeight}"); base.Logger.LogDebug($"weightOffset: {weightOffset}"); base.Logger.LogDebug("----SetWeightOffset() called----"); } } private void SetPlayerWeight(float weight) { player.carryWeight = weight; if (base.Debug) { base.Logger.LogDebug("----SetPlayerWeight() called----"); base.Logger.LogDebug($"weight: {weight}"); base.Logger.LogDebug($"player.carryWeight: {player.carryWeight}"); base.Logger.LogDebug("----SetPlayerWeight() called----"); } } public override void LevelUp() { if (base.Debug) { base.Logger.LogDebug("----LevelUp() called----"); base.Logger.LogDebug($"Upgradelevel: {base.Upgradelevel}"); base.Logger.LogDebug("----LevelUp() called----"); } base.Upgradelevel++; speedOffset = (float)base.Upgradelevel * 0.35f; speedOffsetTotal += speedOffset; speedUpgradeApplyed = false; base.Price += (int)MathF.Round((float)base.Price * 0.15f); base.Price -= base.Price % 5; UpdateSpeed(updateTotal: false); SetPlayerWeight(vanillaWeight); SetWeightOffset(vanillaWeight); if (player.isInsideFactory) { SetPlayerWeight((vanillaWeight >= 1f) ? vanillaWeight : 1f); } else { SetPlayerWeight(((vanillaWeight >= 1f) ? vanillaWeight : 1f) - weightOffset); } } } internal class BiggerPockets : Upgrade { public BiggerPockets() { base.Price = 750; base.Name = "Bigger Pockets"; base.Description = "A type of suit that was created long ago to carry around more items. It's a little dusty, but it could come in handy when roaming around the moons collecting scrap."; base.UpgradelevelCap = 2; } public override void Setup() { base.Setup(); } public override string GetUpgradeName() { return GetType().Name.ToString(); } public override void LevelUp() { base.Upgradelevel++; base.Price += (int)MathF.Round((float)base.Price * 0.25f); base.Price -= base.Price % 5; } } internal class ScrapPurifier : Upgrade { public ScrapPurifier() { base.Price = 900; base.Name = "Glove of Midas"; base.Description = "A misterious glove from an distant moon that makes scrap more valueable."; base.UpgradelevelCap = 2; } public override void Setup() { base.Setup(); } public override string GetUpgradeName() { return GetType().Name.ToString(); } public float UpdateValue() { return 1f + (float)base.Upgradelevel * 0.5f; } public override void LevelUp() { base.Upgradelevel++; base.Price += (int)MathF.Round((float)base.Price * 0.25f); base.Price -= base.Price % 5; } } internal class ScrapMagnet : Upgrade { public ScrapMagnet() { base.Price = 1200; base.Name = "Flux Radar"; base.Description = "A improved radar which is able to detect more scrap inside the building."; base.UpgradelevelCap = 2; } public override void Setup() { base.Setup(); } public override string GetUpgradeName() { return GetType().Name.ToString(); } public float UpdateValue() { return 1f + (float)base.Upgradelevel * 0.3f; } public override void LevelUp() { base.Upgradelevel++; base.Price += (int)MathF.Round((float)base.Price * 0.25f); base.Price -= base.Price % 5; } } internal class WeatherCleaner : Upgrade { private StartOfRound startOfRound; public StartOfRound StartOfRound { get { return startOfRound; } set { startOfRound = value; } } public WeatherCleaner() { base.Price = 400; base.Name = "Weather Cleaner"; base.Description = "There is some sort of device installed on this ship that can alter the weather on moons across the galaxy, but of course it requires a premium subscription to work.\nBeware, it was reported to malfunction on rare occasions, changing the weather to something worse than it was before before."; base.UpgradelevelCap = 1; base.OnetimeUse = true; } public override void Setup() { base.Setup(); } public override string GetUpgradeName() { return GetType().Name.ToString(); } public void ClearWeather() { //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) if (base.Debug) { base.Logger.LogDebug($"startOfRound there yet?: {(Object)(object)startOfRound != (Object)null}"); } base.Logger.LogInfo("Clearing weather..."); if (Random.Range(0f, 1f) > 0.02f) { for (int i = 0; i < startOfRound.levels.Length; i++) { startOfRound.levels[i].currentWeather = (LevelWeatherType)(-1); } base.Logger.LogInfo("Cleared weather!"); return; } base.Logger.LogInfo("Failed to clear weather, rerolling..."); List<int> list = new List<int> { 0, 6, 11, 21, 46, 56, 71 }; for (int j = 0; j < startOfRound.levels.Length; j++) { int num = Random.Range(0, 100); for (int k = 0; k < list.Count; k++) { if (num <= list[k]) { startOfRound.levels[j].currentWeather = (LevelWeatherType)(k - 1); break; } } } base.Logger.LogInfo("Done rerolling weather!"); } public override void LevelUp() { base.Upgradelevel++; ClearWeather(); } } public static class PluginInfo { public const string PLUGIN_GUID = "EnhancedEnterprises"; public const string PLUGIN_NAME = "EnhancedEnterprises"; public const string PLUGIN_VERSION = "1.0.1"; } } namespace MoreUpgrades.Networking { public class NetworkAssets { private static AssetBundle assets; public static AssetBundle LoadAsset() { if ((Object)(object)assets != (Object)null) { return assets; } string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); assets = AssetBundle.LoadFromFile(Path.Combine(directoryName, "modassets")); return assets; } } public class MoreUpgradesNetworkHandler : NetworkBehaviour { private static readonly Logger logger = new Logger("NetworkHandler"); public static MoreUpgradesNetworkHandler Instance { get; private set; } public static event Action<string> UpgradeEvent; public override void OnNetworkSpawn() { MoreUpgradesNetworkHandler.UpgradeEvent = null; try { if ((NetworkManager.Singleton.IsHost || NetworkManager.Singleton.IsServer) && (Object)(object)Instance != (Object)null) { MoreUpgradesNetworkHandler instance = Instance; if (instance != null) { ((Component)instance).gameObject.GetComponent<NetworkObject>().Despawn(true); } } Instance = this; } catch (Exception ex) { logger.LogError("Error in OnNetworkSpawn:\n" + ex.Message); } ((NetworkBehaviour)this).OnNetworkSpawn(); } [ClientRpc] public void UpgradeLevelUpClientRpc(string eventName) { //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_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)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(905127050u, val, (RpcDelivery)0); bool flag = eventName != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe(eventName, false); } ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 905127050u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost)) { logger.LogInfo("Client Netowrk event called: " + eventName); MoreUpgradesNetworkHandler.UpgradeEvent?.Invoke(eventName); } } [ServerRpc(RequireOwnership = false)] public void UpgradeLevelUpServerRpc(string eventName) { //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_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)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1395280519u, val, (RpcDelivery)0); bool flag = eventName != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe(eventName, false); } ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1395280519u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { logger.LogInfo("Server Netowrk event called: " + eventName); UpgradeLevelUpClientRpc(eventName); } } [ClientRpc] public void GetUpgradeLevelsClientRpc(int[] level) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: 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_00c7: 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_00b2: 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)base.__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(6451751u, val, (RpcDelivery)0); bool flag = level != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe<int>(level, default(ForPrimitives)); } ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 6451751u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } logger.LogInfo("Getting Upgrade Levels..."); if (!((NetworkBehaviour)this).IsHost) { logger.LogInfo("Isn't host"); GameObject val3 = GameObject.Find("MoreUpgrades.Upgrademanager"); if (!((Object)(object)val3 == (Object)null)) { UpgradeManager component = val3.GetComponent<UpgradeManager>(); logger.LogInfo("Syncing upgrade Levels..."); component.SyncUpgradeLevelsWithHost(level); } } } [ServerRpc(RequireOwnership = false)] public void SyncUpgradesServerRpc() { //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) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2147696769u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2147696769u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsServer && !networkManager.IsHost)) { return; } logger.LogInfo("Syncing Upgrades..."); if (!((NetworkBehaviour)this).IsHost) { return; } logger.LogInfo("Is host"); GameObject val3 = GameObject.Find("MoreUpgrades.Upgrademanager"); if ((Object)(object)val3 == (Object)null) { return; } UpgradeManager component = val3.GetComponent<UpgradeManager>(); List<int> list = new List<int>(); foreach (Upgrade upgrade in component.upgrades) { list.Add(upgrade.Upgradelevel); } GetUpgradeLevelsClientRpc(list.ToArray()); } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } [RuntimeInitializeOnLoadMethod] internal static void InitializeRPCS_MoreUpgradesNetworkHandler() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Expected O, but got Unknown //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected O, but got Unknown NetworkManager.__rpc_func_table.Add(905127050u, new RpcReceiveHandler(__rpc_handler_905127050)); NetworkManager.__rpc_func_table.Add(1395280519u, new RpcReceiveHandler(__rpc_handler_1395280519)); NetworkManager.__rpc_func_table.Add(6451751u, new RpcReceiveHandler(__rpc_handler_6451751)); NetworkManager.__rpc_func_table.Add(2147696769u, new RpcReceiveHandler(__rpc_handler_2147696769)); } private static void __rpc_handler_905127050(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 eventName = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe(ref eventName, false); } target.__rpc_exec_stage = (__RpcExecStage)2; ((MoreUpgradesNetworkHandler)(object)target).UpgradeLevelUpClientRpc(eventName); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1395280519(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 eventName = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe(ref eventName, false); } target.__rpc_exec_stage = (__RpcExecStage)1; ((MoreUpgradesNetworkHandler)(object)target).UpgradeLevelUpServerRpc(eventName); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_6451751(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_006e: 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_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives)); int[] level = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe<int>(ref level, default(ForPrimitives)); } target.__rpc_exec_stage = (__RpcExecStage)2; ((MoreUpgradesNetworkHandler)(object)target).GetUpgradeLevelsClientRpc(level); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2147696769(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; ((MoreUpgradesNetworkHandler)(object)target).SyncUpgradesServerRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "MoreUpgradesNetworkHandler"; } } [HarmonyPatch] public class NetworkObjectManager { private static AssetBundle Assets; private static GameObject networkPrefab; [HarmonyPostfix] [HarmonyPatch(typeof(GameNetworkManager))] [HarmonyPatch("Start")] public static void StartPatch() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown Assets = NetworkAssets.LoadAsset(); if (!((Object)(object)networkPrefab != (Object)null)) { networkPrefab = (GameObject)Assets.LoadAsset("NetworkHandler"); networkPrefab.AddComponent<MoreUpgradesNetworkHandler>(); ((Object)networkPrefab).name = "MoreUpgrades.NetworkHandler"; NetworkManager.Singleton.AddNetworkPrefab(networkPrefab); } } [HarmonyPostfix] [HarmonyPatch(typeof(StartOfRound))] [HarmonyPatch("Awake")] private static void AwakePatch() { //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<GameObject>(networkPrefab, Vector3.zero, Quaternion.identity); val.GetComponent<NetworkObject>().Spawn(false); ((Object)val).name = "MoreUpgrades.NetworkHandler"; } } } } namespace MoreUpgrades.Utils { public class Logger { private readonly ManualLogSource logSource; private string moduleName; public Logger(string moduleName) { logSource = Logger.CreateLogSource("EnhancedEnterprises"); this.moduleName = moduleName; } public void LogDebug(string message) { logSource.LogDebug((object)("[" + moduleName + "]: " + message)); } public void LogInfo(string message) { logSource.LogInfo((object)("[" + moduleName + "]: " + message)); } public void LogWarning(string message) { logSource.LogWarning((object)("[" + moduleName + "]: " + message)); } public void LogError(string message) { logSource.LogError((object)("[" + moduleName + "]: " + message)); } } } namespace EnhancedEnterprises.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }