using System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using LethalLevelLoader; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.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; } } } internal static class MelanieInteriorConfig { internal enum items { Enable, NoPickup, Disable } internal static ConfigEntry museum; internal static ConfigEntry mausoleum; internal static ConfigEntry item0; internal static ConfigEntry item1; internal static ConfigEntry item2; internal static ConfigEntry item3; internal static ConfigEntry item4; internal static ConfigEntry item5; internal static ConfigEntry item0Min; internal static ConfigEntry item0Max; internal static ConfigEntry item2Min; internal static ConfigEntry item2Max; internal static ConfigEntry item3Min; internal static ConfigEntry item3Max; internal static ConfigEntry item4Min; internal static ConfigEntry item4Max; internal static ConfigEntry item5Min; internal static ConfigEntry item5Max; internal static ConfigEntry item0Hand; internal static ConfigEntry item1Hand; internal static ConfigEntry item2Hand; internal static ConfigEntry item3Hand; internal static ConfigEntry item4Hand; internal static ConfigEntry item5Hand; internal static void SetupConfig(ConfigFile config) { museum = config.Bind("Enabled Interiors", "Museum", true, "Do you want to enable MelanieMuseum?"); mausoleum = config.Bind("Enabled Interiors", "Mausoleum", true, "Do you want to enable MelanieMausoleum?"); item0 = config.Bind("Item Toggle", "Paintings", items.Enable, "Toggle if paintings are enabled, can be picked up, or disabled entirely."); item1 = config.Bind("Item Toggle", "Fossils", items.Enable, "Toggle if fossils are enabled, can be picked up, or disabled entirely."); item2 = config.Bind("Item Toggle", "Plushies", items.Enable, "Toggle if plushies are enabled, can be picked up, or disabled entirely."); item3 = config.Bind("Item Toggle", "Relics", items.Enable, "Toggle if puzzle relics are enabled, can be picked up, or disabled entirely."); item4 = config.Bind("Item Toggle", "Body Bags", items.Enable, "Toggle if body bags are enabled, can be picked up, or disabled entirely."); item5 = config.Bind("Item Toggle", "Small Bones", items.Enable, "Toggle if small bones (not fossils) are enabled, can be picked up, or disabled entirely."); item0Min = config.Bind("Item Values", "Painting Minimum Value", 10, "Modify minimum values of paintings."); item0Max = config.Bind("Item Values", "Painting Maximum Value", 20, "Modify maximum values of paintings."); item2Min = config.Bind("Item Values", "Plushie Minimum Value", 20, "Modify minimum values of plushie."); item2Max = config.Bind("Item Values", "Plushie Maximum Value", 30, "Modify maximum values of plushie."); item3Min = config.Bind("Item Values", "Relic Minimum Value", 35, "Modify minimum values of relics."); item3Max = config.Bind("Item Values", "Relic Maximum Value", 55, "Modify maximum values of relics."); item4Min = config.Bind("Item Values", "Body Bag Minimum Value", 10, "Modify minimum values of body bags."); item4Max = config.Bind("Item Values", "Body Bag Maximum Value", 20, "Modify maximum values of body bags."); item5Min = config.Bind("Item Values", "Small Bone Minimum Value", 5, "Modify minimum values of small bones."); item5Max = config.Bind("Item Values", "Small Bone Maximum Value", 10, "Modify maximum values of small bones."); item0Hand = config.Bind("Item Holding", "Paintings 2-Handed", true, "Modify if paintings are 2-handed."); item2Hand = config.Bind("Item Holding", "Plushies 2-Handed", false, "Modify if plushies are 2-handed."); item3Hand = config.Bind("Item Holding", "Relics 2-Handed", false, "Modify if relics are 2-handed."); item4Hand = config.Bind("Item Holding", "Body Bags 2-Handed", true, "Modify if body bags are 2-handed."); item5Hand = config.Bind("Item Holding", "Small Bones 2-Handed", false, "Modify if small bones are 2-handed."); } } namespace MelMelInteriors { [BepInPlugin("MelanieMelicious.interior0", "Melanie Melicious - Interiors", "1.2.1")] public class Plugin : BaseUnityPlugin { private const string GUID = "MelanieMelicious.interior0"; private const string NAME = "Melanie Melicious - Interiors"; private const string VERSION = "1.2.1"; internal static ExtendedMod extMod; private void Awake() { MelanieInteriorConfig.SetupConfig(((BaseUnityPlugin)this).Config); string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); AssetBundle val = AssetBundle.LoadFromFile(Path.Combine(directoryName, "melanieinteriors")); extMod = val.LoadAsset("Assets/MelanieInterior/MelanieInteriors.asset"); if (MelanieInteriorConfig.museum.Value) { AssetBundle val2 = AssetBundle.LoadFromFile(Path.Combine(directoryName, "melaniemuseum")); Item[] array = val2.LoadAsset("Assets/MelanieInterior/Asset/MelanieMuseumItems.asset").itemsList.ToArray(); extMod.ExtendedDungeonFlows.Add(val2.LoadAsset("Assets/MelanieInterior/MuseumExtendedFlow.asset")); Item((Item[])(object)new Item[4] { array[0], array[1], array[2], array[3] }, (short)MelanieInteriorConfig.item0.Value, MelanieInteriorConfig.item0Min.Value, MelanieInteriorConfig.item0Max.Value); Item((Item[])(object)new Item[8] { array[6], array[7], array[8], array[9], array[10], array[11], array[12], array[13] }, (short)MelanieInteriorConfig.item1.Value); Item((Item[])(object)new Item[1] { array[4] }, (short)MelanieInteriorConfig.item2.Value, MelanieInteriorConfig.item2Min.Value, MelanieInteriorConfig.item2Max.Value); Item((Item[])(object)new Item[1] { array[5] }, (short)MelanieInteriorConfig.item3.Value, MelanieInteriorConfig.item3Min.Value, MelanieInteriorConfig.item3Max.Value); } if (MelanieInteriorConfig.mausoleum.Value) { AssetBundle val3 = AssetBundle.LoadFromFile(Path.Combine(directoryName, "melaniemausoleum")); Item[] array2 = val3.LoadAsset("Assets/MelanieInterior/Asset/MelanieMausoleumItems.asset").itemsList.ToArray(); extMod.ExtendedDungeonFlows.Add(val3.LoadAsset("Assets/MelanieInterior/MausoleumExtendedFlow.asset")); Item((Item[])(object)new Item[1] { array2[0] }, (short)MelanieInteriorConfig.item4.Value, MelanieInteriorConfig.item4Min.Value, MelanieInteriorConfig.item4Max.Value); Item((Item[])(object)new Item[3] { array2[1], array2[2], array2[3] }, (short)MelanieInteriorConfig.item5.Value, MelanieInteriorConfig.item5Min.Value, MelanieInteriorConfig.item5Max.Value); } PatchedContent.RegisterExtendedMod(extMod); } private void Item(Item[] items, short config = 0, int min = 0, int max = -1) { //IL_0054: 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_0067: Expected O, but got Unknown //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Expected O, but got Unknown switch (config) { case 0: foreach (Item val4 in items) { if (max != -1) { val4.minValue = min; val4.maxValue = max; } extMod.ExtendedItems.Add(new ExtendedItem { Item = val4 }); } break; case 1: foreach (Item val5 in items) { val5.spawnPrefab.GetComponent().grabbable = false; } break; case 2: { ScanNodeProperties val3 = default(ScanNodeProperties); foreach (Item val in items) { val.spawnPrefab.GetComponent().grabbable = false; foreach (Transform item in val.spawnPrefab.transform) { Transform val2 = item; if (((Component)val2).TryGetComponent(ref val3)) { ((Behaviour)val3).enabled = false; } else { Object.Destroy((Object)(object)((Component)val2).gameObject); } } } break; } } } } }