Please disclose if your mod was created primarily 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.6
plugins/RavenwoodRandomRelics/RavenwoodRandomRelics.dll
Decompiled 3 weeks 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; 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, Interactable { public string GetHoverName() { return ""; } public string HoverText() { return ""; } public bool Interact(Humanoid user, bool hold, bool alt) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) if (!hold) { 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 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 void Awake() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) new Harmony("ravenwood.randomrelics.harmony").PatchAll(); PlayerPreferredCategory = ((BaseUnityPlugin)this).Config.Bind<string>("General", "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 static class RelicConfigManager { private static string configPath = Path.Combine(Paths.ConfigPath, "RavenwoodRandomRelics.cfg"); public static void SaveConfig(string key, string value) { File.AppendAllText(configPath, key + "=" + value + "\n"); } public static string LoadConfig(string key) { if (!File.Exists(configPath)) { return null; } string[] array = File.ReadAllLines(configPath); foreach (string text in array) { if (text.StartsWith(key + "=")) { return text.Substring(key.Length + 1); } } return null; } } 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.", 0, isWerewolf: false, isHorn: true), 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.", 0, isWerewolf: false, isHorn: true), 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.", 0, isWerewolf: false, isHorn: true), 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.", 0, isWerewolf: false, isHorn: true), 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."), new RelicRegistration("Ravenwood_Banner", "Ravenwood Banner", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Ravenwood_Dark_Banner", "Ravenwood Dark Banner", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("FineWood", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Ravenwood_Dark_SingleBeam_Banner", "Ravenwood Dark Single Beam Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("Feathers", 5, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 1, 0, true) }, "A custom decorative piece."), new RelicRegistration("Ravenwood_Dark_Large_Wall_Banner", "Ravenwood Dark Large Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("FineWood", 5, 0, true), new RequirementConfig("Feathers", 5, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 1, 0, true) }, "A custom decorative piece."), new RelicRegistration("Ravenwood_Dark_Gate", "Ravenwood Dark Gate", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("RoundLog", 25, 0, true), new RequirementConfig("Feathers", 25, 0, true), new RequirementConfig("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 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_081d: Unknown result type (might be due to invalid IL or missing references) //IL_0824: Expected O, but got Unknown //IL_083a: Unknown result type (might be due to invalid IL or missing references) //IL_083f: Unknown result type (might be due to invalid IL or missing references) //IL_0846: Unknown result type (might be due to invalid IL or missing references) //IL_0852: Expected O, but got Unknown //IL_0863: Unknown result type (might be due to invalid IL or missing references) //IL_0868: Unknown result type (might be due to invalid IL or missing references) //IL_0870: Unknown result type (might be due to invalid IL or missing references) //IL_087c: Expected O, but got Unknown //IL_08b9: Unknown result type (might be due to invalid IL or missing references) //IL_08c0: Expected O, but got Unknown //IL_08d7: Unknown result type (might be due to invalid IL or missing references) //IL_08dc: Unknown result type (might be due to invalid IL or missing references) //IL_08e4: Unknown result type (might be due to invalid IL or missing references) //IL_08f0: Expected O, but got Unknown //IL_0901: Unknown result type (might be due to invalid IL or missing references) //IL_0906: Unknown result type (might be due to invalid IL or missing references) //IL_090e: Unknown result type (might be due to invalid IL or missing references) //IL_091a: Expected O, but got Unknown //IL_09a8: Unknown result type (might be due to invalid IL or missing references) //IL_09ad: Unknown result type (might be due to invalid IL or missing references) //IL_09b9: Unknown result type (might be due to invalid IL or missing references) //IL_09ca: Unknown result type (might be due to invalid IL or missing references) //IL_09d3: Unknown result type (might be due to invalid IL or missing references) //IL_09e2: Expected O, but got Unknown //IL_0a0f: Unknown result type (might be due to invalid IL or missing references) //IL_0a19: 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; 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; GameObject val5; GameObject val6; GameObject val7; if (reg.PrefabName == "HornX") { val4 = null; ZNetScene instance = ZNetScene.instance; val5 = ((instance != null) ? instance.GetPrefab("sfx_build_hammer_crystal") : null); val6 = null; ZNetScene instance2 = ZNetScene.instance; val7 = ((instance2 != null) ? instance2.GetPrefab("sfx_clay_pot_break") : null); } else if (reg.PrefabName == "OdinGuard" || reg.PrefabName == "armor" || reg.PrefabName == "Chinese_Lamp" || reg.PrefabName == "blackdragonskeleton") { ZNetScene instance3 = ZNetScene.instance; val4 = ((instance3 != null) ? instance3.GetPrefab("vfx_Place_stone") : null); ZNetScene instance4 = ZNetScene.instance; val5 = ((instance4 != null) ? instance4.GetPrefab("sfx_build_hammer_metal") : null); ZNetScene instance5 = ZNetScene.instance; val6 = ((instance5 != null) ? instance5.GetPrefab("vfx_destroyed") : null); ZNetScene instance6 = ZNetScene.instance; val7 = ((instance6 != null) ? instance6.GetPrefab("sfx_metal_blocked") : null); } else if (reg.PrefabName == "WoodenBear" || reg.PrefabName == "v2_PersianRug" || reg.PrefabName == "HotAirBalloon" || reg.PrefabName == "clock" || reg.PrefabName == "JapaneseToriiGate" || reg.PrefabName == "JPGate" || reg.PrefabName == "TP" || reg.PrefabName == "Vikings" || reg.PrefabName == "SWC" || reg.PrefabName == "Trophy_Deer" || reg.PrefabName == "ItalianCypress0" || reg.PrefabName == "ItalianCypress1" || reg.PrefabName == "ItalianCypress2" || reg.PrefabName == "ItalianCypress3" || reg.PrefabName == "ItalianCypress4" || reg.PrefabName == "SM_ItalianCypress_Massive" || reg.PrefabName == "SM_ItalianCypress_Large_A" || reg.PrefabName == "SM_ItalianCypress_Large_B" || reg.PrefabName == "SM_ItalianCypress_Large_B1" || reg.PrefabName == "SM_ItalianCypress_Medium_B" || reg.PrefabName == "SM_ItalianCypress_Growing_A" || reg.PrefabName == "SM_ItalianCypress_Growing_E" || reg.PrefabName == "SM_ItalianCypress_Growing_C" || reg.PrefabName == "Picture1" || reg.PrefabName == "Picture2" || reg.PrefabName == "Picture3" || reg.PrefabName == "Picture4" || reg.PrefabName == "Picture5" || reg.PrefabName == "Picture_01_A" || reg.PrefabName == "Picture_02_A" || reg.PrefabName == "Picture_03_A" || reg.PrefabName == "Picture_04_A" || reg.PrefabName == "Picture_05_A" || reg.PrefabName == "Picture_06_A" || reg.PrefabName == "Picture_07_A" || reg.PrefabName == "Picture_08_A" || reg.PrefabName == "Picture_09_A" || reg.PrefabName == "Picture_10_A" || reg.PrefabName == "Picture_01_B" || reg.PrefabName == "Picture_02_B" || reg.PrefabName == "Picture_03_B" || reg.PrefabName == "Picture_04_B" || reg.PrefabName == "Picture_05_B" || reg.PrefabName == "Picture_06_B" || reg.PrefabName == "Picture_07_B" || reg.PrefabName == "Picture_08_B" || reg.PrefabName == "Picture_09_B" || reg.PrefabName == "Ravenwood_Dark_Gate" || reg.PrefabName == "Picture_10_B") { ZNetScene instance7 = ZNetScene.instance; val4 = ((instance7 != null) ? instance7.GetPrefab("vfx_Place_wood") : null); ZNetScene instance8 = ZNetScene.instance; val5 = ((instance8 != null) ? instance8.GetPrefab("sfx_build_hammer_wood") : null); ZNetScene instance9 = ZNetScene.instance; val6 = ((instance9 != null) ? instance9.GetPrefab("vfx_destroyed") : null); ZNetScene instance10 = ZNetScene.instance; val7 = ((instance10 != null) ? instance10.GetPrefab("sfx_wood_break") : null); } else if (reg.PrefabName == "bouquet") { ZNetScene instance11 = ZNetScene.instance; val4 = ((instance11 != null) ? instance11.GetPrefab("vfx_Place_flower") : null); ZNetScene instance12 = ZNetScene.instance; val5 = ((instance12 != null) ? instance12.GetPrefab("sfx_build_cultivator") : null); ZNetScene instance13 = ZNetScene.instance; val6 = ((instance13 != null) ? instance13.GetPrefab("vfx_bush_destroyed") : null); ZNetScene instance14 = ZNetScene.instance; val7 = ((instance14 != null) ? instance14.GetPrefab("sfx_bush_hit") : null); } else if (reg.PrefabName == "skullgoblet" || reg.PrefabName == "porcelainteaset" || reg.PrefabName == "AsianTeaSet" || reg.PrefabName == "AsianTeaSetPlate" || reg.PrefabName == "DeerGlobe" || reg.PrefabName == "BoatinBottle" || reg.PrefabName == "Rose") { val4 = null; ZNetScene instance15 = ZNetScene.instance; val5 = ((instance15 != null) ? instance15.GetPrefab("sfx_build_hammer_crystal") : null); val6 = null; ZNetScene instance16 = ZNetScene.instance; val7 = ((instance16 != null) ? instance16.GetPrefab("sfx_clay_pot_break") : null); } else if (reg.PrefabName == "werewolf" || reg.PrefabName == "werewolfmirrored") { val4 = null; ZNetScene instance17 = ZNetScene.instance; val5 = ((instance17 != null) ? instance17.GetPrefab("sfx_fenring_howl") : null); val6 = null; ZNetScene instance18 = ZNetScene.instance; val7 = ((instance18 != null) ? instance18.GetPrefab("sfx_fenring_death") : null); } else { ZNetScene instance19 = ZNetScene.instance; val4 = ((instance19 != null) ? instance19.GetPrefab("vfx_Place_stone") : null); ZNetScene instance20 = ZNetScene.instance; val5 = ((instance20 != null) ? instance20.GetPrefab("sfx_build_hammer_stone") : null); ZNetScene instance21 = ZNetScene.instance; val6 = ((instance21 != null) ? instance21.GetPrefab("vfx_destroyed") : null); ZNetScene instance22 = ZNetScene.instance; val7 = ((instance22 != null) ? instance22.GetPrefab("sfx_rock_destroyed") : null); } EffectList val8 = new EffectList(); List<EffectData> list = new List<EffectData>(); if ((Object)(object)val4 != (Object)null) { list.Add(new EffectData { m_prefab = val4, m_enabled = true }); } if ((Object)(object)val5 != (Object)null) { list.Add(new EffectData { m_prefab = val5, m_enabled = true }); } val8.m_effectPrefabs = list.ToArray(); val3.m_placeEffect = val8; WearNTear val9 = val.GetComponent<WearNTear>() ?? val.AddComponent<WearNTear>(); val9.m_health = 10000f; 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, m_enabled = true }); } if ((Object)(object)val7 != (Object)null) { list2.Add(new EffectData { m_prefab = val7, m_enabled = true }); } 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; } string craftingStation = "piece_workbench"; if (reg.PrefabName.StartsWith("ItalianCypress") || reg.PrefabName.StartsWith("SM_ItalianCypress")) { craftingStation = null; } PieceConfig val12 = 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, val12)); if (reg.IsWerewolf && (Object)(object)val.GetComponent<PlacementWatcher>() == (Object)null) { val.AddComponent<PlacementWatcher>().RegisterList = placedWerewolves; } return true; } private static void ValidateRequirements(RequirementConfig[] reqs) { if ((Object)(object)ObjectDB.instance == (Object)null || reqs == null) { return; } foreach (RequirementConfig val in reqs) { if (val != null && !string.IsNullOrEmpty(val.Item)) { GameObject itemPrefab = ObjectDB.instance.GetItemPrefab(val.Item); if ((Object)(object)itemPrefab == (Object)null) { Logger.LogWarning((object)("[RavenwoodRelics] Requirement item not found in ObjectDB: " + val.Item)); } } } } }