diff --git a/src/ARKServerManager/ARKServerManager.csproj b/src/ARKServerManager/ARKServerManager.csproj index 6fbb69d4..3c1b6b71 100644 --- a/src/ARKServerManager/ARKServerManager.csproj +++ b/src/ARKServerManager/ARKServerManager.csproj @@ -192,6 +192,7 @@ + @@ -210,7 +211,7 @@ AddUserWindow.xaml - + DataDirectoryWindow.xaml @@ -274,7 +275,7 @@ CommandLineWindow.xaml - + GlobalSettingsControl.xaml @@ -307,7 +308,7 @@ RCONWindow.xaml - + ServerSettingsControl.xaml @@ -491,7 +492,7 @@ Designer MSBuild:Compile - + Designer MSBuild:Compile @@ -520,7 +521,7 @@ Designer MSBuild:Compile - + Designer MSBuild:Compile diff --git a/src/ARKServerManager/Globalization/en-US/en-US.xaml b/src/ARKServerManager/Globalization/en-US/en-US.xaml index fc295f2b..36bc747d 100644 --- a/src/ARKServerManager/Globalization/en-US/en-US.xaml +++ b/src/ARKServerManager/Globalization/en-US/en-US.xaml @@ -1638,14 +1638,18 @@ Per-Level Stat Multipliers (Tamed) - Add Per-Level Stat Multipliers (Tamed) - Affinity Per-Level Stat Multipliers (Wild) + Mutagen Level Boost (Wild) + Mutagen Level Boost (Bred) Dino Breeding Multipliers If enabled, allows scale factors to be applied to each base stat. If enabled, allows scale factors to be applied to each stat. If enabled, allows scale factors to be applied to the Taming Addition for each stat. If enabled, allows scale factors to be applied to the Taming Multiplier for each stat. If enabled, allows scale factors to be applied to the Tamed Stat Increase for each stat. - Reset all multipliers back to defaults. - Reset all multipliers back to defaults. + If enabled, allows scale factors to be applied to the Number of levels Mutagen adds to tames with wild ancestry. + If enabled, allows scale factors to be applied to the Number of levels Mutagen adds to tames with bred ancestry. + Reset all values back to defaults. + Reset all values back to defaults. Mating Interval: Specifies the multiplier for time between tamed dino mating. Lower values decrease the time between mating. diff --git a/src/ARKServerManager/Lib/GameData.cs b/src/ARKServerManager/Lib/GameData.cs index 28386946..2f0117fe 100644 --- a/src/ARKServerManager/Lib/GameData.cs +++ b/src/ARKServerManager/Lib/GameData.cs @@ -322,6 +322,16 @@ namespace ServerManagerTool.Lib return new float[] { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f }; } + internal static IEnumerable GetPerLevelMutagenLevelBoost_DinoWild() + { + return new int[] { 5, 5, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0 }; + } + + internal static IEnumerable GetPerLevelMutagenLevelBoost_DinoTamed() + { + return new int[] { 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 }; + } + internal static bool[] GetStatMultiplierInclusions_DinoWildPerLevel() { return new bool[] { true, true, false, true, true, false, true, true, true, true, false, true }; @@ -351,6 +361,16 @@ namespace ServerManagerTool.Lib { return new bool[] { true, true, false, true, true, true, true, true, true, true, true, true }; } + + internal static bool[] GetMutagenLevelBoostInclusions_DinoWild() + { + return new bool[] { true, true, true, true, true, true, true, true, true, true, true, true }; + } + + internal static bool[] GetMutagenLevelBoostInclusions_DinoTamed() + { + return new bool[] { true, true, true, true, true, true, true, true, true, true, true, true }; + } #endregion #region Levels diff --git a/src/ARKServerManager/Lib/Model/StatsMultiplierArray.cs b/src/ARKServerManager/Lib/Model/StatsMultiplierFloatArray.cs similarity index 82% rename from src/ARKServerManager/Lib/Model/StatsMultiplierArray.cs rename to src/ARKServerManager/Lib/Model/StatsMultiplierFloatArray.cs index cab5087a..74365fb8 100644 --- a/src/ARKServerManager/Lib/Model/StatsMultiplierArray.cs +++ b/src/ARKServerManager/Lib/Model/StatsMultiplierFloatArray.cs @@ -5,29 +5,29 @@ using System.Linq; namespace ServerManagerTool.Lib.Model { - public class StatsMultiplierArray : FloatIniValueArray + public class StatsMultiplierFloatArray : FloatIniValueArray { - protected StatsMultiplierArray(string iniKeyName, Func> resetFunc, bool[] inclusions) + protected StatsMultiplierFloatArray(string iniKeyName, Func> resetFunc, bool[] inclusions) : base(iniKeyName, resetFunc) { Inclusions = inclusions; } - public StatsMultiplierArray(string iniKeyName, Func> resetFunc, bool[] inclusions, bool onlyWriteNonDefaults) + public StatsMultiplierFloatArray(string iniKeyName, Func> resetFunc, bool[] inclusions, bool onlyWriteNonDefaults) : base(iniKeyName, resetFunc) { Inclusions = inclusions; if (onlyWriteNonDefaults && resetFunc != null) { - DefaultValues = new StatsMultiplierArray(iniKeyName, null, inclusions); + DefaultValues = new StatsMultiplierFloatArray(iniKeyName, null, inclusions); DefaultValues.AddRange(resetFunc()); } } public bool[] Inclusions { get; private set; } = null; - private StatsMultiplierArray DefaultValues { get; set; } = null; + private StatsMultiplierFloatArray DefaultValues { get; set; } = null; public override void FromIniValues(IEnumerable values) { diff --git a/src/ARKServerManager/Lib/Model/StatsMultiplierIntegerArray.cs b/src/ARKServerManager/Lib/Model/StatsMultiplierIntegerArray.cs new file mode 100644 index 00000000..1d4b8554 --- /dev/null +++ b/src/ARKServerManager/Lib/Model/StatsMultiplierIntegerArray.cs @@ -0,0 +1,88 @@ +using ServerManagerTool.Common.Model; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace ServerManagerTool.Lib.Model +{ + public class StatsMultiplierIntegerArray : IntegerIniValueArray + { + protected StatsMultiplierIntegerArray(string iniKeyName, Func> resetFunc, bool[] inclusions) + : base(iniKeyName, resetFunc) + { + Inclusions = inclusions; + } + + public StatsMultiplierIntegerArray(string iniKeyName, Func> resetFunc, bool[] inclusions, bool onlyWriteNonDefaults) + : base(iniKeyName, resetFunc) + { + Inclusions = inclusions; + + if (onlyWriteNonDefaults && resetFunc != null) + { + DefaultValues = new StatsMultiplierIntegerArray(iniKeyName, null, inclusions); + DefaultValues.AddRange(resetFunc()); + } + } + + public bool[] Inclusions { get; private set; } = null; + + private StatsMultiplierIntegerArray DefaultValues { get; set; } = null; + + public override void FromIniValues(IEnumerable values) + { + this.Clear(); + + var list = new List(); + if (this.ResetFunc != null) + list.AddRange(this.ResetFunc()); + + foreach (var v in values) + { + var indexStart = v.IndexOf('['); + var indexEnd = v.IndexOf(']'); + + if (indexStart >= indexEnd) + { + // Invalid format + continue; + } + + if (!int.TryParse(v.Substring(indexStart + 1, indexEnd - indexStart - 1), out int index)) + { + // Invalid index + continue; + } + + if (index >= list.Count) + { + // Unexpected size + continue; + } + + list[index] = this.FromIniValue(v.Substring(v.IndexOf('=') + 1).Trim()); + this.IsEnabled = true; + } + + this.AddRange(list); + } + + public override IEnumerable ToIniValues() + { + var values = new List(); + for (var i = 0; i < this.Count; i++) + { + if (!(Inclusions?.ElementAtOrDefault(i) ?? true)) + continue; + if (DefaultValues != null && Equals(DefaultValues[i], this[i])) + continue; + + if (string.IsNullOrWhiteSpace(IniCollectionKey)) + values.Add(this.ToIniValue(this[i])); + else + values.Add($"{this.IniCollectionKey}[{i}]={this.ToIniValue(this[i])}"); + } + return values; + } + } +} diff --git a/src/ARKServerManager/Lib/ServerProfile.cs b/src/ARKServerManager/Lib/ServerProfile.cs index d8dc7a6d..d8dbc0c3 100644 --- a/src/ARKServerManager/Lib/ServerProfile.cs +++ b/src/ARKServerManager/Lib/ServerProfile.cs @@ -78,12 +78,14 @@ namespace ServerManagerTool.Lib this.DinoLevels = new LevelList(); this.PlayerLevels = new LevelList(); - this.PlayerBaseStatMultipliers = new StatsMultiplierArray(nameof(PlayerBaseStatMultipliers), GameData.GetBaseStatMultipliers_Player, GameData.GetStatMultiplierInclusions_PlayerBase(), true); - this.PerLevelStatsMultiplier_Player = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_Player), GameData.GetPerLevelStatsMultipliers_Player, GameData.GetStatMultiplierInclusions_PlayerPerLevel(), true); - this.PerLevelStatsMultiplier_DinoWild = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_DinoWild), GameData.GetPerLevelStatsMultipliers_DinoWild, GameData.GetStatMultiplierInclusions_DinoWildPerLevel(), true); - this.PerLevelStatsMultiplier_DinoTamed = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_DinoTamed), GameData.GetPerLevelStatsMultipliers_DinoTamed, GameData.GetStatMultiplierInclusions_DinoTamedPerLevel(), true); - this.PerLevelStatsMultiplier_DinoTamed_Add = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_DinoTamed_Add), GameData.GetPerLevelStatsMultipliers_DinoTamedAdd, GameData.GetStatMultiplierInclusions_DinoTamedAdd(), true); - this.PerLevelStatsMultiplier_DinoTamed_Affinity = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_DinoTamed_Affinity), GameData.GetPerLevelStatsMultipliers_DinoTamedAffinity, GameData.GetStatMultiplierInclusions_DinoTamedAffinity(), true); + this.PlayerBaseStatMultipliers = new StatsMultiplierFloatArray(nameof(PlayerBaseStatMultipliers), GameData.GetBaseStatMultipliers_Player, GameData.GetStatMultiplierInclusions_PlayerBase(), true); + this.PerLevelStatsMultiplier_Player = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_Player), GameData.GetPerLevelStatsMultipliers_Player, GameData.GetStatMultiplierInclusions_PlayerPerLevel(), true); + this.PerLevelStatsMultiplier_DinoWild = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_DinoWild), GameData.GetPerLevelStatsMultipliers_DinoWild, GameData.GetStatMultiplierInclusions_DinoWildPerLevel(), true); + this.PerLevelStatsMultiplier_DinoTamed = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_DinoTamed), GameData.GetPerLevelStatsMultipliers_DinoTamed, GameData.GetStatMultiplierInclusions_DinoTamedPerLevel(), true); + this.PerLevelStatsMultiplier_DinoTamed_Add = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_DinoTamed_Add), GameData.GetPerLevelStatsMultipliers_DinoTamedAdd, GameData.GetStatMultiplierInclusions_DinoTamedAdd(), true); + this.PerLevelStatsMultiplier_DinoTamed_Affinity = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_DinoTamed_Affinity), GameData.GetPerLevelStatsMultipliers_DinoTamedAffinity, GameData.GetStatMultiplierInclusions_DinoTamedAffinity(), true); + this.MutagenLevelBoost = new StatsMultiplierIntegerArray(nameof(MutagenLevelBoost), GameData.GetPerLevelMutagenLevelBoost_DinoWild, GameData.GetMutagenLevelBoostInclusions_DinoWild(), true); + this.MutagenLevelBoostBred = new StatsMultiplierIntegerArray(nameof(MutagenLevelBoostBred), GameData.GetPerLevelMutagenLevelBoost_DinoTamed, GameData.GetMutagenLevelBoostInclusions_DinoTamed(), true); this.HarvestResourceItemAmountClassMultipliers = new ResourceClassMultiplierList(nameof(HarvestResourceItemAmountClassMultipliers), GameData.GetResourceMultipliers); @@ -2046,19 +2048,19 @@ namespace ServerManagerTool.Lib - public static readonly DependencyProperty PlayerBaseStatMultipliersProperty = DependencyProperty.Register(nameof(PlayerBaseStatMultipliers), typeof(StatsMultiplierArray), typeof(ServerProfile), new PropertyMetadata(null)); + public static readonly DependencyProperty PlayerBaseStatMultipliersProperty = DependencyProperty.Register(nameof(PlayerBaseStatMultipliers), typeof(StatsMultiplierFloatArray), typeof(ServerProfile), new PropertyMetadata(null)); [IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Players)] - public StatsMultiplierArray PlayerBaseStatMultipliers + public StatsMultiplierFloatArray PlayerBaseStatMultipliers { - get { return (StatsMultiplierArray)GetValue(PlayerBaseStatMultipliersProperty); } + get { return (StatsMultiplierFloatArray)GetValue(PlayerBaseStatMultipliersProperty); } set { SetValue(PlayerBaseStatMultipliersProperty, value); } } - public static readonly DependencyProperty PerLevelStatsMultiplier_PlayerProperty = DependencyProperty.Register(nameof(PerLevelStatsMultiplier_Player), typeof(StatsMultiplierArray), typeof(ServerProfile), new PropertyMetadata(null)); + public static readonly DependencyProperty PerLevelStatsMultiplier_PlayerProperty = DependencyProperty.Register(nameof(PerLevelStatsMultiplier_Player), typeof(StatsMultiplierFloatArray), typeof(ServerProfile), new PropertyMetadata(null)); [IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Players)] - public StatsMultiplierArray PerLevelStatsMultiplier_Player + public StatsMultiplierFloatArray PerLevelStatsMultiplier_Player { - get { return (StatsMultiplierArray)GetValue(PerLevelStatsMultiplier_PlayerProperty); } + get { return (StatsMultiplierFloatArray)GetValue(PerLevelStatsMultiplier_PlayerProperty); } set { SetValue(PerLevelStatsMultiplier_PlayerProperty, value); } } #endregion @@ -2431,38 +2433,54 @@ namespace ServerManagerTool.Lib set { SetValue(PassiveTameIntervalMultiplierProperty, value); } } - public static readonly DependencyProperty PerLevelStatsMultiplier_DinoWildProperty = DependencyProperty.Register(nameof(PerLevelStatsMultiplier_DinoWild), typeof(StatsMultiplierArray), typeof(ServerProfile), new PropertyMetadata(null)); + public static readonly DependencyProperty PerLevelStatsMultiplier_DinoWildProperty = DependencyProperty.Register(nameof(PerLevelStatsMultiplier_DinoWild), typeof(StatsMultiplierFloatArray), typeof(ServerProfile), new PropertyMetadata(null)); [IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Dinos)] - public StatsMultiplierArray PerLevelStatsMultiplier_DinoWild + public StatsMultiplierFloatArray PerLevelStatsMultiplier_DinoWild { - get { return (StatsMultiplierArray)GetValue(PerLevelStatsMultiplier_DinoWildProperty); } + get { return (StatsMultiplierFloatArray)GetValue(PerLevelStatsMultiplier_DinoWildProperty); } set { SetValue(PerLevelStatsMultiplier_DinoWildProperty, value); } } - public static readonly DependencyProperty PerLevelStatsMultiplier_DinoTamedProperty = DependencyProperty.Register(nameof(PerLevelStatsMultiplier_DinoTamed), typeof(StatsMultiplierArray), typeof(ServerProfile), new PropertyMetadata(null)); + public static readonly DependencyProperty PerLevelStatsMultiplier_DinoTamedProperty = DependencyProperty.Register(nameof(PerLevelStatsMultiplier_DinoTamed), typeof(StatsMultiplierFloatArray), typeof(ServerProfile), new PropertyMetadata(null)); [IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Dinos)] - public StatsMultiplierArray PerLevelStatsMultiplier_DinoTamed + public StatsMultiplierFloatArray PerLevelStatsMultiplier_DinoTamed { - get { return (StatsMultiplierArray)GetValue(PerLevelStatsMultiplier_DinoTamedProperty); } + get { return (StatsMultiplierFloatArray)GetValue(PerLevelStatsMultiplier_DinoTamedProperty); } set { SetValue(PerLevelStatsMultiplier_DinoTamedProperty, value); } } - public static readonly DependencyProperty PerLevelStatsMultiplier_DinoTamed_AddProperty = DependencyProperty.Register(nameof(PerLevelStatsMultiplier_DinoTamed_Add), typeof(StatsMultiplierArray), typeof(ServerProfile), new PropertyMetadata(null)); + public static readonly DependencyProperty PerLevelStatsMultiplier_DinoTamed_AddProperty = DependencyProperty.Register(nameof(PerLevelStatsMultiplier_DinoTamed_Add), typeof(StatsMultiplierFloatArray), typeof(ServerProfile), new PropertyMetadata(null)); [IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Dinos)] - public StatsMultiplierArray PerLevelStatsMultiplier_DinoTamed_Add + public StatsMultiplierFloatArray PerLevelStatsMultiplier_DinoTamed_Add { - get { return (StatsMultiplierArray)GetValue(PerLevelStatsMultiplier_DinoTamed_AddProperty); } + get { return (StatsMultiplierFloatArray)GetValue(PerLevelStatsMultiplier_DinoTamed_AddProperty); } set { SetValue(PerLevelStatsMultiplier_DinoTamed_AddProperty, value); } } - public static readonly DependencyProperty PerLevelStatsMultiplier_DinoTamed_AffinityProperty = DependencyProperty.Register(nameof(PerLevelStatsMultiplier_DinoTamed_Affinity), typeof(StatsMultiplierArray), typeof(ServerProfile), new PropertyMetadata(null)); + public static readonly DependencyProperty PerLevelStatsMultiplier_DinoTamed_AffinityProperty = DependencyProperty.Register(nameof(PerLevelStatsMultiplier_DinoTamed_Affinity), typeof(StatsMultiplierFloatArray), typeof(ServerProfile), new PropertyMetadata(null)); [IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Dinos)] - public StatsMultiplierArray PerLevelStatsMultiplier_DinoTamed_Affinity + public StatsMultiplierFloatArray PerLevelStatsMultiplier_DinoTamed_Affinity { - get { return (StatsMultiplierArray)GetValue(PerLevelStatsMultiplier_DinoTamed_AffinityProperty); } + get { return (StatsMultiplierFloatArray)GetValue(PerLevelStatsMultiplier_DinoTamed_AffinityProperty); } set { SetValue(PerLevelStatsMultiplier_DinoTamed_AffinityProperty, value); } } + public static readonly DependencyProperty MutagenLevelBoostProperty = DependencyProperty.Register(nameof(MutagenLevelBoost), typeof(StatsMultiplierIntegerArray), typeof(ServerProfile), new PropertyMetadata(null)); + [IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Dinos)] + public StatsMultiplierIntegerArray MutagenLevelBoost + { + get { return (StatsMultiplierIntegerArray)GetValue(MutagenLevelBoostProperty); } + set { SetValue(MutagenLevelBoostProperty, value); } + } + + public static readonly DependencyProperty MutagenLevelBoostBredProperty = DependencyProperty.Register(nameof(MutagenLevelBoostBred), typeof(StatsMultiplierIntegerArray), typeof(ServerProfile), new PropertyMetadata(null)); + [IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Dinos)] + public StatsMultiplierIntegerArray MutagenLevelBoostBred + { + get { return (StatsMultiplierIntegerArray)GetValue(MutagenLevelBoostBredProperty); } + set { SetValue(MutagenLevelBoostBredProperty, value); } + } + public static readonly DependencyProperty DinoSpawnsProperty = DependencyProperty.Register(nameof(DinoSpawnWeightMultipliers), typeof(AggregateIniValueList), typeof(ServerProfile), new PropertyMetadata(null)); [IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Dinos)] public AggregateIniValueList DinoSpawnWeightMultipliers @@ -3539,6 +3557,8 @@ namespace ServerManagerTool.Lib settings.PerLevelStatsMultiplier_DinoTamed_Add.Reset(); settings.PerLevelStatsMultiplier_DinoTamed_Affinity.Reset(); settings.PerLevelStatsMultiplier_DinoWild.Reset(); + settings.MutagenLevelBoost.Reset(); + settings.MutagenLevelBoostBred.Reset(); settings.PerLevelStatsMultiplier_Player.Reset(); settings.PlayerBaseStatMultipliers.Reset(); settings.LoadServerFileAdministrators(); @@ -5308,10 +5328,12 @@ namespace ServerManagerTool.Lib this.ClearValue(TamedDinoTorporDrainMultiplierProperty); this.ClearValue(PassiveTameIntervalMultiplierProperty); - this.PerLevelStatsMultiplier_DinoWild = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_DinoWild), GameData.GetPerLevelStatsMultipliers_DinoWild, GameData.GetStatMultiplierInclusions_DinoWildPerLevel(), true); - this.PerLevelStatsMultiplier_DinoTamed = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_DinoTamed), GameData.GetPerLevelStatsMultipliers_DinoTamed, GameData.GetStatMultiplierInclusions_DinoTamedPerLevel(), true); - this.PerLevelStatsMultiplier_DinoTamed_Add = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_DinoTamed_Add), GameData.GetPerLevelStatsMultipliers_DinoTamedAdd, GameData.GetStatMultiplierInclusions_DinoTamedAdd(), true); - this.PerLevelStatsMultiplier_DinoTamed_Affinity = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_DinoTamed_Affinity), GameData.GetPerLevelStatsMultipliers_DinoTamedAffinity, GameData.GetStatMultiplierInclusions_DinoTamedAffinity(), true); + this.PerLevelStatsMultiplier_DinoWild = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_DinoWild), GameData.GetPerLevelStatsMultipliers_DinoWild, GameData.GetStatMultiplierInclusions_DinoWildPerLevel(), true); + this.PerLevelStatsMultiplier_DinoTamed = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_DinoTamed), GameData.GetPerLevelStatsMultipliers_DinoTamed, GameData.GetStatMultiplierInclusions_DinoTamedPerLevel(), true); + this.PerLevelStatsMultiplier_DinoTamed_Add = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_DinoTamed_Add), GameData.GetPerLevelStatsMultipliers_DinoTamedAdd, GameData.GetStatMultiplierInclusions_DinoTamedAdd(), true); + this.PerLevelStatsMultiplier_DinoTamed_Affinity = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_DinoTamed_Affinity), GameData.GetPerLevelStatsMultipliers_DinoTamedAffinity, GameData.GetStatMultiplierInclusions_DinoTamedAffinity(), true); + this.MutagenLevelBoost = new StatsMultiplierIntegerArray(nameof(MutagenLevelBoost), GameData.GetPerLevelMutagenLevelBoost_DinoWild, GameData.GetMutagenLevelBoostInclusions_DinoWild(), true); + this.MutagenLevelBoostBred = new StatsMultiplierIntegerArray(nameof(MutagenLevelBoostBred), GameData.GetPerLevelMutagenLevelBoost_DinoTamed, GameData.GetMutagenLevelBoostInclusions_DinoTamed(), true); this.DinoSpawnWeightMultipliers = new AggregateIniValueList(nameof(DinoSpawnWeightMultipliers), GameData.GetDinoSpawns); this.PreventDinoTameClassNames = new StringIniValueList(nameof(PreventDinoTameClassNames), () => new string[0]); @@ -5424,8 +5446,8 @@ namespace ServerManagerTool.Lib this.ClearValue(CraftingSkillBonusMultiplierProperty); this.ClearValue(MaxFallSpeedMultiplierProperty); - this.PlayerBaseStatMultipliers = new StatsMultiplierArray(nameof(PlayerBaseStatMultipliers), GameData.GetBaseStatMultipliers_Player, GameData.GetStatMultiplierInclusions_PlayerBase(), true); - this.PerLevelStatsMultiplier_Player = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_Player), GameData.GetPerLevelStatsMultipliers_Player, GameData.GetStatMultiplierInclusions_PlayerPerLevel(), true); + this.PlayerBaseStatMultipliers = new StatsMultiplierFloatArray(nameof(PlayerBaseStatMultipliers), GameData.GetBaseStatMultipliers_Player, GameData.GetStatMultiplierInclusions_PlayerBase(), true); + this.PerLevelStatsMultiplier_Player = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_Player), GameData.GetPerLevelStatsMultipliers_Player, GameData.GetStatMultiplierInclusions_PlayerPerLevel(), true); } public void ResetPreventTransferOverridesSection() @@ -5934,22 +5956,30 @@ namespace ServerManagerTool.Lib this.SetValue(TamedDinoTorporDrainMultiplierProperty, sourceProfile.TamedDinoTorporDrainMultiplier); this.SetValue(PassiveTameIntervalMultiplierProperty, sourceProfile.PassiveTameIntervalMultiplier); - this.PerLevelStatsMultiplier_DinoWild = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_DinoWild), GameData.GetPerLevelStatsMultipliers_DinoWild, GameData.GetStatMultiplierInclusions_DinoWildPerLevel(), true); + this.PerLevelStatsMultiplier_DinoWild = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_DinoWild), GameData.GetPerLevelStatsMultipliers_DinoWild, GameData.GetStatMultiplierInclusions_DinoWildPerLevel(), true); this.PerLevelStatsMultiplier_DinoWild.FromIniValues(sourceProfile.PerLevelStatsMultiplier_DinoWild.ToIniValues()); this.PerLevelStatsMultiplier_DinoWild.IsEnabled = sourceProfile.PerLevelStatsMultiplier_DinoWild.IsEnabled; - this.PerLevelStatsMultiplier_DinoTamed = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_DinoTamed), GameData.GetPerLevelStatsMultipliers_DinoTamed, GameData.GetStatMultiplierInclusions_DinoTamedPerLevel(), true); + this.PerLevelStatsMultiplier_DinoTamed = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_DinoTamed), GameData.GetPerLevelStatsMultipliers_DinoTamed, GameData.GetStatMultiplierInclusions_DinoTamedPerLevel(), true); this.PerLevelStatsMultiplier_DinoTamed.FromIniValues(sourceProfile.PerLevelStatsMultiplier_DinoTamed.ToIniValues()); this.PerLevelStatsMultiplier_DinoTamed.IsEnabled = sourceProfile.PerLevelStatsMultiplier_DinoTamed.IsEnabled; - this.PerLevelStatsMultiplier_DinoTamed_Add = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_DinoTamed_Add), GameData.GetPerLevelStatsMultipliers_DinoTamedAdd, GameData.GetStatMultiplierInclusions_DinoTamedAdd(), true); + this.PerLevelStatsMultiplier_DinoTamed_Add = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_DinoTamed_Add), GameData.GetPerLevelStatsMultipliers_DinoTamedAdd, GameData.GetStatMultiplierInclusions_DinoTamedAdd(), true); this.PerLevelStatsMultiplier_DinoTamed_Add.FromIniValues(sourceProfile.PerLevelStatsMultiplier_DinoTamed_Add.ToIniValues()); this.PerLevelStatsMultiplier_DinoTamed_Add.IsEnabled = sourceProfile.PerLevelStatsMultiplier_DinoTamed_Add.IsEnabled; - this.PerLevelStatsMultiplier_DinoTamed_Affinity = new StatsMultiplierArray(nameof(PerLevelStatsMultiplier_DinoTamed_Affinity), GameData.GetPerLevelStatsMultipliers_DinoTamedAffinity, GameData.GetStatMultiplierInclusions_DinoTamedAffinity(), true); + this.PerLevelStatsMultiplier_DinoTamed_Affinity = new StatsMultiplierFloatArray(nameof(PerLevelStatsMultiplier_DinoTamed_Affinity), GameData.GetPerLevelStatsMultipliers_DinoTamedAffinity, GameData.GetStatMultiplierInclusions_DinoTamedAffinity(), true); this.PerLevelStatsMultiplier_DinoTamed_Affinity.FromIniValues(sourceProfile.PerLevelStatsMultiplier_DinoTamed_Affinity.ToIniValues()); this.PerLevelStatsMultiplier_DinoTamed_Affinity.IsEnabled = sourceProfile.PerLevelStatsMultiplier_DinoTamed_Affinity.IsEnabled; + this.MutagenLevelBoost = new StatsMultiplierIntegerArray(nameof(MutagenLevelBoost), GameData.GetPerLevelMutagenLevelBoost_DinoWild, GameData.GetMutagenLevelBoostInclusions_DinoWild(), true); + this.MutagenLevelBoost.FromIniValues(sourceProfile.MutagenLevelBoost.ToIniValues()); + this.MutagenLevelBoost.IsEnabled = sourceProfile.MutagenLevelBoost.IsEnabled; + + this.MutagenLevelBoostBred = new StatsMultiplierIntegerArray(nameof(MutagenLevelBoostBred), GameData.GetPerLevelMutagenLevelBoost_DinoTamed, GameData.GetMutagenLevelBoostInclusions_DinoTamed(), true); + this.MutagenLevelBoostBred.FromIniValues(sourceProfile.MutagenLevelBoostBred.ToIniValues()); + this.MutagenLevelBoostBred.IsEnabled = sourceProfile.MutagenLevelBoostBred.IsEnabled; + sourceProfile.DinoSettings.RenderToModel(); this.DinoSpawnWeightMultipliers.Clear(); diff --git a/src/ARKServerManager/Windows/GlobalSettingsControl.xaml b/src/ARKServerManager/UserControls/GlobalSettingsControl.xaml similarity index 100% rename from src/ARKServerManager/Windows/GlobalSettingsControl.xaml rename to src/ARKServerManager/UserControls/GlobalSettingsControl.xaml diff --git a/src/ARKServerManager/Windows/GlobalSettingsControl.xaml.cs b/src/ARKServerManager/UserControls/GlobalSettingsControl.xaml.cs similarity index 100% rename from src/ARKServerManager/Windows/GlobalSettingsControl.xaml.cs rename to src/ARKServerManager/UserControls/GlobalSettingsControl.xaml.cs diff --git a/src/ARKServerManager/Windows/ServerSettingsControl.xaml b/src/ARKServerManager/UserControls/ServerSettingsControl.xaml similarity index 97% rename from src/ARKServerManager/Windows/ServerSettingsControl.xaml rename to src/ARKServerManager/UserControls/ServerSettingsControl.xaml index 580ee4ee..c5475614 100644 --- a/src/ARKServerManager/Windows/ServerSettingsControl.xaml +++ b/src/ARKServerManager/UserControls/ServerSettingsControl.xaml @@ -2874,6 +2874,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +