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 CE_Wood_Enabled; private static ConfigEntry CE_Wood_MaxStability; private static ConfigEntry CE_Wood_MinStability; private static ConfigEntry CE_Wood_VerticalLoss; private static ConfigEntry CE_Wood_HorizontalLoss; private static ConfigEntry CE_HardWood_Enabled; private static ConfigEntry CE_HardWood_MaxStability; private static ConfigEntry CE_HardWood_MinStability; private static ConfigEntry CE_HardWood_VerticalLoss; private static ConfigEntry CE_HardWood_HorizontalLoss; private static ConfigEntry CE_Stone_Enabled; private static ConfigEntry CE_Stone_MaxStability; private static ConfigEntry CE_Stone_MinStability; private static ConfigEntry CE_Stone_VerticalLoss; private static ConfigEntry CE_Stone_HorizontalLoss; private static ConfigEntry CE_Iron_Enabled; private static ConfigEntry CE_Iron_MaxStability; private static ConfigEntry CE_Iron_MinStability; private static ConfigEntry CE_Iron_VerticalLoss; private static ConfigEntry CE_Iron_HorizontalLoss; private static ConfigEntry CE_Marble_Enabled; private static ConfigEntry CE_Marble_MaxStability; private static ConfigEntry CE_Marble_MinStability; private static ConfigEntry CE_Marble_VerticalLoss; private static ConfigEntry CE_Marble_HorizontalLoss; private static ConfigEntry CE_Ashstone_Enabled; private static ConfigEntry CE_Ashstone_MaxStability; private static ConfigEntry CE_Ashstone_MinStability; private static ConfigEntry CE_Ashstone_VerticalLoss; private static ConfigEntry CE_Ashstone_HorizontalLoss; private static ConfigEntry CE_Ancient_Enabled; private static ConfigEntry CE_Ancient_MaxStability; private static ConfigEntry CE_Ancient_MinStability; private static ConfigEntry CE_Ancient_VerticalLoss; private static ConfigEntry CE_Ancient_HorizontalLoss; private static ConfigEntry CE_Ice_Enabled; private static ConfigEntry CE_Ice_MaxStability; private static ConfigEntry CE_Ice_MinStability; private static ConfigEntry CE_Ice_VerticalLoss; private static ConfigEntry CE_Ice_HorizontalLoss; private static ConfigEntry CE_Timberwood_Enabled; private static ConfigEntry CE_Timberwood_MaxStability; private static ConfigEntry CE_Timberwood_MinStability; private static ConfigEntry CE_Timberwood_VerticalLoss; private static ConfigEntry 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(string key, string section, string description, bool synced, T value, ref ConfigEntry 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(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; } } } } }