mirror of
https://github.com/tribufu/ServerManagers
synced 2026-05-18 09:35:48 +00:00
asm: add new config options
This commit is contained in:
parent
3e5ef04045
commit
6e3a6b9890
23 changed files with 1304 additions and 74 deletions
|
|
@ -210,6 +210,8 @@ namespace ServerManagerTool.Lib
|
|||
|
||||
public static DinoTamable IsTameableForClass(string className) => gameData?.Creatures?.FirstOrDefault(c => c.ClassName.Equals(className))?.IsTameable ?? DinoTamable.True;
|
||||
|
||||
public static DinoBreedingable IsBreedingableForClass(string className) => gameData?.Creatures?.FirstOrDefault(c => c.ClassName.Equals(className))?.IsBreedingable ?? DinoBreedingable.True;
|
||||
|
||||
public static string NameTagForClass(string className, bool returnEmptyIfNotFound = false) => gameData?.Creatures?.FirstOrDefault(c => c.ClassName.Equals(className))?.NameTag ?? (returnEmptyIfNotFound ? string.Empty : className);
|
||||
|
||||
public static string FriendlyCreatureNameForClass(string className, bool returnEmptyIfNotFound = false) => string.IsNullOrWhiteSpace(className) ? string.Empty : GlobalizedApplication.Instance.GetResourceString(className) ?? gameData?.Creatures?.FirstOrDefault(i => i.ClassName.Equals(className))?.Description ?? (returnEmptyIfNotFound ? string.Empty : className);
|
||||
|
|
|
|||
105
src/ARKServerManager/Lib/Model/ExcludeItemIndicesOverrideList.cs
Normal file
105
src/ARKServerManager/Lib/Model/ExcludeItemIndicesOverrideList.cs
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
using ServerManagerTool.Common.Attibutes;
|
||||
using ServerManagerTool.Common.Model;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Windows;
|
||||
|
||||
namespace ServerManagerTool.Lib
|
||||
{
|
||||
[DataContract]
|
||||
public class ExcludeItemIndicesOverrideList : AggregateIniValueList<ExcludeItemIndicesOverride>
|
||||
{
|
||||
public ExcludeItemIndicesOverrideList(string aggregateValueName)
|
||||
: base(aggregateValueName, null)
|
||||
{
|
||||
}
|
||||
|
||||
public IEnumerable<string> RenderToView()
|
||||
{
|
||||
Update();
|
||||
|
||||
return new List<string>();
|
||||
}
|
||||
|
||||
public void RenderToModel()
|
||||
{
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
IsEnabled = this.Count > 0;
|
||||
|
||||
foreach (var excludeItemIndices in this)
|
||||
excludeItemIndices.Update();
|
||||
}
|
||||
}
|
||||
|
||||
[DataContract]
|
||||
public class ExcludeItemIndicesOverride : AggregateIniValue
|
||||
{
|
||||
public static readonly DependencyProperty ItemIdProperty = DependencyProperty.Register(nameof(ItemId), typeof(Int64), typeof(ExcludeItemIndicesOverride), new PropertyMetadata(0L));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry(QuotedString = false, ExcludePropertyName = true)]
|
||||
public Int64 ItemId
|
||||
{
|
||||
get { return (Int64)GetValue(ItemIdProperty); }
|
||||
set { SetValue(ItemIdProperty, value); }
|
||||
}
|
||||
|
||||
public override string GetSortKey()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public override bool IsEquivalent(AggregateIniValue other)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void InitializeFromINIValue(string value)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
{
|
||||
Update();
|
||||
return;
|
||||
}
|
||||
|
||||
var kvPair = value.Split(new[] { '=' }, 2);
|
||||
Int64.TryParse(kvPair[1].Trim(' '), out Int64 kvValue);
|
||||
|
||||
if (kvValue <= 0)
|
||||
{
|
||||
Update();
|
||||
return;
|
||||
}
|
||||
|
||||
ItemId = kvValue;
|
||||
}
|
||||
|
||||
public override string ToINIValue()
|
||||
{
|
||||
return base.ToComplexINIValue(false);
|
||||
}
|
||||
|
||||
public bool IsValid => (ItemId > 0);
|
||||
|
||||
public override bool ShouldSave()
|
||||
{
|
||||
return IsValid;
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ValidStatusProperty = DependencyProperty.Register(nameof(ValidStatus), typeof(string), typeof(ExcludeItemIndicesOverride), new PropertyMetadata("N"));
|
||||
|
||||
public string ValidStatus
|
||||
{
|
||||
get { return (string)GetValue(ValidStatusProperty); }
|
||||
set { SetValue(ValidStatusProperty, value); }
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
ValidStatus = IsValid ? "Y" : "W";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -70,12 +70,13 @@ namespace ServerManagerTool.Lib
|
|||
// initialise the complex properties
|
||||
this.DinoSpawnWeightMultipliers = new AggregateIniValueList<DinoSpawn>(nameof(DinoSpawnWeightMultipliers), GameData.GetDinoSpawns);
|
||||
this.PreventDinoTameClassNames = new StringIniValueList(nameof(PreventDinoTameClassNames), () => new string[0] );
|
||||
this.PreventBreedingForClassNames = new StringIniValueList(nameof(PreventBreedingForClassNames), () => new string[0]);
|
||||
this.NPCReplacements = new AggregateIniValueList<NPCReplacement>(nameof(NPCReplacements), GameData.GetNPCReplacements);
|
||||
this.TamedDinoClassDamageMultipliers = new AggregateIniValueList<ClassMultiplier>(nameof(TamedDinoClassDamageMultipliers), GameData.GetDinoMultipliers);
|
||||
this.TamedDinoClassResistanceMultipliers = new AggregateIniValueList<ClassMultiplier>(nameof(TamedDinoClassResistanceMultipliers), GameData.GetDinoMultipliers);
|
||||
this.DinoClassDamageMultipliers = new AggregateIniValueList<ClassMultiplier>(nameof(DinoClassDamageMultipliers), GameData.GetDinoMultipliers);
|
||||
this.DinoClassResistanceMultipliers = new AggregateIniValueList<ClassMultiplier>(nameof(DinoClassResistanceMultipliers), GameData.GetDinoMultipliers);
|
||||
this.DinoSettings = new DinoSettingsList(this.DinoSpawnWeightMultipliers, this.PreventDinoTameClassNames, this.NPCReplacements, this.TamedDinoClassDamageMultipliers, this.TamedDinoClassResistanceMultipliers, this.DinoClassDamageMultipliers, this.DinoClassResistanceMultipliers);
|
||||
this.DinoSettings = new DinoSettingsList(this.DinoSpawnWeightMultipliers, this.PreventDinoTameClassNames, this.PreventBreedingForClassNames, this.NPCReplacements, this.TamedDinoClassDamageMultipliers, this.TamedDinoClassResistanceMultipliers, this.DinoClassDamageMultipliers, this.DinoClassResistanceMultipliers);
|
||||
|
||||
this.DinoLevels = new LevelList();
|
||||
this.PlayerLevels = new LevelList();
|
||||
|
|
@ -97,6 +98,7 @@ namespace ServerManagerTool.Lib
|
|||
this.ConfigOverrideItemCraftingCosts = new CraftingOverrideList(nameof(ConfigOverrideItemCraftingCosts));
|
||||
this.ConfigOverrideItemMaxQuantity = new StackSizeOverrideList(nameof(ConfigOverrideItemMaxQuantity));
|
||||
this.ConfigOverrideSupplyCrateItems = new SupplyCrateOverrideList(nameof(ConfigOverrideSupplyCrateItems));
|
||||
this.ExcludeItemIndices = new ExcludeItemIndicesOverrideList(nameof(ExcludeItemIndices));
|
||||
this.PreventTransferForClassNames = new PreventTransferOverrideList(nameof(PreventTransferForClassNames));
|
||||
|
||||
this.ConfigAddNPCSpawnEntriesContainer = new NPCSpawnContainerList<NPCSpawnContainer>(nameof(ConfigAddNPCSpawnEntriesContainer), NPCSpawnContainerType.Add);
|
||||
|
|
@ -315,6 +317,38 @@ namespace ServerManagerTool.Lib
|
|||
set { SetValue(BanListURLProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty EnableCustomDynamicConfigUrlProperty = DependencyProperty.Register(nameof(EnableCustomDynamicConfigUrl), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[DataMember]
|
||||
public bool EnableCustomDynamicConfigUrl
|
||||
{
|
||||
get { return (bool)GetValue(EnableCustomDynamicConfigUrlProperty); }
|
||||
set { SetValue(EnableCustomDynamicConfigUrlProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty CustomDynamicConfigUrlProperty = DependencyProperty.Register(nameof(CustomDynamicConfigUrl), typeof(string), typeof(ServerProfile), new PropertyMetadata(""));
|
||||
[IniFileEntry(IniFiles.GameUserSettings, IniSections.GUS_ServerSettings, ServerProfileCategory.Administration, ConditionedOn = nameof(EnableCustomDynamicConfigUrl), QuotedString = QuotedStringType.True)]
|
||||
public string CustomDynamicConfigUrl
|
||||
{
|
||||
get { return (string)GetValue(CustomDynamicConfigUrlProperty); }
|
||||
set { SetValue(CustomDynamicConfigUrlProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty EnableCustomLiveTuningUrlProperty = DependencyProperty.Register(nameof(EnableCustomLiveTuningUrl), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[DataMember]
|
||||
public bool EnableCustomLiveTuningUrl
|
||||
{
|
||||
get { return (bool)GetValue(EnableCustomLiveTuningUrlProperty); }
|
||||
set { SetValue(EnableCustomLiveTuningUrlProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty CustomLiveTuningUrlProperty = DependencyProperty.Register(nameof(CustomLiveTuningUrl), typeof(string), typeof(ServerProfile), new PropertyMetadata(""));
|
||||
[IniFileEntry(IniFiles.GameUserSettings, IniSections.GUS_ServerSettings, ServerProfileCategory.Administration, ConditionedOn = nameof(EnableCustomLiveTuningUrl), QuotedString = QuotedStringType.True)]
|
||||
public string CustomLiveTuningUrl
|
||||
{
|
||||
get { return (string)GetValue(CustomLiveTuningUrlProperty); }
|
||||
set { SetValue(CustomLiveTuningUrlProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty MaxPlayersProperty = DependencyProperty.Register(nameof(MaxPlayers), typeof(int), typeof(ServerProfile), new PropertyMetadata(70));
|
||||
[IniFileEntry(IniFiles.GameUserSettings, IniSections.GUS_GameSession, ServerProfileCategory.Administration)]
|
||||
public int MaxPlayers
|
||||
|
|
@ -669,6 +703,14 @@ namespace ServerManagerTool.Lib
|
|||
set { SetValue(StructureMemoryOptimizationsProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty UseStructureStasisGridProperty = DependencyProperty.Register(nameof(UseStructureStasisGrid), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[DataMember]
|
||||
public bool UseStructureStasisGrid
|
||||
{
|
||||
get { return (bool)GetValue(UseStructureStasisGridProperty); }
|
||||
set { SetValue(UseStructureStasisGridProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty NoUnderMeshCheckingProperty = DependencyProperty.Register(nameof(NoUnderMeshChecking), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[DataMember]
|
||||
public bool NoUnderMeshChecking
|
||||
|
|
@ -1115,6 +1157,14 @@ namespace ServerManagerTool.Lib
|
|||
#endregion
|
||||
|
||||
#region Server Details
|
||||
public static readonly DependencyProperty CultureProperty = DependencyProperty.Register(nameof(Culture), typeof(string), typeof(ServerProfile), new PropertyMetadata(String.Empty));
|
||||
[DataMember]
|
||||
public string Culture
|
||||
{
|
||||
get { return (string)GetValue(CultureProperty); }
|
||||
set { SetValue(CultureProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty BranchNameProperty = DependencyProperty.Register(nameof(BranchName), typeof(string), typeof(ServerProfile), new PropertyMetadata(String.Empty));
|
||||
[DataMember]
|
||||
public string BranchName
|
||||
|
|
@ -1197,6 +1247,22 @@ namespace ServerManagerTool.Lib
|
|||
set { SetValue(DisableFriendlyFirePvEProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty AllowCaveBuildingPvPProperty = DependencyProperty.Register(nameof(AllowCaveBuildingPvP), typeof(bool), typeof(ServerProfile), new PropertyMetadata(true));
|
||||
[IniFileEntry(IniFiles.GameUserSettings, IniSections.GUS_ServerSettings, ServerProfileCategory.Rules, "AllowCaveBuildingPvP")]
|
||||
public bool AllowCaveBuildingPvP
|
||||
{
|
||||
get { return (bool)GetValue(AllowCaveBuildingPvPProperty); }
|
||||
set { SetValue(AllowCaveBuildingPvPProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty DisableRailgunPVPProperty = DependencyProperty.Register(nameof(DisableRailgunPVP), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[DataMember]
|
||||
public bool DisableRailgunPVP
|
||||
{
|
||||
get { return (bool)GetValue(DisableRailgunPVPProperty); }
|
||||
set { SetValue(DisableRailgunPVPProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty DisableLootCratesProperty = DependencyProperty.Register(nameof(DisableLootCrates), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Rules, "bDisableLootCrates")]
|
||||
public bool DisableLootCrates
|
||||
|
|
@ -1221,6 +1287,14 @@ namespace ServerManagerTool.Lib
|
|||
set { SetValue(EnableExtraStructurePreventionVolumesProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty UseSingleplayerSettingsProperty = DependencyProperty.Register(nameof(UseSingleplayerSettings), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Rules, "bUseSingleplayerSettings", ConditionedOn = nameof(UseSingleplayerSettings))]
|
||||
public bool UseSingleplayerSettings
|
||||
{
|
||||
get { return (bool)GetValue(UseSingleplayerSettingsProperty); }
|
||||
set { SetValue(UseSingleplayerSettingsProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty EnableDifficultyOverrideProperty = DependencyProperty.Register(nameof(EnableDifficultyOverride), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
public bool EnableDifficultyOverride
|
||||
{
|
||||
|
|
@ -1333,6 +1407,14 @@ namespace ServerManagerTool.Lib
|
|||
set { SetValue(NoTransferFromFilteringProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty DisableCustomFoldersInTributeInventoriesProperty = DependencyProperty.Register(nameof(DisableCustomFoldersInTributeInventories), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[DataMember]
|
||||
public bool DisableCustomFoldersInTributeInventories
|
||||
{
|
||||
get { return (bool)GetValue(DisableCustomFoldersInTributeInventoriesProperty); }
|
||||
set { SetValue(DisableCustomFoldersInTributeInventoriesProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty OverrideTributeCharacterExpirationSecondsProperty = DependencyProperty.Register(nameof(OverrideTributeCharacterExpirationSeconds), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[DataMember]
|
||||
public bool OverrideTributeCharacterExpirationSeconds
|
||||
|
|
@ -1868,6 +1950,14 @@ namespace ServerManagerTool.Lib
|
|||
set { SetValue(WorldBuffScalingEfficacyProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty AdjustableMutagenSpawnDelayMultiplierProperty = DependencyProperty.Register(nameof(AdjustableMutagenSpawnDelayMultiplier), typeof(float), typeof(ServerProfile), new PropertyMetadata(1.0f));
|
||||
[IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Rules)]
|
||||
public float AdjustableMutagenSpawnDelayMultiplier
|
||||
{
|
||||
get { return (float)GetValue(AdjustableMutagenSpawnDelayMultiplierProperty); }
|
||||
set { SetValue(AdjustableMutagenSpawnDelayMultiplierProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty EnableCryoSicknessPVEProperty = DependencyProperty.Register(nameof(EnableCryoSicknessPVE), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[IniFileEntry(IniFiles.GameUserSettings, IniSections.GUS_ServerSettings, ServerProfileCategory.Rules)]
|
||||
public bool EnableCryoSicknessPVE
|
||||
|
|
@ -2412,6 +2502,14 @@ namespace ServerManagerTool.Lib
|
|||
set { SetValue(AutoDestroyDecayedDinosProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty UseDinoLevelUpAnimationsProperty = DependencyProperty.Register(nameof(UseDinoLevelUpAnimations), typeof(bool), typeof(ServerProfile), new PropertyMetadata(true));
|
||||
[IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Dinos, "bUseDinoLevelUpAnimations")]
|
||||
public bool UseDinoLevelUpAnimations
|
||||
{
|
||||
get { return (bool)GetValue(UseDinoLevelUpAnimationsProperty); }
|
||||
set { SetValue(UseDinoLevelUpAnimationsProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty PvEDinoDecayPeriodMultiplierProperty = DependencyProperty.Register(nameof(PvEDinoDecayPeriodMultiplier), typeof(float), typeof(ServerProfile), new PropertyMetadata(1.0f));
|
||||
[IniFileEntry(IniFiles.GameUserSettings, IniSections.GUS_ServerSettings, ServerProfileCategory.Dinos, WriteIfNotValue = 1.0f)]
|
||||
public float PvEDinoDecayPeriodMultiplier
|
||||
|
|
@ -2428,6 +2526,14 @@ namespace ServerManagerTool.Lib
|
|||
set { SetValue(AllowMultipleAttachedC4Property, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty AllowUnclaimDinosProperty = DependencyProperty.Register(nameof(AllowUnclaimDinos), typeof(bool), typeof(ServerProfile), new PropertyMetadata(true));
|
||||
[IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Dinos, "bAllowUnclaimDinos")]
|
||||
public bool AllowUnclaimDinos
|
||||
{
|
||||
get { return (bool)GetValue(AllowUnclaimDinosProperty); }
|
||||
set { SetValue(AllowUnclaimDinosProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty DisableDinoRidingProperty = DependencyProperty.Register(nameof(DisableDinoRiding), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Dinos, "bDisableDinoRiding", ConditionedOn = nameof(DisableDinoRiding))]
|
||||
public bool DisableDinoRiding
|
||||
|
|
@ -2444,6 +2550,14 @@ namespace ServerManagerTool.Lib
|
|||
set { SetValue(DisableDinoTamingProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty DisableDinoBreedingProperty = DependencyProperty.Register(nameof(DisableDinoBreeding), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Dinos, "bDisableDinoBreeding", ConditionedOn = nameof(DisableDinoBreeding))]
|
||||
public bool DisableDinoBreeding
|
||||
{
|
||||
get { return (bool)GetValue(DisableDinoBreedingProperty); }
|
||||
set { SetValue(DisableDinoBreedingProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty MaxTamedDinosProperty = DependencyProperty.Register(nameof(MaxTamedDinos), typeof(int), typeof(ServerProfile), new PropertyMetadata(5000));
|
||||
[IniFileEntry(IniFiles.GameUserSettings, IniSections.GUS_ServerSettings, ServerProfileCategory.Dinos)]
|
||||
public int MaxTamedDinos
|
||||
|
|
@ -2739,6 +2853,14 @@ namespace ServerManagerTool.Lib
|
|||
set { SetValue(PreventDinoTameClassNamesProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty PreventBreedingForClassNamesProperty = DependencyProperty.Register(nameof(PreventBreedingForClassNames), typeof(StringIniValueList), typeof(ServerProfile), new PropertyMetadata(null));
|
||||
[IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Dinos)]
|
||||
public StringIniValueList PreventBreedingForClassNames
|
||||
{
|
||||
get { return (StringIniValueList)GetValue(PreventBreedingForClassNamesProperty); }
|
||||
set { SetValue(PreventBreedingForClassNamesProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty DinoSettingsProperty = DependencyProperty.Register(nameof(DinoSettings), typeof(DinoSettingsList), typeof(ServerProfile), new PropertyMetadata(null));
|
||||
public DinoSettingsList DinoSettings
|
||||
{
|
||||
|
|
@ -3158,6 +3280,14 @@ namespace ServerManagerTool.Lib
|
|||
set { SetValue(DisableStructurePlacementCollisionProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty IgnoreLimitMaxStructuresInRangeTypeFlagProperty = DependencyProperty.Register(nameof(IgnoreLimitMaxStructuresInRangeTypeFlag), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[IniFileEntry(IniFiles.GameUserSettings, IniSections.GUS_ServerSettings, ServerProfileCategory.Structures)]
|
||||
public bool IgnoreLimitMaxStructuresInRangeTypeFlag
|
||||
{
|
||||
get { return (bool)GetValue(IgnoreLimitMaxStructuresInRangeTypeFlagProperty); }
|
||||
set { SetValue(IgnoreLimitMaxStructuresInRangeTypeFlagProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty EnableFastDecayIntervalProperty = DependencyProperty.Register(nameof(EnableFastDecayInterval), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
public bool EnableFastDecayInterval
|
||||
{
|
||||
|
|
@ -3237,6 +3367,14 @@ namespace ServerManagerTool.Lib
|
|||
set { SetValue(AllowIntegratedSPlusStructuresProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty IgnoreStructuresPreventionVolumesProperty = DependencyProperty.Register(nameof(IgnoreStructuresPreventionVolumes), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Structures, "bIgnoreStructuresPreventionVolumes")]
|
||||
public bool IgnoreStructuresPreventionVolumes
|
||||
{
|
||||
get { return (bool)GetValue(IgnoreStructuresPreventionVolumesProperty); }
|
||||
set { SetValue(IgnoreStructuresPreventionVolumesProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty GenesisUseStructuresPreventionVolumesProperty = DependencyProperty.Register(nameof(GenesisUseStructuresPreventionVolumes), typeof(bool), typeof(ServerProfile), new PropertyMetadata(false));
|
||||
[IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.Structures, "bGenesisUseStructuresPreventionVolumes")]
|
||||
public bool GenesisUseStructuresPreventionVolumes
|
||||
|
|
@ -3472,6 +3610,16 @@ namespace ServerManagerTool.Lib
|
|||
}
|
||||
#endregion
|
||||
|
||||
#region Exclude Item Indices Overrides
|
||||
public static readonly DependencyProperty ExcludeItemIndicesProperty = DependencyProperty.Register(nameof(ExcludeItemIndices), typeof(ExcludeItemIndicesOverrideList), typeof(ServerProfile), new PropertyMetadata(null));
|
||||
[IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.ExcludeItemIndicesOverrides)]
|
||||
public ExcludeItemIndicesOverrideList ExcludeItemIndices
|
||||
{
|
||||
get { return (ExcludeItemIndicesOverrideList)GetValue(ExcludeItemIndicesProperty); }
|
||||
set { SetValue(ExcludeItemIndicesProperty, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Stacking Overrides
|
||||
public static readonly DependencyProperty ItemStackSizeMultiplierProperty = DependencyProperty.Register(nameof(ItemStackSizeMultiplier), typeof(float), typeof(ServerProfile), new PropertyMetadata(1.0f));
|
||||
[IniFileEntry(IniFiles.GameUserSettings, IniSections.GUS_ServerSettings, ServerProfileCategory.StackSizeOverrides, WriteIfNotValue = 1.0f)]
|
||||
|
|
@ -4021,6 +4169,11 @@ namespace ServerManagerTool.Lib
|
|||
}
|
||||
}
|
||||
|
||||
if (this.DisableCustomFoldersInTributeInventories)
|
||||
{
|
||||
serverArgs.Append(" -DisableCustomFoldersInTributeInventories");
|
||||
}
|
||||
|
||||
if (this.EnableWebAlarm)
|
||||
{
|
||||
serverArgs.Append(" -webalarm");
|
||||
|
|
@ -4130,6 +4283,11 @@ namespace ServerManagerTool.Lib
|
|||
serverArgs.Append(" -structurememopts");
|
||||
}
|
||||
|
||||
if (this.UseStructureStasisGrid)
|
||||
{
|
||||
serverArgs.Append(" -UseStructureStasisGrid");
|
||||
}
|
||||
|
||||
if (this.SecureSendArKPayload)
|
||||
{
|
||||
serverArgs.Append(" -SecureSendArKPayload");
|
||||
|
|
@ -4170,11 +4328,21 @@ namespace ServerManagerTool.Lib
|
|||
serverArgs.Append(" -epiconly");
|
||||
}
|
||||
|
||||
if (this.EnableCustomDynamicConfigUrl && !string.IsNullOrWhiteSpace(this.CustomDynamicConfigUrl))
|
||||
{
|
||||
serverArgs.Append(" -UseDynamicConfig ");
|
||||
}
|
||||
|
||||
if ((this.Crossplay || this.EpicOnly) && this.EnablePublicIPForEpic)
|
||||
{
|
||||
serverArgs.Append($" -PublicIPForEpic={Config.Default.MachinePublicIP}");
|
||||
}
|
||||
|
||||
if (this.DisableRailgunPVP)
|
||||
{
|
||||
serverArgs.Append(" -DisableRailgunPVP");
|
||||
}
|
||||
|
||||
if (this.UseVivox)
|
||||
{
|
||||
serverArgs.Append(" -UseVivox");
|
||||
|
|
@ -4198,6 +4366,11 @@ namespace ServerManagerTool.Lib
|
|||
serverArgs.Append(" -imprintlimit=").Append(this.Imprintlimit);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(this.Culture))
|
||||
{
|
||||
serverArgs.Append(" -culture=").Append(this.Culture);
|
||||
}
|
||||
|
||||
return serverArgs.ToString();
|
||||
}
|
||||
|
||||
|
|
@ -4240,6 +4413,8 @@ namespace ServerManagerTool.Lib
|
|||
profile.NPCSpawnSettings.RenderToView();
|
||||
if (Config.Default.SectionSupplyCrateOverridesEnabled)
|
||||
profile.ConfigOverrideSupplyCrateItems.RenderToView();
|
||||
if (Config.Default.SectionExcludeItemIndicesOverridesEnabled)
|
||||
profile.ExcludeItemIndices.RenderToView();
|
||||
if (Config.Default.SectionCraftingOverridesEnabled)
|
||||
profile.ConfigOverrideItemCraftingCosts.RenderToView();
|
||||
if (Config.Default.SectionStackSizeOverridesEnabled)
|
||||
|
|
@ -4320,6 +4495,8 @@ namespace ServerManagerTool.Lib
|
|||
profile.NPCSpawnSettings.RenderToView();
|
||||
if (Config.Default.SectionSupplyCrateOverridesEnabled)
|
||||
profile.ConfigOverrideSupplyCrateItems.RenderToView();
|
||||
if (Config.Default.SectionExcludeItemIndicesOverridesEnabled)
|
||||
profile.ExcludeItemIndices.RenderToView();
|
||||
if (Config.Default.SectionCraftingOverridesEnabled)
|
||||
profile.ConfigOverrideItemCraftingCosts.RenderToView();
|
||||
if (Config.Default.SectionStackSizeOverridesEnabled)
|
||||
|
|
@ -4462,6 +4639,12 @@ namespace ServerManagerTool.Lib
|
|||
this.ConfigOverrideSupplyCrateItems.RenderToModel();
|
||||
}
|
||||
|
||||
if (Config.Default.SectionExcludeItemIndicesOverridesEnabled)
|
||||
{
|
||||
progressCallback?.Invoke(0, _globalizer.GetResourceString("ProfileSave_ConstructingExcludeItemIndicesInformation"));
|
||||
this.ExcludeItemIndices.RenderToModel();
|
||||
}
|
||||
|
||||
if (Config.Default.SectionCraftingOverridesEnabled)
|
||||
{
|
||||
progressCallback?.Invoke(0, _globalizer.GetResourceString("ProfileSave_ConstructingCraftingOverridesInformation"));
|
||||
|
|
@ -5402,6 +5585,7 @@ namespace ServerManagerTool.Lib
|
|||
|
||||
public void ResetServerOptions()
|
||||
{
|
||||
this.ClearValue(CultureProperty);
|
||||
this.ClearValue(DisableValveAntiCheatSystemProperty);
|
||||
this.ClearValue(DisablePlayerMovePhysicsOptimizationProperty);
|
||||
this.ClearValue(DisableAntiSpeedHackDetectionProperty);
|
||||
|
|
@ -5421,6 +5605,7 @@ namespace ServerManagerTool.Lib
|
|||
this.ClearValue(UseNoHangDetectionProperty);
|
||||
this.ClearValue(ServerAllowAnselProperty);
|
||||
this.ClearValue(StructureMemoryOptimizationsProperty);
|
||||
this.ClearValue(UseStructureStasisGridProperty);
|
||||
this.ClearValue(NoUnderMeshCheckingProperty);
|
||||
this.ClearValue(NoUnderMeshKillingProperty);
|
||||
this.ClearValue(NoDinosProperty);
|
||||
|
|
@ -5477,6 +5662,10 @@ namespace ServerManagerTool.Lib
|
|||
|
||||
this.ClearValue(EnableBanListURLProperty);
|
||||
this.ClearValue(BanListURLProperty);
|
||||
this.ClearValue(EnableCustomDynamicConfigUrlProperty);
|
||||
this.ClearValue(CustomDynamicConfigUrlProperty);
|
||||
this.ClearValue(EnableCustomLiveTuningUrlProperty);
|
||||
this.ClearValue(CustomLiveTuningUrlProperty);
|
||||
this.ClearValue(MaxPlayersProperty);
|
||||
this.ClearNullableValue(KickIdlePlayersPeriodProperty);
|
||||
|
||||
|
|
@ -5571,11 +5760,14 @@ namespace ServerManagerTool.Lib
|
|||
this.ClearValue(DisableDinoDecayPvEProperty);
|
||||
this.ClearValue(DisableDinoDecayPvPProperty);
|
||||
this.ClearValue(AutoDestroyDecayedDinosProperty);
|
||||
this.ClearValue(UseDinoLevelUpAnimationsProperty);
|
||||
this.ClearValue(PvEDinoDecayPeriodMultiplierProperty);
|
||||
this.ClearValue(AllowMultipleAttachedC4Property);
|
||||
this.ClearValue(AllowUnclaimDinosProperty);
|
||||
|
||||
this.ClearValue(DisableDinoRidingProperty);
|
||||
this.ClearValue(DisableDinoTamingProperty);
|
||||
this.ClearValue(DisableDinoBreedingProperty);
|
||||
this.ClearValue(MaxTamedDinosProperty);
|
||||
this.ClearValue(MaxPersonalTamedDinosProperty);
|
||||
this.ClearValue(PersonalTamedDinosSaddleStructureCostProperty);
|
||||
|
|
@ -5613,13 +5805,14 @@ namespace ServerManagerTool.Lib
|
|||
|
||||
this.DinoSpawnWeightMultipliers = new AggregateIniValueList<DinoSpawn>(nameof(DinoSpawnWeightMultipliers), GameData.GetDinoSpawns);
|
||||
this.PreventDinoTameClassNames = new StringIniValueList(nameof(PreventDinoTameClassNames), () => new string[0]);
|
||||
this.PreventBreedingForClassNames = new StringIniValueList(nameof(PreventBreedingForClassNames), () => new string[0]);
|
||||
this.NPCReplacements = new AggregateIniValueList<NPCReplacement>(nameof(NPCReplacements), GameData.GetNPCReplacements);
|
||||
this.TamedDinoClassDamageMultipliers = new AggregateIniValueList<ClassMultiplier>(nameof(TamedDinoClassDamageMultipliers), GameData.GetDinoMultipliers);
|
||||
this.TamedDinoClassResistanceMultipliers = new AggregateIniValueList<ClassMultiplier>(nameof(TamedDinoClassResistanceMultipliers), GameData.GetDinoMultipliers);
|
||||
this.DinoClassDamageMultipliers = new AggregateIniValueList<ClassMultiplier>(nameof(DinoClassDamageMultipliers), GameData.GetDinoMultipliers);
|
||||
this.DinoClassResistanceMultipliers = new AggregateIniValueList<ClassMultiplier>(nameof(DinoClassResistanceMultipliers), GameData.GetDinoMultipliers);
|
||||
|
||||
this.DinoSettings = new DinoSettingsList(this.DinoSpawnWeightMultipliers, this.PreventDinoTameClassNames, this.NPCReplacements, this.TamedDinoClassDamageMultipliers, this.TamedDinoClassResistanceMultipliers, this.DinoClassDamageMultipliers, this.DinoClassResistanceMultipliers);
|
||||
|
||||
this.DinoSettings = new DinoSettingsList(this.DinoSpawnWeightMultipliers, this.PreventDinoTameClassNames, this.PreventBreedingForClassNames, this.NPCReplacements, this.TamedDinoClassDamageMultipliers, this.TamedDinoClassResistanceMultipliers, this.DinoClassDamageMultipliers, this.DinoClassResistanceMultipliers);
|
||||
this.DinoSettings.RenderToView();
|
||||
}
|
||||
|
||||
|
|
@ -5753,9 +5946,12 @@ namespace ServerManagerTool.Lib
|
|||
this.ClearValue(AllowCaveBuildingPvEProperty);
|
||||
this.ClearValue(DisableFriendlyFirePvPProperty);
|
||||
this.ClearValue(DisableFriendlyFirePvEProperty);
|
||||
this.ClearValue(AllowCaveBuildingPvPProperty);
|
||||
this.ClearValue(DisableRailgunPVPProperty);
|
||||
this.ClearValue(DisableLootCratesProperty);
|
||||
this.ClearValue(AllowCrateSpawnsOnTopOfStructuresProperty);
|
||||
this.ClearValue(EnableExtraStructurePreventionVolumesProperty);
|
||||
this.ClearValue(UseSingleplayerSettingsProperty);
|
||||
|
||||
this.ClearValue(EnableDifficultyOverrideProperty);
|
||||
this.ClearValue(OverrideOfficialDifficultyProperty);
|
||||
|
|
@ -5773,6 +5969,7 @@ namespace ServerManagerTool.Lib
|
|||
this.ClearNullableValue(MaxTributeItemsProperty);
|
||||
|
||||
this.ClearValue(NoTransferFromFilteringProperty);
|
||||
this.ClearValue(DisableCustomFoldersInTributeInventoriesProperty);
|
||||
this.ClearValue(OverrideTributeCharacterExpirationSecondsProperty);
|
||||
this.ClearValue(OverrideTributeItemExpirationSecondsProperty);
|
||||
this.ClearValue(OverrideTributeDinoExpirationSecondsProperty);
|
||||
|
|
@ -5847,6 +6044,7 @@ namespace ServerManagerTool.Lib
|
|||
this.ClearValue(DisableWorldBuffsProperty);
|
||||
this.ClearValue(EnableWorldBuffScalingProperty);
|
||||
this.ClearValue(WorldBuffScalingEfficacyProperty);
|
||||
this.ClearValue(AdjustableMutagenSpawnDelayMultiplierProperty);
|
||||
|
||||
this.ClearValue(MaxHexagonsPerCharacterProperty);
|
||||
this.ClearValue(DisableHexagonStoreProperty);
|
||||
|
|
@ -5936,6 +6134,7 @@ namespace ServerManagerTool.Lib
|
|||
this.ClearValue(FastDecayUnsnappedCoreStructuresProperty);
|
||||
this.ClearValue(DestroyUnconnectedWaterPipesProperty);
|
||||
this.ClearValue(DisableStructurePlacementCollisionProperty);
|
||||
this.ClearValue(IgnoreLimitMaxStructuresInRangeTypeFlagProperty);
|
||||
this.ClearValue(EnableFastDecayIntervalProperty);
|
||||
this.ClearValue(FastDecayIntervalProperty);
|
||||
this.ClearValue(LimitTurretsInRangeProperty);
|
||||
|
|
@ -5946,6 +6145,7 @@ namespace ServerManagerTool.Lib
|
|||
this.ClearValue(StructurePickupTimeAfterPlacementProperty);
|
||||
this.ClearValue(StructurePickupHoldDurationProperty);
|
||||
this.ClearValue(AllowIntegratedSPlusStructuresProperty);
|
||||
this.ClearValue(IgnoreStructuresPreventionVolumesProperty);
|
||||
this.ClearValue(GenesisUseStructuresPreventionVolumesProperty);
|
||||
}
|
||||
|
||||
|
|
@ -5955,6 +6155,12 @@ namespace ServerManagerTool.Lib
|
|||
this.ConfigOverrideSupplyCrateItems.Reset();
|
||||
}
|
||||
|
||||
public void ResetExcludeItemIndicesOverridesSection()
|
||||
{
|
||||
this.ExcludeItemIndices = new ExcludeItemIndicesOverrideList(nameof(ExcludeItemIndices));
|
||||
this.ExcludeItemIndices.Reset();
|
||||
}
|
||||
|
||||
public void UpdateOverrideMaxExperiencePointsDino()
|
||||
{
|
||||
if (EnableLevelProgressions && EnableDinoLevelProgressions)
|
||||
|
|
@ -6054,6 +6260,9 @@ namespace ServerManagerTool.Lib
|
|||
case ServerProfileCategory.SupplyCrateOverrides:
|
||||
SyncSupplyCrateOverridesSection(sourceProfile);
|
||||
break;
|
||||
case ServerProfileCategory.ExcludeItemIndicesOverrides:
|
||||
SyncExcludeItemIndicesOverridesSection(sourceProfile);
|
||||
break;
|
||||
case ServerProfileCategory.StackSizeOverrides:
|
||||
SyncStackSizeOverridesSection(sourceProfile);
|
||||
break;
|
||||
|
|
@ -6083,10 +6292,15 @@ namespace ServerManagerTool.Lib
|
|||
this.SetValue(ExtinctionEventUTCProperty, sourceProfile.ExtinctionEventUTC);
|
||||
|
||||
// server options
|
||||
this.SetValue(CultureProperty, sourceProfile.Culture);
|
||||
this.SetValue(MaxPlayersProperty, sourceProfile.MaxPlayers);
|
||||
this.SetNullableValue(KickIdlePlayersPeriodProperty, sourceProfile.KickIdlePlayersPeriod);
|
||||
this.SetValue(EnableBanListURLProperty, sourceProfile.EnableBanListURL);
|
||||
this.SetValue(BanListURLProperty, sourceProfile.BanListURL);
|
||||
this.SetValue(EnableCustomDynamicConfigUrlProperty, sourceProfile.EnableCustomDynamicConfigUrl);
|
||||
this.SetValue(CustomDynamicConfigUrlProperty, sourceProfile.CustomDynamicConfigUrl);
|
||||
this.SetValue(EnableCustomLiveTuningUrlProperty, sourceProfile.EnableCustomLiveTuningUrl);
|
||||
this.SetValue(CustomLiveTuningUrlProperty, sourceProfile.CustomLiveTuningUrl);
|
||||
this.SetValue(DisableValveAntiCheatSystemProperty, sourceProfile.DisableValveAntiCheatSystem);
|
||||
this.SetValue(UseBattlEyeProperty, sourceProfile.UseBattlEye);
|
||||
this.SetValue(DisablePlayerMovePhysicsOptimizationProperty, sourceProfile.DisablePlayerMovePhysicsOptimization);
|
||||
|
|
@ -6109,6 +6323,7 @@ namespace ServerManagerTool.Lib
|
|||
this.SetValue(StasisKeepControllersProperty, sourceProfile.StasisKeepControllers);
|
||||
this.SetValue(ServerAllowAnselProperty, sourceProfile.ServerAllowAnsel);
|
||||
this.SetValue(StructureMemoryOptimizationsProperty, sourceProfile.StructureMemoryOptimizations);
|
||||
this.SetValue(UseStructureStasisGridProperty, sourceProfile.UseStructureStasisGrid);
|
||||
this.SetValue(CrossplayProperty, sourceProfile.Crossplay);
|
||||
this.SetValue(EpicOnlyProperty, sourceProfile.EpicOnly);
|
||||
this.SetValue(EnablePublicIPForEpicProperty, sourceProfile.EnablePublicIPForEpic);
|
||||
|
|
@ -6260,11 +6475,14 @@ namespace ServerManagerTool.Lib
|
|||
this.SetValue(DisableDinoDecayPvEProperty, sourceProfile.DisableDinoDecayPvE);
|
||||
this.SetValue(DisableDinoDecayPvPProperty, sourceProfile.DisableDinoDecayPvP);
|
||||
this.SetValue(AutoDestroyDecayedDinosProperty, sourceProfile.AutoDestroyDecayedDinos);
|
||||
this.SetValue(UseDinoLevelUpAnimationsProperty, sourceProfile.UseDinoLevelUpAnimations);
|
||||
this.SetValue(PvEDinoDecayPeriodMultiplierProperty, sourceProfile.PvEDinoDecayPeriodMultiplier);
|
||||
this.SetValue(AllowMultipleAttachedC4Property, sourceProfile.AllowMultipleAttachedC4);
|
||||
this.SetValue(AllowUnclaimDinosProperty, sourceProfile.AllowUnclaimDinos);
|
||||
|
||||
this.SetValue(DisableDinoRidingProperty, sourceProfile.DisableDinoRiding);
|
||||
this.SetValue(DisableDinoTamingProperty, sourceProfile.DisableDinoTaming);
|
||||
this.SetValue(DisableDinoBreedingProperty, sourceProfile.DisableDinoBreeding);
|
||||
this.SetValue(MaxTamedDinosProperty, sourceProfile.MaxTamedDinos);
|
||||
this.SetValue(MaxPersonalTamedDinosProperty, sourceProfile.MaxPersonalTamedDinos);
|
||||
this.SetValue(PersonalTamedDinosSaddleStructureCostProperty, sourceProfile.PersonalTamedDinosSaddleStructureCost);
|
||||
|
|
@ -6327,6 +6545,10 @@ namespace ServerManagerTool.Lib
|
|||
this.PreventDinoTameClassNames.FromIniValues(sourceProfile.PreventDinoTameClassNames.ToIniValues());
|
||||
this.PreventDinoTameClassNames.IsEnabled = sourceProfile.PreventDinoTameClassNames.IsEnabled;
|
||||
|
||||
this.PreventBreedingForClassNames.Clear();
|
||||
this.PreventBreedingForClassNames.FromIniValues(sourceProfile.PreventBreedingForClassNames.ToIniValues());
|
||||
this.PreventBreedingForClassNames.IsEnabled = sourceProfile.PreventBreedingForClassNames.IsEnabled;
|
||||
|
||||
this.NPCReplacements.Clear();
|
||||
this.NPCReplacements.FromIniValues(sourceProfile.NPCReplacements.ToIniValues());
|
||||
this.NPCReplacements.IsEnabled = sourceProfile.NPCReplacements.IsEnabled;
|
||||
|
|
@ -6347,7 +6569,7 @@ namespace ServerManagerTool.Lib
|
|||
this.DinoClassResistanceMultipliers.FromIniValues(sourceProfile.DinoClassResistanceMultipliers.ToIniValues());
|
||||
this.DinoClassResistanceMultipliers.IsEnabled = sourceProfile.DinoClassResistanceMultipliers.IsEnabled;
|
||||
|
||||
this.DinoSettings = new DinoSettingsList(this.DinoSpawnWeightMultipliers, this.PreventDinoTameClassNames, this.NPCReplacements, this.TamedDinoClassDamageMultipliers, this.TamedDinoClassResistanceMultipliers, this.DinoClassDamageMultipliers, this.DinoClassResistanceMultipliers);
|
||||
this.DinoSettings = new DinoSettingsList(this.DinoSpawnWeightMultipliers, this.PreventDinoTameClassNames, this.PreventBreedingForClassNames, this.NPCReplacements, this.TamedDinoClassDamageMultipliers, this.TamedDinoClassResistanceMultipliers, this.DinoClassDamageMultipliers, this.DinoClassResistanceMultipliers);
|
||||
this.DinoSettings.RenderToView();
|
||||
}
|
||||
|
||||
|
|
@ -6506,9 +6728,12 @@ namespace ServerManagerTool.Lib
|
|||
this.SetValue(AllowCaveBuildingPvEProperty, sourceProfile.AllowCaveBuildingPvE);
|
||||
this.SetValue(DisableFriendlyFirePvPProperty, sourceProfile.DisableFriendlyFirePvP);
|
||||
this.SetValue(DisableFriendlyFirePvEProperty, sourceProfile.DisableFriendlyFirePvE);
|
||||
this.SetValue(AllowCaveBuildingPvPProperty, sourceProfile.AllowCaveBuildingPvP);
|
||||
this.SetValue(DisableRailgunPVPProperty, sourceProfile.DisableRailgunPVP);
|
||||
this.SetValue(DisableLootCratesProperty, sourceProfile.DisableLootCrates);
|
||||
this.SetValue(AllowCrateSpawnsOnTopOfStructuresProperty, sourceProfile.AllowCrateSpawnsOnTopOfStructures);
|
||||
this.SetValue(EnableExtraStructurePreventionVolumesProperty, sourceProfile.EnableExtraStructurePreventionVolumes);
|
||||
this.SetValue(UseSingleplayerSettingsProperty, sourceProfile.UseSingleplayerSettings);
|
||||
|
||||
this.SetValue(EnableDifficultyOverrideProperty, sourceProfile.EnableDifficultyOverride);
|
||||
this.SetValue(OverrideOfficialDifficultyProperty, sourceProfile.OverrideOfficialDifficulty);
|
||||
|
|
@ -6526,6 +6751,7 @@ namespace ServerManagerTool.Lib
|
|||
this.SetNullableValue(MaxTributeItemsProperty, sourceProfile.MaxTributeItems);
|
||||
|
||||
this.SetValue(NoTransferFromFilteringProperty, sourceProfile.NoTransferFromFiltering);
|
||||
this.SetValue(DisableCustomFoldersInTributeInventoriesProperty, sourceProfile.DisableCustomFoldersInTributeInventories);
|
||||
this.SetValue(OverrideTributeCharacterExpirationSecondsProperty, sourceProfile.OverrideTributeCharacterExpirationSeconds);
|
||||
this.SetValue(OverrideTributeItemExpirationSecondsProperty, sourceProfile.OverrideTributeItemExpirationSeconds);
|
||||
this.SetValue(OverrideTributeDinoExpirationSecondsProperty, sourceProfile.OverrideTributeDinoExpirationSeconds);
|
||||
|
|
@ -6600,6 +6826,7 @@ namespace ServerManagerTool.Lib
|
|||
this.SetValue(DisableWorldBuffsProperty, sourceProfile.DisableWorldBuffs);
|
||||
this.SetValue(EnableWorldBuffScalingProperty, sourceProfile.EnableWorldBuffScaling);
|
||||
this.SetValue(WorldBuffScalingEfficacyProperty, sourceProfile.WorldBuffScalingEfficacy);
|
||||
this.SetValue(AdjustableMutagenSpawnDelayMultiplierProperty, sourceProfile.AdjustableMutagenSpawnDelayMultiplier);
|
||||
|
||||
this.SetValue(MaxHexagonsPerCharacterProperty, sourceProfile.MaxHexagonsPerCharacter);
|
||||
this.SetValue(DisableHexagonStoreProperty, sourceProfile.DisableHexagonStore);
|
||||
|
|
@ -6705,6 +6932,7 @@ namespace ServerManagerTool.Lib
|
|||
this.SetValue(FastDecayUnsnappedCoreStructuresProperty, sourceProfile.FastDecayUnsnappedCoreStructures);
|
||||
this.SetValue(DestroyUnconnectedWaterPipesProperty, sourceProfile.DestroyUnconnectedWaterPipes);
|
||||
this.SetValue(DisableStructurePlacementCollisionProperty, sourceProfile.DisableStructurePlacementCollision);
|
||||
this.SetValue(IgnoreLimitMaxStructuresInRangeTypeFlagProperty, sourceProfile.IgnoreLimitMaxStructuresInRangeTypeFlag);
|
||||
this.SetValue(EnableFastDecayIntervalProperty, sourceProfile.EnableFastDecayInterval);
|
||||
this.SetValue(FastDecayIntervalProperty, sourceProfile.FastDecayInterval);
|
||||
this.SetValue(LimitTurretsInRangeProperty, sourceProfile.LimitTurretsInRange);
|
||||
|
|
@ -6715,6 +6943,7 @@ namespace ServerManagerTool.Lib
|
|||
this.SetValue(StructurePickupTimeAfterPlacementProperty, sourceProfile.StructurePickupTimeAfterPlacement);
|
||||
this.SetValue(StructurePickupHoldDurationProperty, sourceProfile.StructurePickupHoldDuration);
|
||||
this.SetValue(AllowIntegratedSPlusStructuresProperty, sourceProfile.AllowIntegratedSPlusStructures);
|
||||
this.SetValue(IgnoreStructuresPreventionVolumesProperty, sourceProfile.IgnoreStructuresPreventionVolumes);
|
||||
this.SetValue(GenesisUseStructuresPreventionVolumesProperty, sourceProfile.GenesisUseStructuresPreventionVolumes);
|
||||
}
|
||||
|
||||
|
|
@ -6727,6 +6956,16 @@ namespace ServerManagerTool.Lib
|
|||
this.ConfigOverrideSupplyCrateItems.IsEnabled = this.ConfigOverrideSupplyCrateItems.Count > 0;
|
||||
this.ConfigOverrideSupplyCrateItems.RenderToView();
|
||||
}
|
||||
|
||||
private void SyncExcludeItemIndicesOverridesSection(ServerProfile sourceProfile)
|
||||
{
|
||||
sourceProfile.ExcludeItemIndices.RenderToModel();
|
||||
|
||||
this.ExcludeItemIndices.Clear();
|
||||
this.ExcludeItemIndices.FromIniValues(sourceProfile.ExcludeItemIndices.ToIniValues());
|
||||
this.ExcludeItemIndices.IsEnabled = this.ExcludeItemIndices.Count > 0;
|
||||
this.ExcludeItemIndices.RenderToView();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Server Files
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ namespace ServerManagerTool.Lib.ViewModel
|
|||
public static readonly DependencyProperty ModProperty = DependencyProperty.Register(nameof(Mod), typeof(string), typeof(DinoSettings), new PropertyMetadata(String.Empty));
|
||||
public static readonly DependencyProperty KnownDinoProperty = DependencyProperty.Register(nameof(KnownDino), typeof(bool), typeof(DinoSettings), new PropertyMetadata(false));
|
||||
public static readonly DependencyProperty CanTameProperty = DependencyProperty.Register(nameof(CanTame), typeof(bool), typeof(DinoSettings), new PropertyMetadata(true));
|
||||
public static readonly DependencyProperty CanBreedingProperty = DependencyProperty.Register(nameof(CanBreeding), typeof(bool), typeof(DinoSettings), new PropertyMetadata(true));
|
||||
public static readonly DependencyProperty CanSpawnProperty = DependencyProperty.Register(nameof(CanSpawn), typeof(bool), typeof(DinoSettings), new PropertyMetadata(true));
|
||||
public static readonly DependencyProperty ReplacementClassProperty = DependencyProperty.Register(nameof(ReplacementClass), typeof(string), typeof(DinoSettings), new PropertyMetadata(String.Empty));
|
||||
public static readonly DependencyProperty SpawnWeightMultiplierProperty = DependencyProperty.Register(nameof(SpawnWeightMultiplier), typeof(float), typeof(DinoSettings), new PropertyMetadata(DinoSpawn.DEFAULT_SPAWN_WEIGHT_MULTIPLIER));
|
||||
|
|
@ -47,6 +48,12 @@ namespace ServerManagerTool.Lib.ViewModel
|
|||
set { SetValue(CanTameProperty, value); }
|
||||
}
|
||||
|
||||
public bool CanBreeding
|
||||
{
|
||||
get { return (bool)GetValue(CanBreedingProperty); }
|
||||
set { SetValue(CanBreedingProperty, value); }
|
||||
}
|
||||
|
||||
public bool CanSpawn
|
||||
{
|
||||
get { return (bool)GetValue(CanSpawnProperty); }
|
||||
|
|
@ -108,6 +115,7 @@ namespace ServerManagerTool.Lib.ViewModel
|
|||
public bool HasClassName { get; internal set; }
|
||||
public bool IsSpawnable { get; internal set; }
|
||||
public DinoTamable IsTameable { get; internal set; }
|
||||
public DinoBreedingable IsBreedingable { get; internal set; }
|
||||
public string DisplayReplacementName => GameData.FriendlyCreatureNameForClass(ReplacementClass);
|
||||
|
||||
public float OriginalSpawnWeightMultiplier { get; internal set; }
|
||||
|
|
@ -119,6 +127,7 @@ namespace ServerManagerTool.Lib.ViewModel
|
|||
public string ModSort => $"{Mod}|{DisplayName}";
|
||||
public string CanSpawnSort => $"{IsSpawnable}|{CanSpawn}|{DisplayName}|{Mod}";
|
||||
public string CanTameSort => $"{IsTameable != DinoTamable.False}|{CanTame}|{DisplayName}|{Mod}";
|
||||
public string CanBreedingSort => $"{IsBreedingable != DinoBreedingable.False}|{CanBreeding}|{DisplayName}|{Mod}";
|
||||
public string ReplacementNameSort => $"{DisplayReplacementName}|{Mod}";
|
||||
public string SpawnWeightMultiplierSort => $"{SpawnWeightMultiplier:0000000000.0000000000}|{DisplayName}|{Mod}";
|
||||
public string OverrideSpawnLimitPercentageSort => $"{OverrideSpawnLimitPercentage}|{DisplayName}|{Mod}";
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ namespace ServerManagerTool.Lib.ViewModel
|
|||
{
|
||||
public AggregateIniValueList<DinoSpawn> DinoSpawnWeightMultipliers { get; }
|
||||
public StringIniValueList PreventDinoTameClassNames { get; }
|
||||
public StringIniValueList PreventBreedingForClassNames { get; }
|
||||
public AggregateIniValueList<NPCReplacement> NpcReplacements { get; }
|
||||
public AggregateIniValueList<ClassMultiplier> TamedDinoClassDamageMultipliers { get; }
|
||||
public AggregateIniValueList<ClassMultiplier> TamedDinoClassResistanceMultipliers { get; }
|
||||
|
|
@ -20,12 +21,13 @@ namespace ServerManagerTool.Lib.ViewModel
|
|||
Reset();
|
||||
}
|
||||
|
||||
public DinoSettingsList(AggregateIniValueList<DinoSpawn> dinoSpawnWeightMultipliers, StringIniValueList preventDinoTameClassNames, AggregateIniValueList<NPCReplacement> npcReplacements,
|
||||
public DinoSettingsList(AggregateIniValueList<DinoSpawn> dinoSpawnWeightMultipliers, StringIniValueList preventDinoTameClassNames, StringIniValueList preventBreedingForClassNames, AggregateIniValueList<NPCReplacement> npcReplacements,
|
||||
AggregateIniValueList<ClassMultiplier> tamedDinoClassDamageMultipliers, AggregateIniValueList<ClassMultiplier> tamedDinoClassResistanceMultipliers,
|
||||
AggregateIniValueList<ClassMultiplier> dinoClassDamageMultipliers, AggregateIniValueList<ClassMultiplier> dinoClassResistanceMultipliers)
|
||||
{
|
||||
this.DinoSpawnWeightMultipliers = dinoSpawnWeightMultipliers;
|
||||
this.PreventDinoTameClassNames = preventDinoTameClassNames;
|
||||
this.PreventBreedingForClassNames = preventBreedingForClassNames;
|
||||
this.NpcReplacements = npcReplacements;
|
||||
this.TamedDinoClassDamageMultipliers = tamedDinoClassDamageMultipliers;
|
||||
this.TamedDinoClassResistanceMultipliers = tamedDinoClassResistanceMultipliers;
|
||||
|
|
@ -39,6 +41,7 @@ namespace ServerManagerTool.Lib.ViewModel
|
|||
var nameTag = GameData.NameTagForClass(className);
|
||||
var isSpawnable = GameData.IsSpawnableForClass(className);
|
||||
var isTameable = GameData.IsTameableForClass(className);
|
||||
var isBreedingable = GameData.IsBreedingableForClass(className);
|
||||
|
||||
return new DinoSettings()
|
||||
{
|
||||
|
|
@ -49,6 +52,7 @@ namespace ServerManagerTool.Lib.ViewModel
|
|||
|
||||
CanSpawn = true,
|
||||
CanTame = isTameable != DinoTamable.False,
|
||||
CanBreeding = isBreedingable != DinoBreedingable.False,
|
||||
ReplacementClass = className,
|
||||
|
||||
SpawnWeightMultiplier = DinoSpawn.DEFAULT_SPAWN_WEIGHT_MULTIPLIER,
|
||||
|
|
@ -67,6 +71,7 @@ namespace ServerManagerTool.Lib.ViewModel
|
|||
HasNameTag = hasNameTag,
|
||||
IsSpawnable = isSpawnable,
|
||||
IsTameable = isTameable,
|
||||
IsBreedingable = isBreedingable,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -135,7 +140,25 @@ namespace ServerManagerTool.Lib.ViewModel
|
|||
}
|
||||
}
|
||||
|
||||
foreach(var entry in this.NpcReplacements.Where(e => !string.IsNullOrWhiteSpace(e.FromClassName)))
|
||||
foreach (var entry in this.PreventBreedingForClassNames.Where(e => !string.IsNullOrWhiteSpace(e)))
|
||||
{
|
||||
if (this.Any(d => d.ClassName == entry))
|
||||
{
|
||||
foreach (var dinoSetting in this.Where(d => d.ClassName == entry && d.CanBreeding))
|
||||
{
|
||||
dinoSetting.CanBreeding = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var dinoSetting = CreateDinoSetting(entry, GameData.MOD_UNKNOWN, false, false, true);
|
||||
dinoSetting.CanBreeding = false;
|
||||
|
||||
this.Add(dinoSetting);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var entry in this.NpcReplacements.Where(e => !string.IsNullOrWhiteSpace(e.FromClassName)))
|
||||
{
|
||||
if (this.Any(d => d.ClassName == entry.FromClassName))
|
||||
{
|
||||
|
|
@ -235,6 +258,8 @@ namespace ServerManagerTool.Lib.ViewModel
|
|||
this.DinoSpawnWeightMultipliers.Clear();
|
||||
this.PreventDinoTameClassNames.Clear();
|
||||
this.PreventDinoTameClassNames.IsEnabled = true;
|
||||
this.PreventBreedingForClassNames.Clear();
|
||||
this.PreventBreedingForClassNames.IsEnabled = true;
|
||||
this.NpcReplacements.Clear();
|
||||
this.NpcReplacements.IsEnabled = true;
|
||||
this.TamedDinoClassDamageMultipliers.Clear();
|
||||
|
|
@ -286,6 +311,11 @@ namespace ServerManagerTool.Lib.ViewModel
|
|||
this.PreventDinoTameClassNames.Add(entry.ClassName);
|
||||
}
|
||||
|
||||
if ((entry.IsBreedingable != DinoBreedingable.False) && !entry.CanBreeding)
|
||||
{
|
||||
this.PreventBreedingForClassNames.Add(entry.ClassName);
|
||||
}
|
||||
|
||||
this.NpcReplacements.Add(new NPCReplacement() { FromClassName = entry.ClassName, ToClassName = entry.CanSpawn ? entry.ReplacementClass : string.Empty });
|
||||
|
||||
if (entry.IsTameable != DinoTamable.False)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue