Decompiled source of Ravenwood Regions v1.0.3

plugins/RavenwoodRegions/RavenwoodRegions.dll

Decompiled 2 months ago
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("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);
		}
	}
}