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 RavenwoodRandomRelics v1.0.7
plugins/RavenwoodRandomRelics/RavenwoodRandomRelics.dll
Decompiled a month agousing 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 System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("RavenwoodRandomRelics")] [assembly: AssemblyDescription("A Valheim mod that adds custom relics, statues, and decor.")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("James Jones TV")] [assembly: AssemblyProduct("Ravenwood Random Relics Mod")] [assembly: AssemblyCopyright("")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")] [assembly: AssemblyFileVersion("2.2.2")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("2.2.2.0")] namespace RavenwoodRandomRelics; public class HornOfThor : MonoBehaviour, Hoverable, Interactable { private Piece m_piece; private void Awake() { m_piece = ((Component)this).GetComponent<Piece>(); } public bool Interact(Humanoid user, bool hold, bool alt) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) if (hold) { return false; } GameObject prefab = ZNetScene.instance.GetPrefab("sfx_gjall_alerted"); if ((Object)(object)prefab != (Object)null) { Object.Instantiate<GameObject>(prefab, ((Component)this).transform.position + Vector3.up * 1f, Quaternion.identity); } return true; } public bool UseItem(Humanoid user, ItemData item) { return false; } public string GetHoverText() { string text = (((Object)(object)m_piece != (Object)null) ? m_piece.m_name : "Horn of Thor"); return text + "\n[<color=yellow><b>E</b></color>] Blow Horn"; } public string GetHoverName() { return ((Object)(object)m_piece != (Object)null) ? m_piece.m_name : "Horn of Thor"; } } public class PlacementWatcher : MonoBehaviour { public List<GameObject> RegisterList; private void Start() { if (RegisterList != null && !RegisterList.Contains(((Component)this).gameObject)) { RegisterList.Add(((Component)this).gameObject); } } private void OnDestroy() { if (RegisterList != null) { RegisterList.Remove(((Component)this).gameObject); } } } [BepInPlugin("Ravenwood.RandomRelics", "Ravenwood Random Relics", "1.0.5")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class RavenwoodRandomRelics : BaseUnityPlugin { public const string PluginGUID = "Ravenwood.RandomRelics"; public const string PluginName = "Ravenwood Random Relics"; public const string PluginVersion = "1.0.5"; private AssetBundle relicsBundle; public static ConfigEntry<string> PlayerPreferredCategory; private ConfigEntry<bool> LockConfiguration; private void Awake() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) new Harmony("ravenwood.randomrelics.harmony").PatchAll(); LockConfiguration = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Lock Configuration", true, "If on, server controls the config and clients cannot change it."); PlayerPreferredCategory = ((BaseUnityPlugin)this).Config.Bind<string>("UI", "CustomHammerTab", "RavenwoodRelics", "Custom hammer tab category name"); Assembly executingAssembly = Assembly.GetExecutingAssembly(); string text = executingAssembly.GetManifestResourceNames().FirstOrDefault((string r) => r.ToLower().Contains("ravenwoodrandomrelics")); if (string.IsNullOrEmpty(text)) { ((BaseUnityPlugin)this).Logger.LogError((object)"Could not find embedded asset bundle resource containing 'ravenwoodrandomrelics'."); return; } using (Stream stream = executingAssembly.GetManifestResourceStream(text)) { if (stream == null) { ((BaseUnityPlugin)this).Logger.LogError((object)("Embedded asset bundle stream was null for '" + text + "'.")); return; } using MemoryStream memoryStream = new MemoryStream(); stream.CopyTo(memoryStream); relicsBundle = AssetBundle.LoadFromMemory(memoryStream.ToArray()); } if ((Object)(object)relicsBundle == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)"Failed to load AssetBundle from embedded resource!"); } else { PrefabManager.OnPrefabsRegistered += RegisterNow; } } private void RegisterNow() { if (!((Object)(object)relicsBundle == (Object)null)) { RelicRegistrar.RegisterAllRelics(relicsBundle); ((BaseUnityPlugin)this).Logger.LogInfo((object)("[RavenwoodRelics] Registration complete. Hammer tab: '" + PlayerPreferredCategory.Value + "'.")); } } } public class RelicRegistration { public string PrefabName; public string DisplayName; public RequirementConfig[] Requirements; public string Description; public int Comfort; public bool IsWerewolf; public bool IsHorn; public RelicRegistration(string prefab, string display, RequirementConfig[] reqs, string desc, int comfort = 0, bool isWerewolf = false, bool isHorn = false) { PrefabName = prefab; DisplayName = display; Requirements = reqs; Description = desc; Comfort = comfort; IsWerewolf = isWerewolf; IsHorn = isHorn; } } public static class RelicRegistrar { private static readonly List<GameObject> placedWerewolves = new List<GameObject>(); private static bool wasAlreadyRegistered = false; public static readonly List<RelicRegistration> AllRegistrations = new List<RelicRegistration> { new RelicRegistration("valkyrie", "Norse Valkyrie", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Bronze", 100, 0, true), new RequirementConfig("FineWood", 25, 0, true) }, "Norse Valkyrie."), new RelicRegistration("armor", "Dark Knight", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Iron", 20, 0, true), new RequirementConfig("FineWood", 15, 0, true) }, "A custom decorative piece."), new RelicRegistration("R_KnightArmour", "Kinght Armour", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Iron", 20, 0, true), new RequirementConfig("FineWood", 15, 0, true) }, "A custom decorative piece."), new RelicRegistration("OdinGuard", "Heimdall", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Bronze", 20, 0, true), new RequirementConfig("FineWood", 15, 0, true) }, "Guardian of Bifröst."), new RelicRegistration("werewolf", "Fenrir the Devourer", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("TrophyFenring", 1, 0, true), new RequirementConfig("IronNails", 20, 0, true), new RequirementConfig("Tar", 20, 0, true) }, "A custom decorative piece.", 0, isWerewolf: true), new RelicRegistration("werewolfmirrored", "Fenrir the Devourer mirrored", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("TrophyFenring", 1, 0, true), new RequirementConfig("IronNails", 20, 0, true), new RequirementConfig("Tar", 20, 0, true) }, "A custom decorative piece.", 0, isWerewolf: true), new RelicRegistration("werewolfbust", "Fenrir Bust", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("TrophyFenring", 1, 0, true), new RequirementConfig("Stone", 20, 0, true) }, "A custom decorative piece.", 0, isWerewolf: true), new RelicRegistration("gargoyledog", "Gargoyle I", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Stone", 10, 0, true), new RequirementConfig("FineWood", 5, 0, true), new RequirementConfig("Coins", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("v2_gargoylestatue", "Gargoyle II", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Stone", 10, 0, true), new RequirementConfig("FineWood", 5, 0, true), new RequirementConfig("Coins", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("lion", "Lion Statue", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 40, 0, true), new RequirementConfig("Coins", 40, 0, true) }, "The Lion King."), new RelicRegistration("JapaneseStoneLantern", "Japanese Stone Lantern", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 20, 0, true), new RequirementConfig("Resin", 20, 0, true) }, "A custom decorative piece."), new RelicRegistration("pedestalplanter", "Pedestal Planter", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 15, 0, true), new RequirementConfig("Resin", 20, 0, true) }, "A decorative stone urn, perfect for gardens or noble estates."), new RelicRegistration("clock", "Wooden Big Ben Clock", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 25, 0, true), new RequirementConfig("FineWood", 15, 0, true) }, "A custom decorative piece."), new RelicRegistration("SWC", "Vintage Swiss Wooden Cuckoo Clock", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Wood", 10, 0, true), new RequirementConfig("FineWood", 10, 0, true), new RequirementConfig("Coins", 20, 0, true) }, "A custom decorative piece."), new RelicRegistration("HornX", "Horn of Thor", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("BoneFragments", 25, 0, true), new RequirementConfig("Copper", 5, 0, true) }, "Sound the horn to alert your allies.", 0, isWerewolf: false, isHorn: true), new RelicRegistration("HotAirBalloon", "Hot Air Balloon", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("GreydwarfEye", 10, 0, true), new RequirementConfig("Coins", 10, 0, true) }, "A custom decorative piece.", 1), new RelicRegistration("Picture1", "Ravenwood Vikings", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 10, 0, true), new RequirementConfig("FineWood", 10, 0, true) }, "Custom decorative picture."), new RelicRegistration("Picture2", "Ravenwood Vikings II", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 10, 0, true), new RequirementConfig("FineWood", 10, 0, true) }, "Custom decorative picture."), new RelicRegistration("Picture3", "Ravenwood Vikings III", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 10, 0, true), new RequirementConfig("FineWood", 10, 0, true) }, "Custom decorative picture."), new RelicRegistration("Picture4", "Ravenwood Vikings IV", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 10, 0, true), new RequirementConfig("FineWood", 10, 0, true) }, "Custom decorative picture."), new RelicRegistration("Picture5", "Ravenwood Vikings V", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 10, 0, true), new RequirementConfig("FineWood", 10, 0, true) }, "Custom decorative picture."), new RelicRegistration("Vikings", "Ravenwood Vikings VI", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 10, 0, true), new RequirementConfig("FineWood", 10, 0, true) }, "Custom decorative picture."), new RelicRegistration("WitchCat", "WitchCat", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("Coins", 50, 0, true) }, "A big comfy witchcat. Provides +1 comfort.", 1), new RelicRegistration("WoodenBear", "Wooden Brown Bear", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Coins", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("bouquet", "Flower Bouquet", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Thistle", 20, 0, true), new RequirementConfig("Dandelion", 5, 0, true) }, "A custom decorative piece.", 1), new RelicRegistration("AsianTeaSet", "Asian Tea Set", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 5, 0, true), new RequirementConfig("Coins", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("AsianTeaSetPlate", "Asian Tea Set Plate", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("FineWood", 5, 0, true), new RequirementConfig("Coins", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("porcelainteaset", "Porcelain Tea Set", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 5, 0, true), new RequirementConfig("Coins", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("skullgoblet", "Skull Goblet", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("BoneFragments", 15, 0, true), new RequirementConfig("Coins", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("TP", "Toilet Paper", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("Dandelion", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("v2_NiceChair", "Chair of the Windweaver", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 15, 0, true), new RequirementConfig("DeerHide", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("v2_PersianRug", "World Tree Rug", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("FineWood", 2, 0, true), new RequirementConfig("DeerHide", 2, 0, true) }, "A custom decorative piece.", 0, isWerewolf: true), new RelicRegistration("DragonBanner", "The Red Dragon", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("FineWood", 5, 0, true), new RequirementConfig("Bronze", 3, 0, true), new RequirementConfig("JuteRed", 3, 0, true) }, "A custom decorative piece.", 0, isWerewolf: true), new RelicRegistration("DutchBanner", "Banner of Kings", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("FineWood", 2, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("Bronze", 1, 0, true), new RequirementConfig("Coins", 5, 0, true) }, "A custom decorative piece.", 0, isWerewolf: true), new RelicRegistration("v2_Lionking", "Banner of a Lion", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("FineWood", 2, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("Bronze", 1, 0, true), new RequirementConfig("Coins", 5, 0, true) }, "A custom decorative piece.", 0, isWerewolf: true), new RelicRegistration("JapaneseToriiGate", "Japanese Torii Gate I", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 20, 0, true), new RequirementConfig("FineWood", 20, 0, true) }, "A custom decorative piece."), new RelicRegistration("JPGate", "Japanese Torii Gate II", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 20, 0, true), new RequirementConfig("FineWood", 20, 0, true) }, "A custom decorative piece."), new RelicRegistration("Chinese_Lamp", "Warden’s Lantern", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 20, 0, true), new RequirementConfig("Resin", 20, 0, true) }, "A custom decorative piece."), new RelicRegistration("bear", "Bear Statue", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Stone", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true), new RequirementConfig("Coins", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("blackdragonskeleton", "Dark Angel", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Iron", 20, 0, true), new RequirementConfig("FineWood", 20, 0, true), new RequirementConfig("Coins", 100, 0, true) }, "A custom decorative piece."), new RelicRegistration("dragon", "Draco", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Eitr", 333, 0, true), new RequirementConfig("Coins", 3333, 0, true) }, "A custom decorative piece."), new RelicRegistration("throne", "Odin", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Stone", 100, 0, true), new RequirementConfig("Bronze", 100, 0, true), new RequirementConfig("Coins", 1000, 0, true) }, "A custom decorative piece."), new RelicRegistration("greythrone", "Grey throne", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Stone", 100, 0, true), new RequirementConfig("Bronze", 20, 0, true), new RequirementConfig("Coins", 200, 0, true) }, "A custom decorative piece."), new RelicRegistration("whitethrone", "White throne", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Stone", 100, 0, true), new RequirementConfig("Bronze", 20, 0, true), new RequirementConfig("Coins", 200, 0, true) }, "A custom decorative piece."), new RelicRegistration("blackthrone", "Black throne", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Stone", 100, 0, true), new RequirementConfig("Bronze", 20, 0, true), new RequirementConfig("Coins", 200, 0, true) }, "A custom decorative piece."), new RelicRegistration("goldenthrone", "Gold throne", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Stone", 100, 0, true), new RequirementConfig("Bronze", 20, 0, true), new RequirementConfig("Coins", 200, 0, true) }, "A custom decorative piece."), new RelicRegistration("BoatinBottle", "The Black Pearl", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Coins", 10, 0, true), new RequirementConfig("FineWood", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("DeerGlobe", "Deer in Snow Globe", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Coins", 10, 0, true), new RequirementConfig("FineWood", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Rose", "Rose in a Globe", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Thistle", 10, 0, true), new RequirementConfig("Coins", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("horse", "Horse Brust Statue", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 10, 0, true), new RequirementConfig("FineWood", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("ItalianCypress0", "Italian Cypress Tree Tall Orange", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 20, 0, true) }, "A tall decorative cypress tree."), new RelicRegistration("ItalianCypress1", "Italian Cypress Tree Tall Green", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 20, 0, true) }, "A tall decorative cypress tree."), new RelicRegistration("ItalianCypress2", "Italian Cypress Tree Medium Green", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 10, 0, true) }, "A tall decorative cypress tree."), new RelicRegistration("ItalianCypress3", "Italian Cypress Small Green", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 5, 0, true) }, "A tall decorative cypress tree."), new RelicRegistration("ItalianCypress4", "Italian Cypress Small Orange", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 5, 0, true) }, "A tall decorative cypress tree."), new RelicRegistration("SM_ItalianCypress_Massive", "Italian Cypress Tree Massive", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 20, 0, true) }, "A tall decorative cypress tree."), new RelicRegistration("SM_ItalianCypress_Large_A", "Italian Cypress Tree Large Wide", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 10, 0, true) }, "A tall decorative cypress tree."), new RelicRegistration("SM_ItalianCypress_Large_B", "Italian Cypress Tree Large Thin", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 10, 0, true) }, "A tall decorative cypress tree."), new RelicRegistration("SM_ItalianCypress_Large_B1", "Italian Cypress Tree Extra Large ", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 30, 0, true) }, "A tall decorative cypress tree."), new RelicRegistration("SM_ItalianCypress_Medium_B", "Italian Cypress Tree Small", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 5, 0, true) }, "A tall decorative cypress tree."), new RelicRegistration("SM_ItalianCypress_Growing_A", "Italian Cypress Tree Growing", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 5, 0, true) }, "A tall decorative cypress tree."), new RelicRegistration("SM_ItalianCypress_Growing_E", "Italian Cypress Tree Growing Wide", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 5, 0, true) }, "A tall decorative cypress tree."), new RelicRegistration("SM_ItalianCypress_Growing_C", "Italian Cypress Tree Growing Thin", (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("FineWood", 5, 0, true) }, "A tall decorative cypress tree."), new RelicRegistration("BearHead", "Bear Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("FineWood", 10, 0, true), new RequirementConfig("Coins", 40, 0, true) }, "A custom decorative piece."), new RelicRegistration("BoarHead", "Boar Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("FineWood", 10, 0, true), new RequirementConfig("Coins", 40, 0, true) }, "A custom decorative piece."), new RelicRegistration("DeerHead", "Deer Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("FineWood", 10, 0, true), new RequirementConfig("Coins", 40, 0, true) }, "A custom decorative piece."), new RelicRegistration("ElephantHead", "Elefant Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("FineWood", 10, 0, true), new RequirementConfig("Coins", 40, 0, true) }, "A custom decorative piece."), new RelicRegistration("HippoHead", "Hipo Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("FineWood", 10, 0, true), new RequirementConfig("Coins", 40, 0, true) }, "A custom decorative piece."), new RelicRegistration("LionHead", "Lion Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("FineWood", 10, 0, true), new RequirementConfig("Coins", 40, 0, true) }, "A custom decorative piece."), new RelicRegistration("RhinoHead", "Rhino Head Trophy", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("FineWood", 10, 0, true), new RequirementConfig("Coins", 40, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_01_A", "Picture 01 A", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_02_A", "Picture 02 A", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_03_A", "Picture 03 A", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_04_A", "Picture 04 A", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_05_A", "Picture 05 A", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_06_A", "Picture 06 A", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_07_A", "Picture 07 A", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_08_A", "Picture 08 A", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_09_A", "Picture 09 A", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_10_A", "Picture 10 A", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_01_B", "Picture 01 B", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_02_B", "Picture 02 B", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_03_B", "Picture 03 B", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_04_B", "Picture 04 B", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_05_B", "Picture 05 B", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_06_B", "Picture 06 B", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_07_B", "Picture 07 B", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_08_B", "Picture 08 B", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_09_B", "Picture 09 B", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Picture_10_B", "Picture 10 B", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece.") }; public static void RegisterAllRelics(AssetBundle bundle) { if (wasAlreadyRegistered || (Object)(object)bundle == (Object)null) { return; } int num = 0; int num2 = 0; foreach (RelicRegistration allRegistration in AllRegistrations) { if (RegisterRelic(bundle, allRegistration)) { num++; } else { num2++; } } wasAlreadyRegistered = true; } private static bool RegisterRelic(AssetBundle bundle, RelicRegistration reg) { //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Expected O, but got Unknown //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Expected O, but got Unknown //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Expected O, but got Unknown //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Expected O, but got Unknown //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Expected O, but got Unknown //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_019c: 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_01b0: Expected O, but got Unknown //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0245: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Expected O, but got Unknown //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Expected O, but got Unknown if ((Object)(object)bundle == (Object)null) { return false; } GameObject val = bundle.LoadAsset<GameObject>(reg.PrefabName); if ((Object)(object)val == (Object)null) { return false; } ((Object)val).name = reg.PrefabName; ZNetView val2 = val.GetComponent<ZNetView>(); if ((Object)(object)val2 == (Object)null) { val2 = val.AddComponent<ZNetView>(); } val2.m_persistent = true; val2.m_syncInitialScale = true; Piece val3 = val.GetComponent<Piece>() ?? val.AddComponent<Piece>(); val3.m_name = reg.DisplayName; val3.m_description = reg.Description; val3.m_groundOnly = false; SFX_VFX_Registry.GetEffects(reg.PrefabName, out var vfxPlace, out var sfxPlace, out var destroyVFX, out var destroySFX); EffectList val4 = new EffectList(); List<EffectData> list = new List<EffectData>(); if ((Object)(object)vfxPlace != (Object)null) { list.Add(new EffectData { m_prefab = vfxPlace, m_enabled = true }); } if ((Object)(object)sfxPlace != (Object)null) { list.Add(new EffectData { m_prefab = sfxPlace, m_enabled = true }); } val4.m_effectPrefabs = list.ToArray(); val3.m_placeEffect = val4; WearNTear val5 = val.GetComponent<WearNTear>() ?? val.AddComponent<WearNTear>(); val5.m_health = 1000000f; val5.m_noRoofWear = true; EffectList val6 = new EffectList(); List<EffectData> list2 = new List<EffectData>(); if ((Object)(object)destroyVFX != (Object)null) { list2.Add(new EffectData { m_prefab = destroyVFX, m_enabled = true }); } if ((Object)(object)destroySFX != (Object)null) { list2.Add(new EffectData { m_prefab = destroySFX, m_enabled = true }); } val6.m_effectPrefabs = list2.ToArray(); val5.m_destroyedEffect = val6; Sprite val7 = bundle.LoadAsset<Sprite>(reg.PrefabName); if ((Object)(object)val7 != (Object)null) { val3.m_icon = val7; } string craftingStation = "piece_workbench"; if (reg.PrefabName.StartsWith("ItalianCypress") || reg.PrefabName.StartsWith("SM_ItalianCypress")) { craftingStation = null; } PieceConfig val8 = new PieceConfig { PieceTable = "Hammer", Category = RavenwoodRandomRelics.PlayerPreferredCategory.Value, CraftingStation = craftingStation, Requirements = reg.Requirements }; if (reg.IsHorn && (Object)(object)val.GetComponent<HornOfThor>() == (Object)null) { val.AddComponent<HornOfThor>(); } PieceManager.Instance.AddPiece(new CustomPiece(val, true, val8)); if (reg.IsWerewolf && (Object)(object)val.GetComponent<PlacementWatcher>() == (Object)null) { val.AddComponent<PlacementWatcher>().RegisterList = placedWerewolves; } return true; } } public static class SFX_VFX_Registry { private static readonly HashSet<string> MetalObjects = new HashSet<string> { "OdinGuard", "armor", "Chinese_Lamp", "blackdragonskeleton" }; private static readonly HashSet<string> WoodObjects = new HashSet<string> { "WoodenBear", "v2_PersianRug", "HotAirBalloon", "clock", "JapaneseToriiGate", "JPGate", "TP", "Vikings", "SWC", "Trophy_Deer", "ItalianCypress0", "ItalianCypress1", "ItalianCypress2", "ItalianCypress3", "ItalianCypress4", "SM_ItalianCypress_Massive", "SM_ItalianCypress_Large_A", "SM_ItalianCypress_Large_B", "SM_ItalianCypress_Large_B1", "SM_ItalianCypress_Medium_B", "SM_ItalianCypress_Growing_A", "SM_ItalianCypress_Growing_E", "SM_ItalianCypress_Growing_C", "Picture1", "Picture2", "Picture3", "Picture4", "Picture5", "Picture_01_A", "Picture_02_A", "Picture_03_A", "Picture_04_A", "Picture_05_A", "Picture_06_A", "Picture_07_A", "Picture_08_A", "Picture_09_A", "Picture_10_A", "Picture_01_B", "Picture_02_B", "Picture_03_B", "Picture_04_B", "Picture_05_B", "Picture_06_B", "Picture_07_B", "Picture_08_B", "Picture_09_B", "Picture_10_B" }; private static readonly HashSet<string> CrystalObjects = new HashSet<string> { "skullgoblet", "porcelainteaset", "AsianTeaSet", "AsianTeaSetPlate", "DeerGlobe", "BoatinBottle", "Rose" }; public static void GetEffects(string prefabName, out GameObject vfxPlace, out GameObject sfxPlace, out GameObject destroyVFX, out GameObject destroySFX) { if (prefabName == "HornX") { vfxPlace = null; ZNetScene instance = ZNetScene.instance; sfxPlace = ((instance != null) ? instance.GetPrefab("sfx_build_hammer_crystal") : null); destroyVFX = null; ZNetScene instance2 = ZNetScene.instance; destroySFX = ((instance2 != null) ? instance2.GetPrefab("sfx_clay_pot_break") : null); } else if (MetalObjects.Contains(prefabName)) { ZNetScene instance3 = ZNetScene.instance; vfxPlace = ((instance3 != null) ? instance3.GetPrefab("vfx_Place_stone") : null); ZNetScene instance4 = ZNetScene.instance; sfxPlace = ((instance4 != null) ? instance4.GetPrefab("sfx_build_hammer_metal") : null); ZNetScene instance5 = ZNetScene.instance; destroyVFX = ((instance5 != null) ? instance5.GetPrefab("vfx_destroyed") : null); ZNetScene instance6 = ZNetScene.instance; destroySFX = ((instance6 != null) ? instance6.GetPrefab("sfx_metal_blocked") : null); } else if (WoodObjects.Contains(prefabName)) { ZNetScene instance7 = ZNetScene.instance; vfxPlace = ((instance7 != null) ? instance7.GetPrefab("vfx_Place_wood") : null); ZNetScene instance8 = ZNetScene.instance; sfxPlace = ((instance8 != null) ? instance8.GetPrefab("sfx_build_hammer_wood") : null); ZNetScene instance9 = ZNetScene.instance; destroyVFX = ((instance9 != null) ? instance9.GetPrefab("vfx_destroyed") : null); ZNetScene instance10 = ZNetScene.instance; destroySFX = ((instance10 != null) ? instance10.GetPrefab("sfx_wood_break") : null); } else if (prefabName == "bouquet") { ZNetScene instance11 = ZNetScene.instance; vfxPlace = ((instance11 != null) ? instance11.GetPrefab("vfx_Place_flower") : null); ZNetScene instance12 = ZNetScene.instance; sfxPlace = ((instance12 != null) ? instance12.GetPrefab("sfx_build_cultivator") : null); ZNetScene instance13 = ZNetScene.instance; destroyVFX = ((instance13 != null) ? instance13.GetPrefab("vfx_bush_destroyed") : null); ZNetScene instance14 = ZNetScene.instance; destroySFX = ((instance14 != null) ? instance14.GetPrefab("sfx_bush_hit") : null); } else if (CrystalObjects.Contains(prefabName)) { vfxPlace = null; ZNetScene instance15 = ZNetScene.instance; sfxPlace = ((instance15 != null) ? instance15.GetPrefab("sfx_build_hammer_crystal") : null); destroyVFX = null; ZNetScene instance16 = ZNetScene.instance; destroySFX = ((instance16 != null) ? instance16.GetPrefab("sfx_clay_pot_break") : null); } else if (prefabName == "werewolf" || prefabName == "werewolfmirrored") { vfxPlace = null; ZNetScene instance17 = ZNetScene.instance; sfxPlace = ((instance17 != null) ? instance17.GetPrefab("sfx_fenring_howl") : null); destroyVFX = null; ZNetScene instance18 = ZNetScene.instance; destroySFX = ((instance18 != null) ? instance18.GetPrefab("sfx_fenring_death") : null); } else { ZNetScene instance19 = ZNetScene.instance; vfxPlace = ((instance19 != null) ? instance19.GetPrefab("vfx_Place_stone") : null); ZNetScene instance20 = ZNetScene.instance; sfxPlace = ((instance20 != null) ? instance20.GetPrefab("sfx_build_hammer_stone") : null); ZNetScene instance21 = ZNetScene.instance; destroyVFX = ((instance21 != null) ? instance21.GetPrefab("vfx_destroyed") : null); ZNetScene instance22 = ZNetScene.instance; destroySFX = ((instance22 != null) ? instance22.GetPrefab("sfx_rock_destroyed") : null); } } }