Decompiled source of MelanieMelicious Utility Furniture Pack v1.1.1

MelanieMeliciousUtilFurniture.dll

Decompiled 4 days ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using LethalLib.Modules;
using MelanieMeliciousFurniturePack0;
using MelanieMeliciousUtilFurniture.NetcodePatcher;
using Microsoft.CodeAnalysis;
using Unity.Netcode;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.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)]
[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;
		}
	}
}
public class HarmonyPatches
{
	private static int[] itemIndex = new int[2];

	private static int ornament;

	private static GameObject fireEntrance;

	private static GameObject fireWarn;

	[HarmonyPostfix]
	[HarmonyPatch(typeof(StartOfRound), "Start")]
	[HarmonyAfter(new string[] { "MelanieMelicious.2StoryShip" })]
	private static void StartPatch()
	{
		//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_010c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0111: Unknown result type (might be due to invalid IL or missing references)
		//IL_012c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0140: Unknown result type (might be due to invalid IL or missing references)
		//IL_0145: Unknown result type (might be due to invalid IL or missing references)
		//IL_0160: Unknown result type (might be due to invalid IL or missing references)
		//IL_0174: Unknown result type (might be due to invalid IL or missing references)
		//IL_0179: Unknown result type (might be due to invalid IL or missing references)
		//IL_0194: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
		try
		{
			foreach (Item items in StartOfRound.Instance.allItemsList.itemsList)
			{
				if (items.itemName == "Hive")
				{
					itemIndex = new int[2]
					{
						StartOfRound.Instance.allItemsList.itemsList.IndexOf(items),
						itemIndex[1]
					};
				}
				else if (items.itemName == "Gift")
				{
					itemIndex = new int[2]
					{
						itemIndex[0],
						StartOfRound.Instance.allItemsList.itemsList.IndexOf(items)
					};
				}
			}
		}
		catch
		{
		}
		if (MelanieUtilFurnitureConfig.roomEnable.Value)
		{
			Transform transform = GameObject.Find("ShipBoundsTrigger").transform;
			transform.localPosition += new Vector3(0f, 75f, 0f);
			Transform transform2 = GameObject.Find("ShipInnerRoomBoundsTrigger").transform;
			transform2.localPosition += new Vector3(0f, 75f, 0f);
			Transform transform3 = GameObject.Find("ShipBoundsTrigger").transform;
			transform3.localScale += new Vector3(0f, 150f, 0f);
			Transform transform4 = GameObject.Find("ShipInnerRoomBoundsTrigger").transform;
			transform4.localScale += new Vector3(0f, 150f, 0f);
		}
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(RoundManager), "LoadNewLevel")]
	private static void PreLevelPatch()
	{
		//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bd: Expected O, but got Unknown
		try
		{
			fireEntrance = GameObject.Find("EntranceTeleportShip0");
			fireWarn = GameObject.Find("EntranceTeleportWarning");
			((Behaviour)fireEntrance.GetComponent<EntranceTeleport>()).enabled = true;
			((Behaviour)fireEntrance.GetComponent<InteractTrigger>()).enabled = true;
			((Collider)fireEntrance.GetComponent<BoxCollider>()).enabled = true;
			fireEntrance.transform.parent.SetParent(GameObject.Find("Environment/Teleports").transform);
			((Collider)fireWarn.GetComponent<BoxCollider>()).enabled = false;
		}
		catch
		{
		}
		try
		{
			ornament = -7;
			foreach (Transform item in GameObject.Find("TreeXMAS0(Clone)").transform)
			{
				Transform val = item;
				ornament++;
			}
			ornament *= MelanieUtilFurnitureConfig.xmasLootChance.Value;
		}
		catch
		{
		}
	}

	[HarmonyPostfix]
	[HarmonyPatch(typeof(TimeOfDay), "OnHourChanged")]
	private static void HourPatch()
	{
		//IL_0211: Unknown result type (might be due to invalid IL or missing references)
		//IL_022a: Unknown result type (might be due to invalid IL or missing references)
		//IL_023e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0260: Unknown result type (might be due to invalid IL or missing references)
		//IL_0265: Unknown result type (might be due to invalid IL or missing references)
		//IL_0035: Unknown result type (might be due to invalid IL or missing references)
		//IL_003b: Expected O, but got Unknown
		//IL_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0114: Expected O, but got Unknown
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_007c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0152: Unknown result type (might be due to invalid IL or missing references)
		//IL_0159: Unknown result type (might be due to invalid IL or missing references)
		if (!GameNetworkManager.Instance.isHostingGame)
		{
			return;
		}
		try
		{
			foreach (Transform item in GameObject.Find("Tree0ItemSpawn").transform)
			{
				Transform val = item;
				if (Random.Range(0, 99) < MelanieUtilFurnitureConfig.treeLootChance.Value)
				{
					GameObject val2 = Object.Instantiate<GameObject>(StartOfRound.Instance.allItemsList.itemsList[itemIndex[0]].spawnPrefab, val.position, val.rotation);
					val2.GetComponent<NetworkObject>().Spawn(false);
					val2.GetComponent<GrabbableObject>().SetScrapValue(Random.Range(MelanieUtilFurnitureConfig.treeLootMin.Value, MelanieUtilFurnitureConfig.treeLootMax.Value));
				}
			}
		}
		catch
		{
		}
		try
		{
			foreach (Transform item2 in GameObject.Find("Tree1ItemSpawn").transform)
			{
				Transform val3 = item2;
				if (Random.Range(0, 99) < MelanieUtilFurnitureConfig.treeLootChance.Value)
				{
					GameObject val4 = Object.Instantiate<GameObject>(StartOfRound.Instance.allItemsList.itemsList[itemIndex[0]].spawnPrefab, val3.position, val3.rotation);
					val4.GetComponent<NetworkObject>().Spawn(false);
					val4.GetComponent<GrabbableObject>().SetScrapValue(Random.Range(MelanieUtilFurnitureConfig.treeLootMin.Value, MelanieUtilFurnitureConfig.treeLootMax.Value));
				}
			}
		}
		catch
		{
		}
		try
		{
			if (Random.Range(0, 99) < ornament)
			{
				GameObject val5 = Object.Instantiate<GameObject>(StartOfRound.Instance.allItemsList.itemsList[itemIndex[1]].spawnPrefab, GameObject.Find("TreeXMAS0Spawn").transform.position, new Quaternion(0f, 0f, 0f, 0f));
				Transform transform = val5.transform;
				transform.localPosition += new Vector3((float)Random.Range(-2, 2), 0f, Random.Range(-2f, 2f));
				val5.GetComponent<NetworkObject>().Spawn(false);
				val5.GetComponent<GrabbableObject>().SetScrapValue(Random.Range(10, 30));
			}
		}
		catch
		{
		}
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(StartOfRound), "ShipHasLeft")]
	private static void PreShipLeftPatch()
	{
		try
		{
			((Behaviour)fireEntrance.GetComponent<EntranceTeleport>()).enabled = false;
			((Behaviour)fireEntrance.GetComponent<InteractTrigger>()).enabled = false;
			((Collider)fireEntrance.GetComponent<BoxCollider>()).enabled = false;
			((Collider)fireWarn.GetComponent<BoxCollider>()).enabled = true;
		}
		catch
		{
		}
	}

	[HarmonyPostfix]
	[HarmonyPatch(typeof(GameNetworkManager), "Start")]
	private static void NetworkPatch(ref GameNetworkManager __instance)
	{
		((Component)__instance).GetComponent<NetworkManager>().AddNetworkPrefab(Plugin.unlockList.unlockables[12].prefabObject);
	}
}
internal static class MelanieUtilFurnitureConfig
{
	internal enum fireExit
	{
		Both,
		Entrance,
		Exit
	}

	internal static ConfigEntry<bool> alwaysStock;

	internal static ConfigEntry<bool> fireExit0Enable;

	internal static ConfigEntry<bool> wallEnable;

	internal static ConfigEntry<bool> xmasEnable;

	internal static ConfigEntry<bool> roomEnable;

	internal static ConfigEntry<bool> moveEnable;

	internal static ConfigEntry<bool> posterEnable;

	internal static ConfigEntry<fireExit> fireExit0Type;

	internal static ConfigEntry<int> workshop0Cost;

	internal static ConfigEntry<int> workTable0Cost;

	internal static ConfigEntry<int> cabinetWide0Cost;

	internal static ConfigEntry<int> gate0Cost;

	internal static ConfigEntry<int> door0Cost;

	internal static ConfigEntry<int> wall0Cost;

	internal static ConfigEntry<int> fireExit0Cost;

	internal static ConfigEntry<int> bedTwin0Cost;

	internal static ConfigEntry<int> treeBig0Cost;

	internal static ConfigEntry<int> benchTable0Cost;

	internal static ConfigEntry<int> fern0Cost;

	internal static ConfigEntry<int> fireplaceCost;

	internal static ConfigEntry<int> room0Cost;

	internal static ConfigEntry<int> moveCost;

	internal static ConfigEntry<int> aqua0Cost;

	internal static ConfigEntry<int> posterCost;

	internal static ConfigEntry<int> treeLootChance;

	internal static ConfigEntry<int> treeLootMin;

	internal static ConfigEntry<int> treeLootMax;

	internal static ConfigEntry<int> xmasLootChance;

	internal static void SetupConfig(ConfigFile config)
	{
		alwaysStock = config.Bind<bool>("Store Toggle", "Items Always In Stock", true, "Toggle if furniture is always in stock, or put into rotation.");
		fireExit0Enable = config.Bind<bool>("Store Toggle", "Enable Fire Exit", true, "Toggle buyable fire exit.");
		wallEnable = config.Bind<bool>("Store Toggle", "Enable Walls", true, "Toggle buyable walls.");
		xmasEnable = config.Bind<bool>("Store Toggle", "Enable XMAS Decor", true, "Toggle XMAS decor.");
		roomEnable = config.Bind<bool>("Store Toggle", "Enable Pocket Rooms", true, "Toggle doors into pocket rooms.");
		moveEnable = config.Bind<bool>("Store Toggle", "Enable Moveable Ship Parts", true, "Toggle buyable ability to move certain ship parts. Example, the charger.");
		posterEnable = config.Bind<bool>("Store Toggle", "Enable Posters", true, "Toggle moveable posters based on ship posters (affected by poster-changing mods).");
		fireExit0Type = config.Bind<fireExit>("Fire Exit", "Fire Exit Type", fireExit.Both, "Toggle fire exit mode, for normal, entrance-only, and exit-only.");
		workshop0Cost = config.Bind<int>("Prices", "Workshop 1 Cost", 100, "Modify the price for Workshop 1.");
		workTable0Cost = config.Bind<int>("Prices", "Work Table 1 Cost", 60, "Modify the price for Work Table 1.");
		cabinetWide0Cost = config.Bind<int>("Prices", "Wide Cabinet Cost", 50, "Modify the price for Wide Cabinet.");
		gate0Cost = config.Bind<int>("Prices", "Gate Costs", 50, "Modify the price for the gates.");
		door0Cost = config.Bind<int>("Prices", "Door Costs", 50, "Modify the price for the doors.");
		wall0Cost = config.Bind<int>("Prices", "Wall Costs", 35, "Modify the price for the walls.");
		fireExit0Cost = config.Bind<int>("Prices", "Fire Exit Cost", 2000, "Modify the price for the fire exit.");
		bedTwin0Cost = config.Bind<int>("Prices", "Twin Bed Cost", 150, "Modify the price for the twin bed.");
		treeBig0Cost = config.Bind<int>("Prices", "Large Tree", 250, "Modify the price for large trees.");
		benchTable0Cost = config.Bind<int>("Prices", "Bench Table", 70, "Modify the price for bench tables.");
		fern0Cost = config.Bind<int>("Prices", "Fern", 40, "Modify the price for ferns.");
		fireplaceCost = config.Bind<int>("Prices", "Fireplace", 100, "Modify the price for the fireplace.");
		room0Cost = config.Bind<int>("Prices", "Storage Room", 500, "Modify the price for the storage room.");
		moveCost = config.Bind<int>("Prices", "Move Ability", 0, "Modify the price for gaining the ability to move each ship object.");
		aqua0Cost = config.Bind<int>("Prices", "Aquarium", 100, "Modify the price for the aquarium.");
		posterCost = config.Bind<int>("Prices", "Posters", 20, "Modify the price for posters.");
		treeLootChance = config.Bind<int>("Loot", "Tree Items Chance", 2, "Modify the percent chance for beehives to fall out of buyable trees.");
		treeLootMin = config.Bind<int>("Loot", "Trees Items Minimum", 10, "Modify the minimum value of beehives from trees.");
		treeLootMax = config.Bind<int>("Loot", "Trees Items Minimum", 40, "Modify the maximum value of beehives from trees.");
		xmasLootChance = config.Bind<int>("Loot", "XMAS Tree Ornament Influence", 1, "Modify how much items placed on the tree increase the percent chance for gifts to spawn under it.");
	}
}
public class Reparent : MonoBehaviour
{
	public string objName;

	public Vector3 objPos;

	public Vector3 objRot;

