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 MoonforgedBuildPieces v1.0.6
MoonforgedBuildPieces.dll
Decompiled a week agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using UnityEngine; using UnityEngine.Rendering; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("MoonforgedBuildPieces")] [assembly: AssemblyDescription("A Valheim mod that adds Moonforged build pieces, windows, rugs, lamps, banners, furniture, and decorations.")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Caenos")] [assembly: AssemblyProduct("Moonforged Build Pieces")] [assembly: AssemblyCopyright("")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("3f3d2ee9-8f3b-4bc3-a808-4e3e768e8f8c")] [assembly: AssemblyFileVersion("1.0.6")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.6.0")] namespace Moonforged.BuildPieces; public class LampColorSwitcher : MonoBehaviour, Interactable, Hoverable { private int index = 0; private const int OFF_INDEX = -1; private Light[] lights; private Renderer[] allRenderers; private Renderer[] bulbRenderers; private LightFlicker[] flickers; private LightLod[] lods; private ParticleSystem[] particles; private ZNetView znv; private readonly Color[] colors = (Color[])(object)new Color[4] { new Color(1f, 0.82f, 0.28f), new Color(0.22f, 0.85f, 0.32f), new Color(0.28f, 0.48f, 0.95f), new Color(0.95f, 0.3f, 0.7f) }; private readonly string[] names = new string[4] { "Yellow", "Green", "Blue", "Dvergr Pink" }; private const string ZDO_KEY = "LampColorIndex"; private const string ZDO_INIT = "initialized"; private void Awake() { lights = ((Component)this).GetComponentsInChildren<Light>(true); allRenderers = ((Component)this).GetComponentsInChildren<Renderer>(true); bulbRenderers = Array.FindAll(allRenderers, delegate(Renderer r) { Material[] sharedMaterials = r.sharedMaterials; foreach (Material val2 in sharedMaterials) { if ((Object)(object)val2 != (Object)null && ((Object)val2).name.StartsWith("M_Bulb")) { return true; } } return false; }); flickers = ((Component)this).GetComponentsInChildren<LightFlicker>(true); lods = ((Component)this).GetComponentsInChildren<LightLod>(true); particles = ((Component)this).GetComponentsInChildren<ParticleSystem>(true); Collider componentInChildren = ((Component)this).GetComponentInChildren<Collider>(); if ((Object)(object)componentInChildren == (Object)null) { CapsuleCollider val = ((Component)this).gameObject.AddComponent<CapsuleCollider>(); ((Collider)val).isTrigger = true; val.radius = 0.25f; val.height = 1.2f; } znv = ((Component)this).GetComponent<ZNetView>(); if (!Object.op_Implicit((Object)(object)znv)) { return; } znv.Register<int>("SetLampState", (Action<long, int>)RPC_SetLampState); ZDO zDO = znv.GetZDO(); if (zDO != null) { if (znv.IsOwner() && !zDO.GetBool("initialized", false)) { index = Random.Range(0, colors.Length); zDO.Set("LampColorIndex", index); zDO.Set("initialized", true); } index = NormalizeIndex(zDO.GetInt("LampColorIndex", index)); ApplyState(); } } public bool Interact(Humanoid user, bool hold, bool alt) { if (hold) { return false; } if (!Object.op_Implicit((Object)(object)znv) || !znv.IsOwner()) { return false; } ZDO zDO = znv.GetZDO(); if (zDO == null) { return false; } if (index == -1) { index = 0; zDO.Set("LampColorIndex", index); znv.InvokeRPC(ZNetView.Everybody, "SetLampState", new object[1] { index }); return true; } if (index < colors.Length - 1) { index++; } else { index = -1; } zDO.Set("LampColorIndex", index); znv.InvokeRPC(ZNetView.Everybody, "SetLampState", new object[1] { index }); return true; } public bool Interact(Humanoid user, bool hold) { return Interact(user, hold, alt: false); } public bool UseItem(Humanoid user, ItemData item) { return false; } private void RPC_SetLampState(long sender, int newState) { index = NormalizeIndex(newState); ApplyState(); } private int NormalizeIndex(int value) { if (value == -1) { return -1; } if (value < 0 || value >= colors.Length) { return 0; } return value; } private void ApplyState() { //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_0306: Unknown result type (might be due to invalid IL or missing references) //IL_030c: 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) index = NormalizeIndex(index); if (index == -1) { Light[] array = lights; foreach (Light val in array) { if (Object.op_Implicit((Object)(object)val)) { ((Behaviour)val).enabled = false; } } LightFlicker[] array2 = flickers; foreach (LightFlicker val2 in array2) { if (Object.op_Implicit((Object)(object)val2)) { ((Behaviour)val2).enabled = false; } } LightLod[] array3 = lods; foreach (LightLod val3 in array3) { if (Object.op_Implicit((Object)(object)val3)) { ((Behaviour)val3).enabled = false; } } ParticleSystem[] array4 = particles; foreach (ParticleSystem val4 in array4) { if (Object.op_Implicit((Object)(object)val4)) { val4.Stop(true); ((Component)val4).gameObject.SetActive(false); } } Renderer[] array5 = bulbRenderers; foreach (Renderer val5 in array5) { Material[] materials = val5.materials; foreach (Material val6 in materials) { if (val6.HasProperty("_EmissionColor")) { val6.DisableKeyword("_EMISSION"); val6.SetColor("_EmissionColor", Color.black); } } } return; } Color val7 = colors[index]; Light[] array6 = lights; foreach (Light val8 in array6) { if (Object.op_Implicit((Object)(object)val8)) { ((Behaviour)val8).enabled = true; val8.color = val7; } } LightFlicker[] array7 = flickers; foreach (LightFlicker val9 in array7) { if (Object.op_Implicit((Object)(object)val9)) { ((Behaviour)val9).enabled = true; } } LightLod[] array8 = lods; foreach (LightLod val10 in array8) { if (Object.op_Implicit((Object)(object)val10)) { ((Behaviour)val10).enabled = true; } } ParticleSystem[] array9 = particles; foreach (ParticleSystem val11 in array9) { if (Object.op_Implicit((Object)(object)val11)) { ((Component)val11).gameObject.SetActive(true); val11.Play(); } } Renderer[] array10 = bulbRenderers; foreach (Renderer val12 in array10) { Material[] materials2 = val12.materials; foreach (Material val13 in materials2) { if (val13.HasProperty("_EmissionColor")) { val13.EnableKeyword("_EMISSION"); val13.SetColor("_EmissionColor", val7 * 3f); } } } } public string GetHoverText() { index = NormalizeIndex(index); if (index == -1) { return "[E] Turn On"; } return "[E] Change color (" + names[index] + ")"; } public string GetHoverName() { return "Lamp"; } } [BepInPlugin("Moonforged.BuildPieces", "Moonforged Build Pieces", "1.0.6")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class MoonforgedBuildPieces : BaseUnityPlugin { [CompilerGenerated] private sealed class <DelayedRegister>d__8 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public AssetBundle bundle; public MoonforgedBuildPieces <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <DelayedRegister>d__8(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; break; case 1: <>1__state = -1; break; } if ((Object)(object)ZNetScene.instance == (Object)null) { <>2__current = null; <>1__state = 1; return true; } RelicRegistrar.RegisterAllRelics(bundle); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public const string PluginGUID = "Moonforged.BuildPieces"; public const string PluginName = "Moonforged Build Pieces"; public const string PluginVersion = "1.0.6"; private AssetBundle relicsBundle; private void Awake() { //IL_0075: Unknown result type (might be due to invalid IL or missing references) RelicConfigManager.Init("Moonforged.BuildPieces", ((BaseUnityPlugin)this).Config); string platformBundleResourcePath = GetPlatformBundleResourcePath(); relicsBundle = EmbeddedAssetBundleLoader.LoadBundle(platformBundleResourcePath); if ((Object)(object)relicsBundle == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)("Failed to load embedded AssetBundle: " + platformBundleResourcePath)); return; } RelicRegistrar.InitConfig(((BaseUnityPlugin)this).Config); foreach (string allCategory in RelicRegistrar.GetAllCategories()) { PieceManager.Instance.AddPieceCategory(allCategory); } PrefabManager.OnPrefabsRegistered += OnPrefabsRegistered; } private static string GetPlatformBundleResourcePath() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Invalid comparison between Unknown and I4 RuntimePlatform platform = Application.platform; RuntimePlatform val = platform; if ((int)val <= 1) { return "Moonforged.BuildPieces.mbp_mac"; } return "Moonforged.BuildPieces.mbp_windows"; } private void OnDestroy() { PrefabManager.OnPrefabsRegistered -= OnPrefabsRegistered; } private void OnPrefabsRegistered() { ((MonoBehaviour)this).StartCoroutine(DelayedRegister(relicsBundle)); } [IteratorStateMachine(typeof(<DelayedRegister>d__8))] private IEnumerator DelayedRegister(AssetBundle bundle) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <DelayedRegister>d__8(0) { <>4__this = this, bundle = bundle }; } } public static class EmbeddedAssetBundleLoader { public static AssetBundle LoadBundle(string resourcePath) { Assembly executingAssembly = Assembly.GetExecutingAssembly(); using Stream stream = executingAssembly.GetManifestResourceStream(resourcePath); if (stream == null) { Debug.LogError((object)("AssetBundle resource not found: " + resourcePath)); return null; } using MemoryStream memoryStream = new MemoryStream(); stream.CopyTo(memoryStream); return AssetBundle.LoadFromMemory(memoryStream.ToArray()); } } public static class RelicConfigManager { public static void Init(string modName, ConfigFile config) { } public static ConfigEntry<T> AddEntry<T>(ConfigFile cfg, string section, string key, T defaultValue, string description) { return cfg.Bind<T>(section, key, defaultValue, description); } } public class RelicRegistration { public string PrefabName; public string DisplayName; public RequirementConfig[] Requirements; public string Description; public string Category; public int Comfort; public RelicRegistration(string prefab, string display, RequirementConfig[] reqs, string desc, string cat, int comfort = 0) { PrefabName = prefab; DisplayName = display; Requirements = reqs; Description = desc; Category = cat; Comfort = comfort; } } public static class RelicRegistrar { private static bool wasAlreadyRegistered = false; private static ConfigEntry<string> FurnitureCategoryConfig; private static ConfigEntry<string> BuildingCategoryConfig; private static ConfigEntry<string> ClutterCategoryConfig; private static ConfigEntry<string> StatuesCategoryConfig; public static readonly List<RelicRegistration> AllRegistrations = new List<RelicRegistration> { new RelicRegistration("M_FineWood_Throne", "Moonforged FineWood Throne", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 20, 0, true) }, "A custom decorative piece.", "furniture", 2), new RelicRegistration("M_Werewolf_Throne", "Moonforged Werewolf Throne", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("WolfPelt", 5, 0, true), new RequirementConfig("TrophyFenring", 3, 0, true), new RequirementConfig("Iron", 5, 0, true) }, "A custom decorative piece.", "furniture", 2), new RelicRegistration("M_Wolf_Throne", "Moonforged Geirrhafa`s Throne", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("FineWood", 5, 0, true), new RequirementConfig("WolfPelt", 5, 0, true), new RequirementConfig("Silver", 5, 0, true), new RequirementConfig("TrophyCultist_Hildir", 1, 0, true) }, "A custom decorative piece.", "furniture", 2), new RelicRegistration("M_Iron_Throne", "Moonforged Iron Throne", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Iron", 10, 0, true), new RequirementConfig("Bronze", 10, 0, true) }, "A custom decorative piece.", "furniture", 2), new RelicRegistration("M_PersianRug_1", "Persian Rug I", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("JuteRed", 4, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_PersianRug_2", "Persian Rug II", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("JuteBlue", 2, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_PersianRug_3", "Persian Rug III", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("JuteRed", 2, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_PersianRug_4", "Regal Persian Rug", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("JuteRed", 2, 0, true), new RequirementConfig("JuteBlue", 4, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_Jute_Stairs_Rug", "Jute Stair Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("JuteRed", 4, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_Jute_Stairs_Rug_Blue", "Blue Jute Stair Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("JuteBlue", 2, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_Jute_Stairs_Rug_Blue_Runed", "Runed Blue Jute Stair Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("JuteBlue", 2, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_Jute_Stairs_Rug_Small", "Small Jute Stair Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("JuteRed", 2, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_Jute_Stairs_Runed", "Runed Jute Stair Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("JuteRed", 4, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_Stairs_Rug_Wool", "Wool Stair Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("DeerHide", 4, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_Stairs_Rug_Green_Runed", "Runed Green Stair Rug", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("JuteRed", 4, 0, true), new RequirementConfig("Ooze", 1, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_Stairs_Rug_Green", "Green Stair Rug", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("JuteRed", 4, 0, true), new RequirementConfig("Ooze", 1, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_BlueRug", "Blue Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("JuteBlue", 4, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_Red_2m_semiround_rug", "Red Semiround Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("JuteRed", 4, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_2m_semiround_rug", "Brown Semiround Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("DeerHide", 4, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_Jute_Round_Red_Rug", "Round Red Jute Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("JuteRed", 4, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_TrollRoundRug", "Troll Hide Round Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("TrollHide", 5, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_TrollHideRug", "Troll Hide Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("TrollHide", 10, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_TrollSemiRoundRug", "Troll Hide Semi Round Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("TrollHide", 2, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_TrollSemiRoundRugRuned", "Troll Hide Runed Semi Round Rug", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("TrollHide", 2, 0, true), new RequirementConfig("GreydwarfEye", 2, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_TrollPeltRug", "Troll Pelt Rug", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("TrollHide", 10, 0, true), new RequirementConfig("TrophyForestTroll", 1, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_Jute_Red_Simple_Rug", "Simple Red Jute Rug", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("JuteRed", 2, 0, true) }, "A custom decorative piece.", "furniture"), new RelicRegistration("M_AsianTeaSetPlate", "Tea Plate", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 1, 0, true), new RequirementConfig("FineWood", 1, 0, true) }, "A custom decorative piece.", "clutter"), new RelicRegistration("M_bigplate", "Large Porcelain Plate", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 5, 0, true), new RequirementConfig("Resin", 2, 0, true) }, "A custom decorative piece.", "clutter"), new RelicRegistration("M_cup1", "Porcelain Tea Cup", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 5, 0, true), new RequirementConfig("Resin", 2, 0, true) }, "A custom decorative piece.", "clutter"), new RelicRegistration("M_justplate1", "Large Porcelain Plate II", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 5, 0, true), new RequirementConfig("Resin", 2, 0, true) }, "A custom decorative piece.", "clutter"), new RelicRegistration("M_justcup1", "Porcelain Tea Cup II", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 5, 0, true), new RequirementConfig("Resin", 2, 0, true) }, "A custom decorative piece.", "clutter"), new RelicRegistration("M_teapot", "Porcelain Teapot", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 5, 0, true), new RequirementConfig("Resin", 2, 0, true) }, "A custom decorative piece.", "clutter"), new RelicRegistration("M_AsianTeaPot", "Asian Teapot", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 5, 0, true), new RequirementConfig("Resin", 2, 0, true) }, "A custom decorative piece.", "clutter"), new RelicRegistration("M_AsianTeaCup", "Asian Tea Cup", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 5, 0, true), new RequirementConfig("Resin", 2, 0, true) }, "A custom decorative piece.", "clutter"), new RelicRegistration("M_AsianTeaPotLid", "Teapot Lid", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 5, 0, true), new RequirementConfig("Resin", 2, 0, true) }, "A custom decorative piece.", "clutter"), new RelicRegistration("M_ChineseVase", "Chinese Vase", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Crystal", 5, 0, true), new RequirementConfig("Resin", 2, 0, true) }, "A custom decorative piece.", "clutter"), new RelicRegistration("M_ChineseTeaSet", "Chinese Tea Set", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 5, 0, true), new RequirementConfig("Resin", 2, 0, true) }, "A custom decorative piece.", "clutter"), new RelicRegistration("M_Classic_Lamp", "Classic Street Lamp", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Resin", 4, 0, true) }, "", "building"), new RelicRegistration("M_Japanese_Lamp", "Japanese Street Lamp", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Resin", 4, 0, true) }, "", "building"), new RelicRegistration("M_Classic_Iron_Bench", "Classic Iron Bench", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true) }, "Dvergr Forged Classic Iron Bench.", "furniture"), new RelicRegistration("M_Classic_Double_Lamp", "Classic Double Lamp", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Resin", 4, 0, true) }, "Dvergr Forged Classic Iron 2x Lamp.", "building"), new RelicRegistration("M_Classic_Double_Lamp_2", "Classic Double Lamp II", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Resin", 4, 0, true) }, "Dvergr Forged Classic Iron 2x Lamp.", "building"), new RelicRegistration("M_classic_bin", "Classic Garden Bin", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true) }, "Dvergr Forged Classic Iron Bin.", "furniture"), new RelicRegistration("M_Classic_Single_Lamp", "Classic Single Lamp", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Resin", 4, 0, true) }, "Dvergr Forged Classic Iron 1x Lamp.", "building"), new RelicRegistration("M_Chinese_Lamp", "Chinese Lamp", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Resin", 4, 0, true) }, "", "building"), new RelicRegistration("M_classic_quad_light", "Classic Quad Lamp", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Resin", 4, 0, true) }, "Dvergr Forged Classic Iron 4x Lamp.", "building"), new RelicRegistration("M_Classic_Wall_Lamp", "Classic Wall Lamp", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Resin", 4, 0, true) }, "Dvergr Forged Classic Iron Wall Lamp.", "building"), new RelicRegistration("M_Classic_Wall_Lamp_2", "Classic Wall Lamp II", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Resin", 4, 0, true) }, "Dvergr Forged Classic Iron Wall Lamp.", "building"), new RelicRegistration("M_Pirate_Ship_Cannon", "Pirate Cannon", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 10, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Resin", 4, 0, true) }, "", "building"), new RelicRegistration("M_Pirate_Ship_Cannon_Balls", "Cannonballs", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 10, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Resin", 4, 0, true) }, "", "building"), new RelicRegistration("M_M1857_12Pounder_Cannon_Cannonballs", "12-Pounder Cannonballs", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 10, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Resin", 4, 0, true) }, "", "building"), new RelicRegistration("M_M1857_12Pounder_Cannon", "12-Pounder Cannon", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 10, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Resin", 4, 0, true) }, "", "building"), new RelicRegistration("M_Round_Moonforged_Window_1", "Moonforged Round Window I", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_Dome_Frame", "Moonforged Dome Frame", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("Iron", 2, 0, true) }, "", "building"), new RelicRegistration("M_Dome_Silent_Night", "Window Dome Silent Night", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_Dome_Moonforged_Window_1", "Moonforged Dome Window I", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_Dome2x2", "1/4 of a Dome Glas piece 2x2", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_Dome2x2x2", "1/4 of a Dome Glas piece 2x2x2", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_BrownBearMozaic", "Bear Mosaic Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_GreenCloverMozaic", "Clover Mosaic Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_CrowMozaic", "Crow Mosaic Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_RoundMozaic", "Round Mosaic Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_ChurchMozaic", "Church Rose Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_WorldTreeMozaic", "World Tree Mosaic Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_OdinMozaic", "Odin Mosaic Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_ArchedWindowMozaic", "Valkyrie Mosaic Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_ArchedWindowGreen", "Green Arched Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_ArchedWindowPurple", "Purple Arched Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_ArchedWindowPurpleM", "Purple Mosaic Arched Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_ArchedWindowRedM", "Red Mosaic Arched Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_ArchedWindowRed", "Red Arched Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_ArchedWindowBat", "Bat Arched Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_ElfMozaic", "Elf Stained Glass Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_WolfMozaic", "Wolf Stained Glass Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_ArchedWindowC", "Arched Stained Glass Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_Window_1", "H-Pattern Window I", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_Window_2", "H-Pattern Window II", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_Window_3", "H-Pattern Window III", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_Window_2x1", "2×1 Window", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Stone", 4, 0, true) }, "", "building"), new RelicRegistration("M_Window_2x2", "2×2 Window", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Stone", 4, 0, true) }, "", "building"), new RelicRegistration("M_Window2x2", "Sunflower 2×2 Window", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_WoodFrame_Rose_Window", "Rosewood Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_Taker2x3", "Underworld 2×3 Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_MageMozaic", "Mage Stained Glass Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_Mage_Round_Window_Mozaic", "Mage Round Stained Glass Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_Round_Church_Window", "Round Church Window", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 2, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Crystal", 4, 0, true) }, "", "building"), new RelicRegistration("M_ArchedWindow_Swamp_2x2", "Arched Window Swamp 2x2", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 1, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Stone", 4, 0, true) }, "", "building"), new RelicRegistration("M_ArchedWindow_SwampWraith_2x2", "Arched Window Wraith from Swamp 2x2", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 1, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Stone", 4, 0, true) }, "", "building"), new RelicRegistration("M_ArchedWindow_SwampWraith_2x3", "Arched Window Wraith from Swamp 2x3", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 1, 0, true), new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Stone", 4, 0, true) }, "", "building"), new RelicRegistration("M_Trellis", "Moonforged Trellis", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Raspberry", 4, 0, true) }, "", "building"), new RelicRegistration("M_Eikthyr_Banner", "Moonforged Eikthyr Banner", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Wood", 10, 0, true), new RequirementConfig("Raspberry", 4, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true) }, "", "building"), new RelicRegistration("M_TheElder_Banner", "Moonforged Elder Banner", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("RoundLog", 5, 0, true), new RequirementConfig("Blueberries", 4, 0, true), new RequirementConfig("TrollHide", 5, 0, true) }, "", "building"), new RelicRegistration("M_Bonemass_Banner", "Moonforged Bonemass Banner", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("ElderBark", 10, 0, true), new RequirementConfig("Guck", 4, 0, true), new RequirementConfig("DeerHide", 5, 0, true) }, "", "building"), new RelicRegistration("M_Moder_Banner", "Moonforged Moder Banner", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("FineWood", 10, 0, true), new RequirementConfig("FreezeGland", 4, 0, true), new RequirementConfig("WolfPelt", 5, 0, true) }, "", "building"), new RelicRegistration("M_Yagluth_Banner", "Moonforged Yagluth Banner", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("FineWood", 10, 0, true), new RequirementConfig("Cloudberry", 4, 0, true), new RequirementConfig("LoxPelt", 5, 0, true) }, "", "building"), new RelicRegistration("M_TheQueen_Banner", "Moonforged Queen Banner", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("YggdrasilWood", 5, 0, true), new RequirementConfig("MushroomMagecap", 4, 0, true), new RequirementConfig("ScaleHide", 5, 0, true) }, "", "building"), new RelicRegistration("M_Fader_Banner", "Moonforged Fader Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Blackwood", 10, 0, true), new RequirementConfig("CharredBone", 4, 0, true), new RequirementConfig("Fiddleheadfern", 5, 0, true), new RequirementConfig("AskHide", 5, 0, true) }, "", "building"), new RelicRegistration("M_Haldor_Banner", "Moonforged Haldor Banner", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Wood", 4, 0, true), new RequirementConfig("Raspberry", 4, 0, true), new RequirementConfig("DeerHide", 4, 0, true) }, "", "building"), new RelicRegistration("M_Hildir_Banner", "Moonforged Hildir Banner", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("FineWood", 4, 0, true), new RequirementConfig("Cloudberry", 4, 0, true), new RequirementConfig("LoxPelt", 4, 0, true) }, "", "building"), new RelicRegistration("M_BogWitch_Banner", "Moonforged Bog Witch Banner", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("ElderBark", 4, 0, true), new RequirementConfig("MushroomYellow", 4, 0, true), new RequirementConfig("TrophyDraugr", 4, 0, true) }, "", "building"), new RelicRegistration("M_Brennan_Banner", "Moonforged Brenna Banner", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("RoundLog", 4, 0, true), new RequirementConfig("TrophySkeleton", 4, 0, true), new RequirementConfig("TrollHide", 4, 0, true) }, "", "building"), new RelicRegistration("M_Geirrhafa_Banner", "Moonforged Geirrhafa Banner", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("FineWood", 4, 0, true), new RequirementConfig("WolfFang", 4, 0, true), new RequirementConfig("TrophyHatchling", 2, 0, true) }, "", "building"), new RelicRegistration("M_ZilThungr_Banner", "Moonforged Zil & Thungr Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("FineWood", 4, 0, true), new RequirementConfig("TrophyGoblin", 1, 0, true), new RequirementConfig("TrophyGoblinBrute", 1, 0, true), new RequirementConfig("LoxPelt", 5, 0, true) }, "", "building"), new RelicRegistration("M_Window_Arch05m", "Window Wood Arch 0.5m", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("Wood", 1, 0, true) }, "", "building"), new RelicRegistration("M_Window_Arch1m", "Window Wood Arch 1m", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("Wood", 1, 0, true) }, "", "building"), new RelicRegistration("M_Window_Archround2m", "Window Wood Arch round 2m", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("Wood", 1, 0, true) }, "", "building"), new RelicRegistration("M_Window_Arch05m_Stone", "Window Stone Arch 0.5m", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("Wood", 1, 0, true) }, "", "building"), new RelicRegistration("M_Window_Arch1m_Stone", "Window Stone Arch 1m", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("Wood", 1, 0, true) }, "", "building"), new RelicRegistration("M_Window_Archround2m_Stone", "Window Stone Arch round 2m", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("Wood", 1, 0, true) }, "", "building") }; public static void InitConfig(ConfigFile cfg) { FurnitureCategoryConfig = RelicConfigManager.AddEntry(cfg, "Categories", "FurnitureCategory", "Moonforged Build Pieces", "Hammer tab name for all Moonforged furniture pieces."); BuildingCategoryConfig = RelicConfigManager.AddEntry(cfg, "Categories", "BuildingCategory", "Moonforged Build Pieces", "Hammer tab name for all Moonforged building pieces."); ClutterCategoryConfig = RelicConfigManager.AddEntry(cfg, "Categories", "ClutterCategory", "Moonforged Build Pieces", "Hammer tab name for all Moonforged clutter pieces."); StatuesCategoryConfig = RelicConfigManager.AddEntry(cfg, "Categories", "StatuesCategory", "Moonforged Build Pieces", "Hammer tab name for all Moonforged statue pieces."); } public static IEnumerable<string> GetAllCategories() { return AllRegistrations.Select((RelicRegistration r) => CategoryToTab(r.Category)).Distinct(); } private static string CategoryToTab(string category) { string text = category.ToLower(); if (1 == 0) { } string result = text switch { "statue" => (StatuesCategoryConfig != null) ? StatuesCategoryConfig.Value : "Moonforged Statues", "clutter" => (ClutterCategoryConfig != null) ? ClutterCategoryConfig.Value : "Moonforged Clutter", "building" => (BuildingCategoryConfig != null) ? BuildingCategoryConfig.Value : "Moonforged Building", "furniture" => (FurnitureCategoryConfig != null) ? FurnitureCategoryConfig.Value : "Moonforged Furniture", _ => category, }; if (1 == 0) { } return result; } public static void RegisterAllRelics(AssetBundle bundle) { if (wasAlreadyRegistered) { return; } foreach (RelicRegistration allRegistration in AllRegistrations) { RegisterRelic(bundle, allRegistration); } wasAlreadyRegistered = true; } private static void RegisterRelic(AssetBundle bundle, RelicRegistration reg) { //IL_0409: Unknown result type (might be due to invalid IL or missing references) //IL_0410: Expected O, but got Unknown //IL_0426: Unknown result type (might be due to invalid IL or missing references) //IL_042b: Unknown result type (might be due to invalid IL or missing references) //IL_0437: Expected O, but got Unknown //IL_0448: Unknown result type (might be due to invalid IL or missing references) //IL_044d: Unknown result type (might be due to invalid IL or missing references) //IL_045a: Expected O, but got Unknown //IL_0497: Unknown result type (might be due to invalid IL or missing references) //IL_049e: Expected O, but got Unknown //IL_04b5: Unknown result type (might be due to invalid IL or missing references) //IL_04ba: Unknown result type (might be due to invalid IL or missing references) //IL_04c7: Expected O, but got Unknown //IL_04d8: Unknown result type (might be due to invalid IL or missing references) //IL_04dd: Unknown result type (might be due to invalid IL or missing references) //IL_04ea: Expected O, but got Unknown //IL_05f3: Unknown result type (might be due to invalid IL or missing references) //IL_05f8: Unknown result type (might be due to invalid IL or missing references) //IL_0604: Unknown result type (might be due to invalid IL or missing references) //IL_0616: Unknown result type (might be due to invalid IL or missing references) //IL_061f: Unknown result type (might be due to invalid IL or missing references) //IL_062e: Expected O, but got Unknown //IL_0637: Unknown result type (might be due to invalid IL or missing references) //IL_0641: Expected O, but got Unknown if ((Object)(object)bundle == (Object)null) { return; } GameObject val = bundle.LoadAsset<GameObject>(reg.PrefabName); if ((Object)(object)val == (Object)null) { Debug.LogWarning((object)("[Moonforged Build Pieces] Missing prefab in AssetBundle: " + reg.PrefabName)); return; } ((Object)val).name = reg.PrefabName; ZNetView val2 = val.GetComponent<ZNetView>() ?? val.AddComponent<ZNetView>(); val2.m_persistent = true; val2.m_syncInitialScale = true; if (!Object.op_Implicit((Object)(object)val.GetComponent<ZSyncTransform>())) { val.AddComponent<ZSyncTransform>(); } Piece val3 = val.GetComponent<Piece>() ?? val.AddComponent<Piece>(); val3.m_name = reg.DisplayName; val3.m_description = reg.Description; val3.m_groundOnly = false; GameObject val4 = null; GameObject val5 = null; GameObject val6 = null; GameObject val7 = null; string text = reg.PrefabName.ToLowerInvariant(); bool flag = false; if (reg.DisplayName != null && reg.DisplayName.ToLower().Contains("window")) { flag = true; } if (reg.PrefabName.ToLower().Contains("mozaic")) { flag = true; } HashSet<string> hashSet = new HashSet<string> { "M_teapot", "M_cup1", "M_justcup1", "M_justplate1", "M_bigplate", "M_AsianTeaPot", "M_AsianTeaCup", "M_AsianTeaPotLid", "M_ChineseVase" }; bool flag2 = hashSet.Contains(reg.PrefabName); bool flag3 = text.Contains("rug") || text.Contains("carpet"); bool flag4 = text.Contains("lamp") || text.Contains("lantern") || text.Contains("light"); bool flag5 = text.Contains("cannon"); bool flag6 = text.Contains("bench") || text.Contains("bin"); if (flag2) { ZNetScene instance = ZNetScene.instance; val4 = ((instance != null) ? instance.GetPrefab("vfx_Place_crystal") : null); ZNetScene instance2 = ZNetScene.instance; val5 = ((instance2 != null) ? instance2.GetPrefab("sfx_build_hammer_crystal") : null); ZNetScene instance3 = ZNetScene.instance; val7 = ((instance3 != null) ? instance3.GetPrefab("sfx_clay_pot_break") : null); } else if (flag3) { ZNetScene instance4 = ZNetScene.instance; val4 = ((instance4 != null) ? instance4.GetPrefab("vfx_Place_wood") : null); ZNetScene instance5 = ZNetScene.instance; val5 = ((instance5 != null) ? instance5.GetPrefab("sfx_build_hammer_wood") : null); ZNetScene instance6 = ZNetScene.instance; val6 = ((instance6 != null) ? instance6.GetPrefab("vfx_destroyed") : null); ZNetScene instance7 = ZNetScene.instance; val7 = ((instance7 != null) ? instance7.GetPrefab("sfx_wood_break") : null); } else if (flag4 || flag5 || flag6) { ZNetScene instance8 = ZNetScene.instance; val4 = ((instance8 != null) ? instance8.GetPrefab("vfx_Place_stone") : null); ZNetScene instance9 = ZNetScene.instance; val5 = ((instance9 != null) ? instance9.GetPrefab("sfx_build_hammer_metal") : null); ZNetScene instance10 = ZNetScene.instance; val6 = ((instance10 != null) ? instance10.GetPrefab("vfx_destroyed") : null); ZNetScene instance11 = ZNetScene.instance; val7 = ((instance11 != null) ? instance11.GetPrefab("sfx_metal_blocked") : null); } else if (flag) { ZNetScene instance12 = ZNetScene.instance; val4 = ((instance12 != null) ? instance12.GetPrefab("vfx_Place_crystal") : null); ZNetScene instance13 = ZNetScene.instance; val5 = ((instance13 != null) ? instance13.GetPrefab("sfx_build_hammer_crystal") : null); ZNetScene instance14 = ZNetScene.instance; val7 = ((instance14 != null) ? instance14.GetPrefab("sfx_clay_pot_break") : null); } else { ZNetScene instance15 = ZNetScene.instance; val4 = ((instance15 != null) ? instance15.GetPrefab("vfx_Place_wood") : null); ZNetScene instance16 = ZNetScene.instance; val5 = ((instance16 != null) ? instance16.GetPrefab("sfx_build_hammer_wood") : null); ZNetScene instance17 = ZNetScene.instance; val6 = ((instance17 != null) ? instance17.GetPrefab("vfx_destroyed") : null); ZNetScene instance18 = ZNetScene.instance; val7 = ((instance18 != null) ? instance18.GetPrefab("sfx_wood_break") : null); } EffectList val8 = new EffectList(); List<EffectData> list = new List<EffectData>(); if ((Object)(object)val4 != (Object)null) { list.Add(new EffectData { m_prefab = val4 }); } if ((Object)(object)val5 != (Object)null) { list.Add(new EffectData { m_prefab = val5 }); } val8.m_effectPrefabs = list.ToArray(); val3.m_placeEffect = val8; WearNTear val9 = val.GetComponent<WearNTear>() ?? val.AddComponent<WearNTear>(); val9.m_health = 1000f; val9.m_noRoofWear = true; EffectList val10 = new EffectList(); List<EffectData> list2 = new List<EffectData>(); if ((Object)(object)val6 != (Object)null) { list2.Add(new EffectData { m_prefab = val6 }); } if ((Object)(object)val7 != (Object)null) { list2.Add(new EffectData { m_prefab = val7 }); } val10.m_effectPrefabs = list2.ToArray(); val9.m_destroyedEffect = val10; if (reg.Comfort > 0) { val3.m_comfort = reg.Comfort; } Sprite val11 = bundle.LoadAsset<Sprite>(reg.PrefabName); if ((Object)(object)val11 != (Object)null) { val3.m_icon = val11; } if (flag4 && (Object)(object)val.GetComponent<LampColorSwitcher>() == (Object)null) { val.AddComponent<LampColorSwitcher>(); } if (flag) { Renderer[] componentsInChildren = val.GetComponentsInChildren<Renderer>(true); foreach (Renderer val12 in componentsInChildren) { if (Object.op_Implicit((Object)(object)val12)) { val12.shadowCastingMode = (ShadowCastingMode)1; val12.receiveShadows = true; } } } string craftingStation = (reg.Requirements.Any((RequirementConfig r) => r.Item.ToLower() == "iron") ? "forge" : "piece_workbench"); PieceConfig val13 = new PieceConfig { PieceTable = "Hammer", Category = CategoryToTab(reg.Category), CraftingStation = craftingStation, Requirements = reg.Requirements }; PieceManager.Instance.AddPiece(new CustomPiece(val, true, val13)); } }