Decompiled source of Cornerstone v1.0.0

Plugins/VentureValheim.Cornerstone.dll

Decompiled 2 hours ago
using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using Jotunn.Utils;
using Microsoft.CodeAnalysis;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("VentureValheim.Cornerstone")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("VentureValheim.Cornerstone")]
[assembly: AssemblyCopyright("Copyright ©  2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("4825E615-25D3-4537-AE7D-8C44DF6EF4C5")]
[assembly: AssemblyFileVersion("1.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace VentureValheim.Cornerstone
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.orianaventure.mod.Cornerstone", "Cornerstone", "1.0.0")]
	public class CornerstonePlugin : BaseUnityPlugin
	{
		private const string ModName = "Cornerstone";

		private const string ModVersion = "1.0.0";

		private const string Author = "com.orianaventure.mod";

		private const string ModGUID = "com.orianaventure.mod.Cornerstone";

		private static string ConfigFileName = "com.orianaventure.mod.Cornerstone.cfg";

		private static string ConfigFileFullPath;

		private readonly Harmony HarmonyInstance = new Harmony("com.orianaventure.mod.Cornerstone");

		public static readonly ManualLogSource CornerstoneLogger;

		private static ConfigEntry<bool> CE_Wood_Enabled;

		private static ConfigEntry<float> CE_Wood_MaxStability;

		private static ConfigEntry<float> CE_Wood_MinStability;

		private static ConfigEntry<float> CE_Wood_VerticalLoss;

		private static ConfigEntry<float> CE_Wood_HorizontalLoss;

		private static ConfigEntry<bool> CE_HardWood_Enabled;

		private static ConfigEntry<float> CE_HardWood_MaxStability;

		private static ConfigEntry<float> CE_HardWood_MinStability;

		private static ConfigEntry<float> CE_HardWood_VerticalLoss;

		private static ConfigEntry<float> CE_HardWood_HorizontalLoss;

		private static ConfigEntry<bool> CE_Stone_Enabled;

		private static ConfigEntry<float> CE_Stone_MaxStability;

		private static ConfigEntry<float> CE_Stone_MinStability;

		private static ConfigEntry<float> CE_Stone_VerticalLoss;

		private static ConfigEntry<float> CE_Stone_HorizontalLoss;

		private static ConfigEntry<bool> CE_Iron_Enabled;

		private static ConfigEntry<float> CE_Iron_MaxStability;

		private static ConfigEntry<float> CE_Iron_MinStability;

		private static ConfigEntry<float> CE_Iron_VerticalLoss;

		private static ConfigEntry<float> CE_Iron_HorizontalLoss;

		private static ConfigEntry<bool> CE_Marble_Enabled;

		private static ConfigEntry<float> CE_Marble_MaxStability;

		private static ConfigEntry<float> CE_Marble_MinStability;

		private static ConfigEntry<float> CE_Marble_VerticalLoss;

		private static ConfigEntry<float> CE_Marble_HorizontalLoss;

		private static ConfigEntry<bool> CE_Ashstone_Enabled;

		private static ConfigEntry<float> CE_Ashstone_MaxStability;

		private static ConfigEntry<float> CE_Ashstone_MinStability;

		private static ConfigEntry<float> CE_Ashstone_VerticalLoss;

		private static ConfigEntry<float> CE_Ashstone_HorizontalLoss;

		private static ConfigEntry<bool> CE_Ancient_Enabled;

		private static ConfigEntry<float> CE_Ancient_MaxStability;

		private static ConfigEntry<float> CE_Ancient_MinStability;

		private static ConfigEntry<float> CE_Ancient_VerticalLoss;

		private static ConfigEntry<float> CE_Ancient_HorizontalLoss;

		private static ConfigEntry<bool> CE_Ice_Enabled;

		private static ConfigEntry<float> CE_Ice_MaxStability;

		private static ConfigEntry<float> CE_Ice_MinStability;

		private static ConfigEntry<float> CE_Ice_VerticalLoss;

		private static ConfigEntry<float> CE_Ice_HorizontalLoss;

		private static ConfigEntry<bool> CE_Timberwood_Enabled;

		private static ConfigEntry<float> CE_Timberwood_MaxStability;

		private static ConfigEntry<float> CE_Timberwood_MinStability;

		private static ConfigEntry<float> CE_Timberwood_VerticalLoss;

		private static ConfigEntry<float> CE_Timberwood_HorizontalLoss;

		private readonly ConfigurationManagerAttributes AdminConfig = new ConfigurationManagerAttributes
		{
			IsAdminOnly = true
		};

		private readonly ConfigurationManagerAttributes ClientConfig = new ConfigurationManagerAttributes
		{
			IsAdminOnly = false
		};

		private DateTime _lastReloadTime;

		private const long RELOAD_DELAY = 10000000L;

		public static bool GetWoodEnabled()
		{
			return CE_Wood_Enabled.Value;
		}

		public static float GetWoodMaxStability()
		{
			return CE_Wood_MaxStability.Value;
		}

		public static float GetWoodMinStability()
		{
			return CE_Wood_MinStability.Value;
		}

		public static float GetWoodVerticalLoss()
		{
			return CE_Wood_VerticalLoss.Value;
		}

		public static float GetWoodHorizontalLoss()
		{
			return CE_Wood_HorizontalLoss.Value;
		}

		public static bool GetHardWoodEnabled()
		{
			return CE_HardWood_Enabled.Value;
		}

		public static float GetHardWoodMaxStability()
		{
			return CE_HardWood_MaxStability.Value;
		}

		public static float GetHardWoodMinStability()
		{
			return CE_HardWood_MinStability.Value;
		}

		public static float GetHardWoodVerticalLoss()
		{
			return CE_HardWood_VerticalLoss.Value;
		}

		public static float GetHardWoodHorizontalLoss()
		{
			return CE_HardWood_HorizontalLoss.Value;
		}

		public static bool GetStoneEnabled()
		{
			return CE_Stone_Enabled.Value;
		}

		public static float GetStoneMaxStability()
		{
			return CE_Stone_MaxStability.Value;
		}

		public static float GetStoneMinStability()
		{
			return CE_Stone_MinStability.Value;
		}

		public static float GetStoneVerticalLoss()
		{
			return CE_Stone_VerticalLoss.Value;
		}

		public static float GetStoneHorizontalLoss()
		{
			return CE_Stone_HorizontalLoss.Value;
		}

		public static bool GetIronEnabled()
		{
			return CE_Iron_Enabled.Value;
		}

		public static float GetIronMaxStability()
		{
			return CE_Iron_MaxStability.Value;
		}

		public static float GetIronMinStability()
		{
			return CE_Iron_MinStability.Value;
		}

		public static float GetIronVerticalLoss()
		{
			return CE_Iron_VerticalLoss.Value;
		}

		public static float GetIronHorizontalLoss()
		{
			return CE_Iron_HorizontalLoss.Value;
		}

		public static bool GetMarbleEnabled()
		{
			return CE_Marble_Enabled.Value;
		}

		public static float GetMarbleMaxStability()
		{
			return CE_Marble_MaxStability.Value;
		}

		public static float GetMarbleMinStability()
		{
			return CE_Marble_MinStability.Value;
		}

		public static float GetMarbleVerticalLoss()
		{
			return CE_Marble_VerticalLoss.Value;
		}

		public static float GetMarbleHorizontalLoss()
		{
			return CE_Marble_HorizontalLoss.Value;
		}

		public static bool GetAshstoneEnabled()
		{
			return CE_Ashstone_Enabled.Value;
		}

		public static float GetAshstoneMaxStability()
		{
			return CE_Ashstone_MaxStability.Value;
		}

		public static float GetAshstoneMinStability()
		{
			return CE_Ashstone_MinStability.Value;
		}

		public static float GetAshstoneVerticalLoss()
		{
			return CE_Ashstone_VerticalLoss.Value;
		}

		public static float GetAshstoneHorizontalLoss()
		{
			return CE_Ashstone_HorizontalLoss.Value;
		}

		public static bool GetAncientEnabled()
		{
			return CE_Ancient_Enabled.Value;
		}

		public static float GetAncientMaxStability()
		{
			return CE_Ancient_MaxStability.Value;
		}

		public static float GetAncientMinStability()
		{
			return CE_Ancient_MinStability.Value;
		}

		public static float GetAncientVerticalLoss()
		{
			return CE_Ancient_VerticalLoss.Value;
		}

		public static float GetAncientHorizontalLoss()
		{
			return CE_Ancient_HorizontalLoss.Value;
		}

		public static bool GetIceEnabled()
		{
			return CE_Ice_Enabled.Value;
		}

		public static float GetIceMaxStability()
		{
			return CE_Ice_MaxStability.Value;
		}

		public static float GetIceMinStability()
		{
			return CE_Ice_MinStability.Value;
		}

		public static float GetIceVerticalLoss()
		{
			return CE_Ice_VerticalLoss.Value;
		}

		public static float GetIceHorizontalLoss()
		{
			return CE_Ice_HorizontalLoss.Value;
		}

		public static bool GetTimberwoodEnabled()
		{
			return CE_Timberwood_Enabled.Value;
		}

		public static float GetTimberwoodMaxStability()
		{
			return CE_Timberwood_MaxStability.Value;
		}

		public static float GetTimberwoodMinStability()
		{
			return CE_Timberwood_MinStability.Value;
		}

		public static float GetTimberwoodVerticalLoss()
		{
			return CE_Timberwood_VerticalLoss.Value;
		}

		public static float GetTimberwoodHorizontalLoss()
		{
			return CE_Timberwood_HorizontalLoss.Value;
		}

		private void AddConfig<T>(string key, string section, string description, bool synced, T value, ref ConfigEntry<T> configEntry)
		{
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Expected O, but got Unknown
			string extendedDescription = GetExtendedDescription(description, synced);
			configEntry = ((BaseUnityPlugin)this).Config.Bind<T>(section, key, value, new ConfigDescription(extendedDescription, (AcceptableValueBase)null, new object[1] { synced ? AdminConfig : ClientConfig }));
		}

		public string GetExtendedDescription(string description, bool synchronizedSetting)
		{
			return description + (synchronizedSetting ? " [Synced with Server]" : " [Not Synced with Server]");
		}

		public void Awake()
		{
			AddConfig("EnableSection", "Wood", "True to use the settings in this section, set to False to use vanilla behavior (bool).", synced: true, value: true, ref CE_Wood_Enabled);
			AddConfig("MaximumStability", "Wood", "How much stability this material provides on solid ground (float).", synced: true, 100f, ref CE_Wood_MaxStability);
			AddConfig("MinimumStability", "Wood", "How much stability this material needs to remain standing (float).", synced: true, 10f, ref CE_Wood_MinStability);
			AddConfig("VerticalLoss", "Wood", "Multiplier to vertical or upwards stability (float).", synced: true, 0.125f, ref CE_Wood_VerticalLoss);
			AddConfig("HorizontalLoss", "Wood", "Multiplier to horizontal or outwards stability (float).", synced: true, 0.2f, ref CE_Wood_HorizontalLoss);
			AddConfig("EnableSection", "HardWood", "True to use the settings in this section, set to False to use vanilla behavior (bool).", synced: true, value: true, ref CE_HardWood_Enabled);
			AddConfig("MaximumStability", "HardWood", "How much stability this material provides on solid ground (float).", synced: true, 140f, ref CE_HardWood_MaxStability);
			AddConfig("MinimumStability", "HardWood", "How much stability this material needs to remain standing (float).", synced: true, 10f, ref CE_HardWood_MinStability);
			AddConfig("VerticalLoss", "HardWood", "Multiplier to vertical or upwards stability (float).", synced: true, 0.1f, ref CE_HardWood_VerticalLoss);
			AddConfig("HorizontalLoss", "HardWood", "Multiplier to horizontal or outwards stability (float).", synced: true, 1f / 6f, ref CE_HardWood_HorizontalLoss);
			AddConfig("EnableSection", "Stone", "True to use the settings in this section, set to False to use vanilla behavior (bool).", synced: true, value: true, ref CE_Stone_Enabled);
			AddConfig("MaximumStability", "Stone", "How much stability this material provides on solid ground (float).", synced: true, 1000f, ref CE_Stone_MaxStability);
			AddConfig("MinimumStability", "Stone", "How much stability this material needs to remain standing (float).", synced: true, 100f, ref CE_Stone_MinStability);
			AddConfig("VerticalLoss", "Stone", "Multiplier to vertical or upwards stability (float).", synced: true, 0.125f, ref CE_Stone_VerticalLoss);
			AddConfig("HorizontalLoss", "Stone", "Multiplier to horizontal or outwards stability (float).", synced: true, 0.5f, ref CE_Stone_HorizontalLoss);
			AddConfig("EnableSection", "Iron", "True to use the settings in this section, set to False to use vanilla behavior (bool).", synced: true, value: true, ref CE_Iron_Enabled);
			AddConfig("MaximumStability", "Iron", "How much stability this material provides on solid ground (float).", synced: true, 1500f, ref CE_Iron_MaxStability);
			AddConfig("MinimumStability", "Iron", "How much stability this material needs to remain standing (float).", synced: true, 20f, ref CE_Iron_MinStability);
			AddConfig("VerticalLoss", "Iron", "Multiplier to vertical or upwards stability (float).", synced: true, 1f / 13f, ref CE_Iron_VerticalLoss);
			AddConfig("HorizontalLoss", "Iron", "Multiplier to horizontal or outwards stability (float).", synced: true, 1f / 13f, ref CE_Iron_HorizontalLoss);
			AddConfig("EnableSection", "Marble", "True to use the settings in this section, set to False to use vanilla behavior (bool).", synced: true, value: true, ref CE_Marble_Enabled);
			AddConfig("MaximumStability", "Marble", "How much stability this material provides on solid ground (float).", synced: true, 1500f, ref CE_Marble_MaxStability);
			AddConfig("MinimumStability", "Marble", "How much stability this material needs to remain standing (float).", synced: true, 100f, ref CE_Marble_MinStability);
			AddConfig("VerticalLoss", "Marble", "Multiplier to vertical or upwards stability (float).", synced: true, 0.125f, ref CE_Marble_VerticalLoss);
			AddConfig("HorizontalLoss", "Marble", "Multiplier to horizontal or outwards stability (float).", synced: true, 0.5f, ref CE_Marble_HorizontalLoss);
			AddConfig("EnableSection", "Ashstone", "True to use the settings in this section, set to False to use vanilla behavior (bool).", synced: true, value: true, ref CE_Ashstone_Enabled);
			AddConfig("MaximumStability", "Ashstone", "How much stability this material provides on solid ground (float).", synced: true, 2000f, ref CE_Ashstone_MaxStability);
			AddConfig("MinimumStability", "Ashstone", "How much stability this material needs to remain standing (float).", synced: true, 100f, ref CE_Ashstone_MinStability);
			AddConfig("VerticalLoss", "Ashstone", "Multiplier to vertical or upwards stability (float).", synced: true, 0.1f, ref CE_Ashstone_VerticalLoss);
			AddConfig("HorizontalLoss", "Ashstone", "Multiplier to horizontal or outwards stability (float).", synced: true, 1f / 3f, ref CE_Ashstone_HorizontalLoss);
			AddConfig("EnableSection", "Ancient", "True to use the settings in this section, set to False to use vanilla behavior (bool).", synced: true, value: true, ref CE_Ancient_Enabled);
			AddConfig("MaximumStability", "Ancient", "How much stability this material provides on solid ground (float).", synced: true, 5000f, ref CE_Ancient_MaxStability);
			AddConfig("MinimumStability", "Ancient", "How much stability this material needs to remain standing (float).", synced: true, 100f, ref CE_Ancient_MinStability);
			AddConfig("VerticalLoss", "Ancient", "Multiplier to vertical or upwards stability (float).", synced: true, 1f / 15f, ref CE_Ancient_VerticalLoss);
			AddConfig("HorizontalLoss", "Ancient", "Multiplier to horizontal or outwards stability (float).", synced: true, 0.25f, ref CE_Ancient_HorizontalLoss);
			AddConfig("EnableSection", "Ice", "True to use the settings in this section, set to False to use vanilla behavior (bool).", synced: true, value: true, ref CE_Ice_Enabled);
			AddConfig("MaximumStability", "Ice", "How much stability this material provides on solid ground (float).", synced: true, 1000f, ref CE_Ice_MaxStability);
			AddConfig("MinimumStability", "Ice", "How much stability this material needs to remain standing (float).", synced: true, 100f, ref CE_Ice_MinStability);
			AddConfig("VerticalLoss", "Ice", "Multiplier to vertical or upwards stability (float).", synced: true, 0.125f, ref CE_Ice_VerticalLoss);
			AddConfig("HorizontalLoss", "Ice", "Multiplier to horizontal or outwards stability (float).", synced: true, 1f / 3f, ref CE_Ice_HorizontalLoss);
			AddConfig("EnableSection", "Timberwood", "True to use the settings in this section, set to False to use vanilla behavior (bool).", synced: true, value: true, ref CE_Timberwood_Enabled);
			AddConfig("MaximumStability", "Timberwood", "How much stability this material provides on solid ground (float).", synced: true, 200f, ref CE_Timberwood_MaxStability);
			AddConfig("MinimumStability", "Timberwood", "How much stability this material needs to remain standing (float).", synced: true, 10f, ref CE_Timberwood_MinStability);
			AddConfig("VerticalLoss", "Timberwood", "Multiplier to vertical or upwards stability (float).", synced: true, 1f / 13f, ref CE_Timberwood_VerticalLoss);
			AddConfig("HorizontalLoss", "Timberwood", "Multiplier to horizontal or outwards stability (float).", synced: true, 0.2f, ref CE_Timberwood_HorizontalLoss);
			CornerstoneLogger.LogInfo((object)"I want to Rock and Roll all niiiiiight!");
			Assembly executingAssembly = Assembly.GetExecutingAssembly();
			HarmonyInstance.PatchAll(executingAssembly);
			SetupWatcher();
		}

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

		private void SetupWatcher()
		{
			_lastReloadTime = DateTime.Now;
			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)
		{
			DateTime now = DateTime.Now;
			long num = now.Ticks - _lastReloadTime.Ticks;
			if (File.Exists(ConfigFileFullPath) && num >= 10000000)
			{
				try
				{
					CornerstoneLogger.LogInfo((object)"Attempting to reload configuration...");
					((BaseUnityPlugin)this).Config.Reload();
				}
				catch
				{
					CornerstoneLogger.LogError((object)("There was an issue loading " + ConfigFileName));
					return;
				}
				_lastReloadTime = now;
			}
		}

		static CornerstonePlugin()
		{
			string configPath = Paths.ConfigPath;
			char directorySeparatorChar = Path.DirectorySeparatorChar;
			ConfigFileFullPath = configPath + directorySeparatorChar + ConfigFileName;
			CornerstoneLogger = Logger.CreateLogSource("Cornerstone");
			CE_Wood_Enabled = null;
			CE_Wood_MaxStability = null;
			CE_Wood_MinStability = null;
			CE_Wood_VerticalLoss = null;
			CE_Wood_HorizontalLoss = null;
			CE_HardWood_Enabled = null;
			CE_HardWood_MaxStability = null;
			CE_HardWood_MinStability = null;
			CE_HardWood_VerticalLoss = null;
			CE_HardWood_HorizontalLoss = null;
			CE_Stone_Enabled = null;
			CE_Stone_MaxStability = null;
			CE_Stone_MinStability = null;
			CE_Stone_VerticalLoss = null;
			CE_Stone_HorizontalLoss = null;
			CE_Iron_Enabled = null;
			CE_Iron_MaxStability = null;
			CE_Iron_MinStability = null;
			CE_Iron_VerticalLoss = null;
			CE_Iron_HorizontalLoss = null;
			CE_Marble_Enabled = null;
			CE_Marble_MaxStability = null;
			CE_Marble_MinStability = null;
			CE_Marble_VerticalLoss = null;
			CE_Marble_HorizontalLoss = null;
			CE_Ashstone_Enabled = null;
			CE_Ashstone_MaxStability = null;
			CE_Ashstone_MinStability = null;
			CE_Ashstone_VerticalLoss = null;
			CE_Ashstone_HorizontalLoss = null;
			CE_Ancient_Enabled = null;
			CE_Ancient_MaxStability = null;
			CE_Ancient_MinStability = null;
			CE_Ancient_VerticalLoss = null;
			CE_Ancient_HorizontalLoss = null;
			CE_Ice_Enabled = null;
			CE_Ice_MaxStability = null;
			CE_Ice_MinStability = null;
			CE_Ice_VerticalLoss = null;
			CE_Ice_HorizontalLoss = null;
			CE_Timberwood_Enabled = null;
			CE_Timberwood_MaxStability = null;
			CE_Timberwood_MinStability = null;
			CE_Timberwood_VerticalLoss = null;
			CE_Timberwood_HorizontalLoss = null;
		}
	}
	public class Cornerstone
	{
		[HarmonyPatch(typeof(WearNTear), "GetMaterialProperties")]
		public static class Patch_WearNTear_GetMaterialProperties
		{
			private static void Postfix(WearNTear __instance, ref float maxSupport, ref float minSupport, ref float horizontalLoss, ref float verticalLoss)
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0006: Unknown result type (might be due to invalid IL or missing references)
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				//IL_0031: Expected I4, but got Unknown
				MaterialType materialType = __instance.m_materialType;
				switch ((int)materialType)
				{
				case 0:
					if (CornerstonePlugin.GetWoodEnabled())
					{
						maxSupport = CornerstonePlugin.GetWoodMaxStability();
						minSupport = CornerstonePlugin.GetWoodMinStability();
						verticalLoss = CornerstonePlugin.GetWoodVerticalLoss();
						horizontalLoss = CornerstonePlugin.GetWoodHorizontalLoss();
					}
					break;
				case 3:
					if (CornerstonePlugin.GetHardWoodEnabled())
					{
						maxSupport = CornerstonePlugin.GetHardWoodMaxStability();
						minSupport = CornerstonePlugin.GetHardWoodMinStability();
						verticalLoss = CornerstonePlugin.GetHardWoodVerticalLoss();
						horizontalLoss = CornerstonePlugin.GetHardWoodHorizontalLoss();
					}
					break;
				case 1:
					if (CornerstonePlugin.GetStoneEnabled())
					{
						maxSupport = CornerstonePlugin.GetStoneMaxStability();
						minSupport = CornerstonePlugin.GetStoneMinStability();
						verticalLoss = CornerstonePlugin.GetStoneVerticalLoss();
						horizontalLoss = CornerstonePlugin.GetStoneHorizontalLoss();
					}
					break;
				case 2:
					if (CornerstonePlugin.GetIronEnabled())
					{
						maxSupport = CornerstonePlugin.GetIronMaxStability();
						minSupport = CornerstonePlugin.GetIronMinStability();
						verticalLoss = CornerstonePlugin.GetIronVerticalLoss();
						horizontalLoss = CornerstonePlugin.GetIronHorizontalLoss();
					}
					break;
				case 4:
					if (CornerstonePlugin.GetMarbleEnabled())
					{
						maxSupport = CornerstonePlugin.GetMarbleMaxStability();
						minSupport = CornerstonePlugin.GetMarbleMinStability();
						verticalLoss = CornerstonePlugin.GetMarbleVerticalLoss();
						horizontalLoss = CornerstonePlugin.GetMarbleHorizontalLoss();
					}
					break;
				case 5:
					if (CornerstonePlugin.GetAshstoneEnabled())
					{
						maxSupport = CornerstonePlugin.GetAshstoneMaxStability();
						minSupport = CornerstonePlugin.GetAshstoneMinStability();
						verticalLoss = CornerstonePlugin.GetAshstoneVerticalLoss();
						horizontalLoss = CornerstonePlugin.GetAshstoneHorizontalLoss();
					}
					break;
				case 6:
					if (CornerstonePlugin.GetAncientEnabled())
					{
						maxSupport = CornerstonePlugin.GetAncientMaxStability();
						minSupport = CornerstonePlugin.GetAncientMinStability();
						verticalLoss = CornerstonePlugin.GetAncientVerticalLoss();
						horizontalLoss = CornerstonePlugin.GetAncientHorizontalLoss();
					}
					break;
				case 7:
					if (CornerstonePlugin.GetIceEnabled())
					{
						maxSupport = CornerstonePlugin.GetIceMaxStability();
						minSupport = CornerstonePlugin.GetIceMinStability();
						verticalLoss = CornerstonePlugin.GetIceVerticalLoss();
						horizontalLoss = CornerstonePlugin.GetIceHorizontalLoss();
					}
					break;
				case 8:
					if (CornerstonePlugin.GetTimberwoodEnabled())
					{
						maxSupport = CornerstonePlugin.GetTimberwoodMaxStability();
						minSupport = CornerstonePlugin.GetTimberwoodMinStability();
						verticalLoss = CornerstonePlugin.GetTimberwoodVerticalLoss();
						horizontalLoss = CornerstonePlugin.GetTimberwoodHorizontalLoss();
					}
					break;
				}
			}
		}
	}
}