	private void Awake()
	{
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		try
		{
			Transform transform = GameObject.Find(objName).transform;
			transform.SetParent(((Component)this).transform);
			transform.localPosition = objPos;
			transform.localEulerAngles = objRot;
		}
		catch
		{
			Plugin.mls.LogError((object)("Failed to reparent " + objName));
		}
	}
}
public class Retexture : MonoBehaviour
{
	public string objName;

	public short index;

	private void Start()
	{
		try
		{
			((Renderer)((Component)this).GetComponent<MeshRenderer>()).SetMaterials(new List<Material>(1) { ((Renderer)GameObject.Find(objName).GetComponent<MeshRenderer>()).materials[index] });
		}
		catch
		{
			Plugin.mls.LogError((object)("Failed to retexture " + objName));
		}
	}
}
namespace MelanieMeliciousFurniturePack0
{
	public class ParentItems : NetworkBehaviour
	{
		public Transform oldParent;

		public Transform newParent;

		public void ParentItem()
		{
			ParentItemServerRpc();
		}

		[ServerRpc(RequireOwnership = false)]
		public void ParentItemServerRpc()
		{
			//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)
			{
				if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
				{
					ServerRpcParams val = default(ServerRpcParams);
					FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(3429374815u, val, (RpcDelivery)0);
					((NetworkBehaviour)this).__endSendServerRpc(ref val2, 3429374815u, val, (RpcDelivery)0);
				}
				if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
				{
					ParentItemClientRpc();
				}
			}
		}

		[ClientRpc]
		public void ParentItemClientRpc()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Invalid comparison between Unknown and I4
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Invalid comparison between Unknown and I4
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Expected O, but got Unknown
			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(3722584432u, val, (RpcDelivery)0);
				((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3722584432u, val, (RpcDelivery)0);
			}
			if ((int)base.__rpc_exec_stage != 2 || (!networkManager.IsClient && !networkManager.IsHost))
			{
				return;
			}
			foreach (Transform item in oldParent)
			{
				Transform val3 = item;
				if (((Component)val3).gameObject.layer != 26 && ((Object)val3).name != "ObjectPlacements")
				{
					val3.parent = newParent;
				}
			}
		}

		protected override void __initializeVariables()
		{
			((NetworkBehaviour)this).__initializeVariables();
		}

		[RuntimeInitializeOnLoadMethod]
		internal static void InitializeRPCS_ParentItems()
		{
			//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
			NetworkManager.__rpc_func_table.Add(3429374815u, new RpcReceiveHandler(__rpc_handler_3429374815));
			NetworkManager.__rpc_func_table.Add(3722584432u, new RpcReceiveHandler(__rpc_handler_3722584432));
		}

