Decompiled source of BuildableNature v1.0.9

BuildableNature.dll

Decompiled 2 weeks ago
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using BuildableNature;
using HarmonyLib;
using JetBrains.Annotations;
using Microsoft.CodeAnalysis;
using PieceManager;
using ServerSync;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using YamlDotNet.Core;
using YamlDotNet.Core.Events;
using YamlDotNet.Core.Tokens;
using YamlDotNet.Helpers;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.BufferedDeserialization;
using YamlDotNet.Serialization.BufferedDeserialization.TypeDiscriminators;
using YamlDotNet.Serialization.Converters;
using YamlDotNet.Serialization.EventEmitters;
using YamlDotNet.Serialization.NamingConventions;
using YamlDotNet.Serialization.NodeDeserializers;
using YamlDotNet.Serialization.NodeTypeResolvers;
using YamlDotNet.Serialization.ObjectFactories;
using YamlDotNet.Serialization.ObjectGraphTraversalStrategies;
using YamlDotNet.Serialization.ObjectGraphVisitors;
using YamlDotNet.Serialization.Schemas;
using YamlDotNet.Serialization.TypeInspectors;
using YamlDotNet.Serialization.TypeResolvers;
using YamlDotNet.Serialization.Utilities;
using YamlDotNet.Serialization.ValueDeserializers;

