using 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("RavenwoodBiomeBanners")] [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 Biome Regions")] [assembly: AssemblyCopyright("")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")] [assembly: AssemblyFileVersion("1.0.3")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.3.0")] namespace RavenwoodBiomeBanners; public class BannerInteraction : MonoBehaviour { private Cloth _cloth; private float _lastPush; private void Awake() { _cloth = ((Component)this).GetComponentInChildren(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(); 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 BulbObjectNames = new List(); 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 lights = new List(); private readonly List materials = new List(); 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)((Component)this).GetComponentsInChildren(true)).FirstOrDefault((Func)((Transform t) => ((Object)t).name == name)); if ((Object)(object)val == (Object)null) { continue; } Light[] componentsInChildren = ((Component)val).GetComponentsInChildren(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(); 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 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() != (Object)null)) { BannerLampController bannerLampController = prefab.AddComponent(); 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 val = config.Bind(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 configs = new Dictionary { { "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) }, { "Dreadmire_Banner", new BannerLightConfig("Bolb_Dreadmire_Banner", new Color(0.333f, 0.839f, 0.745f), 1.9f, 1.7f) }, { "Dreadmire_Gate_Banner", new BannerLightConfig("Bolb_Dreadmire_Gate", new Color(0.333f, 0.839f, 0.745f), 1.9f, 1.7f) }, { "TheWall_Banner", new BannerLightConfig("Bolb_TheWall_Banner", new Color(1f, 1f, 1f), 1.6f, 1.8f) }, { "TheWall_Gate_Banner", new BannerLightConfig("Bolb_TheWall_Gate", new Color(1f, 1f, 1f), 1.6f, 1.8f) } }; public static void Initialize(ConfigFile config) { foreach (KeyValuePair 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 { value.BulbName }, value.Color, value.Intensity, value.Emission); } } public static List GetAllColors() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) HashSet hashSet = new HashSet(); foreach (BannerLightConfig value in configs.Values) { hashSet.Add(value.Color); } return new List(hashSet); } } public class LampColorCycler : MonoBehaviour, Hoverable, Interactable { private Piece m_piece; private LampNetworkController m_controller; private void Awake() { m_piece = ((Component)this).GetComponentInParent(); m_controller = ((Component)this).GetComponentInParent(); } public string GetHoverText() { string text = (((Object)(object)m_piece != (Object)null) ? m_piece.m_name : "Lamp"); return text + "\n[E] 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) { if (hold) { return false; } if ((Object)(object)m_controller == (Object)null) { return false; } return m_controller.CycleToNextColor(); } public bool UseItem(Humanoid user, ItemData item) { return false; } } public static class LampInteractionRegistry { private static ConfigEntry WorldGateLampInteractionEnabled; private static readonly List RegisteredPrefabs = new List { "Biome_Gate_Lamp" }; public static void Initialize(ConfigFile config) { WorldGateLampInteractionEnabled = config.Bind("World Gate Lamp", "EnableColorInteraction", true, "Allow players to press E on the World Gate Lamp to cycle its light color."); } public static void RegisterAll() { foreach (string registeredPrefab in RegisteredPrefabs) { GameObject prefab = PrefabManager.Instance.GetPrefab(registeredPrefab); if ((Object)(object)prefab == (Object)null) { continue; } if (!Object.op_Implicit((Object)(object)prefab.GetComponent())) { prefab.AddComponent(); } if (WorldGateLampInteractionEnabled != null && !WorldGateLampInteractionEnabled.Value) { continue; } Transform[] componentsInChildren = prefab.GetComponentsInChildren(true); foreach (Transform val in componentsInChildren) { if (((Object)val).name.StartsWith("Bolb_Biome_") && !Object.op_Implicit((Object)(object)((Component)val).GetComponent())) { ((Component)val).gameObject.AddComponent(); } } } } } public class LampNetworkController : MonoBehaviour { private const string HasColorKey = "RWB_WorldGateLamp_HasColor"; private const string ColorKey = "RWB_WorldGateLamp_Color"; private const string SetColorRpc = "RWB_WorldGateLamp_SetColor"; private readonly List lights = new List(); private readonly List materials = new List(); private ZNetView m_nview; private List colors; private Color lastAppliedColor; private bool hasAppliedColor; private int currentIndex; private void Awake() { m_nview = ((Component)this).GetComponent(); colors = BannerLightRegistry.GetAllColors(); Transform[] componentsInChildren = ((Component)this).GetComponentsInChildren(true); foreach (Transform val in componentsInChildren) { if (!((Object)val).name.StartsWith("Bolb_Biome_")) { continue; } Light[] componentsInChildren2 = ((Component)val).GetComponentsInChildren(true); foreach (Light val2 in componentsInChildren2) { if ((Object)(object)val2 != (Object)null) { lights.Add(val2); } } Renderer component = ((Component)val).GetComponent(); if ((Object)(object)component != (Object)null && (Object)(object)component.material != (Object)null) { materials.Add(component.material); } } if ((Object)(object)m_nview != (Object)null && m_nview.IsValid()) { m_nview.Register("RWB_WorldGateLamp_SetColor", (Action)RPC_SetColor); SyncFromZDO(); ((MonoBehaviour)this).InvokeRepeating("SyncFromZDO", 0.2f, 0.2f); } } private void OnDestroy() { ((MonoBehaviour)this).CancelInvoke("SyncFromZDO"); } public bool CycleToNextColor() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) if (colors == null || colors.Count == 0) { return false; } if (TryGetSavedColor(out var color)) { currentIndex = FindClosestColorIndex(color); } currentIndex++; if (currentIndex >= colors.Count) { currentIndex = 0; } Color val = colors[currentIndex]; ApplyColor(val); if ((Object)(object)m_nview != (Object)null && m_nview.IsValid()) { Vector3 val2 = default(Vector3); ((Vector3)(ref val2))..ctor(val.r, val.g, val.b); m_nview.InvokeRPC("RWB_WorldGateLamp_SetColor", new object[1] { val2 }); } return true; } private void RPC_SetColor(long sender, Vector3 rgb) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)m_nview == (Object)null) && m_nview.IsValid() && m_nview.IsOwner()) { Color val = default(Color); ((Color)(ref val))..ctor(Mathf.Clamp01(rgb.x), Mathf.Clamp01(rgb.y), Mathf.Clamp01(rgb.z)); ZDO zDO = m_nview.GetZDO(); if (zDO != null) { zDO.Set("RWB_WorldGateLamp_Color", new Vector3(val.r, val.g, val.b)); zDO.Set("RWB_WorldGateLamp_HasColor", true); ApplyColor(val); } } } private void SyncFromZDO() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) if (TryGetSavedColor(out var color) && (!hasAppliedColor || !ApproximatelySameColor(lastAppliedColor, color))) { ApplyColor(color); } } private bool TryGetSavedColor(out Color color) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) color = Color.white; if ((Object)(object)m_nview == (Object)null || !m_nview.IsValid()) { return false; } ZDO zDO = m_nview.GetZDO(); if (zDO == null || !zDO.GetBool("RWB_WorldGateLamp_HasColor", false)) { return false; } Vector3 vec = zDO.GetVec3("RWB_WorldGateLamp_Color", Vector3.one); color = new Color(Mathf.Clamp01(vec.x), Mathf.Clamp01(vec.y), Mathf.Clamp01(vec.z)); return true; } private void ApplyColor(Color color) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: 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) lastAppliedColor = color; hasAppliedColor = true; 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); } } } private int FindClosestColorIndex(Color color) { //IL_0015: 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_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) int result = 0; float num = float.MaxValue; for (int i = 0; i < colors.Count; i++) { Color val = colors[i]; float num2 = val.r - color.r; float num3 = val.g - color.g; float num4 = val.b - color.b; float num5 = num2 * num2 + num3 * num3 + num4 * num4; if (num5 < num) { num = num5; result = i; } } return result; } private static bool ApproximatelySameColor(Color a, Color b) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) return Mathf.Abs(a.r - b.r) < 0.0001f && Mathf.Abs(a.g - b.g) < 0.0001f && Mathf.Abs(a.b - b.b) < 0.0001f; } } public static class PieceConfigRegistry { private sealed class PieceOptions { public RequirementConfig[] DefaultRequirements; public ConfigEntry CraftingCosts; public ConfigEntry Visible; public ConfigEntry Comfort; public ConfigEntry CraftingStation; } private static readonly Dictionary configs = new Dictionary(); public static void Initialize(ConfigFile config, IEnumerable registrations) { if (config == null || registrations == null || configs.Count > 0) { return; } foreach (RelicRegistration registration in registrations) { string text = "Pieces - " + registration.PrefabName; RequirementConfig[] array = CloneRequirements(registration.Requirements); configs[registration.PrefabName] = new PieceOptions { DefaultRequirements = array, CraftingCosts = config.Bind(text, "CraftingCosts", FormatRequirements(array), "Build costs as ItemPrefab:Amount pairs separated by commas. Leave empty for no build cost."), Visible = config.Bind(text, "Visible", true, "Show this prefab in the hammer build menu."), Comfort = config.Bind(text, "Comfort", registration.Comfort, "Comfort value for this prefab. Existing default behavior is preserved when both this value and the registration default are 0."), CraftingStation = config.Bind(text, "CraftingStation", "piece_workbench", "Required crafting station prefab. Use None or leave empty for no required crafting station.") }; } } public static RequirementConfig[] GetRequirements(RelicRegistration reg) { if (reg == null || !configs.TryGetValue(reg.PrefabName, out var value)) { return (reg != null) ? CloneRequirements(reg.Requirements) : Array.Empty(); } if (TryParseRequirements(value.CraftingCosts.Value, out var requirements)) { return requirements; } Logger.LogWarning((object)("[RavenwoodBiomeBanners] Invalid CraftingCosts config for " + reg.PrefabName + ". Keeping the original recipe.")); return CloneRequirements(value.DefaultRequirements); } public static bool GetVisible(RelicRegistration reg) { PieceOptions value; return reg == null || !configs.TryGetValue(reg.PrefabName, out value) || value.Visible.Value; } public static int GetComfort(RelicRegistration reg) { PieceOptions value; return (reg != null && configs.TryGetValue(reg.PrefabName, out value)) ? Math.Max(0, value.Comfort.Value) : (reg?.Comfort ?? 0); } public static string GetCraftingStation(RelicRegistration reg) { PieceOptions value; string text = ((reg != null && configs.TryGetValue(reg.PrefabName, out value)) ? value.CraftingStation.Value : "piece_workbench"); if (string.IsNullOrWhiteSpace(text) || text.Equals("None", StringComparison.OrdinalIgnoreCase) || text.Equals("Disabled", StringComparison.OrdinalIgnoreCase)) { return string.Empty; } return text.Trim(); } private static string FormatRequirements(IEnumerable requirements) { if (requirements == null) { return string.Empty; } return string.Join(", ", requirements.Select((RequirementConfig r) => r.Item + ":" + r.Amount)); } private static bool TryParseRequirements(string value, out RequirementConfig[] requirements) { //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Expected O, but got Unknown requirements = Array.Empty(); if (string.IsNullOrWhiteSpace(value)) { return true; } List list = new List(); string[] array = value.Split(new char[1] { ',' }); string[] array2 = array; foreach (string text in array2) { string text2 = text.Trim(); if (text2.Length != 0) { int num = text2.LastIndexOf(':'); if (num <= 0 || num >= text2.Length - 1) { return false; } string text3 = text2.Substring(0, num).Trim(); string s = text2.Substring(num + 1).Trim(); if (text3.Length == 0 || !int.TryParse(s, out var result) || result <= 0) { return false; } list.Add(new RequirementConfig(text3, result, 0, true)); } } requirements = list.ToArray(); return true; } private static RequirementConfig[] CloneRequirements(IEnumerable requirements) { if (requirements == null) { return Array.Empty(); } return requirements.Select((Func)((RequirementConfig r) => new RequirementConfig(r.Item, r.Amount, r.AmountPerLevel, r.Recover))).ToArray(); } } [BepInPlugin("Ravenwood.BiomeBanners", "Ravenwood Biome Banners", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class RavenwoodBiomeBanners : BaseUnityPlugin { public const string PluginGUID = "Ravenwood.BiomeBanners"; public const string PluginName = "Ravenwood Biome Banners"; public const string PluginVersion = "1.0.0"; private AssetBundle relicsBundle; public static ConfigEntry 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.biomebanners.harmony").PatchAll(); PlayerPreferredCategory = ((BaseUnityPlugin)this).Config.Bind("UI", "CustomHammerTab", "Ravenwood", "Custom hammer tab category name"); PieceManager.Instance.AddPieceCategory(PlayerPreferredCategory.Value); BannerLightRegistry.Initialize(((BaseUnityPlugin)this).Config); PieceConfigRegistry.Initialize(((BaseUnityPlugin)this).Config, RelicRegistrar.AllRegistrations); LampInteractionRegistry.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)("[RavenwoodBiomeBanners] 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 AllRegistrations = new List { new RelicRegistration("Ravenwood_Banner", "Ravenwood Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 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("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Dreadmire_Banner", "Dreadmire Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("TheWall_Banner", "TheWall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Wood", 5, 0, true), new RequirementConfig("LeatherScraps", 3, 0, true), new RequirementConfig("DeerHide", 1, 0, true), new RequirementConfig("RWc_Deer", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("TheRavenwood_Wall_Banner", "The Ravenwood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Darkwood_Wall_Banner", "Darkwood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Deadwood_Wall_Banner", "Deadwood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Frostwood_Wall_Banner", "Frostwood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Whitewood_Wall_Banner", "Whitewood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Redwood_Wall_Banner", "Redwood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Grimgrove_Wall_Banner", "Grimgrove Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Acacia_Wall_Banner", "Acacia Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Scarwood_Wall_Banner", "Scarewood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Jadewood_Wall_Banner", "Jadewood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Sakura_Wall_Banner", "Sakura Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Slayer_Wall_Banner", "Slayer Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Egypt_Wall_Banner", "Egypt Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Rome_Wall_Banner", "Rome Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("JJ_Wall_Banner", "James Jones Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Jonestown_Wall_Banner", "Jonestown Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Jonesland_Wall_Banner", "Jonesland Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Murkwood_Wall_Banner", "Murkwood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Pirate_1_Wall_Banner", "Pirate I Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Pirate_2_Wall_Banner", "Pirate II Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Pirate_3_Wall_Banner", "Pirate III Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Pirate_4_Wall_Banner", "Pirate IV Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Whisperwood_Wall_Banner", "Whisperwood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Blackwood_Wall_Banner", "Blackwood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Willowwood_Wall_Banner", "Willowwood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Elmwood_Wall_Banner", "Elmwood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Silverstone_Wall_Banner", "Silverstone Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Steelstone_Wall_Banner", "Steelstone Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Snake_Wall_Banner", "Snake Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Gorilla_Wall_Banner", "Gorilla Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Orangutan_Wall_Banner", "Orangutan Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Mandrill_Wall_Banner", "Baboon Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Eagle_Wall_Banner", "Eagle Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Sandstone_Wall_Banner", "Sandstone Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Dragonstone_Wall_Banner", "Dragonstone Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Wyrmwood_Wall_Banner", "Wyrmwood Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("Dreadmire_Wall_Banner", "Dreadmire Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 0, true) }, "A custom decorative piece."), new RelicRegistration("TheWall_Wall_Banner", "TheWall Wall Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("BronzeNails", 2, 0, true), new RequirementConfig("LeatherScraps", 5, 0, true), new RequirementConfig("DeerHide", 2, 0, true), new RequirementConfig("RWc_Deer", 10, 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 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("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Dreadmire_Gate_Banner", "Dreadmire Gate Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("RoundLog", 25, 0, true), new RequirementConfig("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("TheWall_Gate_Banner", "TheWall Gate Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("RoundLog", 25, 0, true), new RequirementConfig("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Sandstone_Gate_Banner", "Sandstone Entrance Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Stone", 100, 0, true), new RequirementConfig("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Bear", 20, 0, true) }, "A custom decorative piece."), new RelicRegistration("Dragonstone_Gate_Banner", "Dragonstone Entrance Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Stone", 50, 0, true), new RequirementConfig("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Snake", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Wyrmwood_Gate_Banner", "Wyrmwood Entrance Banner", (RequirementConfig[])(object)new RequirementConfig[4] { new RequirementConfig("Stone", 100, 0, true), new RequirementConfig("LeatherScraps", 10, 0, true), new RequirementConfig("DeerHide", 3, 0, true), new RequirementConfig("RWc_Wolf", 5, 0, true) }, "A custom decorative piece."), new RelicRegistration("Biome_Gate_1", "World Gate I.", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Stone", 100, 0, true), new RequirementConfig("RWc_Wolf", 5, 0, true), new RequirementConfig("RWc_Lion", 1, 0, true) }, "A custom decorative piece."), new RelicRegistration("Biome_Gate_2", "World Gate II.", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Stone", 50, 0, true), new RequirementConfig("RWc_Snake", 5, 0, true), new RequirementConfig("RWc_Lion", 1, 0, true) }, "A custom decorative piece."), new RelicRegistration("Biome_Gate_3", "World Gate III.", (RequirementConfig[])(object)new RequirementConfig[3] { new RequirementConfig("Stone", 100, 0, true), new RequirementConfig("RWc_Bear", 20, 0, true), new RequirementConfig("RWc_Lion", 1, 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_037b: Unknown result type (might be due to invalid IL or missing references) //IL_0380: Unknown result type (might be due to invalid IL or missing references) //IL_038c: Unknown result type (might be due to invalid IL or missing references) //IL_039d: Unknown result type (might be due to invalid IL or missing references) //IL_03a6: Unknown result type (might be due to invalid IL or missing references) //IL_03af: Unknown result type (might be due to invalid IL or missing references) //IL_03ba: Expected O, but got Unknown //IL_03dd: Unknown result type (might be due to invalid IL or missing references) //IL_03e7: 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(reg.PrefabName); if ((Object)(object)val == (Object)null) { Logger.LogWarning((object)("[RavenwoodBiomeBanners] Missing prefab: " + reg.PrefabName)); return false; } ((Object)val).name = reg.PrefabName; ZNetView val2 = val.GetComponent(); if ((Object)(object)val2 == (Object)null) { val2 = val.AddComponent(); } val2.m_persistent = true; val2.m_syncInitialScale = true; if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } Piece val3 = val.GetComponent(); if ((Object)(object)val3 == (Object)null) { val3 = val.AddComponent(); } 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)("[RavenwoodBiomeBanners] " + reg.PrefabName + " missing Piece (set in Unity)")); return false; } if ((Object)(object)val2 == (Object)null) { Debug.LogError((object)("[RavenwoodBiomeBanners] " + 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 list = new List(); 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(); if ((Object)(object)val5 == (Object)null) { val5 = val.AddComponent(); } val5.m_health = 1000f; val5.m_noRoofWear = true; EffectList val6 = new EffectList(); List list2 = new List(); 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())) { val.AddComponent(); } int comfort = PieceConfigRegistry.GetComfort(reg); if (comfort > 0 || reg.Comfort > 0) { val3.m_comfort = comfort; } BannerLightRegistry.Register(val); Sprite val7 = bundle.LoadAsset(reg.PrefabName); if ((Object)(object)val7 != (Object)null) { val3.m_icon = val7; } string craftingStation = PieceConfigRegistry.GetCraftingStation(reg); RequirementConfig[] requirements = PieceConfigRegistry.GetRequirements(reg); bool visible = PieceConfigRegistry.GetVisible(reg); if (requirements.Length == 0) { val3.m_resources = (Requirement[])(object)new Requirement[0]; } if (string.IsNullOrWhiteSpace(craftingStation)) { val3.m_craftingStation = null; } PieceConfig val8 = new PieceConfig { PieceTable = "Hammer", Category = RavenwoodBiomeBanners.PlayerPreferredCategory.Value, CraftingStation = craftingStation, Requirements = requirements, Enabled = visible }; 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 WoodObjects = new HashSet { "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", "Dreadmire_Gate_Banner", "TheWall_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", "Dreadmire_Banner", "TheWall_Banner", "TheRavenwood_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", "Dreadmire_Wall_Banner", "TheWall_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); } } }