Please disclose if any significant portion of your mod was created 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 ChefBazaar v1.6.0
ChefBazaar.dll
Decompiled a week agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Microsoft.CodeAnalysis; using On.RoR2; using R2API; using R2API.Networking; using R2API.Networking.Interfaces; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; using RoR2.ExpansionManagement; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("ChefBazaar")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+040d4e6ebae57843f8c9a778bd0a85ce04e480cd")] [assembly: AssemblyProduct("ChefBazaar")] [assembly: AssemblyTitle("ChefBazaar")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace ChefBazaar { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("acanthi.ChefBazaar", "ChefBazaar", "1.6.0")] public class ChefBazaar : BaseUnityPlugin { [CompilerGenerated] private static class <>O { public static hook_OnInteractionBegin <0>__PickupPickerController_OnInteractionBegin; public static hook_BeginCookingServer <1>__MealPrepController_BeginCookingServer; public static Action<Stage> <2>__Stage_onStageStartGlobal; } public const string PluginGUID = "acanthi.ChefBazaar"; public const string PluginAuthor = "acanthi"; public const string PluginName = "ChefBazaar"; public const string PluginVersion = "1.6.0"; public static List<string> chefPhrases; public static List<string> chefEscapePhrases; public static ConfigEntry<float> chefChance; public static ConfigEntry<bool> spawnScrapper; public static ConfigEntry<bool> oshaCompliance; public static ConfigEntry<int> maxUsedTimes; public static ConfigEntry<bool> moonChef; public static ConfigEntry<bool> moonHooks; public static ConfigEntry<bool> classicChef; public static ConfigEntry<bool> guaranteedAfterSolusEvent; public static ConfigEntry<bool> allowedAfterSolusEvent; public static ExpansionDef expansionNeeded; public static bool isMoonFuckening = false; public static bool isChefInBazaar = false; public static Dictionary<PlayerCharacterMasterController, int> usedTimes = new Dictionary<PlayerCharacterMasterController, int>(); public void Awake() { //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Expected O, but got Unknown //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Expected O, but got Unknown Log.Init(((BaseUnityPlugin)this).Logger); InitConfig(); SpawnTools.CreateTablePrefab(); SpawnTools.CreateBridgePrefab(); NetworkingAPI.RegisterMessageType<NetMessages.RequestChefMessage>(); NetworkingAPI.RegisterMessageType<NetMessages.SpawnChefTableMessage>(); LanguageAPI.Add("CHEFBAZAAR_IAMHERE_1", "I come and I go, but today I am here."); LanguageAPI.Add("CHEFBAZAAR_IAMHERE_2", "Come, mon ami, we shall cook!"); LanguageAPI.Add("CHEFBAZAAR_IAMHERE_3", "Tired, mon ami? Surely a meal will help."); LanguageAPI.Add("CHEFBAZAAR_IAMHERE_4", "It is okay to take a break every once in a while. Come now."); LanguageAPI.Add("CHEFBAZAAR_IAMHERE_5", "Mon Chéri! How wonderful it is to see you here."); LanguageAPI.Add("CHEFBAZAAR_IAMHERE_6", "Ah ah ah, I can already smell the good times!"); LanguageAPI.Add("CHEFBAZAAR_IAMHERE_7", "I'd dispense some advice, but how about some good food instead?"); LanguageAPI.Add("CHEFBAZAAR_IAMHERE_8", "I wonder... would newt meat taste good? Don't tell him I asked that."); chefPhrases = new List<string>(8) { "CHEFBAZAAR_IAMHERE_1", "CHEFBAZAAR_IAMHERE_2", "CHEFBAZAAR_IAMHERE_3", "CHEFBAZAAR_IAMHERE_4", "CHEFBAZAAR_IAMHERE_5", "CHEFBAZAAR_IAMHERE_6", "CHEFBAZAAR_IAMHERE_7", "CHEFBAZAAR_IAMHERE_8" }; chefEscapePhrases = new List<string>(3) { "MEALPREP_DIALOGUE_MOONDETONATION_1", "MEALPREP_DIALOGUE_MOONDETONATION_2", "MEALPREP_DIALOGUE_MOONDETONATION_3" }; if (spawnScrapper.Value) { LanguageAPI.Add("CHEFBAZAAR_IAMHERE_SCRAPPER", "Please, do not use the scrapper as a garbage bin."); chefPhrases.Add("CHEFBAZAAR_IAMHERE_SCRAPPER"); } if (oshaCompliance.Value) { LanguageAPI.Add("CHEFBAZAAR_IAMHERE_OSHA", "Cross safely, mon ami! The last customer... did not."); chefPhrases.Add("CHEFBAZAAR_IAMHERE_OSHA"); } expansionNeeded = Addressables.LoadAssetAsync<ExpansionDef>((object)"RoR2/DLC3/DLC3.asset").WaitForCompletion(); object obj = <>O.<0>__PickupPickerController_OnInteractionBegin; if (obj == null) { hook_OnInteractionBegin val = Hooks.PickupPickerController_OnInteractionBegin; <>O.<0>__PickupPickerController_OnInteractionBegin = val; obj = (object)val; } PickupPickerController.OnInteractionBegin += (hook_OnInteractionBegin)obj; object obj2 = <>O.<1>__MealPrepController_BeginCookingServer; if (obj2 == null) { hook_BeginCookingServer val2 = Hooks.MealPrepController_BeginCookingServer; <>O.<1>__MealPrepController_BeginCookingServer = val2; obj2 = (object)val2; } MealPrepController.BeginCookingServer += (hook_BeginCookingServer)obj2; Stage.onStageStartGlobal += Hooks.Stage_onStageStartGlobal; } private void InitConfig() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Expected O, but got Unknown //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Expected O, but got Unknown //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Expected O, but got Unknown //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Expected O, but got Unknown //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Expected O, but got Unknown //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Expected O, but got Unknown //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Expected O, but got Unknown //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Expected O, but got Unknown //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Expected O, but got Unknown //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Expected O, but got Unknown //IL_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Expected O, but got Unknown //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Expected O, but got Unknown chefChance = ((BaseUnityPlugin)this).Config.Bind<float>("ChefBazaar", "Wandering CHEF Chance", 35f, new ConfigDescription("How likely is the Wandering CHEF to appear in the Bazaar?", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), Array.Empty<object>())); guaranteedAfterSolusEvent = ((BaseUnityPlugin)this).Config.Bind<bool>("ChefBazaar", "Guaranteed After Solus Event", false, "Guarantees Wandering CHEF spawns in the Bazaar after the Solus Event."); allowedAfterSolusEvent = ((BaseUnityPlugin)this).Config.Bind<bool>("ChefBazaar", "Only Allowed After Solus Event", false, "Only allows Wandering CHEF spawns in the Bazaar or moon after the Solus Event."); spawnScrapper = ((BaseUnityPlugin)this).Config.Bind<bool>("ChefBazaar", "Spawn Scrapper", false, "Spawn a Scrapper next to the Wandering CHEF?"); oshaCompliance = ((BaseUnityPlugin)this).Config.Bind<bool>("ChefBazaar", "OSHA Compliance", true, "Spawn a bridge next to the Wandering CHEF?"); maxUsedTimes = ((BaseUnityPlugin)this).Config.Bind<int>("ChefBazaar", "Crafting Limit", 0, "How many times can the Wandering CHEF cook for you in the Bazaar? (0 = Infinite)"); moonChef = ((BaseUnityPlugin)this).Config.Bind<bool>("Extras", "Moon CHEF", false, "Re-enables the unused Wandering CHEF on Commencement. Guaranteed."); moonHooks = ((BaseUnityPlugin)this).Config.Bind<bool>("Extras", "Moon Hooks", false, "Enable the Wandering CHEF shooing you away during moon detonation for mods that add the Wandering CHEF to the moon."); classicChef = ((BaseUnityPlugin)this).Config.Bind<bool>("Extras", "Classic Location", false, "Re-enables the pre-rework location for the Wandering CHEF! (Next to the lunar item table.)"); ModSettingsManager.SetModDescription("Chance for the Wandering CHEF to appear in the Bazaar!"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(chefChance, new StepSliderConfig { min = 0f, max = 100f, increment = 0.5f })); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(guaranteedAfterSolusEvent)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(allowedAfterSolusEvent)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(spawnScrapper)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(oshaCompliance)); ModSettingsManager.AddOption((BaseOption)new IntSliderOption(maxUsedTimes, new IntSliderConfig { min = 0, max = 100 })); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(moonChef)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(moonHooks)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(classicChef)); } } public class Hooks { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static UnityAction <>9__3_0; public static UnityAction <>9__3_1; public static UnityAction <>9__3_2; internal void <MoonHooksInit>b__3_0() { ChefBazaar.isMoonFuckening = true; } internal void <MoonHooksInit>b__3_1() { ChefBazaar.isMoonFuckening = false; } internal void <MoonHooksInit>b__3_2() { ChefBazaar.isMoonFuckening = false; } } public static void MealPrepController_BeginCookingServer(orig_BeginCookingServer orig, MealPrepController self, Interactor activator, PickupIndex[] itemsToTake, PickupIndex reward, int count) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) PlayerCharacterMasterController component = ((Component)((Component)activator).GetComponent<CharacterBody>().master).GetComponent<PlayerCharacterMasterController>(); ChefBazaar.usedTimes[component] = ChefBazaar.usedTimes.GetValueOrDefault(component) + 1; orig.Invoke(self, activator, itemsToTake, reward, count); } public static void PickupPickerController_OnInteractionBegin(orig_OnInteractionBegin orig, PickupPickerController self, Interactor activator) { //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Expected O, but got Unknown //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Expected O, but got Unknown if (!Object.op_Implicit((Object)(object)((Component)self).GetComponent<MealPrepController>())) { orig.Invoke(self, activator); return; } if (ChefBazaar.isMoonFuckening) { Chat.SendBroadcastChat((ChatMessageBase)new NpcChatMessage { formatStringToken = "MEALPREP_DIALOGUE_FORMAT", baseToken = ChefBazaar.chefEscapePhrases[Random.Range(0, ChefBazaar.chefEscapePhrases.Count)], sender = null }); return; } Scene activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name != "bazaar") { orig.Invoke(self, activator); return; } PlayerCharacterMasterController component = ((Component)((Component)activator).GetComponent<CharacterBody>().master).GetComponent<PlayerCharacterMasterController>(); if (Object.op_Implicit((Object)(object)component) && ChefBazaar.usedTimes.GetValueOrDefault(component) >= ChefBazaar.maxUsedTimes.Value && ChefBazaar.maxUsedTimes.Value > 0) { Chat.SendBroadcastChat((ChatMessageBase)new NpcChatMessage { formatStringToken = "MEALPREP_DIALOGUE_FORMAT", baseToken = ChefBazaar.chefEscapePhrases[Random.Range(0, ChefBazaar.chefEscapePhrases.Count)], sender = null }); } else { orig.Invoke(self, activator); } } public static void Stage_onStageStartGlobal(Stage stage) { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active) { Log.Warning("HERE! 1"); ChefBazaar.isChefInBazaar = false; if (!Run.instance.IsExpansionEnabled(ChefBazaar.expansionNeeded) || (!Run.instance.GetEventFlag("SolusHeartBeaten") && ChefBazaar.allowedAfterSolusEvent.Value)) { return; } Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; string text = name; if (!(text == "moon2")) { if (text == "bazaar") { SpawnChefBazaarServer(); Log.Warning("HERE! 2"); } } else { MoonHooksInit(); SpawnChefMoonServer(); } } else { Log.Debug("Client :: " + DateTime.Now.ToString() + " " + DateTime.Now.Millisecond); LocalUser firstLocalUser = LocalUserManager.GetFirstLocalUser(); NetworkUser val = ((firstLocalUser != null) ? firstLocalUser.currentNetworkUser : null); NetMessageExtensions.Send((INetMessage)(object)new NetMessages.RequestChefMessage(((NetworkBehaviour)val).netIdentity), (NetworkDestination)2); } } public static void MoonHooksInit() { //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Expected O, but got Unknown //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Expected O, but got Unknown //IL_00a7: 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: Expected O, but got Unknown if (!ChefBazaar.moonHooks.Value) { return; } EscapeSequenceController component = GameObject.Find("EscapeSequenceController").GetComponent<EscapeSequenceController>(); if (!((Object)(object)component != (Object)null)) { return; } UnityEvent onEnterMainEscapeSequence = component.onEnterMainEscapeSequence; object obj = <>c.<>9__3_0; if (obj == null) { UnityAction val = delegate { ChefBazaar.isMoonFuckening = true; }; <>c.<>9__3_0 = val; obj = (object)val; } onEnterMainEscapeSequence.AddListener((UnityAction)obj); UnityEvent onFailEscapeSequenceServer = component.onFailEscapeSequenceServer; object obj2 = <>c.<>9__3_1; if (obj2 == null) { UnityAction val2 = delegate { ChefBazaar.isMoonFuckening = false; }; <>c.<>9__3_1 = val2; obj2 = (object)val2; } onFailEscapeSequenceServer.AddListener((UnityAction)obj2); UnityEvent onCompleteEscapeSequenceServer = component.onCompleteEscapeSequenceServer; object obj3 = <>c.<>9__3_2; if (obj3 == null) { UnityAction val3 = delegate { ChefBazaar.isMoonFuckening = false; }; <>c.<>9__3_2 = val3; obj3 = (object)val3; } onCompleteEscapeSequenceServer.AddListener((UnityAction)obj3); } public static void SpawnChefBazaarServer() { //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0088: 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) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Expected O, but got Unknown //IL_01c5: Unknown result type (might be due to invalid IL or missing references) if (Random.Range(0f, 100f) >= ChefBazaar.chefChance.Value && (!Run.instance.GetEventFlag("SolusHeartBeaten") || !ChefBazaar.guaranteedAfterSolusEvent.Value)) { return; } ChefBazaar.isChefInBazaar = true; if (!ChefBazaar.classicChef.Value) { SpawnTools.SpawnChefMealPrep(new Vector3(-95.7066f, -24.9729f, 20.9845f), Quaternion.Euler(0f, 350.4501f, 0f)); if (ChefBazaar.spawnScrapper.Value) { SpawnTools.SpawnScrapper(new Vector3(-94.3094f, -25.7118f, 25.2005f), Quaternion.Euler(2.21f, 1.35f, 0f)); } if (ChefBazaar.oshaCompliance.Value) { SpawnTools.SpawnBridge(); } } else { SpawnTools.SpawnChefMealPrepOld(new Vector3(-97.3184f, -24.2f, -49.48f), Quaternion.Euler(0f, 270f, 0f)); if (ChefBazaar.spawnScrapper.Value) { SpawnTools.SpawnScrapper(new Vector3(-93.5723f, -25.8374f, -47.0965f), Quaternion.Euler(2.21f, 1.35f, 345.91f)); } } Chat.SendBroadcastChat((ChatMessageBase)new NpcChatMessage { formatStringToken = "MEALPREP_DIALOGUE_FORMAT", baseToken = ChefBazaar.chefPhrases[Random.Range(0, ChefBazaar.chefPhrases.Count)], sender = null }); ChefBazaar.usedTimes.Clear(); if (!ChefBazaar.classicChef.Value) { SpawnTools.EnableVanillaTable((Vector3?)new Vector3(-82.2492f, -47.2163f, 14.0186f)); NetMessageExtensions.Send((INetMessage)(object)new NetMessages.SpawnChefTableMessage(), (NetworkDestination)1); } } public static void SpawnChefMoonServer() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) if (ChefBazaar.moonChef.Value) { SpawnTools.SpawnChefMealPrep(new Vector3(-259.18f, -220.2f, -402.91f), Quaternion.Euler(0f, 120.9532f, 0f)); if (ChefBazaar.spawnScrapper.Value) { SpawnTools.SpawnScrapper(new Vector3(-257.9419f, -221.2121f, -407.045f), Quaternion.Euler(359.7326f, 122.0352f, 346.4449f)); } SpawnTools.EnableVanillaTable(); NetMessageExtensions.Send((INetMessage)(object)new NetMessages.SpawnChefTableMessage(), (NetworkDestination)1); } } } internal static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } internal class NetMessages { public class SpawnChefTableMessage : INetMessage, ISerializableObject { public void Deserialize(NetworkReader reader) { } public void OnReceived() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) Log.Debug("SpawnChefTableMessage Called..."); Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; string text = name; if (!(text == "moon2")) { if (text == "bazaar") { SpawnTools.EnableVanillaTable((Vector3?)new Vector3(-82.2492f, -47.2163f, 14.0186f)); } else { Log.Debug("SpawnChefTableMessage called from invalid scene? How the fuck did you let this happen."); } } else { SpawnTools.EnableVanillaTable(); } } public void Serialize(NetworkWriter writer) { } } public class RequestChefMessage : INetMessage, ISerializableObject { private NetworkIdentity playerNetID; public RequestChefMessage() { } public RequestChefMessage(NetworkIdentity netID) { playerNetID = netID; } public void Deserialize(NetworkReader reader) { playerNetID = reader.ReadNetworkIdentity(); } public void OnReceived() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) if (!ChefBazaar.isChefInBazaar) { Scene activeScene = SceneManager.GetActiveScene(); if (!(((Scene)(ref activeScene)).name == "moon2")) { return; } } NetworkConnection connectionToClient = playerNetID.connectionToClient; Log.Debug(((object)playerNetID).ToString()); if (!ChefBazaar.classicChef.Value) { NetMessageExtensions.Send((INetMessage)(object)new SpawnChefTableMessage(), connectionToClient); } } public void Serialize(NetworkWriter writer) { writer.Write(playerNetID); } } } public class SpawnTools { public static GameObject oldTablePrefab; public static GameObject bridgePrefab; public static void SpawnChefMealPrep(Vector3 location, Quaternion rotation) { //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_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC3/MealPrep/MealPrep.prefab").WaitForCompletion(); GameObject val2 = Object.Instantiate<GameObject>(val, location, rotation); NetworkServer.Spawn(val2); } public static void SpawnChefMealPrepOld(Vector3 location, Quaternion rotation) { //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_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC3/MealPrep/MealPrep.prefab").WaitForCompletion(); GameObject val2 = Object.Instantiate<GameObject>(val, location, rotation); NetworkServer.Spawn(val2); GameObject val3 = Object.Instantiate<GameObject>(oldTablePrefab); NetworkServer.Spawn(val3); } public static void SpawnBridge() { GameObject val = Object.Instantiate<GameObject>(bridgePrefab); NetworkServer.Spawn(val); } public static void SpawnScrapper(Vector3 location, Quaternion rotation) { //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_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Scrapper/Scrapper.prefab").WaitForCompletion(); GameObject val2 = Object.Instantiate<GameObject>(val, location, rotation); NetworkServer.Spawn(val2); } public static void EnableVanillaTable() { EnableVanillaTable(null); } public static void EnableVanillaTable(Vector3? newLocation) { //IL_00b9: Unknown result type (might be due to invalid IL or missing references) GameObject val = null; GameObject[] array = Object.FindObjectsByType<GameObject>((FindObjectsInactive)1, (FindObjectsSortMode)0); GameObject[] array2 = array; foreach (GameObject val2 in array2) { if (((Object)val2).name == "HOLDER: Mealprep" && !val2.activeSelf) { val = val2; break; } } if (!Object.op_Implicit((Object)(object)val) || (Object)(object)val == (Object)null) { Log.Warning("EnableVanillaTable - CHEF Platform could not be found, or already is enabled..."); return; } val.gameObject.SetActive(true); ((Component)val.transform.Find("MealPrep")).gameObject.SetActive(false); if (newLocation.HasValue) { val.gameObject.transform.position = newLocation.Value; } } public static void CreateTablePrefab() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) oldTablePrefab = PrefabAPI.CreateEmptyPrefab("tablePrefab"); oldTablePrefab.AddComponent<NetworkIdentity>(); GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/bazaar/Bazaar_LunarTable.prefab").WaitForCompletion(); GameObject val2 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/bazaar/Bazaar_HangingLight.prefab").WaitForCompletion(); GameObject val3 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/bazaar/Bazaar_CrystalLight.prefab").WaitForCompletion(); GameObject val4 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/lemuriantemple/Assets/LTWok.prefab").WaitForCompletion(); GameObject val5 = Object.Instantiate<GameObject>(val, oldTablePrefab.transform); val5.transform.localPosition = new Vector3(-97.28f, -25.3f, -48.88f); val5.transform.localRotation = Quaternion.Euler(270f, 0f, 0f); val5.transform.localScale = Vector3.one; GameObject val6 = Object.Instantiate<GameObject>(val2, oldTablePrefab.transform); val6.transform.localPosition = new Vector3(-97.3327f, -4.507f, -48.562f); val6.transform.localRotation = Quaternion.identity; GameObject val7 = Object.Instantiate<GameObject>(val3, oldTablePrefab.transform); val7.transform.localPosition = new Vector3(-95.1891f, -24.0915f, -48.829f); val7.transform.localRotation = Quaternion.Euler(270f, 0f, 0f); val7.transform.localScale = Vector3.one; GameObject val8 = Object.Instantiate<GameObject>(val4, oldTablePrefab.transform); val8.transform.localPosition = new Vector3(-99.0918f, -23.18367f, -47.74821f); val8.transform.localRotation = Quaternion.Euler(-90f, 0f, 0f); PrefabAPI.RegisterNetworkPrefab(oldTablePrefab); } public static void CreateBridgePrefab() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) bridgePrefab = PrefabAPI.CreateEmptyPrefab("bridgePrefab"); bridgePrefab.AddComponent<NetworkIdentity>(); GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/bazaar/Bazaar_WoodFlooring.prefab").WaitForCompletion(); GameObject val2 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/bazaar/Bazaar_WoodColumnFullEntryway.prefab").WaitForCompletion(); GameObject val3 = Object.Instantiate<GameObject>(val, bridgePrefab.transform); val3.transform.localPosition = new Vector3(-84.7494f, -26.1813f, 14.1624f); val3.transform.localRotation = Quaternion.Euler(356.42f, 306.6656f, 180.0001f); val3.transform.localScale = new Vector3(0.4477f, 0.2902f, 0.5077f); GameObject val4 = Object.Instantiate<GameObject>(val2, bridgePrefab.transform); val4.transform.localPosition = new Vector3(-77.2204f, -22.6085f, 16.2715f); val4.transform.localRotation = Quaternion.Euler(270f, 300.426f, 0f); val4.transform.localScale = new Vector3(0.3604f, 0.2902f, 0.5077f); for (int num = 5; num >= 1; num--) { Object.Destroy((Object)(object)((Component)val3.transform.GetChild(num)).gameObject); } PrefabAPI.RegisterNetworkPrefab(bridgePrefab); } } }