		private static void __rpc_handler_3429374815(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;
				((ParentItems)(object)target).ParentItemServerRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		private static void __rpc_handler_3722584432(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)2;
				((ParentItems)(object)target).ParentItemClientRpc();
				target.__rpc_exec_stage = (__RpcExecStage)0;
			}
		}

		protected internal override string __getTypeName()
		{
			return "ParentItems";
		}
	}
	[BepInPlugin("MelanieMelicious.furniturePack0", "Melanie Melicious - Furniture Pack 1", "1.1.1")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Plugin : BaseUnityPlugin
	{
		private const string GUID = "MelanieMelicious.furniturePack0";

		private const string NAME = "Melanie Melicious - Furniture Pack 1";

		private const string VERSION = "1.1.1";

		private readonly Harmony harmony = new Harmony("MelanieMelicious.furniturePack0");

		public static ManualLogSource mls;

		public static AssetBundle bundle;

		public static Plugin instance;

		internal static UnlockablesList unlockList;

		private void Awake()
		{
			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);
					}
				}
			}
			instance = this;
			MelanieUtilFurnitureConfig.SetupConfig(((BaseUnityPlugin)this).Config);
			mls = Logger.CreateLogSource("MelanieMelicious - Utility Furniture");
			mls = ((BaseUnityPlugin)this).Logger;
			harmony.PatchAll(typeof(HarmonyPatches));
			string text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "melaniemeliciousfurniturepack0");
			bundle = AssetBundle.LoadFromFile(text);
			unlockList = bundle.LoadAsset<UnlockablesList>("Assets/MelanieFurniture/Asset/Furniture.asset");
			ushort num = 1;
			if (!MelanieUtilFurnitureConfig.alwaysStock.Value)
			{
				num = 2;
				foreach (UnlockableItem unlockable in unlockList.unlockables)
				{
					unlockable.alwaysInStock = false;
				}
			}
			NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[0].prefabObject);
			Unlockables.RegisterUnlockable(unlockList.unlockables[0], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.workshop0Cost.Value);
			NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[1].prefabObject);
			Unlockables.RegisterUnlockable(unlockList.unlockables[1], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.workTable0Cost.Value);
			NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[2].prefabObject);
			Unlockables.RegisterUnlockable(unlockList.unlockables[2], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.cabinetWide0Cost.Value);
			NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[12].prefabObject);
			Unlockables.RegisterUnlockable(unlockList.unlockables[12], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.bedTwin0Cost.Value);
			NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[13].prefabObject);
			Unlockables.RegisterUnlockable(unlockList.unlockables[13], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.treeBig0Cost.Value);
			NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[14].prefabObject);
			Unlockables.RegisterUnlockable(unlockList.unlockables[14], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.treeBig0Cost.Value);
			NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[15].prefabObject);
			Unlockables.RegisterUnlockable(unlockList.unlockables[15], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.benchTable0Cost.Value);
			NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[16].prefabObject);
			Unlockables.RegisterUnlockable(unlockList.unlockables[16], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.fern0Cost.Value);
			NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[17].prefabObject);
			Unlockables.RegisterUnlockable(unlockList.unlockables[17], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.fern0Cost.Value);
			NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[19].prefabObject);
			Unlockables.RegisterUnlockable(unlockList.unlockables[19], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.fireplaceCost.Value);
			NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[20].prefabObject);
			Unlockables.RegisterUnlockable(unlockList.unlockables[20], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.workTable0Cost.Value);
			NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[26].prefabObject);
			Unlockables.RegisterUnlockable(unlockList.unlockables[26], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.aqua0Cost.Value);
			if (MelanieUtilFurnitureConfig.fireExit0Enable.Value)
			{
				switch (MelanieUtilFurnitureConfig.fireExit0Type.Value)
				{
				case MelanieUtilFurnitureConfig.fireExit.Entrance:
					unlockList.unlockables[3].prefabObject = bundle.LoadAsset<GameObject>("Assets/MelanieFurniture/Prefab/FireExit0/Entrance/FireExit0.prefab");
					break;
				case MelanieUtilFurnitureConfig.fireExit.Exit:
					unlockList.unlockables[3].prefabObject = bundle.LoadAsset<GameObject>("Assets/MelanieFurniture/Prefab/FireExit0/Exit/FireExit0.prefab");
					break;
				}
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[3].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[3], (StoreType)1, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.fireExit0Cost.Value);
			}
			if (MelanieUtilFurnitureConfig.wallEnable.Value)
			{
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[4].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[4], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.gate0Cost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[5].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[5], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.door0Cost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[6].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[6], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.door0Cost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[7].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[7], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.door0Cost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[8].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[8], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.wall0Cost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[9].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[9], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.wall0Cost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[10].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[10], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.wall0Cost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[11].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[11], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.wall0Cost.Value);
			}
			if (MelanieUtilFurnitureConfig.xmasEnable.Value)
			{
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[18].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[18], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.treeBig0Cost.Value);
			}
			if (MelanieUtilFurnitureConfig.roomEnable.Value)
			{
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[21].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[21], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.room0Cost.Value);
			}
			if (MelanieUtilFurnitureConfig.moveEnable.Value)
			{
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[22].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[22], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.moveCost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[23].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[23], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.moveCost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[24].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[24], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.moveCost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[25].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[25], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.moveCost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[27].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[27], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.moveCost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[28].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[28], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.moveCost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[29].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[29], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.moveCost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[30].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[30], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.moveCost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[31].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[31], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.moveCost.Value);
			}
			if (MelanieUtilFurnitureConfig.posterEnable.Value)
			{
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[32].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[32], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.posterCost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[33].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[33], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.posterCost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[34].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[34], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.posterCost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[35].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[35], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.posterCost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[36].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[36], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.posterCost.Value);
				NetworkPrefabs.RegisterNetworkPrefab(unlockList.unlockables[37].prefabObject);
				Unlockables.RegisterUnlockable(unlockList.unlockables[37], (StoreType)num, (TerminalNode)null, (TerminalNode)null, (TerminalNode)null, MelanieUtilFurnitureConfig.posterCost.Value);
			}
		}
	}
}
namespace MelanieMeliciousUtilFurniture.NetcodePatcher
{
	[AttributeUsage(AttributeTargets.Module)]
	internal class NetcodePatchedAssemblyAttribute : Attribute
	{
	}
}