[assembly: AssemblyFileVersion("1.0.9")]
[assembly: Guid("E0E2F92E-557C-4A05-9D89-AA92A0BD75C4")]
[assembly: ComVisible(false)]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCopyright("Copyright ©  2022")]
[assembly: AssemblyProduct("BuildableNature")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyTitle("BuildableNature")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: CompilationRelaxations(8)]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyCompany("RustyMods")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.9.0")]
[module: <084422a7-c4c7-4c90-86cd-9973527fa3fa>RefSafetyRules(11)]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[<90f1ad08-be77-445d-bbb9-10e1b4de9101>Embedded]
	internal sealed class <90f1ad08-be77-445d-bbb9-10e1b4de9101>EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[<90f1ad08-be77-445d-bbb9-10e1b4de9101>Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class <1cc0ea6f-c6e5-4fd3-9799-402becf869c3>NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public <1cc0ea6f-c6e5-4fd3-9799-402becf869c3>NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public <1cc0ea6f-c6e5-4fd3-9799-402becf869c3>NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[<90f1ad08-be77-445d-bbb9-10e1b4de9101>Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class <e36c1ad3-ae5c-40d7-b217-22701fce634b>NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public <e36c1ad3-ae5c-40d7-b217-22701fce634b>NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[CompilerGenerated]
	[<90f1ad08-be77-445d-bbb9-10e1b4de9101>Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class <084422a7-c4c7-4c90-86cd-9973527fa3fa>RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public <084422a7-c4c7-4c90-86cd-9973527fa3fa>RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	[<90f1ad08-be77-445d-bbb9-10e1b4de9101>Embedded]
	[CompilerGenerated]
	internal sealed class ExtensionMarkerAttribute : Attribute
	{
		private readonly string <Name>k__BackingField;

		public string Name => <Name>k__BackingField;

		public ExtensionMarkerAttribute(string name)
		{
			<Name>k__BackingField = name;
		}
	}
}
namespace Managers
{
	public static class ReadMeBuilder
	{
		private static bool buildReadme;

		private static bool exportSprites;

		static ReadMeBuilder()
		{
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Expected O, but got Unknown
			buildReadme = false;
			exportSprites = false;
			BuildableNaturePlugin.instance._harmony.Patch((MethodBase)AccessTools.DeclaredMethod(typeof(ZNetScene), "Awake", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(ReadMeBuilder), "Build", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
		}

		public static void Init(bool exportIcons = true)
		{
			buildReadme = true;
			exportSprites = exportIcons;
		}

		public static void ExportLocalization()
		{
			string text = Path.Combine(Paths.ConfigPath, "BuildableNature");
			Directory.CreateDirectory(text);
			StringBuilder stringBuilder = new StringBuilder();
			foreach (BuildPiece registeredPiece in BuildPiece.registeredPieces)
			{
				string name = registeredPiece.Prefab.GetComponent<Piece>().m_name;
				string text2 = Localization.instance.Localize(name);
				stringBuilder.AppendLine(name.Replace("$", string.Empty) + ": " + text2);
			}
			File.WriteAllText(Path.Combine(text, "English.yml"), stringBuilder.ToString());
		}

		public static void Build()
		{
			ExportLocalization();
			BuildAlt();
		}

		public static void BuildAlt()
		{
			if (!buildReadme)
			{
				return;
			}
			string text = Path.Combine(Paths.ConfigPath, "BuildableNature");
			Directory.CreateDirectory(text);
			StringBuilder stringBuilder = new StringBuilder();
			stringBuilder.AppendLine("# BuildableNature");
			stringBuilder.AppendLine();
			stringBuilder.AppendLine("| Icon | Internal ID | Name | Description | Resources |");
			stringBuilder.AppendLine("|:---:|:---|:---|:---|:---|");
			foreach (BuildPiece registeredPiece in BuildPiece.registeredPieces)
			{
				Piece component = registeredPiece.Prefab.GetComponent<Piece>();
				string name = ((Object)component).name;
				string name2 = component.m_name;
				string description = component.m_description;
				string text2 = "https://raw.githubusercontent.com/RustyMods/BuildableNature/refs/heads/master/BuildableNature/Icons/" + ((Object)component).name + ".png";
				string text3 = string.Join(", ", registeredPiece.RequiredItems.Requirements.Select((Requirement r) => $"{r.itemName} x {r.amount}"));
				if (exportSprites)
				{
					IconExport.ExportSprite(component.m_icon, text, ((Object)component).name);
				}
				stringBuilder.AppendLine("| ![" + name + "](" + text2 + ") | `" + name + "` | " + Clean(name2) + " | " + Clean(description) + " | " + Clean(text3) + " |");
			}
			File.WriteAllText(Path.Combine(text, "README.md"), stringBuilder.ToString());
		}

		private static string Clean(string text)
		{
			return string.IsNullOrEmpty(text) ? "" : text.Replace("|", "\\|").Replace("\r", "").Replace("\n", " ");
		}
	}
}
namespace BuildableNature
{
	[BepInPlugin("RustyMods.BuildableNature", "BuildableNature", "1.0.9")]
	public class BuildableNaturePlugin : BaseUnityPlugin
	{
		public enum Toggle
		{
			On = 1,
			Off = 0
		}

		internal const string ModName = "BuildableNature";

		internal const string ModVersion = "1.0.9";

		internal const string Author = "RustyMods";

		private const string ModGUID = "RustyMods.BuildableNature";

		private static readonly string ConfigFileName = "RustyMods.BuildableNature.cfg";

		private static readonly string ConfigFileFullPath;

		internal static string ConnectionError;

		public readonly Harmony _harmony = new Harmony("RustyMods.BuildableNature");

		public static readonly ManualLogSource BuildableNatureLogger;

		private static readonly ConfigSync ConfigSync;

		public static GameObject m_root;

		public static BuildableNaturePlugin instance;

		private static ConfigEntry<Toggle> _serverConfigLocked;

		public void Awake()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Expected O, but got Unknown
			instance = this;
			_serverConfigLocked = config("1 - General", "Lock Configuration", Toggle.On, "If on, the configuration is locked and can be changed by server admins only.");
			ConfigSync.AddLockingConfigEntry<Toggle>(_serverConfigLocked);
			m_root = new GameObject("root");
			Object.DontDestroyOnLoad((Object)(object)m_root);
			m_root.SetActive(false);
			PiecePrefabManager.Init = true;
			Assets.Misc();
			Assets.DeepNorth();
			Assets.Ashlands();
			Assets.Meadows();
			Assets.BlackForest();
			Assets.Plains();
			Assets.Mistlands();
			Assets.Swamps();
			Assets.Mountains();
			Clone clone = new Clone("Morkhalla_Banner1");
			clone.OnCreated += delegate(GameObject prefab)
			{
				//IL_0025: 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)
				prefab.Remove<DropOnDestroyed>();
				prefab.SetLayerRecursively(10);
				Piece val = prefab.AddComponent<Piece>();
				val.m_name = "$piece_morkhalla_banner_1";
				val.m_category = (PieceCategory)0;
				val.m_usage = (UsageTagFlags)512;
				val.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Morkhalla Banner");
				buildPiece.RequiredItems.Add("FineWood", 10, recover: true);
				buildPiece.RequiredItems.Add("BronzeNails", 5, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone2 = new Clone("Morkhalla_Banner2");
			clone2.OnCreated += delegate(GameObject prefab)
			{
				//IL_0025: 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)
				prefab.Remove<DropOnDestroyed>();
				prefab.SetLayerRecursively(10);
				Piece val = prefab.AddComponent<Piece>();
				val.m_name = "$piece_morkhalla_banner_1";
				val.m_category = (PieceCategory)0;
				val.m_usage = (UsageTagFlags)512;
				val.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Morkhalla Banner");
				buildPiece.RequiredItems.Add("FineWood", 10, recover: true);
				buildPiece.RequiredItems.Add("BronzeNails", 5, recover: true);
				buildPiece.Snapshot();
			};
			Assembly executingAssembly = Assembly.GetExecutingAssembly();
			_harmony.PatchAll(executingAssembly);
			SetupWatcher();
		}

		private void OnDestroy()
		{
			((BaseUnityPlugin)this).Config.Save();
		}

		private void SetupWatcher()
		{
			FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(Paths.ConfigPath, ConfigFileName);
			fileSystemWatcher.Changed += ReadConfigValues;
			fileSystemWatcher.Created += ReadConfigValues;
			fileSystemWatcher.Renamed += ReadConfigValues;
			fileSystemWatcher.IncludeSubdirectories = true;
			fileSystemWatcher.SynchronizingObject = ThreadingHelper.SynchronizingObject;
			fileSystemWatcher.EnableRaisingEvents = true;
		}

		private void ReadConfigValues(object sender, FileSystemEventArgs e)
		{
			if (!File.Exists(ConfigFileFullPath))
			{
				return;
			}
			try
			{
				BuildableNatureLogger.LogDebug((object)"ReadConfigValues called");
				((BaseUnityPlugin)this).Config.Reload();
			}
			catch
			{
				BuildableNatureLogger.LogError((object)("There was an issue loading your " + ConfigFileName));
				BuildableNatureLogger.LogError((object)"Please check your config entries for spelling and format!");
			}
		}

		public ConfigEntry<T> config<T>(string group, string name, T value, ConfigDescription description, bool synchronizedSetting = true)
		{
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Expected O, but got Unknown
			ConfigDescription val = new ConfigDescription(description.Description + (synchronizedSetting ? " [Synced with Server]" : " [Not Synced with Server]"), description.AcceptableValues, description.Tags);
			ConfigEntry<T> val2 = ((BaseUnityPlugin)this).Config.Bind<T>(group, name, value, val);
			SyncedConfigEntry<T> syncedConfigEntry = ConfigSync.AddConfigEntry<T>(val2);
			syncedConfigEntry.SynchronizedConfig = synchronizedSetting;
			return val2;
		}

		public ConfigEntry<T> config<T>(string group, string name, T value, string description, bool synchronizedSetting = true)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Expected O, but got Unknown
			return config(group, name, value, new ConfigDescription(description, (AcceptableValueBase)null, Array.Empty<object>()), synchronizedSetting);
		}

		static BuildableNaturePlugin()
		{
			string configPath = Paths.ConfigPath;
			char directorySeparatorChar = Path.DirectorySeparatorChar;
			ConfigFileFullPath = configPath + directorySeparatorChar + ConfigFileName;
			ConnectionError = "";
			BuildableNatureLogger = Logger.CreateLogSource("BuildableNature");
			ConfigSync = new ConfigSync("RustyMods.BuildableNature")
			{
				DisplayName = "BuildableNature",
				CurrentVersion = "1.0.9",
				MinimumRequiredVersion = "1.0.9"
			};
			m_root = null;
			instance = null;
			_serverConfigLocked = null;
		}
	}
	public static class Assets
	{
		public static void Ashlands()
		{
			Clone clone = new Clone("Pickable_Ashstone");
			clone.OnCreated += delegate(GameObject prefab)
			{
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Unknown result type (might be due to invalid IL or missing references)
				//IL_0119: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Pickable>();
				prefab.Remove<StaticPhysics>();
				MeshCollider componentInChildren = prefab.GetComponentInChildren<MeshCollider>();
				componentInChildren.convex = false;
				SphereCollider componentInChildren2 = prefab.GetComponentInChildren<SphereCollider>();
				Object.DestroyImmediate((Object)(object)componentInChildren2);
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.8f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashstone";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_SawDust").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ash Stone");
				buildPiece.RequiredItems.Add("Grausten", 1, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone2 = new Clone("Pickable_Charredskull");
			clone2.OnCreated += delegate(GameObject prefab)
			{
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Pickable>();
				prefab.Remove<StaticPhysics>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider();
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_charred_skull";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_CoalHit", "sfx_rock_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("vfx_CoalDestroyed", "sfx_rock_destroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Charred Skull");
				buildPiece.RequiredItems.Add("Charredskull", 1, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone3 = new Clone("Pickable_MoltenCoreStand");
			clone3.OnCreated += delegate(GameObject prefab)
			{
				//IL_000e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0058: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Pickable>();
				prefab.transform.localRotation = Quaternion.identity;
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider();
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_molten_core_stand";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_metal").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_HitSparks", "sfx_metal_blocked").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("vfx_HitSparks", "sfx_metal_blocked").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)2;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Molten Core Stand");
				buildPiece.RequiredItems.Add("MoltenCore", 1, recover: true);
				buildPiece.RequiredItems.Add("Iron", 1, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone4 = new Clone("Pickable_VoltureEgg");
			clone4.OnCreated += delegate(GameObject prefab)
			{
				//IL_003f: Unknown result type (might be due to invalid IL or missing references)
				//IL_005e: 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_00f5: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Pickable>();
				prefab.Remove<StaticPhysics>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				Collider val2 = prefab.AddCollider();
				val2.excludeLayers = LayerMask.op_Implicit(LayerMask.GetMask(new string[1] { "character" }));
				Piece val3 = prefab.AddComponent<Piece>();
				val3.m_name = "$piece_volture_egg";
				val3.m_category = (PieceCategory)0;
				val3.m_usage = (UsageTagFlags)512;
				val3.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default").m_effectList;
				WearNTear val4 = prefab.AddComponent<WearNTear>();
				val4.m_hitEffect = new EffectListRef("sfx_hit").m_effectList;
				val4.m_destroyedEffect = new EffectListRef("sfx_hit").m_effectList;
				val4.m_new = val;
				val4.m_worn = val;
				val4.m_wet = val;
				val4.m_broken = val;
				val4.m_materialType = (MaterialType)0;
				val4.m_health = 80f;
				val4.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Volture Egg");
				buildPiece.RequiredItems.Add("VoltureEgg", 1, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone5 = new Clone("Pickable_SmokePuff");
			clone5.OnCreated += delegate(GameObject prefab)
			{
				//IL_004d: 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_0077: Unknown result type (might be due to invalid IL or missing references)
				//IL_010b: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Pickable>();
				prefab.Remove<StaticPhysics>();
				SphereCollider componentInChildren = prefab.GetComponentInChildren<SphereCollider>();
				Object.DestroyImmediate((Object)(object)componentInChildren);
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				Collider val2 = prefab.AddCollider();
				val2.excludeLayers = LayerMask.op_Implicit(LayerMask.GetMask(new string[1] { "character" }));
				Piece val3 = prefab.AddComponent<Piece>();
				val3.m_name = "$piece_smoke_puff";
				val3.m_category = (PieceCategory)0;
				val3.m_usage = (UsageTagFlags)512;
				val3.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default").m_effectList;
				WearNTear val4 = prefab.AddComponent<WearNTear>();
				val4.m_hitEffect = new EffectListRef("sfx_bush_hit").m_effectList;
				val4.m_destroyedEffect = new EffectListRef("sfx_bush_hit").m_effectList;
				val4.m_new = val;
				val4.m_worn = val;
				val4.m_wet = val;
				val4.m_broken = val;
				val4.m_materialType = (MaterialType)0;
				val4.m_health = 80f;
				val4.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Smoke Puff");
				buildPiece.RequiredItems.Add("MushroomSmokePuff", 1, recover: true);
				buildPiece.Snapshot();
			};
			SetupAshlandRocks();
			SetupAshlandsTrees();
			Clone clone6 = new Clone("Charred_altar_bellfragment");
			clone6.OnCreated += delegate(GameObject prefab)
			{
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider();
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_charred_altar_bell_fragment";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_wood_pole", "sfx_build_hammer_default");
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_hit", "vfx_HitSparks").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("fx_altar_charred_destruction", "fx_Fading_Bellfragment_Beam");
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 80f;
				val3.m_supports = false;
				BeamToggle beamToggle = prefab.AddComponent<BeamToggle>();
				beamToggle.m_name = val2.m_name;
				beamToggle.m_disableEffects = new EffectListRef("fx_Fading_Bellfragment_Beam", "sfx_fader_bell");
				beamToggle.m_enableEffects = new EffectListRef("sfx_fader_bell");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Charred Altar Fragment");
				buildPiece.RequiredItems.Add("BellFragment", 1, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone7 = new Clone("LeviathanLava");
			clone7.OnCreated += delegate(GameObject prefab)
			{
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0075: Unknown result type (might be due to invalid IL or missing references)
				//IL_010f: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Rigidbody>();
				prefab.Remove<ZSyncTransform>();
				prefab.Remove<MineRock>();
				prefab.Remove<ZSyncAnimation>();
				prefab.Remove<Leviathan>();
				prefab.Remove<StaticPhysics>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_leviathan_lava";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_clipEverything = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("fx_leviathanLava_reaction").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("fx_leviathanLava_leave").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_supports = false;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 1000f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Flametal Rock Spire");
				buildPiece.RequiredItems.Add("Stone", 20, recover: true);
				buildPiece.RequiredItems.Add("FlametalOreNew", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone8 = new Clone("LuredFaderEmber");
			clone8.OnCreated += delegate(GameObject prefab)
			{
				//IL_0071: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0128: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<ZSyncTransform>();
				prefab.Remove<LuredWisp>();
				prefab.Remove<Pickable>();
				TrailRenderer componentInChildren = prefab.GetComponentInChildren<TrailRenderer>();
				Object.DestroyImmediate((Object)(object)componentInChildren);
				SphereCollider componentInChildren2 = prefab.GetComponentInChildren<SphereCollider>();
				Object.DestroyImmediate((Object)(object)componentInChildren2);
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider();
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_lured_fader_ember";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_hit", "vfx_HitSparks").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_hit", "vfx_HitSparks").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_supports = false;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 1000f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Fader Ember");
				buildPiece.RequiredItems.Add("FaderEmber", 1, recover: true);
				ItemDrop val4 = default(ItemDrop);
				if (BuildPiece.TryGetPrefab("FaderEmber", out var prefab2) && prefab2.TryGetComponent<ItemDrop>(ref val4))
				{
					val2.m_icon = val4.m_itemData.m_shared.m_icons[0];
				}
			};
			Clone clone9 = new Clone("morgenhole_pile");
			clone9.OnCreated += delegate(GameObject prefab)
			{
				//IL_005d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0068: Unknown result type (might be due to invalid IL or missing references)
				//IL_010b: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				prefab.Remove<Destructible>();
				MeshCollider componentInChildren = prefab.GetComponentInChildren<MeshCollider>();
				componentInChildren.convex = false;
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.9f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_morgen_hole_pile";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_MudHit", "vfx_MudHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_MudDestroyed", "vfx_morgenhole_pile_destroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_supports = false;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 1000f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Morgen Hole Pile");
				buildPiece.RequiredItems.Add("RottenMeat", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone10 = new Clone("Spawner_CharredCross");
			clone10.OnCreated += delegate(GameObject prefab)
			{
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_0060: Unknown result type (might be due to invalid IL or missing references)
				//IL_0102: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Destructible>();
				prefab.Remove<SpawnArea>();
				prefab.Remove<HoverText>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.9f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_charred_cross";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_FireballHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("vfx_charredcross_spawner_destroyed", "sfx_wood_destroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_supports = false;
				val3.m_autoCreateFragments = false;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Charred Cross");
				buildPiece.RequiredItems.Add("Blackwood", 2, recover: true);
				buildPiece.RequiredItems.Add("FlametalOreNew", 1, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone11 = new Clone("Spawner_CharredStone");
			clone11.OnCreated += delegate(GameObject prefab)
			{
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_0060: Unknown result type (might be due to invalid IL or missing references)
				//IL_010a: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Destructible>();
				prefab.Remove<SpawnArea>();
				prefab.Remove<HoverText>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.9f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_charred_stone";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_RockHit", "sfx_rock_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("fx_CharredStone_Destruction", "sfx_charred_spawner_destroy").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_supports = false;
				val3.m_autoCreateFragments = false;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Charred Stone");
				buildPiece.RequiredItems.Add("Grausten", 4, recover: true);
				buildPiece.RequiredItems.Add("FlametalOreNew", 1, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone12 = new Clone("Spawner_CharredStone_Elite");
			clone12.OnCreated += delegate(GameObject prefab)
			{
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_0060: Unknown result type (might be due to invalid IL or missing references)
				//IL_0112: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Destructible>();
				prefab.Remove<SpawnArea>();
				prefab.Remove<HoverText>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.9f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_charred_stone";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_RockHit", "sfx_rock_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("fx_CharredStone_Destruction", "sfx_charred_spawner_destroy", "fx_CharredStone_Gibs").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_supports = false;
				val3.m_autoCreateFragments = false;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Charred Stone");
				buildPiece.RequiredItems.Add("Grausten", 4, recover: true);
				buildPiece.RequiredItems.Add("FlametalOreNew", 1, recover: true);
				buildPiece.Snapshot();
			};
		}

		private static void SetupAshlandRocks()
		{
			Clone clone = new Clone("Ashlands_rock1");
			clone.OnCreated += delegate(GameObject prefab)
			{
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<StaticPhysics>();
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_rock1";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_rock_hit", "vfx_RockHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_RockDestroyed_large").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Rock");
				buildPiece.RequiredItems.Add("Stone", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone2 = new Clone("Ashlands_rock2");
			clone2.OnCreated += delegate(GameObject prefab)
			{
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<StaticPhysics>();
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_rock2";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_rock_hit", "vfx_RockHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_RockDestroyed_large").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Rock");
				buildPiece.RequiredItems.Add("Stone", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone3 = new Clone("cliff_ashlands1");
			clone3.OnCreated += delegate(GameObject prefab)
			{
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<StaticPhysics>();
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_cliff1";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_rock_hit", "vfx_CoalHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_GraustenDestroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Cliff");
				buildPiece.RequiredItems.Add("Grausten", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone4 = new Clone("cliff_ashlands2");
			clone4.OnCreated += delegate(GameObject prefab)
			{
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<StaticPhysics>();
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_cliff2";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_rock_hit", "vfx_CoalHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_GraustenDestroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Boulder");
				buildPiece.RequiredItems.Add("Grausten", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone5 = new Clone("cliff_ashlands3_Arch_1");
			clone5.OnCreated += delegate(GameObject prefab)
			{
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<StaticPhysics>();
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.8f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_cliff3_arch";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_rock_hit", "vfx_CoalHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_GraustenDestroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Arch");
				buildPiece.RequiredItems.Add("Grausten", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone6 = new Clone("cliff_ashlands4");
			clone6.OnCreated += delegate(GameObject prefab)
			{
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<StaticPhysics>();
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.8f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_cliff4";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_rock_hit", "vfx_CoalHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_GraustenDestroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Spire");
				buildPiece.RequiredItems.Add("Grausten", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone7 = new Clone("cliff_ashlands5");
			clone7.OnCreated += delegate(GameObject prefab)
			{
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<StaticPhysics>();
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_cliff5";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_rock_hit", "vfx_CoalHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_GraustenDestroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Boulder");
				buildPiece.RequiredItems.Add("Grausten", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone8 = new Clone("cliff_ashlands6");
			clone8.OnCreated += delegate(GameObject prefab)
			{
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<StaticPhysics>();
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_cliff6";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_rock_hit", "vfx_CoalHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_GraustenDestroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Boulder");
				buildPiece.RequiredItems.Add("Grausten", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone9 = new Clone("cliff_ashlands7_HalfArch");
			clone9.OnCreated += delegate(GameObject prefab)
			{
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<StaticPhysics>();
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.8f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_cliff7_arch";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_rock_hit", "vfx_CoalHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_GraustenDestroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Half Arch");
				buildPiece.RequiredItems.Add("Grausten", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone10 = new Clone("cliff_ashlands8");
			clone10.OnCreated += delegate(GameObject prefab)
			{
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<StaticPhysics>();
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_cliff8";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_rock_hit", "vfx_CoalHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_GraustenDestroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Boulder");
				buildPiece.RequiredItems.Add("Grausten", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone11 = new Clone("FernAshlands");
			clone11.OnCreated += delegate(GameObject prefab)
			{
				//IL_006e: Unknown result type (might be due to invalid IL or missing references)
				//IL_008d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0098: Unknown result type (might be due to invalid IL or missing references)
				//IL_013b: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Destructible>();
				prefab.Remove<StaticPhysics>();
				Collider[] componentsInChildren = prefab.GetComponentsInChildren<Collider>();
				foreach (Collider val in componentsInChildren)
				{
					Object.DestroyImmediate((Object)(object)val);
				}
				GameObject val2 = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				Collider val3 = prefab.AddCollider();
				val3.excludeLayers = LayerMask.op_Implicit(LayerMask.GetMask(new string[1] { "character" }));
				Piece val4 = prefab.AddComponent<Piece>();
				val4.m_name = "$piece_fern_ashlands";
				val4.m_category = (PieceCategory)0;
				val4.m_usage = (UsageTagFlags)512;
				val4.m_clipEverything = true;
				val4.m_placeEffect = new EffectListRef("vfx_Place_wood_wall", "sfx_build_hammer_default").m_effectList;
				WearNTear val5 = prefab.AddComponent<WearNTear>();
				val5.m_hitEffect = new EffectListRef("vfx_FernAshlands_puff", "sfx_bush_hit").m_effectList;
				val5.m_destroyedEffect = new EffectListRef("vfx_FernAshlands_destroyed").m_effectList;
				val5.m_new = val2;
				val5.m_worn = val2;
				val5.m_wet = val2;
				val5.m_broken = val2;
				val5.m_materialType = (MaterialType)0;
				val5.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Fern");
				buildPiece.RequiredItems.Add("Fiddleheadfern", 1, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone12 = new Clone("FernFiddleHeadAshlands");
			clone12.OnCreated += delegate(GameObject prefab)
			{
				//IL_006e: Unknown result type (might be due to invalid IL or missing references)
				//IL_008d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0098: Unknown result type (might be due to invalid IL or missing references)
				//IL_013b: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Destructible>();
				prefab.Remove<StaticPhysics>();
				Collider[] componentsInChildren = prefab.GetComponentsInChildren<Collider>();
				foreach (Collider val in componentsInChildren)
				{
					Object.DestroyImmediate((Object)(object)val);
				}
				GameObject val2 = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				Collider val3 = prefab.AddCollider();
				val3.excludeLayers = LayerMask.op_Implicit(LayerMask.GetMask(new string[1] { "character" }));
				Piece val4 = prefab.AddComponent<Piece>();
				val4.m_name = "$piece_fern_fiddlehead_ashlands";
				val4.m_category = (PieceCategory)0;
				val4.m_usage = (UsageTagFlags)512;
				val4.m_clipEverything = true;
				val4.m_placeEffect = new EffectListRef("vfx_Place_wood_wall", "sfx_build_hammer_default").m_effectList;
				WearNTear val5 = prefab.AddComponent<WearNTear>();
				val5.m_hitEffect = new EffectListRef("vfx_FernAshlands_puff", "sfx_bush_hit").m_effectList;
				val5.m_destroyedEffect = new EffectListRef("vfx_FernAshlands_destroyed").m_effectList;
				val5.m_new = val2;
				val5.m_worn = val2;
				val5.m_wet = val2;
				val5.m_broken = val2;
				val5.m_materialType = (MaterialType)0;
				val5.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Fiddlehead");
				buildPiece.RequiredItems.Add("Fiddleheadfern", 1, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone13 = new Clone("FlametalRockstand");
			clone13.OnCreated += delegate(GameObject prefab)
			{
				//IL_0047: Unknown result type (might be due to invalid IL or missing references)
				//IL_0052: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.7f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_flametal_rockstand";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_throne02", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_rock_hit", "vfx_CoalHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_CoalDestroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_supports = false;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Rock Stand");
				buildPiece.RequiredItems.Add("Grausten", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone14 = new Clone("lavabomb_rock1");
			clone14.OnCreated += delegate(GameObject prefab)
			{
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<ConditionalObject>();
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_lavabomb_rock";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_RockHit", "sfx_rock_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_CoalDestroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_supports = false;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 1000f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Lava Bomb Platform");
				buildPiece.RequiredItems.Add("Grausten", 4, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone15 = new Clone("lavarock_ashlands1");
			clone15.OnCreated += delegate(GameObject prefab)
			{
				//IL_0047: Unknown result type (might be due to invalid IL or missing references)
				//IL_0052: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_lavarock_ashlands";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_RockHit", "sfx_rock_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_CoalDestroyed").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_supports = false;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 1000f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Rock Spire");
				buildPiece.RequiredItems.Add("Grausten", 4, recover: true);
				buildPiece.Snapshot();
			};
		}

		private static void SetupAshlandsTrees()
		{
			Clone clone = new Clone("AshlandsBranch1");
			clone.OnCreated += delegate(GameObject prefab)
			{
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0067: Unknown result type (might be due to invalid IL or missing references)
				//IL_0103: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				prefab.Remove<HoverText>();
				prefab.Remove<Destructible>();
				prefab.Remove<StaticPhysics>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_branch1";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust", "sfx_tree_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_fir_oldlog").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Log");
				buildPiece.RequiredItems.Add("Blackwood", 4, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone2 = new Clone("AshlandsBranch2");
			clone2.OnCreated += delegate(GameObject prefab)
			{
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0067: Unknown result type (might be due to invalid IL or missing references)
				//IL_0103: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				prefab.Remove<HoverText>();
				prefab.Remove<Destructible>();
				prefab.Remove<StaticPhysics>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider();
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_branch2";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust", "sfx_tree_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_fir_oldlog").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Branch");
				buildPiece.RequiredItems.Add("Blackwood", 1, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone3 = new Clone("AshlandsBranch3");
			clone3.OnCreated += delegate(GameObject prefab)
			{
				//IL_005c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0067: Unknown result type (might be due to invalid IL or missing references)
				//IL_0103: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				prefab.Remove<HoverText>();
				prefab.Remove<Destructible>();
				prefab.Remove<StaticPhysics>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_branch3";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust", "sfx_tree_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_fir_oldlog").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Log");
				buildPiece.RequiredItems.Add("Blackwood", 4, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone4 = new Clone("AshlandsBush1");
			clone4.OnCreated += delegate(GameObject prefab)
			{
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_0060: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				prefab.Remove<Destructible>();
				prefab.Remove<StaticPhysics>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider();
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_stub";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust", "sfx_tree_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_fir_oldlog").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Stub");
				buildPiece.RequiredItems.Add("Blackwood", 4, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone5 = new Clone("AshlandsTree1");
			clone5.OnCreated += delegate(GameObject prefab)
			{
				//IL_0063: 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_0111: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<TreeBase>();
				prefab.Remove<StaticPhysics>();
				prefab.Remove<HoverText>();
				CapsuleCollider componentInChildren = prefab.GetComponentInChildren<CapsuleCollider>();
				Object.DestroyImmediate((Object)(object)componentInChildren);
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.9f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_tree";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust_Ashlands", "sfx_tree_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_fir_oldlog").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Tree");
				buildPiece.RequiredItems.Add("Blackwood", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone6 = new Clone("AshlandsTree3");
			clone6.OnCreated += delegate(GameObject prefab)
			{
				//IL_0063: 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_0111: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<TreeBase>();
				prefab.Remove<StaticPhysics>();
				prefab.Remove<HoverText>();
				CapsuleCollider componentInChildren = prefab.GetComponentInChildren<CapsuleCollider>();
				Object.DestroyImmediate((Object)(object)componentInChildren);
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.9f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_tree";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust_Ashlands", "sfx_tree_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_fir_oldlog").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Tree");
				buildPiece.RequiredItems.Add("Blackwood", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone7 = new Clone("AshlandsTree4");
			clone7.OnCreated += delegate(GameObject prefab)
			{
				//IL_0063: 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_0111: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<TreeBase>();
				prefab.Remove<StaticPhysics>();
				prefab.Remove<HoverText>();
				CapsuleCollider componentInChildren = prefab.GetComponentInChildren<CapsuleCollider>();
				Object.DestroyImmediate((Object)(object)componentInChildren);
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.9f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_tree";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust_Ashlands", "sfx_tree_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_fir_oldlog").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Tree");
				buildPiece.RequiredItems.Add("Blackwood", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone8 = new Clone("AshlandsTree5");
			clone8.OnCreated += delegate(GameObject prefab)
			{
				//IL_0063: 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_0111: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<TreeBase>();
				prefab.Remove<StaticPhysics>();
				prefab.Remove<HoverText>();
				CapsuleCollider componentInChildren = prefab.GetComponentInChildren<CapsuleCollider>();
				Object.DestroyImmediate((Object)(object)componentInChildren);
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.9f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_tree";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust_Ashlands", "sfx_tree_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_fir_oldlog").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Tree");
				buildPiece.RequiredItems.Add("Blackwood", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone9 = new Clone("AshlandsTree6");
			clone9.OnCreated += delegate(GameObject prefab)
			{
				//IL_0063: 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_0111: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<TreeBase>();
				prefab.Remove<StaticPhysics>();
				prefab.Remove<HoverText>();
				CapsuleCollider componentInChildren = prefab.GetComponentInChildren<CapsuleCollider>();
				Object.DestroyImmediate((Object)(object)componentInChildren);
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.85f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_tree";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust_Ashlands", "sfx_tree_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_fir_oldlog").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Tree");
				buildPiece.RequiredItems.Add("Blackwood", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone10 = new Clone("AshlandsTree6_big");
			clone10.OnCreated += delegate(GameObject prefab)
			{
				//IL_0063: 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_0118: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<TreeBase>();
				prefab.Remove<StaticPhysics>();
				prefab.Remove<HoverText>();
				CapsuleCollider componentInChildren = prefab.GetComponentInChildren<CapsuleCollider>();
				Object.DestroyImmediate((Object)(object)componentInChildren);
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.85f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_tree_big";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust_Ashlands", "sfx_tree_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_fir_oldlog").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_supports = false;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Large Tree");
				buildPiece.RequiredItems.Add("Blackwood", 20, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone11 = new Clone("AshlandsTreeStump1");
			clone11.OnCreated += delegate(GameObject prefab)
			{
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Unknown result type (might be due to invalid IL or missing references)
				//IL_0120: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				prefab.Remove<Destructible>();
				prefab.Remove<StaticPhysics>();
				prefab.Remove<HoverText>();
				MeshCollider componentInChildren = prefab.GetComponentInChildren<MeshCollider>();
				componentInChildren.convex = false;
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_stump";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust_Ashlands", "sfx_tree_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_fir_oldlog").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_supports = false;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Stump");
				buildPiece.RequiredItems.Add("Blackwood", 2, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone12 = new Clone("AshlandsTreeStump2");
			clone12.OnCreated += delegate(GameObject prefab)
			{
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Unknown result type (might be due to invalid IL or missing references)
				//IL_0119: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				prefab.Remove<Destructible>();
				prefab.Remove<StaticPhysics>();
				prefab.Remove<HoverText>();
				MeshCollider componentInChildren = prefab.GetComponentInChildren<MeshCollider>();
				componentInChildren.convex = false;
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_stump";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust_Ashlands", "sfx_tree_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_fir_oldlog").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Stump");
				buildPiece.RequiredItems.Add("Blackwood", 2, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone13 = new Clone("AshlandsTreeStump3");
			clone13.OnCreated += delegate(GameObject prefab)
			{
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0076: Unknown result type (might be due to invalid IL or missing references)
				//IL_0119: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				prefab.Remove<Destructible>();
				prefab.Remove<StaticPhysics>();
				prefab.Remove<HoverText>();
				MeshCollider componentInChildren = prefab.GetComponentInChildren<MeshCollider>();
				componentInChildren.convex = false;
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_ashlands_stump";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_wood").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("vfx_SawDust_Ashlands", "sfx_tree_hit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_wood_break", "vfx_fir_oldlog").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 80f;
				val3.m_supports = false;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Stump");
				buildPiece.RequiredItems.Add("Blackwood", 2, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone14 = new Clone("VineAsh");
			clone14.OnCreated += delegate(GameObject prefab)
			{
				//IL_0023: Unknown result type (might be due to invalid IL or missing references)
				//IL_002e: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Vine>();
				prefab.Remove<Pickable>();
				Piece val = prefab.AddComponent<Piece>();
				val.m_name = "$piece_ash_vine";
				val.m_category = (PieceCategory)0;
				val.m_usage = (UsageTagFlags)512;
				val.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ash Vine");
				buildPiece.RequiredItems.Add("VineberrySeeds", 1, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone15 = new Clone("VineAsh_sapling");
			clone15.OnCreated += delegate(GameObject prefab)
			{
				//IL_002f: 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_0074: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Plant>();
				prefab.Remove<Destructible>();
				Collider val = prefab.AddCollider();
				val.excludeLayers = LayerMask.op_Implicit(LayerMask.GetMask(new string[1] { "character" }));
				GameObject val2 = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				Piece component = prefab.GetComponent<Piece>();
				component.m_name = "$piece_sapling_vine_ash";
				component.m_description = "$piece_sapling_vine_ash_desc";
				component.m_category = (PieceCategory)0;
				component.m_usage = (UsageTagFlags)512;
				component.m_cultivatedGroundOnly = false;
				component.m_canBeRemoved = true;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_bush_hit", "vfx_SawDust").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_bush_hit").m_effectList;
				val3.m_new = val2;
				val3.m_worn = val2;
				val3.m_wet = val2;
				val3.m_broken = val2;
				val3.m_materialType = (MaterialType)0;
				val3.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Vineberry Sapling");
				buildPiece.Description.English("");
				buildPiece.RequiredItems.Add("VineberrySeeds", 1, recover: true);
			};
			Clone clone16 = new Clone("volture_strawpile");
			clone16.OnCreated += delegate(GameObject prefab)
			{
				//IL_0038: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Unknown result type (might be due to invalid IL or missing references)
				//IL_0062: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<Destructible>();
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				Collider val2 = prefab.AddCollider(0.9f);
				val2.excludeLayers = LayerMask.op_Implicit(LayerMask.GetMask(new string[1] { "character" }));
				Piece val3 = prefab.AddComponent<Piece>();
				val3.m_name = "$piece_volture_straw_pile";
				val3.m_category = (PieceCategory)0;
				val3.m_usage = (UsageTagFlags)512;
				val3.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default");
				WearNTear val4 = prefab.AddComponent<WearNTear>();
				val4.m_hitEffect = new EffectListRef("vfx_SawDust");
				val4.m_destroyedEffect = new EffectListRef("vfx_SawDust");
				val4.m_new = val;
				val4.m_worn = val;
				val4.m_wet = val;
				val4.m_broken = val;
				val4.m_materialType = (MaterialType)6;
				val4.m_health = 80f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Volture Nest");
				buildPiece.RequiredItems.Add("Barley", 5, recover: true);
				buildPiece.RequiredItems.Add("VoltureEgg", 1, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone17 = new Clone("Ashlands_Altar");
			clone17.OnCreated += delegate(GameObject prefab)
			{
				//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)
				prefab.Remove<DropOnDestroyed>();
				if (!prefab.HasCollider())
				{
					prefab.AddCollider();
				}
				Piece val = prefab.AddComponent<Piece>();
				val.m_name = "$piece_ashlands_altar";
				val.m_category = (PieceCategory)0;
				val.m_usage = (UsageTagFlags)512;
				val.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Ashlands Altar");
				buildPiece.RequiredItems.Add("Blackwood", 5, recover: true);
				buildPiece.RequiredItems.Add("FlametalNew", 1, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone18 = new Clone("Ashlands_Boss_Pillar");
			clone18.OnCreated += delegate(GameObject prefab)
			{
				//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)
				prefab.Remove<DropOnDestroyed>();
				if (!prefab.HasCollider())
				{
					prefab.AddCollider();
				}
				Piece val = prefab.AddComponent<Piece>();
				val.m_name = "$piece_ashlands_boss_pillar";
				val.m_category = (PieceCategory)0;
				val.m_usage = (UsageTagFlags)512;
				val.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Fader Pillar");
				buildPiece.RequiredItems.Add("Blackwood", 5, recover: true);
				buildPiece.RequiredItems.Add("Grausten", 5, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone19 = new Clone("Ashlands_Boss_Pillar_Twist_broken1");
			clone19.OnCreated += delegate(GameObject prefab)
			{
				//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)
				prefab.Remove<DropOnDestroyed>();
				if (!prefab.HasCollider())
				{
					prefab.AddCollider();
				}
				Piece val = prefab.AddComponent<Piece>();
				val.m_name = "$piece_ashlands_boss_pillar";
				val.m_category = (PieceCategory)0;
				val.m_usage = (UsageTagFlags)512;
				val.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Fader Pillar");
				buildPiece.RequiredItems.Add("Blackwood", 5, recover: true);
				buildPiece.RequiredItems.Add("Grausten", 5, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone20 = new Clone("Ashlands_Boss_Pillar_Twist_broken2");
			clone20.OnCreated += delegate(GameObject prefab)
			{
				//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)
				prefab.Remove<DropOnDestroyed>();
				if (!prefab.HasCollider())
				{
					prefab.AddCollider();
				}
				Piece val = prefab.AddComponent<Piece>();
				val.m_name = "$piece_ashlands_boss_pillar";
				val.m_category = (PieceCategory)0;
				val.m_usage = (UsageTagFlags)512;
				val.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Fader Pillar");
				buildPiece.RequiredItems.Add("Blackwood", 5, recover: true);
				buildPiece.RequiredItems.Add("Grausten", 5, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone21 = new Clone("Ashlands_Boss_Pillar_Twist_broken3");
			clone21.OnCreated += delegate(GameObject prefab)
			{
				//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)
				prefab.Remove<DropOnDestroyed>();
				if (!prefab.HasCollider())
				{
					prefab.AddCollider();
				}
				Piece val = prefab.AddComponent<Piece>();
				val.m_name = "$piece_ashlands_boss_pillar";
				val.m_category = (PieceCategory)0;
				val.m_usage = (UsageTagFlags)512;
				val.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Fader Pillar");
				buildPiece.RequiredItems.Add("Blackwood", 5, recover: true);
				buildPiece.RequiredItems.Add("Grausten", 5, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone22 = new Clone("asksvin_carrion");
			clone22.OnCreated += delegate(GameObject prefab)
			{
				//IL_002f: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				prefab.Remove<StaticPhysics>();
				Collider val = prefab.AddCollider();
				val.excludeLayers = LayerMask.op_Implicit(LayerMask.GetMask(new string[1] { "character" }));
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_asksvin_carrion";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Asksvin Carrion");
				buildPiece.RequiredItems.Add("BoneFragments", 5, recover: true);
				buildPiece.RequiredItems.Add("Grausten", 5, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone23 = new Clone("asksvin_carrion2");
			clone23.OnCreated += delegate(GameObject prefab)
			{
				//IL_002f: Unknown result type (might be due to invalid IL or missing references)
				//IL_004e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				prefab.Remove<StaticPhysics>();
				Collider val = prefab.AddCollider();
				val.excludeLayers = LayerMask.op_Implicit(LayerMask.GetMask(new string[1] { "character" }));
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_asksvin_carrion";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Asksvin Carrion");
				buildPiece.RequiredItems.Add("BoneFragments", 5, recover: true);
				buildPiece.RequiredItems.Add("Grausten", 5, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone24 = new Clone("CharredBanner1");
			clone24.OnCreated += delegate(GameObject prefab)
			{
				//IL_001c: 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)
				//IL_0035: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				Piece val = prefab.AddComponent<Piece>();
				val.m_name = "$piece_charred_banner";
				val.m_category = (PieceCategory)0;
				val.m_usage = (UsageTagFlags)512;
				val.m_comfort = 1;
				val.m_comfortGroup = (ComfortGroup)3;
				val.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Charred Banner");
				buildPiece.RequiredItems.Add("Coal", 2, recover: true);
				buildPiece.RequiredItems.Add("Blackwood", 4, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone25 = new Clone("CharredBanner2");
			clone25.OnCreated += delegate(GameObject prefab)
			{
				//IL_001c: 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)
				//IL_0035: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				Piece val = prefab.AddComponent<Piece>();
				val.m_name = "$piece_charred_banner";
				val.m_category = (PieceCategory)0;
				val.m_usage = (UsageTagFlags)512;
				val.m_comfort = 1;
				val.m_comfortGroup = (ComfortGroup)3;
				val.m_placeEffect = new EffectListRef("vfx_Place_pole", "sfx_build_hammer_default");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Charred Banner");
				buildPiece.RequiredItems.Add("Coal", 2, recover: true);
				buildPiece.RequiredItems.Add("Blackwood", 4, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone26 = new Clone("CharredBanner3");
			clone26.OnCreated += delegate(GameObject prefab)
			{
				//IL_001c: 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)
				//IL_0035: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				Piece val = prefab.AddComponent<Piece>();
				val.m_name = "$piece_charred_banner";
				val.m_category = (PieceCategory)0;
				val.m_usage = (UsageTagFlags)512;
				val.m_comfort = 1;
				val.m_comfortGroup = (ComfortGroup)3;
				val.m_placeEffect = new EffectListRef("vfx_Place_wood_pole", "sfx_build_hammer_default");
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Charred Banner");
				buildPiece.RequiredItems.Add("Coal", 2, recover: true);
				buildPiece.RequiredItems.Add("Blackwood", 4, recover: true);
				buildPiece.Snapshot();
			};
		}

		public static void BlackForest()
		{
			Clone clone = new Clone("BigRock");
			clone.OnCreated += delegate(GameObject prefab)
			{
				//IL_005d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0068: Unknown result type (might be due to invalid IL or missing references)
				//IL_010b: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<StaticPhysics>();
				prefab.Remove<Destructible>();
				MeshCollider componentInChildren = prefab.GetComponentInChildren<MeshCollider>();
				componentInChildren.convex = false;
				GameObject val = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				if (!prefab.HasCollider())
				{
					prefab.AddCollider(0.5f);
				}
				Piece val2 = prefab.AddComponent<Piece>();
				val2.m_name = "$piece_big_rock";
				val2.m_category = (PieceCategory)0;
				val2.m_usage = (UsageTagFlags)512;
				val2.m_groundOnly = true;
				val2.m_placeEffect = new EffectListRef("vfx_Place_workbench", "sfx_build_hammer_stone").m_effectList;
				WearNTear val3 = prefab.AddComponent<WearNTear>();
				val3.m_hitEffect = new EffectListRef("sfx_rock_hit", "vfx_RockHit").m_effectList;
				val3.m_destroyedEffect = new EffectListRef("sfx_rock_destroyed", "vfx_RockDestroyed_large").m_effectList;
				val3.m_new = val;
				val3.m_worn = val;
				val3.m_wet = val;
				val3.m_broken = val;
				val3.m_materialType = (MaterialType)1;
				val3.m_health = 30f;
				BuildPiece buildPiece = new BuildPiece(prefab);
				buildPiece.Category.Set("Nature");
				buildPiece.Usage.Set((UsageTagFlags)512);
				buildPiece.Name.English("Big Rock");
				buildPiece.RequiredItems.Add("Stone", 10, recover: true);
				buildPiece.Snapshot();
			};
			Clone clone2 = new Clone("BlueberryBush");
			clone2.OnCreated += delegate(GameObject prefab)
			{
				//IL_008a: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
				//IL_0155: Unknown result type (might be due to invalid IL or missing references)
				prefab.Remove<DropOnDestroyed>();
				prefab.Remove<Destructible>();
				prefab.Remove<Pickable>();
				prefab.Remove<StaticPhysics>();
				CapsuleCollider componentInChildren = prefab.GetComponentInChildren<CapsuleCollider>();
				Object.DestroyImmediate((Object)(object)componentInChildren);
				SphereCollider[] componentsInChildren = prefab.GetComponentsInChildren<SphereCollider>();
				SphereCollider[] array = componentsInChildren;
				foreach (SphereCollider val in array)
				{
					Object.DestroyImmediate((Object)(object)val);
				}
				GameObject val2 = prefab.CreateAndSetUnderModel();
				prefab.SetLayerRecursively(10);
				Collider val3 = prefab.AddCollider(0.6f);
				val3.excludeLayers = LayerMask.op_Implicit(LayerMask.GetMask(new string[1] { "character" }));
				Piece val4 = prefab.AddComponent<Piece>();
				val4.m_name = "$piece_blueberry_bush";
				val4.m_category = (PieceCategory)0;
				val4.m_usage = (UsageTagFlags)512;
				val4.m_placeEffect = new EffectListRef("vfx_Place_wood_pole", "sfx_build_hammer_default").m_effectList;
				WearNTear val5 = prefab.AddComponent<WearNTear>();
				val5.m_hitEffect = new EffectListRef("vfx_bush_leaf_puff", "sfx_bush_hit").m_effectList;