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 Ravenwood Regions v1.0.3
plugins/RavenwoodRegions/RavenwoodRegions.dll
Decompiled 2 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; 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("RavenwoodRegions")] [assembly: AssemblyDescription("A Valheim mod that adds custom World and Biome Gates with Light and Banners.")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("James Jones TV")] [assembly: AssemblyProduct("Ravenwood Regions")] [assembly: AssemblyCopyright("")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")] [assembly: AssemblyFileVersion("1.0.2")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.2.0")] namespace RavenwoodRegions; public class BannerInteraction : MonoBehaviour { private Cloth _cloth; private float _lastPush; private void Awake() { _cloth = ((Component)this).GetComponentInChildren<Cloth>(true); } private void OnTriggerStay(Collider other) { //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_cloth == (Object)null) { return; } Character componentInParent = ((Component)other).GetComponentInParent<Character>(); if (!((Object)(object)componentInParent == (Object)null) && !(Time.time - _lastPush < 0.05f)) { _lastPush = Time.time; Vector3 position = ((Component)other).transform.position; Vector3 position2 = ((Component)this).transform.position; Vector3 val = position2 - position; val.y = 0f; float magnitude = ((Vector3)(ref val)).magnitude; if (!(magnitude < 0.01f)) { ((Vector3)(ref val)).Normalize(); float num = Mathf.Clamp01(1.5f - magnitude) * 15f; _cloth.externalAcceleration = val * num; _cloth.bendingStiffness = 0.1f; _cloth.stretchingStiffness = 0.3f; ((MonoBehaviour)this).CancelInvoke("ResetCloth"); ((MonoBehaviour)this).Invoke("ResetCloth", 0.25f); } } } private void ResetCloth() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)_cloth == (Object)null)) { _cloth.externalAcceleration = Vector3.zero; _cloth.bendingStiffness = 0.4f; _cloth.stretchingStiffness = 0.6f; } } } public class BannerLampController : MonoBehaviour { public List<string> BulbObjectNames = new List<string>(); public Color NightColor = new Color(0.78f, 0.68f, 0.88f); public float NightIntensity = 2.5f; public float NightEmissionMultiplier = 3f; public bool NormalizePerceivedBrightness = true; private readonly List<Light> lights = new List<Light>(); private readonly List<Material> materials = new List<Material>(); private bool lastNightState = false; private bool initialized = false; private static readonly Color ReferenceColor = new Color(0.78f, 0.68f, 0.88f); private float referenceLuminance; private void Awake() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) referenceLuminance = ComputeLuminanceLinear(ReferenceColor); foreach (string name in BulbObjectNames) { Transform val = ((IEnumerable<Transform>)((Component)this).GetComponentsInChildren<Transform>(true)).FirstOrDefault((Func<Transform, bool>)((Transform t) => ((Object)t).name == name)); if ((Object)(object)val == (Object)null) { continue; } Light[] componentsInChildren = ((Component)val).GetComponentsInChildren<Light>(true); foreach (Light val2 in componentsInChildren) { if ((Object)(object)val2 != (Object)null) { val2.type = (LightType)2; val2.shadows = (LightShadows)0; val2.range = 5f; lights.Add(val2); } } Renderer component = ((Component)val).GetComponent<Renderer>(); if ((Object)(object)component != (Object)null && (Object)(object)component.material != (Object)null) { Material material = component.material; if (material.HasProperty("_Metallic")) { material.SetFloat("_Metallic", 0f); } if (material.HasProperty("_Glossiness")) { material.SetFloat("_Glossiness", 0.4f); } if (material.HasProperty("_Smoothness")) { material.SetFloat("_Smoothness", 0.4f); } material.EnableKeyword("_EMISSION"); material.globalIlluminationFlags = (MaterialGlobalIlluminationFlags)1; materials.Add(material); } } initialized = true; } private void Update() { //IL_018e: Unknown result type (might be due to invalid IL or missing references) if (!initialized || (Object)(object)EnvMan.instance == (Object)null) { return; } bool flag = EnvMan.IsNight(); if (flag != lastNightState) { lastNightState = flag; float intensity = (flag ? NightIntensity : 0f); ApplyState(intensity); } foreach (Light light in lights) { if ((Object)(object)light == (Object)null) { continue; } if (flag) { if (!((Behaviour)light).enabled) { ((Behaviour)light).enabled = true; } if (light.intensity <= 0f) { light.intensity = NightIntensity; } ((Behaviour)light).enabled = false; ((Behaviour)light).enabled = true; light.range = 5f; light.renderMode = (LightRenderMode)1; } else { light.intensity = 0f; ((Behaviour)light).enabled = false; } } foreach (Material material in materials) { if ((Object)(object)material == (Object)null) { continue; } if (flag) { if (!material.IsKeywordEnabled("_EMISSION")) { material.EnableKeyword("_EMISSION"); } } else { material.SetColor("_EmissionColor", Color.black); } } } private void ApplyState(float intensity) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) float num = intensity; if (NormalizePerceivedBrightness && intensity > 0f) { float num2 = ComputeLuminanceLinear(NightColor); if (num2 > 0.0001f && referenceLuminance > 0.0001f) { float num3 = referenceLuminance / num2; if (num3 < 0.5f) { num3 = 0.5f; } if (num3 > 2f) { num3 = 2f; } num = intensity * num3; } } foreach (Light light in lights) { if (!((Object)(object)light == (Object)null)) { light.color = NightColor; light.intensity = intensity; } } foreach (Material material in materials) { if (!((Object)(object)material == (Object)null)) { material.EnableKeyword("_EMISSION"); material.SetColor("_EmissionColor", NightColor * num * NightEmissionMultiplier); } } } private static float ComputeLuminanceLinear(Color c) { //IL_0003: 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_000e: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) Color linear = ((Color)(ref c)).linear; return 0.2126f * linear.r + 0.7152f * linear.g + 0.0722f * linear.b; } public static void AttachTo(GameObject prefab, List<string> bulbNames, Color nightColor, float intensity = 2.5f, float emissionMultiplier = 3f) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)prefab.GetComponent<BannerLampController>() != (Object)null)) { BannerLampController bannerLampController = prefab.AddComponent<BannerLampController>(); bannerLampController.BulbObjectNames = bulbNames; bannerLampController.NightColor = nightColor; bannerLampController.NightIntensity = intensity; bannerLampController.NightEmissionMultiplier = emissionMultiplier; } } } public static class BannerLightRegistry { private class BannerLightConfig { public string BulbName; public Color Color; public float Intensity; public float Emission; public BannerLightConfig(string bulb, Color color, float intensity, float emission) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) BulbName = bulb; Color = color; Intensity = intensity; Emission = emission; } public void LoadFromConfig(ConfigFile config, string prefabName) { string text = "BannerLights"; int num = Mathf.RoundToInt(Color.r * 255f); int num2 = Mathf.RoundToInt(Color.g * 255f); int num3 = Mathf.RoundToInt(Color.b * 255f); ConfigEntry<string> val = config.Bind<string>(text, prefabName, $"{num},{num2},{num3} | {Intensity.ToString(CultureInfo.InvariantCulture)} | {Emission.ToString(CultureInfo.InvariantCulture)}", "RGB(0-255) | Intensity | Emission"); Parse(val.Value); } private void Parse(string value) { //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) if (string.IsNullOrWhiteSpace(value)) { return; } string[] array = value.Split(new char[1] { '|' }); if (array.Length == 3) { string[] array2 = array[0].Trim().Split(new char[1] { ',' }); if (array2.Length == 3 && float.TryParse(array2[0], NumberStyles.Float, CultureInfo.InvariantCulture, out var result) && float.TryParse(array2[1], NumberStyles.Float, CultureInfo.InvariantCulture, out var result2) && float.TryParse(array2[2], NumberStyles.Float, CultureInfo.InvariantCulture, out var result3)) { Color = new Color(result / 255f, result2 / 255f, result3 / 255f); } if (float.TryParse(array[1], NumberStyles.Float, CultureInfo.InvariantCulture, out var result4)) { Intensity = result4; } if (float.TryParse(array[2], NumberStyles.Float, CultureInfo.InvariantCulture, out var result5)) { Emission = result5; } } } } private static readonly Dictionary<string, BannerLightConfig> configs = new Dictionary<string, BannerLightConfig> { { "Ravenwood_Banner", new BannerLightConfig("Bolb_Ravenwood_Banner", new Color(0.78f, 0.68f, 0.88f), 1.8f, 1.6f) }, { "Ravenwood_Gate_Banner", new BannerLightConfig("Bolb_Ravenwood_Gate", new Color(0.78f, 0.68f, 0.88f), 1.8f, 1.6f) }, { "Deadwood_Banner", new BannerLightConfig("Bolb_Deadwood_Banner", new Color(0.737f, 0.043f, 0.043f), 1.9f, 1.7f) }, { "Deadwood_Gate_Banner", new BannerLightConfig("Bolb_Deadwood_Gate", new Color(0.737f, 0.043f, 0.043f), 1.9f, 1.7f) }, { "Frostwood_Banner", new BannerLightConfig("Bolb_Frostwood_Banner", new Color(0.55f, 0.9f, 1f), 1.6f, 1.3f) }, { "Frostwood_Gate_Banner", new BannerLightConfig("Bolb_Frostwood_Gate", new Color(0.55f, 0.9f, 1f), 1.6f, 1.3f) }, { "Darkwood_Banner", new BannerLightConfig("Bolb_Darkwood_Banner", new Color(0.3f, 1f, 0.55f), 1.6f, 1.8f) }, { "Darkwood_Gate_Banner", new BannerLightConfig("Bolb_Darkwood_Gate", new Color(0.3f, 1f, 0.55f), 1.6f, 1.8f) }, { "Whitewood_Banner", new BannerLightConfig("Bolb_Whitewood_Banner", new Color(1f, 1f, 1f), 1.6f, 1.8f) }, { "Whitewood_Gate_Banner", new BannerLightConfig("Bolb_Whitewood_Gate", new Color(1f, 1f, 1f), 1.6f, 1.8f) }, { "Redwood_Banner", new BannerLightConfig("Bolb_Redwood_Banner", new Color(1f, 0.165f, 0f), 1.6f, 1.8f) }, { "Redwood_Gate_Banner", new BannerLightConfig("Bolb_Redwood_Gate", new Color(1f, 0.165f, 0f), 1.6f, 1.8f) }, { "Grimgrove_Banner", new BannerLightConfig("Bolb_Grimgrove_Banner", new Color(0.18f, 0.85f, 0.3f), 1.6f, 1.8f) }, { "Grimgrove_Gate_Banner", new BannerLightConfig("Bolb_Grimgrove_Gate", new Color(0.18f, 0.85f, 0.3f), 1.6f, 1.8f) }, { "Acacia_Banner", new BannerLightConfig("Bolb_Acacia_Banner", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Acacia_Gate_Banner", new BannerLightConfig("Bolb_Acacia_Gate", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Jadewood_Banner", new BannerLightConfig("Bolb_Jadewood_Banner", new Color(0.2f, 0.9f, 0.55f), 1.6f, 1.8f) }, { "Jadewood_Gate_Banner", new BannerLightConfig("Bolb_Jadewood_Gate", new Color(0.2f, 0.9f, 0.55f), 1.6f, 1.8f) }, { "JJ_Banner", new BannerLightConfig("Bolb_JJ_Banner", new Color(0.78f, 0.68f, 0.88f), 1.8f, 1.6f) }, { "JJ_Gate_Banner", new BannerLightConfig("Bolb_JJ_Gate", new Color(0.78f, 0.68f, 0.88f), 1.8f, 1.6f) }, { "Scarwood_Banner", new BannerLightConfig("Bolb_Scarwood_Banner", new Color(1f, 0.6f, 0.1f), 1.6f, 1.8f) }, { "Scarwood_Gate_Banner", new BannerLightConfig("Bolb_Scarwood_Gate", new Color(1f, 0.6f, 0.1f), 1.6f, 1.8f) }, { "Sakura_Banner", new BannerLightConfig("Bolb_Sakura_Banner", new Color(1f, 0.45f, 0.65f), 1.6f, 1.8f) }, { "Sakura_Gate_Banner", new BannerLightConfig("Bolb_Sakura_Gate", new Color(1f, 0.45f, 0.65f), 1.6f, 1.8f) }, { "Slayer_Banner", new BannerLightConfig("Bolb_Slayer_Banner", new Color(0.3f, 1f, 0.55f), 1.6f, 1.8f) }, { "Slayer_Gate_Banner", new BannerLightConfig("Bolb_Slayer_Gate", new Color(0.3f, 1f, 0.55f), 1.6f, 1.8f) }, { "Egypt_Banner", new BannerLightConfig("Bolb_Egypt_Banner", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Egypt_Gate_Banner", new BannerLightConfig("Bolb_Egypt_Gate", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Rome_Banner", new BannerLightConfig("Bolb_Rome_Banner", new Color(0.75f, 0.9f, 0.7f), 1.6f, 1.8f) }, { "Rome_Gate_Banner", new BannerLightConfig("Bolb_Rome_Gate", new Color(0.75f, 0.9f, 0.7f), 1.6f, 1.8f) }, { "Snake_Banner", new BannerLightConfig("Bolb_Snake_Banner", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Snake_Gate_Banner", new BannerLightConfig("Bolb_Snake_Gate", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Jonestown_Banner", new BannerLightConfig("Bolb_Jonestown_Banner", new Color(0.74f, 0.68f, 0.88f), 1.6f, 1.6f) }, { "Jonestown_Gate_Banner", new BannerLightConfig("Bolb_Jonestown_Gate", new Color(0.74f, 0.68f, 0.88f), 1.6f, 1.6f) }, { "Jonesland_Banner", new BannerLightConfig("Bolb_Jonesland_Banner", new Color(0.74f, 0.68f, 0.88f), 1.6f, 1.6f) }, { "Jonesland_Gate_Banner", new BannerLightConfig("Bolb_Jonesland_Gate", new Color(0.74f, 0.68f, 0.88f), 1.6f, 1.6f) }, { "Sandstone_Banner", new BannerLightConfig("Bolb_Sandstone_Banner", new Color(0.75f, 0.9f, 0.7f), 1.6f, 1.8f) }, { "Sandstone_Gate_Banner", new BannerLightConfig("Bolb_Sandstone_Gate", new Color(0.75f, 0.9f, 0.7f), 1.6f, 1.8f) }, { "Dragonstone_Banner", new BannerLightConfig("Bolb_Dragonstone_Banner", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Dragonstone_Gate_Banner", new BannerLightConfig("Bolb_Dragonstone_Gate", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Murkwood_Banner", new BannerLightConfig("Bolb_Murkwood_Banner", new Color(0.74f, 0.68f, 0.88f), 1.6f, 1.6f) }, { "Murkwood_Gate_Banner", new BannerLightConfig("Bolb_Murkwood_Gate", new Color(0.74f, 0.68f, 0.88f), 1.6f, 1.6f) }, { "Pirate_1_Banner", new BannerLightConfig("Bolb_Pirate_1_Banner", new Color(0.3f, 1f, 0.55f), 1.6f, 1.8f) }, { "Pirate_1_Gate_Banner", new BannerLightConfig("Bolb_Pirate_1_Gate", new Color(0.3f, 1f, 0.55f), 1.6f, 1.8f) }, { "Pirate_2_Banner", new BannerLightConfig("Bolb_Pirate_2_Banner", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Pirate_2_Gate_Banner", new BannerLightConfig("Bolb_Pirate_2_Gate", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Pirate_3_Banner", new BannerLightConfig("Bolb_Pirate_3_Banner", new Color(0.78f, 0.68f, 0.88f), 1.8f, 1.6f) }, { "Pirate_3_Gate_Banner", new BannerLightConfig("Bolb_Pirate_3_Gate", new Color(0.78f, 0.68f, 0.88f), 1.8f, 1.6f) }, { "Pirate_4_Banner", new BannerLightConfig("Bolb_Pirate_4_Banner", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Pirate_4_Gate_Banner", new BannerLightConfig("Bolb_Pirate_4_Gate", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Whisperwood_Banner", new BannerLightConfig("Bolb_Whisperwood_Banner", new Color(0.9f, 0.3f, 0.78f), 1.6f, 1.6f) }, { "Whisperwood_Gate_Banner", new BannerLightConfig("Bolb_Whisperwood_Gate", new Color(0.9f, 0.3f, 0.78f), 1.6f, 1.6f) }, { "Blackwood_Banner", new BannerLightConfig("Bolb_Blackwood_Banner", new Color(0.65f, 0.85f, 1f), 1.8f, 1.6f) }, { "Blackwood_Gate_Banner", new BannerLightConfig("Bolb_Blackwood_Gate", new Color(0.65f, 0.85f, 1f), 1.8f, 1.6f) }, { "Elmwood_Banner", new BannerLightConfig("Bolb_Elmwood_Banner", new Color(0.2f, 0.9f, 0.55f), 1.6f, 1.8f) }, { "Elmwood_Gate_Banner", new BannerLightConfig("Bolb_Elmwood_Gate", new Color(0.2f, 0.9f, 0.55f), 1.6f, 1.8f) }, { "Willowwood_Banner", new BannerLightConfig("Bolb_Willowwood_Banner", new Color(0.2f, 0.9f, 0.55f), 1.6f, 1.8f) }, { "Willowwood_Gate_Banner", new BannerLightConfig("Bolb_Willowwood_Gate", new Color(0.2f, 0.9f, 0.55f), 1.6f, 1.8f) }, { "Silverstone_Banner", new BannerLightConfig("Bolb_Silverstone_Banner", new Color(0.75f, 0.9f, 0.7f), 1.6f, 1.8f) }, { "Silverstone_Gate_Banner", new BannerLightConfig("Bolb_Silverstone_Gate", new Color(0.75f, 0.9f, 0.7f), 1.6f, 1.8f) }, { "Steelstone_Banner", new BannerLightConfig("Bolb_Steelstone_Banner", new Color(0.78f, 0.68f, 0.88f), 1.8f, 1.6f) }, { "Steelstone_Gate_Banner", new BannerLightConfig("Bolb_Steelstone_Gate", new Color(0.78f, 0.68f, 0.88f), 1.8f, 1.6f) }, { "Gorilla_Banner", new BannerLightConfig("Bolb_Gorilla_Banner", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Gorilla_Gate_Banner", new BannerLightConfig("Bolb_Gorilla_Gate", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Orangutan_Banner", new BannerLightConfig("Bolb_Orangutan_Banner", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Orangutan_Gate_Banner", new BannerLightConfig("Bolb_Orangutan_Gate", new Color(1f, 0.62f, 0.1f), 1.6f, 1.8f) }, { "Mandrill_Banner", new BannerLightConfig("Bolb_Mandrill_Banner", new Color(1f, 0.6f, 0.1f), 1.6f, 1.8f) }, { "Mandrill_Gate_Banner", new BannerLightConfig("Bolb_Mandrill_Gate", new Color(1f, 0.6f, 0.1f), 1.6f, 1.8f) }, { "Eagle_Banner", new BannerLightConfig("Bolb_Eagle_Banner", new Color(0.2f, 0.9f, 0.55f), 1.6f, 1.8f) }, { "Eagle_Gate_Banner", new BannerLightConfig("Bolb_Eagle_Gate", new Color(0.2f, 0.9f, 0.55f), 1.6f, 1.8f) }, { "Wyrmwood_Banner", new BannerLightConfig("Bolb_Wyrmwood_Banner", new Color(0.737f, 0.043f, 0.043f), 1.9f, 1.7f) }, { "Wyrmwood_Gate_Banner", new BannerLightConfig("Bolb_Wyrmwood_Gate", new Color(0.737f, 0.043f, 0.043f), 1.9f, 1.7f) } }; public static void Initialize(ConfigFile config) { foreach (KeyValuePair<string, BannerLightConfig> config2 in configs) { config2.Value.LoadFromConfig(config, config2.Key); } } public static void Register(GameObject prefab) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) if (configs.TryGetValue(((Object)prefab).name, out var value)) { BannerLampController.AttachTo(prefab, new List<string> { value.BulbName }, value.Color, value.Intensity, value.Emission); } } public static List<Color> GetAllColors() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) HashSet<Color> hashSet = new HashSet<Color>(); foreach (BannerLightConfig value in configs.Values) { hashSet.Add(value.Color); } return new List<Color>(hashSet); } } public class LampColorCycler : MonoBehaviour, Hoverable, Interactable { private readonly List<Light> lights = new List<Light>(); private readonly List<Material> materials = new List<Material>(); private List<Color> colors; private int currentIndex = 0; private Piece m_piece; private void Awake() { m_piece = ((Component)this).GetComponent<Piece>(); colors = BannerLightRegistry.GetAllColors(); Transform[] componentsInChildren = ((Component)this).GetComponentsInChildren<Transform>(true); foreach (Transform val in componentsInChildren) { if (!((Object)val).name.StartsWith("Bolb_Biome_")) { continue; } Light[] componentsInChildren2 = ((Component)val).GetComponentsInChildren<Light>(true); foreach (Light val2 in componentsInChildren2) { if ((Object)(object)val2 != (Object)null) { lights.Add(val2); } } Renderer component = ((Component)val).GetComponent<Renderer>(); if ((Object)(object)component != (Object)null && (Object)(object)component.material != (Object)null) { materials.Add(component.material); } } } public string GetHoverText() { string text = (((Object)(object)m_piece != (Object)null) ? m_piece.m_name : "Lamp"); return text + "\n[<color=yellow><b>E</b></color>] Change Light Color"; } public string GetHoverName() { return ((Object)(object)m_piece != (Object)null) ? m_piece.m_name : "Lamp"; } public bool Interact(Humanoid user, bool hold, bool alt) { //IL_0067: Unknown result type (might be due to invalid IL or missing references) if (hold) { return false; } if (colors == null || colors.Count == 0) { return false; } currentIndex++; if (currentIndex >= colors.Count) { currentIndex = 0; } ApplyColor(colors[currentIndex]); return true; } public bool UseItem(Humanoid user, ItemData item) { return false; } private void ApplyColor(Color color) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) foreach (Light light in lights) { if (!((Object)(object)light == (Object)null)) { light.color = color; light.intensity = 2.5f; ((Behaviour)light).enabled = true; } } foreach (Material material in materials) { if (!((Object)(object)material == (Object)null)) { material.EnableKeyword("_EMISSION"); material.SetColor("_EmissionColor", color * 3f); } } } } public static class LampInteractionRegistry { private static readonly List<string> RegisteredPrefabs = new List<string> { "Biome_Gate_Lamp" }; public static void RegisterAll() { foreach (string registeredPrefab in RegisteredPrefabs) { GameObject prefab = PrefabManager.Instance.GetPrefab(registeredPrefab); if ((Object)(object)prefab == (Object)null) { continue; } Transform[] componentsInChildren = prefab.GetComponentsInChildren<Transform>(true); foreach (Transform val in componentsInChildren) { if (((Object)val).name.StartsWith("Bolb_Biome_") && !Object.op_Implicit((Object)(object)((Component)val).GetComponent<LampColorCycler>())) { ((Component)val).gameObject.AddComponent<LampColorCycler>(); } } } } } [BepInPlugin("Ravenwood.Regions", "Ravenwood Regions", "1.0.2")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class RavenwoodRegions : BaseUnityPlugin { public const string PluginGUID = "Ravenwood.Regions"; public const string PluginName = "Ravenwood Regions"; public const string PluginVersion = "1.0.2"; 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) //IL_0044: Unknown result type (might be due to invalid IL or missing references) new Harmony("ravenwood.regions.harmony").PatchAll(); PlayerPreferredCategory = ((BaseUnityPlugin)this).Config.Bind<string>("UI", "CustomHammerTab", "RavenwoodRegions", "Custom hammer tab category name"); PieceManager.Instance.AddPieceCategory(PlayerPreferredCategory.Value); BannerLightRegistry.Initialize(((BaseUnityPlugin)this).Config); Assembly executingAssembly = Assembly.GetExecutingAssembly(); string text = executingAssembly.GetManifestResourceNames().FirstOrDefault((string r) => r.ToLower().Contains("regions")); if (string.IsNullOrEmpty(text)) { ((BaseUnityPlugin)this).Logger.LogError((object)"Could not find embedded asset bundle resource containing 'regions'."); 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); LampInteractionRegistry.RegisterAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)("[RavenwoodRegions] 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 RelicRegistration(string prefab, string display, RequirementConfig[] reqs, string desc, int comfort = 0) { PrefabName = prefab; DisplayName = display; Requirements = reqs; Description = desc; Comfort = comfort; } } public static class RelicRegistrar { private static bool wasAlreadyRegistered = false; public static readonly List<RelicRegistration> AllRegistrations = new List<RelicRegistration> { new RelicRegistration("Ravenwood_Banner", "Ravenwood 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("Darkwood_Banner", "Darkwood 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("Deadwood_Banner", "Deadwood 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("Frostwood_Banner", "Frostwood 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("Whitewood_Banner", "Whitewood 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("Redwood_Banner", "Redwood 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("Grimgrove_Banner", "Grimgrove 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("Acacia_Banner", "Acacia 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("Scarwood_Banner", "Scarwood 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("Jadewood_Banner", "Jadewood 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("Sakura_Banner", "Sakura 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("Slayer_Banner", "Slayer 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("Egypt_Banner", "Egypt 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("Rome_Banner", "Rome 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("JJ_Banner", "James Jones 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("Jonestown_Banner", "Jonestown 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("Jonesland_Banner", "Jonesland 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("Murkwood_Banner", "Murkwood 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("Pirate_1_Banner", "Pirate I 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("Pirate_2_Banner", "Pirate II 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("Pirate_3_Banner", "Pirate III 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("Pirate_4_Banner", "Pirate IV 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("Whisperwood_Banner", "Whisperwood 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("Blackwood_Banner", "Blackwood 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("Willowwood_Banner", "Willowwood 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("Elmwood_Banner", "Elmwood 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("Silverstone_Banner", "Silverstone 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("Steelstone_Banner", "Steelstone 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("Snake_Banner", "Snake 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("Gorilla_Banner", "Gorilla 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("Orangutan_Banner", "Orangutan 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("Mandrill_Banner", "Baboon 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("Eagle_Banner", "Eagle 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("Sandstone_Banner", "Sandstone 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("Dragonstone_Banner", "Dragonstone 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("Wyrmwood_Banner", "Wyrmwood 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_Wall_Banner", "Ravenwood 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("Darkwood_Wall_Banner", "Darkwood 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("Deadwood_Wall_Banner", "Deadwood 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("Frostwood_Wall_Banner", "Frostwood 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("Whitewood_Wall_Banner", "Whitewood 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("Redwood_Wall_Banner", "Redwood 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("Grimgrove_Wall_Banner", "Grimgrove 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("Acacia_Wall_Banner", "Acacia 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("Scarwood_Wall_Banner", "Scarewood 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("Jadewood_Wall_Banner", "Jadewood 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("Sakura_Wall_Banner", "Sakura 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("Slayer_Wall_Banner", "Slayer 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("Egypt_Wall_Banner", "Egypt 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("Rome_Wall_Banner", "Rome 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("JJ_Wall_Banner", "James Jones 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("Jonestown_Wall_Banner", "Jonestown 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("Jonesland_Wall_Banner", "Jonesland 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("Murkwood_Wall_Banner", "Murkwood 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("Pirate_1_Wall_Banner", "Pirate I 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("Pirate_2_Wall_Banner", "Pirate II 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("Pirate_3_Wall_Banner", "Pirate III 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("Pirate_4_Wall_Banner", "Pirate IV 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("Whisperwood_Wall_Banner", "Whisperwood 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("Blackwood_Wall_Banner", "Blackwood 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("Willowwood_Wall_Banner", "Willowwood 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("Elmwood_Wall_Banner", "Elmwood 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("Silverstone_Wall_Banner", "Silverstone 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("Steelstone_Wall_Banner", "Steelstone 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("Snake_Wall_Banner", "Snake 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("Gorilla_Wall_Banner", "Gorilla 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("Orangutan_Wall_Banner", "Orangutan 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("Mandrill_Wall_Banner", "Baboon 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("Eagle_Wall_Banner", "Eagle 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("Sandstone_Wall_Banner", "Sandstone 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("Dragonstone_Wall_Banner", "Dragonstone 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("Wyrmwood_Wall_Banner", "Wyrmwood 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_Gate_Banner", "Ravenwood Gate Banner ", (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."), new RelicRegistration("Darkwood_Gate_Banner", "Darkwood Gate Banner", (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."), new RelicRegistration("Deadwood_Gate_Banner", "Deadwood Gate Banner", (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."), new RelicRegistration("Frostwood_Gate_Banner", "Frostwood Gate Banner", (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."), new RelicRegistration("Whitewood_Gate_Banner", "Whitewood Gate Banner", (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."), new RelicRegistration("Redwood_Gate_Banner", "Redwood Gate Banner", (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."), new RelicRegistration("Grimgrove_Gate_Banner", "Grimgrove Gate Banner", (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."), new RelicRegistration("Acacia_Gate_Banner", "Acacia Gate Banner", (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."), new RelicRegistration("Scarwood_Gate_Banner", "Scarewood Gate Banner", (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."), new RelicRegistration("Jadewood_Gate_Banner", "Jadewood Gate Banner", (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."), new RelicRegistration("Sakura_Gate_Banner", "Sakura Gate Banner", (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."), new RelicRegistration("Slayer_Gate_Banner", "Slayer`s Gate Banner", (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."), new RelicRegistration("Egypt_Gate_Banner", "Egypt Gate Banner", (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."), new RelicRegistration("Rome_Gate_Banner", "Rome Gate Banner", (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."), new RelicRegistration("JJ_Gate_Banner", "James Jones Gate Banner", (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."), new RelicRegistration("Jonestown_Gate_Banner", "Jonestown Gate Banner", (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."), new RelicRegistration("Jonesland_Gate_Banner", "Jonesland Gate Banner", (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."), new RelicRegistration("Murkwood_Gate_Banner", "Murkwood Gate Banner", (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."), new RelicRegistration("Pirate_1_Gate_Banner", "Pirate I Gate Banner", (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."), new RelicRegistration("Pirate_2_Gate_Banner", "Pirate II Gate Banner", (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."), new RelicRegistration("Pirate_3_Gate_Banner", "Pirate III Gate Banner", (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."), new RelicRegistration("Pirate_4_Gate_Banner", "Pirate IV Gate Banner", (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."), new RelicRegistration("Whisperwood_Gate_Banner", "Whisperwood Gate Banner", (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."), new RelicRegistration("Blackwood_Gate_Banner", "Blackwood Gate Banner", (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."), new RelicRegistration("Willowwood_Gate_Banner", "Willowwood Gate Banner", (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."), new RelicRegistration("Elmwood_Gate_Banner", "Elmwood Gate Banner", (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."), new RelicRegistration("Silverstone_Gate_Banner", "Silverstone Gate Banner", (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."), new RelicRegistration("Steelstone_Gate_Banner", "Steelstone Gate Banner", (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."), new RelicRegistration("Snake_Gate_Banner", "Snake Gate Banner", (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."), new RelicRegistration("Gorilla_Gate_Banner", "Gorilla Gate Banner", (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."), new RelicRegistration("Orangutan_Gate_Banner", "Orangutan Gate Banner", (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."), new RelicRegistration("Mandrill_Gate_Banner", "Baboon Gate Banner", (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."), new RelicRegistration("Eagle_Gate_Banner", "Eagle Gate Banner", (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."), new RelicRegistration("Sandstone_Gate_Banner", "Sandstone Gate Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Stone", 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."), new RelicRegistration("Dragonstone_Gate_Banner", "Dragonstone Entrance Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Stone", 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."), new RelicRegistration("Wyrmwood_Gate_Banner", "Wyrmwood Entrance Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Stone", 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."), new RelicRegistration("Biome_Gate_1", "World Gate I.", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Stone", 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."), new RelicRegistration("Biome_Gate_2", "World Gate II.", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Stone", 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."), new RelicRegistration("Biome_Gate_3", "World Gate III.", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Stone", 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."), new RelicRegistration("Biome_Gate_Lamp", "World Gate Lamp I.", (RequirementConfig[])(object)new RequirementConfig[2] { new RequirementConfig("Stone", 5, 0, true), new RequirementConfig("Resin", 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_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Expected O, but got Unknown //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Expected O, but got Unknown //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Expected O, but got Unknown //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Expected O, but got Unknown //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_026b: Expected O, but got Unknown //IL_027c: Unknown result type (might be due to invalid IL or missing references) //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Expected O, but got Unknown //IL_0332: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_0343: Unknown result type (might be due to invalid IL or missing references) //IL_0354: Unknown result type (might be due to invalid IL or missing references) //IL_035d: Unknown result type (might be due to invalid IL or missing references) //IL_036c: Expected O, but got Unknown //IL_038f: Unknown result type (might be due to invalid IL or missing references) //IL_0399: Expected O, but got Unknown if ((Object)(object)bundle == (Object)null) { return false; } if ((Object)(object)PrefabManager.Instance.GetPrefab(reg.PrefabName) != (Object)null) { return true; } GameObject val = bundle.LoadAsset<GameObject>(reg.PrefabName); if ((Object)(object)val == (Object)null) { Logger.LogWarning((object)("[RavenwoodRegions] Missing prefab: " + reg.PrefabName)); 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>(); if ((Object)(object)val3 == (Object)null) { val3 = val.AddComponent<Piece>(); } val3.m_name = reg.DisplayName; val3.m_description = reg.Description; val3.m_groundOnly = false; if (reg.PrefabName.StartsWith("Biome_Gate")) { if ((Object)(object)val3 == (Object)null) { Debug.LogError((object)("[RavenwoodRegions] " + reg.PrefabName + " missing Piece (set in Unity)")); return false; } if ((Object)(object)val2 == (Object)null) { Debug.LogError((object)("[RavenwoodRegions] " + reg.PrefabName + " missing ZNetView (set in Unity)")); return 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>(); if ((Object)(object)val5 == (Object)null) { val5 = val.AddComponent<WearNTear>(); } val5.m_health = 1000f; 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; if (reg.PrefabName.ToLowerInvariant().Contains("banner") && !Object.op_Implicit((Object)(object)val.GetComponent<BannerInteraction>())) { val.AddComponent<BannerInteraction>(); } if (reg.Comfort > 0) { val3.m_comfort = reg.Comfort; } BannerLightRegistry.Register(val); Sprite val7 = bundle.LoadAsset<Sprite>(reg.PrefabName); if ((Object)(object)val7 != (Object)null) { val3.m_icon = val7; } string craftingStation = "piece_workbench"; PieceConfig val8 = new PieceConfig { PieceTable = "Hammer", Category = RavenwoodRegions.PlayerPreferredCategory.Value, CraftingStation = craftingStation, Requirements = reg.Requirements }; if (PieceManager.Instance.GetPiece(reg.PrefabName) == null) { PieceManager.Instance.AddPiece(new CustomPiece(val, true, val8)); } return true; } } public static class SFX_VFX_Registry { private static readonly HashSet<string> WoodObjects = new HashSet<string> { "Ravenwood_Gate_Banner", "Deadwood_Gate_Banner", "Frostwood_Gate_Banner", "Darkwood_Gate_Banner", "Whitewood_Gate_Banner", "Redwood_Gate_Banner", "Grimgrove_Gate_Banner", "Acacia_Gate_Banner", "Scarwood_Gate_Banner", "Jadewood_Gate_Banner", "JJ_Gate_Banner", "Sakura_Gate_Banner", "Slayer_Gate_Banner", "Egypt_Gate_Banner", "Rome_Gate_Banner", "Snake_Gate_Banner", "Jonestown_Gate_Banner", "Jonesland_Gate_Banner", "Sandstone_Gate_Banner", "Dragonstone_Gate_Banner", "Murkwood_Gate_Banner", "Pirate_1_Gate_Banner", "Pirate_2_Gate_Banner", "Pirate_3_Gate_Banner", "Pirate_4_Gate_Banner", "Whisperwood_Gate_Banner", "Blackwood_Gate_Banner", "Elmwood_Gate_Banner", "Willowwood_Gate_Banner", "Silverstone_Gate_Banner", "Steelstone_Gate_Banner", "Gorilla_Gate_Banner", "Orangutan_Gate_Banner", "Mandrill_Gate_Banner", "Eagle_Gate_Banner", "Wyrmwood_Gate_Banner", "Ravenwood_Banner", "Frostwood_Banner", "Deadwood_Banner", "Darkwood_Banner", "Whitewood_Banner", "Redwood_Banner", "Grimgrove_Banner", "Acacia_Banner", "Scarwood_Banner", "Jadewood_Banner", "JJ_Banner", "Sakura_Banner", "Slayer_Banner", "Egypt_Banner", "Rome_Banner", "Snake_Banner", "Jonestown_Banner", "Jonesland_Banner", "Sandstone_Banner", "Dragonstone_Banner", "Murkwood_Banner", "Pirate_1_Banner", "Pirate_2_Banner", "Pirate_3_Banner", "Pirate_4_Banner", "Whisperwood_Banner", "Blackwood_Banner", "Elmwood_Banner", "Willowwood_Banner", "Silverstone_Banner", "Steelstone_Banner", "Gorilla_Banner", "Orangutan_Banner", "Mandrill_Banner", "Eagle_Banner", "Wyrmwood_Banner", "Ravenwood_Wall_Banner", "Deadwood_Wall_Banner", "Frostwood_Wall_Banner", "Darkwood_Wall_Banner", "Whitewood_Wall_Banner", "Redwood_Wall_Banner", "Grimgrove_Wall_Banner", "Acacia_Wall_Banner", "Scarwood_Wall_Banner", "Jadewood_Wall_Banner", "JJ_Wall_Banner", "Sakura_Wall_Banner", "Slayer_Wall_Banner", "Egypt_Wall_Banner", "Rome_Wall_Banner", "Snake_Wall_Banner", "Jonestown_Wall_Banner", "Jonesland_Wall_Banner", "Sandstone_Wall_Banner", "Dragonstone_Wall_Banner", "Murkwood_Wall_Banner", "Pirate_1_Wall_Banner", "Pirate_2_Wall_Banner", "Pirate_3_Wall_Banner", "Pirate_4_Wall_Banner", "Whisperwood_Wall_Banner", "Blackwood_Wall_Banner", "Elmwood_Wall_Banner", "Willowwood_Wall_Banner", "Silverstone_Wall_Banner", "Steelstone_Wall_Banner", "Gorilla_Wall_Banner", "Orangutan_Wall_Banner", "Mandrill_Wall_Banner", "Eagle_Wall_Banner", "Wyrmwood_Wall_Banner" }; public static void GetEffects(string prefabName, out GameObject vfxPlace, out GameObject sfxPlace, out GameObject destroyVFX, out GameObject destroySFX) { if (WoodObjects.Contains(prefabName)) { ZNetScene instance = ZNetScene.instance; vfxPlace = ((instance != null) ? instance.GetPrefab("vfx_Place_wood") : null); ZNetScene instance2 = ZNetScene.instance; sfxPlace = ((instance2 != null) ? instance2.GetPrefab("sfx_build_hammer_wood") : null); ZNetScene instance3 = ZNetScene.instance; destroyVFX = ((instance3 != null) ? instance3.GetPrefab("vfx_destroyed") : null); ZNetScene instance4 = ZNetScene.instance; destroySFX = ((instance4 != null) ? instance4.GetPrefab("sfx_wood_break") : null); } else { ZNetScene instance5 = ZNetScene.instance; vfxPlace = ((instance5 != null) ? instance5.GetPrefab("vfx_Place_stone") : null); ZNetScene instance6 = ZNetScene.instance; sfxPlace = ((instance6 != null) ? instance6.GetPrefab("sfx_build_hammer_stone") : null); ZNetScene instance7 = ZNetScene.instance; destroyVFX = ((instance7 != null) ? instance7.GetPrefab("vfx_destroyed") : null); ZNetScene instance8 = ZNetScene.instance; destroySFX = ((instance8 != null) ? instance8.GetPrefab("sfx_rock_destroyed") : null); } } }