asm: add new config options

This commit is contained in:
Lacoi 2023-08-09 18:21:19 +02:00
parent 3e5ef04045
commit 6e3a6b9890
23 changed files with 1304 additions and 74 deletions

View file

@ -0,0 +1,11 @@
using System.ComponentModel;
namespace ServerManagerTool.Enums
{
[DefaultValue(False)]
public enum DinoBreedingable
{
False,
True,
}
}

View file

@ -202,6 +202,22 @@ namespace ServerManagerTool.Utils
}
public DinoTamable IsTameable = DinoTamable.False;
[DataMember(Name = "IsBreedingable")]
public string IsBreedingableString
{
get
{
return IsBreedingable.ToString();
}
set
{
if (!Enum.TryParse(value, true, out IsBreedingable))
IsBreedingable = DinoBreedingable.False;
}
}
public DinoBreedingable IsBreedingable = DinoBreedingable.False;
}
[DataContract]

View file

@ -193,6 +193,7 @@
<Compile Include="Interface\ISpawnIniValuesCollection.cs" />
<Compile Include="Lib\Events\ProfileEventArgs.cs" />
<Compile Include="Lib\Model\EngramAutoUnlock.cs" />
<Compile Include="Lib\Model\ExcludeItemIndicesOverrideList.cs" />
<Compile Include="Lib\Model\FindSettingItem.cs" />
<Compile Include="Lib\Model\PreventTransferOverride.cs" />
<Compile Include="Lib\Model\StackSizeOverride.cs" />

View file

@ -1370,7 +1370,22 @@ namespace ServerManagerTool {
this["SectionSupplyCrateOverridesIsExpanded"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool SectionExcludeItemIndicesOverridesIsExpanded
{
get
{
return ((bool)(this["SectionExcludeItemIndicesOverridesIsExpanded"]));
}
set
{
this["SectionExcludeItemIndicesOverridesIsExpanded"] = value;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("https://steamcommunity.com/dev/apikey")]
@ -1593,7 +1608,22 @@ namespace ServerManagerTool {
this["SectionSupplyCrateOverridesEnabled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool SectionExcludeItemIndicesOverridesEnabled
{
get
{
return ((bool)(this["SectionExcludeItemIndicesOverridesEnabled"]));
}
set
{
this["SectionExcludeItemIndicesOverridesEnabled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
@ -2552,7 +2582,22 @@ namespace ServerManagerTool {
this["SupplyCrateItemsGridHeight"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("200")]
public global::System.Windows.GridLength ExcludeItemIndicesOverrideGridHeight
{
get
{
return ((global::System.Windows.GridLength)(this["ExcludeItemIndicesOverrideGridHeight"]));
}
set
{
this["ExcludeItemIndicesOverrideGridHeight"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("400")]

View file

@ -23,6 +23,7 @@
MapSpawnerOverrides,
CraftingOverrides,
SupplyCrateOverrides,
ExcludeItemIndicesOverrides,
StackSizeOverrides,
PreventTransferOverrides,
PGM,

View file

@ -20,6 +20,7 @@
MapSpawnerOverridesSection,
CraftingOverridesSection,
SupplyCrateOverridesSection,
ExcludeItemIndicesOverridesSection,
StackSizeOverridesSection,
PreventTransferOverridesSection,

View file

@ -7,6 +7,7 @@
"NameTag": "Achatina",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "Achatina_Character_BP_Aberrant_C",
"Description": "Aberrant Achatina",
"Mod": "Aberration"
@ -15,6 +16,7 @@
"NameTag": "Angler",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "Angler_Character_BP_Aberrant_C",
"Description": "Aberrant Anglerfish",
"Mod": "Aberration"
@ -23,6 +25,7 @@
"NameTag": "Ankylo",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Ankylo_Character_BP_Aberrant_C",
"Description": "Aberrant Ankylosaurus",
"Mod": "Aberration"
@ -31,6 +34,7 @@
"NameTag": "Arthro",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Arthro_Character_BP_Aberrant_C",
"Description": "Aberrant Arthropluera",
"Mod": "Aberration"
@ -39,6 +43,7 @@
"NameTag": "Baryonyx",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Baryonyx_Character_BP_Aberrant_C",
"Description": "Aberrant Baryonyx",
"Mod": "Aberration"
@ -47,6 +52,7 @@
"NameTag": "Bigfoot",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "BigFoot_Character_BP_Aberrant_C",
"Description": "Aberrant Gigantopithecus",
"Mod": "Aberration"
@ -55,6 +61,7 @@
"NameTag": "Titanboa",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "BoaFrill_Character_BP_Aberrant_C",
"Description": "Aberrant Titanoboa",
"Mod": "Aberration"
@ -63,6 +70,7 @@
"NameTag": "Carno",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Carno_Character_BP_Aberrant_C",
"Description": "Aberrant Carnotaurus",
"Mod": "Aberration"
@ -71,6 +79,7 @@
"NameTag": "Cnidaria",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Cnidaria_Character_BP_Aberrant_C",
"Description": "Aberrant Cnidaria",
"Mod": "Aberration"
@ -79,6 +88,7 @@
"NameTag": "Coel",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Coel_Character_BP_Aberrant_C",
"Description": "Aberrant Coelacanth",
"Mod": "Aberration"
@ -87,6 +97,7 @@
"NameTag": "Dimetro",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Dimetro_Character_BP_Aberrant_C",
"Description": "Aberrant Dimetrodon",
"Mod": "Aberration"
@ -95,6 +106,7 @@
"NameTag": "Dimorph",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Dimorph_Character_BP_Aberrant_C",
"Description": "Aberrant Dimorphodon",
"Mod": "Aberration"
@ -103,6 +115,7 @@
"NameTag": "Diplocaulus",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Diplocaulus_Character_BP_Aberrant_C",
"Description": "Aberrant Diplocaulus",
"Mod": "Aberration"
@ -111,6 +124,7 @@
"NameTag": "Diplo",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Diplodocus_Character_BP_Aberrant_C",
"Description": "Aberrant Diplodocus",
"Mod": "Aberration"
@ -119,6 +133,7 @@
"NameTag": "Direbear",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Direbear_Character_BP_Aberrant_C",
"Description": "Aberrant Direbear",
"Mod": "Aberration"
@ -127,6 +142,7 @@
"NameTag": "Dodo",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Dodo_Character_BP_Aberrant_C",
"Description": "Aberrant Dodo",
"Mod": "Aberration"
@ -135,6 +151,7 @@
"NameTag": "Doed",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Doed_Character_BP_Aberrant_C",
"Description": "Aberrant Doedicurus",
"Mod": "Aberration"
@ -143,6 +160,7 @@
"NameTag": "Dragonfly",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Dragonfly_Character_BP_Aberrant_C",
"Description": "Aberrant Meganeura",
"Mod": "Aberration"
@ -151,6 +169,7 @@
"NameTag": "Beetle",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "DungBeetle_Character_BP_Aberrant_C",
"Description": "Aberrant Dung Beetle",
"Mod": "Aberration"
@ -159,6 +178,7 @@
"NameTag": "Eel",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "Eel_Character_BP_Aberrant_C",
"Description": "Aberrant Electrophorus",
"Mod": "Aberration"
@ -167,6 +187,7 @@
"NameTag": "Equus",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Equus_Character_BP_Aberrant_C",
"Description": "Aberrant Equus",
"Mod": "Aberration"
@ -175,6 +196,7 @@
"NameTag": "Iguanodon",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Iguanodon_Character_BP_Aberrant_C",
"Description": "Aberrant Iguanodon",
"Mod": "Aberration"
@ -183,6 +205,7 @@
"NameTag": "Lystro",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Lystro_Character_BP_Aberrant_C",
"Description": "Aberrant Lystrosaurus",
"Mod": "Aberration"
@ -191,6 +214,7 @@
"NameTag": "Manta",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Manta_Character_BP_Aberrant_C",
"Description": "Aberrant Manta",
"Mod": "Aberration"
@ -199,6 +223,7 @@
"NameTag": "Megalania",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Megalania_Character_BP_Aberrant_C",
"Description": "Aberrant Megalania",
"Mod": "Aberration"
@ -207,6 +232,7 @@
"NameTag": "Megalosaurus",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Megalosaurus_Character_BP_Aberrant_C",
"Description": "Aberrant Megalosaurus",
"Mod": "Aberration"
@ -215,6 +241,7 @@
"NameTag": "Moschops",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Moschops_Character_BP_Aberrant_C",
"Description": "Aberrant Moschops",
"Mod": "Aberration"
@ -223,6 +250,7 @@
"NameTag": "Otter",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Otter_Character_BP_Aberrant_C",
"Description": "Aberrant Otter",
"Mod": "Aberration"
@ -231,6 +259,7 @@
"NameTag": "Para",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Para_Character_BP_Aberrant_C",
"Description": "Aberrant Parasaur",
"Mod": "Aberration"
@ -239,6 +268,7 @@
"NameTag": "Paracer",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Paracer_Character_BP_Aberrant_C",
"Description": "Aberrant Paraceratherium",
"Mod": "Aberration"
@ -247,6 +277,7 @@
"NameTag": "Piranha",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Piranha_Character_BP_Aberrant_C",
"Description": "Aberrant Piranha",
"Mod": "Aberration"
@ -255,6 +286,7 @@
"NameTag": "Purlovia",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "Purlovia_Character_BP_Aberrant_C",
"Description": "Aberrant Purlovia",
"Mod": "Aberration"
@ -263,6 +295,7 @@
"NameTag": "Raptor",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Raptor_Character_BP_Aberrant_C",
"Description": "Aberrant Raptor",
"Mod": "Aberration"
@ -271,6 +304,7 @@
"NameTag": "Salmon",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Salmon_Character_Aberrant_C",
"Description": "Aberrant Salmon",
"Mod": "Aberration"
@ -279,6 +313,7 @@
"NameTag": "Sarco",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Sarco_Character_BP_Aberrant_C",
"Description": "Aberrant Sarco",
"Mod": "Aberration"
@ -287,6 +322,7 @@
"NameTag": "Scorpion",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Scorpion_Character_BP_Aberrant_C",
"Description": "Aberrant Pulmonoscorpius",
"Mod": "Aberration"
@ -295,6 +331,7 @@
"NameTag": "Sheep",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Sheep_Character_BP_Aberrant_C",
"Description": "Aberrant Ovis",
"Mod": "Aberration"
@ -303,6 +340,7 @@
"NameTag": "Spider",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "SpiderS_Character_BP_Aberrant_C",
"Description": "Aberrant Araneo",
"Mod": "Aberration"
@ -311,6 +349,7 @@
"NameTag": "Spino",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Spino_Character_BP_Aberrant_C",
"Description": "Aberrant Spino",
"Mod": "Aberration"
@ -319,6 +358,7 @@
"NameTag": "Stego",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Stego_Character_BP_Aberrant_C",
"Description": "Aberrant Stegosaurus",
"Mod": "Aberration"
@ -327,6 +367,7 @@
"NameTag": "Toad",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Toad_Character_BP_Aberrant_C",
"Description": "Aberrant Beelzebufo",
"Mod": "Aberration"
@ -335,6 +376,7 @@
"NameTag": "Trike",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Trike_Character_BP_Aberrant_C",
"Description": "Aberrant Triceratops",
"Mod": "Aberration"
@ -343,6 +385,7 @@
"NameTag": "Trilobite",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Trilobite_Character_Aberrant_C",
"Description": "Aberrant Trilobite",
"Mod": "Aberration"
@ -351,6 +394,7 @@
"NameTag": "Turtle",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Turtle_Character_BP_Aberrant_C",
"Description": "Aberrant Carbonemys",
"Mod": "Aberration"
@ -359,6 +403,7 @@
"NameTag": "Basilisk",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "Basilisk_Character_BP_C",
"Description": "Basilisk",
"Mod": "Aberration"
@ -367,6 +412,8 @@
"NameTag": "CaveWolf",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"IsBreedingable": "False",
"ClassName": "CaveWolf_Character_BP_C",
"Description": "Ravager",
"Mod": "Aberration"
@ -375,6 +422,7 @@
"NameTag": "Chupacabra",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "ChupaCabra_Character_BP_C",
"Description": "Nameless",
"Mod": "Aberration"
@ -383,6 +431,7 @@
"NameTag": "CaveCrab",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "Crab_Character_BP_C",
"Description": "Karkinos",
"Mod": "Aberration"
@ -391,6 +440,7 @@
"NameTag": "Lamprey",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Lamprey_Character_C",
"Description": "Lamprey",
"Mod": "Aberration"
@ -399,6 +449,7 @@
"NameTag": "Lantern Bird",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "LanternBird_Character_BP_C",
"Description": "Featherlight",
"Mod": "Aberration"
@ -407,6 +458,7 @@
"NameTag": "Lantern Goat",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "LanternGoat_Character_BP_C",
"Description": "Shinehorn",
"Mod": "Aberration"
@ -415,6 +467,7 @@
"NameTag": "Lantern Lizard",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "LanternLizard_Character_BP_C",
"Description": "Glowtail",
"Mod": "Aberration"
@ -423,6 +476,7 @@
"NameTag": "Pug",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "LanternPug_Character_BP_C",
"Description": "Bulbdog",
"Mod": "Aberration"
@ -431,6 +485,7 @@
"NameTag": "Lightbug",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Lightbug_Character_BaseBP_C",
"Description": "Glowbug",
"Mod": "Aberration"
@ -439,6 +494,7 @@
"NameTag": "Elite Basilisk",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "MegaBasilisk_Character_BP_C",
"Description": "Alpha Basilisk",
"Mod": "Aberration"
@ -447,6 +503,7 @@
"NameTag": "Elite CaveCrab",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "MegaCrab_Character_BP_C",
"Description": "Alpha Karkinos",
"Mod": "Aberration"
@ -455,6 +512,7 @@
"NameTag": "Elite Xenomorph",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "MegaXenomorph_Character_BP_Male_Surface_C",
"Description": "Alpha Surface Reaper King",
"Mod": "Aberration"
@ -463,6 +521,7 @@
"NameTag": "MoleRat",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "MoleRat_Character_BP_C",
"Description": "Roll Rat",
"Mod": "Aberration"
@ -471,6 +530,7 @@
"NameTag": "Bat",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Pteroteuthis_Char_BP_C",
"Description": "Seeker",
"Mod": "Aberration"
@ -479,6 +539,7 @@
"NameTag": "RockDrake",
"IsSpawnable": true,
"IsTameable": "ByBreeding",
"IsBreedingable": "True",
"ClassName": "RockDrake_Character_BP_C",
"Description": "Rock Drake",
"Mod": "Aberration"
@ -487,6 +548,7 @@
"NameTag": "Xenomorph",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Xenomorph_Character_BP_C",
"Description": "Nameless Queen",
"Mod": "Aberration"
@ -495,6 +557,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "ChupaCabra_Character_BP_Minion_C",
"Description": "Nameless (Minion)",
"Mod": "Aberration"
@ -503,6 +566,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "ChupaCabra_Character_BP_Surface_C",
"Description": "Nameless (Surface)",
"Mod": "Aberration"
@ -511,6 +575,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Pteroteuthis_Char_BP_Surface_C",
"Description": "Seeker (Surface)",
"Mod": "Aberration"
@ -519,6 +584,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Xenomorph_Character_BP_Female_C",
"Description": "Reaper Queen",
"Mod": "Aberration"
@ -527,6 +593,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Xenomorph_Character_BP_Male_C",
"Description": "Reaper King",
"Mod": "Aberration"
@ -535,6 +602,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Xenomorph_Character_BP_Male_Chupa_C",
"Description": "Subterranean Reaper King",
"Mod": "Aberration"
@ -543,6 +611,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Xenomorph_Character_BP_Male_Minion_C",
"Description": "Elemental Reaper King",
"Mod": "Aberration"
@ -551,6 +620,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Xenomorph_Character_BP_Male_Surface_C",
"Description": "Surface Reaper King",
"Mod": "Aberration"
@ -559,6 +629,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "ByBreeding",
"IsBreedingable": "False",
"ClassName": "Xenomorph_Character_BP_Male_Tamed_C",
"Description": "Reaper King Tamed",
"Mod": "Aberration"
@ -567,6 +638,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Rockwell_Character_BP_C",
"Description": "Rockwell",
"Mod": "Aberration"
@ -575,6 +647,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Rockwell_Character_BP_Easy_C",
"Description": "Rockwell (Easy Variant)",
"Mod": "Aberration"
@ -583,6 +656,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Rockwell_Character_BP_Medium_C",
"Description": "Rockwell (Medium Variant)",
"Mod": "Aberration"
@ -591,6 +665,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Rockwell_Character_BP_Hard_C",
"Description": "Rockwell (Hard Variant)",
"Mod": "Aberration"
@ -599,6 +674,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "RockwellTentacle_Character_BP_C",
"Description": "Rockwell Tentacle",
"Mod": "Aberration"
@ -607,6 +683,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "RockwellTentacle_Character_BP_Alpha_C",
"Description": "Rockwell Tentacle (Hard Variant)",
"Mod": "Aberration"
@ -615,6 +692,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "RockwellTentacle_Character_BP_Beta_C",
"Description": "Rockwell Tentacle (Medium Variant)",
"Mod": "Aberration"
@ -623,6 +701,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "RockwellTentacle_Character_BP_Gamma_C",
"Description": "Rockwell Tentacle (Easy Variant)",
"Mod": "Aberration"

View file

@ -7,6 +7,7 @@
"NameTag": "Artho",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Arthro_Character_BP_Corrupt",
"Description": "Corrupted Arthropluera",
"Mod": "Extinction"
@ -15,6 +16,7 @@
"NameTag": "Carno",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Carno_Character_BP_Corrupt_C",
"Description": "Corrupted Carnotaurus",
"Mod": "Extinction"
@ -23,6 +25,7 @@
"NameTag": "Chalico",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Chalico_Character_BP_Corrupt_C",
"Description": "Corrupted Chalicotherium",
"Mod": "Extinction"
@ -31,6 +34,7 @@
"NameTag": "Deathworm",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Deathworm_Character_BP_Corrupt_C",
"Description": "Corrupted Deathworm",
"Mod": "Extinction"
@ -39,6 +43,7 @@
"NameTag": "Dilo",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Dilo_Character_BP_Corrupt_C",
"Description": "Corrupted Dilophosaur",
"Mod": "Extinction"
@ -47,6 +52,7 @@
"NameTag": "Dimorph",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Dimorph_Character_BP_Corrupt_C",
"Description": "Corrupted Dimorphodon",
"Mod": "Extinction"
@ -55,6 +61,7 @@
"NameTag": "Gigant",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Gigant_Character_BP_Corrupt_C",
"Description": "Corrupted Giganotosaurus",
"Mod": "Extinction"
@ -63,6 +70,7 @@
"NameTag": "Xenomorph",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Xenomorph_Character_BP_Male_Tamed_Corrupt_C",
"Description": "Corrupted Reaper King",
"Mod": "Extinction"
@ -71,6 +79,7 @@
"NameTag": "Paracer",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Paracer_Character_BP_Corrupt_C",
"Description": "Corrupted Paraceratherium",
"Mod": "Extinction"
@ -79,6 +88,7 @@
"NameTag": "Ptero",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Ptero_Character_BP_Corrupt_C",
"Description": "Corrupted Pteranodon",
"Mod": "Extinction"
@ -87,6 +97,7 @@
"NameTag": "Raptor",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Raptor_Character_BP_Corrupt_C",
"Description": "Corrupted Raptor",
"Mod": "Extinction"
@ -95,6 +106,7 @@
"NameTag": "MegaRex",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "MegaRex_Character_BP_Corrupt_C",
"Description": "Enraged Corrupted Rex",
"Mod": "Extinction"
@ -103,6 +115,7 @@
"NameTag": "Rex",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Rex_Character_BP_Corrupt_C",
"Description": "Corrupted Rex",
"Mod": "Extinction"
@ -111,6 +124,7 @@
"NameTag": "RockDrake",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "RockDrake_Character_BP_Corrupt_C",
"Description": "Corrupted Rock Drake",
"Mod": "Extinction"
@ -119,6 +133,7 @@
"NameTag": "Spino",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Spino_Character_BP_Corrupt_C",
"Description": "Corrupted Spino",
"Mod": "Extinction"
@ -127,6 +142,7 @@
"NameTag": "Stego",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Stego_Character_BP_Corrupt_C",
"Description": "Corrupted Stegosaurus",
"Mod": "Extinction"
@ -135,6 +151,7 @@
"NameTag": "MegaTrike",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "MegaTrike_Character_BP_Corrupt_C",
"Description": "Enraged Triceratops",
"Mod": "Extinction"
@ -143,6 +160,7 @@
"NameTag": "Trike",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Trike_Character_BP_Corrupt_C",
"Description": "Corrupted Triceratops",
"Mod": "Extinction"
@ -151,6 +169,7 @@
"NameTag": "Wyvern",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Wyvern_Character_BP_Fire_Corrupt_C",
"Description": "Corrupted Wyvern",
"Mod": "Extinction"
@ -159,6 +178,7 @@
"NameTag": "DesertTitan",
"IsSpawnable": false,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "DesertKaiju_Character_BP_C",
"Description": "Desert Titan",
"Mod": "Extinction"
@ -167,6 +187,7 @@
"NameTag": "Enforcer",
"IsSpawnable": true,
"IsTameable": "ByCrafting",
"IsBreedingable": "False",
"ClassName": "Enforcer_Character_BP_C",
"Description": "Enforcer",
"Mod": "Extinction"
@ -175,6 +196,7 @@
"NameTag": "ForestTitan",
"IsSpawnable": false,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "ForestKaiju_Character_BP_C",
"Description": "Forest Titan",
"Mod": "Extinction"
@ -183,6 +205,7 @@
"NameTag": "Gacha",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Gacha_Character_BP_C",
"Description": "Gacha",
"Mod": "Extinction"
@ -191,6 +214,7 @@
"NameTag": "GasBags",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "GasBags_Character_BP_C",
"Description": "GasBags",
"Mod": "Extinction"
@ -199,6 +223,7 @@
"NameTag": "Managarmr",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "IceJumper_Character_BP_C",
"Description": "Managarmr",
"Mod": "Extinction"
@ -207,6 +232,7 @@
"NameTag": "IceTitan",
"IsSpawnable": false,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "IceKaiju_Character_BP_C",
"Description": "Ice Titan",
"Mod": "Extinction"
@ -215,6 +241,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "CorruptTumor_Character_BP_C",
"Description": "Corrupt Tumor",
"Mod": "Extinction"
@ -223,6 +250,7 @@
"NameTag": "King Titan",
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "KingKaiju_Character_BP_C",
"Description": "King Titan (Gamma)",
"Mod": "Extinction"
@ -231,6 +259,7 @@
"NameTag": "KingTitanAlpha",
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "KingKaiju_Character_BP_Alpha_C",
"Description": "King Titan (Alpha)",
"Mod": "Extinction"
@ -239,6 +268,7 @@
"NameTag": "King Titan",
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "KingKaiju_Character_BP_Beta_C",
"Description": "King Titan (Beta)",
"Mod": "Extinction"
@ -247,6 +277,7 @@
"NameTag": "MegaMek",
"IsSpawnable": false,
"IsTameable": "ByCrafting",
"IsBreedingable": "False",
"ClassName": "MegaMek_Character_BP_C",
"Description": "Mega Mek",
"Mod": "Extinction"
@ -255,6 +286,7 @@
"NameTag": "Mek",
"IsSpawnable": false,
"IsTameable": "ByCrafting",
"IsBreedingable": "False",
"ClassName": "Mek_Character_BP_C",
"Description": "Mek",
"Mod": "Extinction"
@ -263,6 +295,7 @@
"NameTag": "Owl",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Owl_Character_BP_C",
"Description": "Snow Owl",
"Mod": "Extinction"
@ -271,6 +304,7 @@
"NameTag": "Scout",
"IsSpawnable": true,
"IsTameable": "ByCrafting",
"IsBreedingable": "False",
"ClassName": "Scout_Character_BP_C",
"Description": "Scout",
"Mod": "Extinction"
@ -279,6 +313,7 @@
"NameTag": "Velonasaur",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Spindles_Character_BP_C",
"Description": "Velonasaur",
"Mod": "Extinction"
@ -287,6 +322,7 @@
"NameTag": "Defender",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Defender_Character_BP_C",
"Description": "Defense Unit",
"Mod": "Extinction"

View file

@ -7,6 +7,7 @@
"NameTag": "Griffin",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "Griffin_Character_BP_C",
"Description": "Griffin",
"Mod": "Ragnarok"
@ -15,6 +16,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "Polar_Bear_C",
"Description": "Polar Bear",
"Mod": "Ragnarok"
@ -23,6 +25,7 @@
"NameTag": "Ice Wyvern",
"IsSpawnable": true,
"IsTameable": "ByBreeding",
"IsBreedingable": "True",
"ClassName": "Ragnarok_Wyvern_Override_Ice_C",
"Description": "Ice Wyvern",
"Mod": "Ragnarok"
@ -31,6 +34,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Iceworm_Character_Minion_BP_smaller_C",
"Description": "Iceworm",
"Mod": "Ragnarok"
@ -39,6 +43,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Iceworm_Queen_Character_BP_C",
"Description": "Iceworm Queen",
"Mod": "Ragnarok"
@ -47,6 +52,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "LavaGolem_Character_BP_C",
"Description": "Lava Golem",
"Mod": "Ragnarok"
@ -55,6 +61,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Dragon_Character_BP_Boss_Easy_Ragnarok_C",
"Description": "Dragon (Easy Variant)",
"Mod": "Ragnarok"
@ -63,6 +70,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Dragon_Character_BP_Boss_Medium_Ragnarok_C",
"Description": "Dragon (Medium Variant)",
"Mod": "Ragnarok"
@ -71,6 +79,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Dragon_Character_BP_Boss_Hard_Ragnarok_C",
"Description": "Dragon (Hard Variant)",
"Mod": "Ragnarok"
@ -79,6 +88,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Manticore_Character_BP_Easy_Ragnarok_C",
"Description": "Manticore (Easy Variant)",
"Mod": "Ragnarok"
@ -87,6 +97,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Manticore_Character_BP_Medium_Ragnarok_C",
"Description": "Manticore (Medium Variant)",
"Mod": "Ragnarok"
@ -95,6 +106,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Manticore_Character_BP_Hard_Ragnarok_C",
"Description": "Manticore (Hard Variant)",
"Mod": "Ragnarok"

View file

@ -7,6 +7,7 @@
"NameTag": "Camelsaurus",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "camelsaurus_Character_BP_C",
"Description": "Morellatops",
"Mod": "ScorchedEarth"
@ -15,6 +16,7 @@
"NameTag": "Deathworm",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Deathworm_Character_BP_C",
"Description": "Deathworm",
"Mod": "ScorchedEarth"
@ -23,6 +25,7 @@
"NameTag": "Jerboa",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Jerboa_Character_BP_C",
"Description": "Jerboa",
"Mod": "ScorchedEarth"
@ -31,6 +34,7 @@
"NameTag": "JugBug",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Jugbug_Oil_Character_BP_C",
"Description": "Oil Jug Bug",
"Mod": "ScorchedEarth"
@ -39,6 +43,7 @@
"NameTag": "Mantis",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Mantis_Character_BP_C",
"Description": "Mantis",
"Mod": "ScorchedEarth"
@ -47,6 +52,7 @@
"NameTag": "Moth",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Moth_Character_BP_C",
"Description": "Lymantria",
"Mod": "ScorchedEarth"
@ -55,6 +61,7 @@
"NameTag": "Phoenix",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "Phoenix_Character_BP_C",
"Description": "Phoenix",
"Mod": "ScorchedEarth"
@ -63,6 +70,7 @@
"NameTag": "RockElemental",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "RockGolem_Character_BP_C",
"Description": "Rock Elemental",
"Mod": "ScorchedEarth"
@ -71,6 +79,7 @@
"NameTag": "SpineyLizard",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "SpineyLizard_Character_BP_C",
"Description": "Thorny Dragon",
"Mod": "ScorchedEarth"
@ -79,6 +88,7 @@
"NameTag": "Vulture",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "True",
"ClassName": "Vulture_Character_BP_C",
"Description": "Vulture",
"Mod": "ScorchedEarth"
@ -87,6 +97,7 @@
"NameTag": "Wyvern",
"IsSpawnable": true,
"IsTameable": "ByBreeding",
"IsBreedingable": "True",
"ClassName": "Wyvern_Character_BP_Fire_C",
"Description": "Fire Wyvern",
"Mod": "ScorchedEarth"
@ -95,6 +106,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Jugbug_Water_Character_BP_C",
"Description": "Water Jug Bug",
"Mod": "ScorchedEarth"
@ -103,6 +115,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "MegaDeathworm_Character_BP_C",
"Description": "Alpha Deathworm",
"Mod": "ScorchedEarth"
@ -111,6 +124,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "MegaWyvern_Character_BP_Fire_C",
"Description": "Alpha Wyvern",
"Mod": "ScorchedEarth"
@ -119,6 +133,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "RubbleGolem_Character_BP_C",
"Description": "Rubble Golem",
"Mod": "ScorchedEarth"
@ -127,6 +142,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "ByBreeding",
"IsBreedingable": "True",
"ClassName": "Wyvern_Character_BP_Lightning_C",
"Description": "Lightning Wyvern",
"Mod": "ScorchedEarth"
@ -135,6 +151,7 @@
"NameTag": null,
"IsSpawnable": true,
"IsTameable": "ByBreeding",
"IsBreedingable": "True",
"ClassName": "Wyvern_Character_BP_Poison_C",
"Description": "Poison Wyvern",
"Mod": "ScorchedEarth"
@ -143,6 +160,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Manticore_Character_BP_C",
"Description": "Manticore",
"Mod": "ScorchedEarth"
@ -151,6 +169,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Manticore_Character_BP_Easy_C",
"Description": "Manticore (Easy Variant)",
"Mod": "ScorchedEarth"
@ -159,6 +178,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Manticore_Character_BP_Medium_C",
"Description": "Manticore (Medium Variant)",
"Mod": "ScorchedEarth"
@ -167,6 +187,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Manticore_Character_BP_Hard_C",
"Description": "Manticore (Hard Variant)",
"Mod": "ScorchedEarth"

File diff suppressed because it is too large Load diff

View file

@ -7,6 +7,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "SpiderL_Character_BP_TheCenter_C",
"Description": "Broodmother Lysrix (Easy Variant)",
"Mod": "TheCenter"
@ -15,6 +16,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "SpiderL_Character_BP_TheCenterMedium_C",
"Description": "Broodmother Lysrix (Medium Variant)",
"Mod": "TheCenter"
@ -23,6 +25,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "SpiderL_Character_BP_TheCenterHard_C",
"Description": "Broodmother Lysrix (Hard Variant)",
"Mod": "TheCenter"
@ -31,6 +34,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Gorilla_Character_BP_TheCenter_C",
"Description": "Megapithecus (Easy Variant)",
"Mod": "TheCenter"
@ -39,6 +43,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Gorilla_Character_BP_TheCenter_Medium_C",
"Description": "Megapithecus (Medium Variant)",
"Mod": "TheCenter"
@ -47,6 +52,7 @@
"NameTag": null,
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Gorilla_Character_BP_TheCenter_Hard_C",
"Description": "Megapithecus (Hard Variant)",
"Mod": "TheCenter"

View file

@ -7,6 +7,7 @@
"NameTag": "Deinonychus",
"IsSpawnable": true,
"IsTameable": "ByBreeding",
"IsBreedingable": "True",
"ClassName": "Deinonychus_Character_BP_C",
"Description": "Deinonychus",
"Mod": "Valguero"
@ -15,6 +16,7 @@
"NameTag": "ChalkRockElemental",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "ChalkGolem_Character_BP_C",
"Description": "Chalk Golem",
"Mod": "Valguero"
@ -23,6 +25,7 @@
"NameTag": "IceRockElemental",
"IsSpawnable": true,
"IsTameable": "True",
"IsBreedingable": "False",
"ClassName": "IceGolem_Character_BP_C",
"Description": "Ice Golem",
"Mod": "Valguero"
@ -31,6 +34,7 @@
"NameTag": "BroodmotherLysrix",
"IsSpawnable": true,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "SpiderL_VAL_Character_BP_C",
"Description": "Broodmother Lysrix",
"Mod": "Valguero"
@ -39,6 +43,7 @@
"NameTag": "Megapithecus",
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Gorilla_Character_BP_Easy_C",
"Description": "Megapithecus (Easy Variant)",
"Mod": "Valguero"
@ -47,6 +52,7 @@
"NameTag": "Megapithecus",
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Gorilla_Character_BP_Medium_C",
"Description": "Megapithecus (Medium Variant)",
"Mod": "Valguero"
@ -55,6 +61,7 @@
"NameTag": "Megapithecus",
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Gorilla_Character_BP_Hard_C",
"Description": "Megapithecus (Hard Variant)",
"Mod": "Valguero"
@ -63,6 +70,7 @@
"NameTag": "Dragon",
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Dragon_Character_BP_Boss_Easy_C",
"Description": "Dragon (Easy Variant)",
"Mod": "Valguero"
@ -71,6 +79,7 @@
"NameTag": "Dragon",
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Dragon_Character_BP_Boss_Medium_C",
"Description": "Dragon (Medium Variant)",
"Mod": "Valguero"
@ -79,6 +88,7 @@
"NameTag": "Dragon",
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Dragon_Character_BP_Boss_Hard_C",
"Description": "Dragon (Hard Variant)",
"Mod": "Valguero"
@ -87,6 +97,7 @@
"NameTag": "Manticore",
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Manticore_Character_BP_Easy_C",
"Description": "Manticore (Easy Variant)",
"Mod": "Valguero"
@ -95,6 +106,7 @@
"NameTag": "Manticore",
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Manticore_Character_BP_Medium_C",
"Description": "Manticore (Medium Variant)",
"Mod": "Valguero"
@ -103,6 +115,7 @@
"NameTag": "Manticore",
"IsSpawnable": false,
"IsTameable": "False",
"IsBreedingable": "False",
"ClassName": "Manticore_Character_BP_Hard_C",
"Description": "Manticore (Hard Variant)",
"Mod": "Valguero"

View file

@ -584,6 +584,8 @@
<sys:String x:Key="GlobalSettings_CustomOverrideMapSpawnerTooltip">If enabled, the map spawner overrides will be managed by the server manager.</sys:String>
<sys:String x:Key="GlobalSettings_CustomOverrideSupplyCrateLabel">Enable Supply Crate Overrides</sys:String>
<sys:String x:Key="GlobalSettings_CustomOverrideSupplyCrateTooltip">If enabled, the supply crate overrides will be managed by the server manager.</sys:String>
<sys:String x:Key="GlobalSettings_CustomOverrideExcludeItemIndicesLabel">Enable Exclude Item Indices Overrides</sys:String>
<sys:String x:Key="GlobalSettings_CustomOverrideExcludeItemIndicesTooltip">If enabled, the exclude item indices overrides will be managed by the server manager.</sys:String>
<sys:String x:Key="GlobalSettings_CustomOverridePreventTransferLabel">Enable Prevent Transfer Overrides</sys:String>
<sys:String x:Key="GlobalSettings_CustomOverridePreventTransferTooltip">If enabled, the prevent transfer overrides will be managed by the server manager.</sys:String>
<sys:String x:Key="GlobalSettings_CustomOverridePGMLabel">Enable PGM Ark Settings</sys:String>
@ -1204,6 +1206,14 @@
<sys:String x:Key="ServerSettings_UseBanListTooltip">If enabled, the ban list URL specified will be used.</sys:String>
<sys:String x:Key="ServerSettings_BanListTooltip">The URL of the ban list to use.</sys:String>
<sys:String x:Key="ServerSettings_ResetBanlistTooltip">Reset the ban list properties to defaults.</sys:String>
<sys:String x:Key="ServerSettings_UseCustomDynamicConfigUrlLabel">Use Dynamic Config URL</sys:String>
<sys:String x:Key="ServerSettings_UseCustomDynamicConfigUrlTooltip">If enabled, the dynamic config URL specified will be used.</sys:String>
<sys:String x:Key="ServerSettings_CustomDynamicConfigUrlTooltip">The URL of the dynamic config to use.</sys:String>
<sys:String x:Key="ServerSettings_UseCustomLiveTuningUrlLabel">Use Custom Live Tuning URL</sys:String>
<sys:String x:Key="ServerSettings_UseCustomLiveTuningUrlTooltip">If enabled, the custom live tuning config URL specified will be used.</sys:String>
<sys:String x:Key="ServerSettings_CultureLabel">Server Language</sys:String>
<sys:String x:Key="ServerSettings_CultureTooltip">Overrides the server output language. It doesn't override clients language.</sys:String>
<sys:String x:Key="ServerSettings_CustomLiveTuningUrlTooltip">The URL of the custom live tuning config to use.</sys:String>
<sys:String x:Key="ServerSettings_DisableVACLabel">Disable Valve Anti-Cheat System (VAC)</sys:String>
<sys:String x:Key="ServerSettings_DisableVACTooltip">If enabled, the Valve anti-cheat system will be disabled. Please use this with caution!</sys:String>
<sys:String x:Key="ServerSettings_DisablePMVOptimizationLabel">Disable Player-Move-Physics Optimization</sys:String>
@ -1243,6 +1253,8 @@
<sys:String x:Key="ServerSettings_ServerAllowAnselTooltip">If enabled, will enable NVIDIA Ansel on Servers.</sys:String>
<sys:String x:Key="ServerSettings_StructureMemoryOptimizationsLabel">Structure Memory Optimizations</sys:String>
<sys:String x:Key="ServerSettings_StructureMemoryOptimizationsTooltip">If enabled, will enable the structure memory optimizations. NOTE: avoid using it when running structure-related mods (until they get updated) as it can break the snappoints of these mod structures.</sys:String>
<sys:String x:Key="ServerSettings_UseStructureStasisGridLabel">Structure Stasis Grid</sys:String>
<sys:String x:Key="ServerSettings_UseStructureStasisGridTooltip">Enables the structure stasis grid to improve server performance on large bases with lots of players. (Please be aware this may have an impact on some mods)</sys:String>
<sys:String x:Key="ServerSettings_SecureSendArKPayloadLabel">Creature Upload Issue Protection</sys:String>
<sys:String x:Key="ServerSettings_SecureSendArKPayloadTooltip">Protection against creature upload issue (Please be aware this may have an impact on some mods)</sys:String>
<sys:String x:Key="ServerSettings_UseItemDupeCheckLabel">Additional Dupe Protection</sys:String>
@ -1424,8 +1436,14 @@
<sys:String x:Key="ServerSettings_RandomSupplyCratePointsTooltip">If enabled, will make Supply Crates random.</sys:String>
<sys:String x:Key="ServerSettings_EnableExtraStructurePreventionVolumesLabel">Prevent Building in Resource Rich Areas</sys:String>
<sys:String x:Key="ServerSettings_EnableExtraStructurePreventionVolumesTooltip">If enabled, completely disables building in specific resource-rich areas, in particular setup on TheIsland around the major mountains.</sys:String>
<sys:String x:Key="ServerSettings_UseSingleplayerSettingsLabel">Enable Single Player Settings</sys:String>
<sys:String x:Key="ServerSettings_UseSingleplayerSettingsTooltip">If enabled, all game settings will be more balanced for an individual player experience. Useful for dedicated server with a very small amount of players.</sys:String>
<sys:String x:Key="ServerSettings_DisablePvPFriendlyFireLabel">Disable PvP Friendly Fire</sys:String>
<sys:String x:Key="ServerSettings_DisablePvPFriendlyFireTooltip">If enabled, players are unable to deal damage to or kill other tribe members, dinos and structures when PvP mode is enabled.</sys:String>
<sys:String x:Key="ServerSettings_AllowCaveBuildingPvPLabel">Enable PVP Cave Building</sys:String>
<sys:String x:Key="ServerSettings_AllowCaveBuildingPvPTooltip">If enabled, allows building in caves when PvP mode is enabled.</sys:String>
<sys:String x:Key="ServerSettings_DisableRailgunPVPLabel">Disable PvP Railgun</sys:String>
<sys:String x:Key="ServerSettings_DisableRailgunPVPTooltip">If enabled, players are unable to use the Tek Railgun when PvP mode is enabled.</sys:String>
<sys:String x:Key="ServerSettings_UseCorpseLocatorLabel">Use Corpse Locator</sys:String>
<sys:String x:Key="ServerSettings_UseCorpseLocatorTooltip">If enabled, upon death, a beam of light shoots into the sky to help the player locate where they died.</sys:String>
<sys:String x:Key="ServerSettings_PreventSpawnAnimationsLabel">Prevent Spawn Animations</sys:String>
@ -1471,6 +1489,8 @@
<sys:String x:Key="ServerSettings_ClusterTributeLabel">Cluster Tribute Options</sys:String>
<sys:String x:Key="ServerSettings_NoTransferFromFilteringLabel">No Transfer from Filtering</sys:String>
<sys:String x:Key="ServerSettings_DisableCustomFoldersInTributeInventoriesLabel">Disable Custom Tribute Folders</sys:String>
<sys:String x:Key="ServerSettings_DisableCustomFoldersInTributeInventoriesTooltip">Disables creation of folders in Tribute inventories.</sys:String>
<sys:String x:Key="ServerSettings_NoTransferFromFilteringTooltip">If enabled, the survivor, item and dino transfers are disabled if the server is not in the same cluster.</sys:String>
<sys:String x:Key="ServerSettings_OverrideTributeCharacterExpirationSecondsLabel">Override Survivor Upload Expiration</sys:String>
<sys:String x:Key="ServerSettings_OverrideTributeCharacterExpirationSecondsTooltip">If enabled, will allow you to override the expiration timer.</sys:String>
@ -1593,6 +1613,8 @@
<sys:String x:Key="ServerSettings_EnableWorldBuffScalingTooltip">If enabled, will cause world buffs to scale their benefits multiplicatively, rather than add/subtract a flat amount to the value at runtime.</sys:String>
<sys:String x:Key="ServerSettings_WorldBuffScalingEfficacyLabel">World Buff Scaling Efficacy</sys:String>
<sys:String x:Key="ServerSettings_WorldBuffScalingEfficacyTooltip">Specifies the global scalar to reduce/increase the effectiveness of world buffs (e.g. 1 is default, 0.5 would be 50% less effective, 2.0 would be 2x more effective).</sys:String>
<sys:String x:Key="ServerSettings_AdjustableMutagenSpawnDelayMultiplierLabel">Mutagen Spawn Delay Multiplier</sys:String>
<sys:String x:Key="ServerSettings_AdjustableMutagenSpawnDelayMultiplierTooltip">Scales the Mutagen spawn rates. By default, the game attempts to spawn them every 8 hours on dedicated servers, and every hour on non-dedicated servers and single-player. Rising this value will rise the re-spawn interval, lowering will make it shorter.</sys:String>
<sys:String x:Key="ServerSettings_HexagonsLabel">Hexagons</sys:String>
<sys:String x:Key="ServerSettings_DisableHexagonStoreLabel">Disable Hexagon Store</sys:String>
@ -1778,6 +1800,8 @@
<sys:String x:Key="ServerSettings_PreventMateBoostTooltip">If enabled, the dino mate boost will be disabled.</sys:String>
<sys:String x:Key="ServerSettings_AllowMultipleAttachedC4Label">Allow Multiple Attached C4</sys:String>
<sys:String x:Key="ServerSettings_AllowMultipleAttachedC4Tooltip">If enabled, will allow more than one C4 attached per dino.</sys:String>
<sys:String x:Key="ServerSettings_AllowUnclaimDinosLabel">Allow Unclaim Dinos</sys:String>
<sys:String x:Key="ServerSettings_AllowUnclaimDinosTooltip">if disabled, prevents players to unclaim tamed creatures.</sys:String>
<sys:String x:Key="ServerSettings_DisableDinoDecayLabel">Disable Dino Decay PvE</sys:String>
<sys:String x:Key="ServerSettings_DisableDinoDecayTooltip">If enabled, disables the gradual decay of dino ownership in PvE; otherwise every dino can be claimed by any player.</sys:String>
<sys:String x:Key="ServerSettings_DisableDinoDecayPvPLabel">Disable Dino Decay PvP</sys:String>
@ -1790,10 +1814,14 @@
<sys:String x:Key="ServerSettings_AllowAnyoneBabyImprintCuddleTooltip">If enabled, ANYONE will to be able to take care of a Baby Dino (cuddle etc), not just whomever imprinted on it.</sys:String>
<sys:String x:Key="ServerSettings_AutoDestroyDecayedDinosLabel">Auto Destroy Decayed Dinos</sys:String>
<sys:String x:Key="ServerSettings_AutoDestroyDecayedDinosTooltip">If enabled, all claimable decayed dinos will auto-destroy on load, rather than have them remain around as Claimable.</sys:String>
<sys:String x:Key="ServerSettings_UseDinoLevelUpAnimationsLabel">Enable Level Up Animation</sys:String>
<sys:String x:Key="ServerSettings_UseDinoLevelUpAnimationsTooltip">If disabled, tamed dinos on level-up will not perform the related animation.</sys:String>
<sys:String x:Key="ServerSettings_DisableDinoRidingLabel">Disable Dino Riding</sys:String>
<sys:String x:Key="ServerSettings_DisableDinoRidingTooltip">If enabled, all tamed dinos will be unable to be ridden.</sys:String>
<sys:String x:Key="ServerSettings_DisableDinoTamingLabel">Disable Dino Taming</sys:String>
<sys:String x:Key="ServerSettings_DisableDinoTamingTooltip">If enabled, all wild dinos will be unable to be tamed.</sys:String>
<sys:String x:Key="ServerSettings_DisableDinoBreedingLabel">Disable Dino Breeding</sys:String>
<sys:String x:Key="ServerSettings_DisableDinoBreedingTooltip">if enabled, prevents tames to be bred.</sys:String>
<sys:String x:Key="ServerSettings_EnableForceCanRideFliersLabel">Change Flyer Riding</sys:String>
<sys:String x:Key="ServerSettings_EnableForceCanRideFliersTooltip">If enabled, will allow you to change if flyers can be ridden on the map or not; otherwise will default to use the map settings.</sys:String>
<sys:String x:Key="ServerSettings_ForceCanRideFliersLabel">Enable Flyer Riding</sys:String>
@ -1818,6 +1846,7 @@
<sys:String x:Key="ServerSettings_ModColumnLabel">Mod</sys:String>
<sys:String x:Key="ServerSettings_SpawnableColumnLabel">Spawnable</sys:String>
<sys:String x:Key="ServerSettings_TameableColumnLabel">Tameable</sys:String>
<sys:String x:Key="ServerSettings_BreedingableColumnLabel">Breedable</sys:String>
<sys:String x:Key="ServerSettings_ReplacementColumnLabel">Replace With</sys:String>
<sys:String x:Key="ServerSettings_SpawnWeightColumnLabel">Spawn Weight</sys:String>
<sys:String x:Key="ServerSettings_OverrideLimitColumnLabel">Override Limit</sys:String>
@ -1959,6 +1988,8 @@
<sys:String x:Key="ServerSettings_StructuresLabel">Structures</sys:String>
<sys:String x:Key="ServerSettings_DisableStructurePlacementCollisionLabel">Disable Structure Placement Collision</sys:String>
<sys:String x:Key="ServerSettings_DisableStructurePlacementCollisionTooltip">If enabled, will allow players to place structures that clip into terrain.</sys:String>
<sys:String x:Key="ServerSettings_IgnoreLimitMaxStructuresInRangeTypeFlagLabel">Remove Decorative Structures Limit</sys:String>
<sys:String x:Key="ServerSettings_IgnoreLimitMaxStructuresInRangeTypeFlagTooltip">Removes the limit of 150 decorative structures (flags, signs, dermis etc.).</sys:String>
<sys:String x:Key="ServerSettings_StructureResistanceLabel">Structure Resistance:</sys:String>
<sys:String x:Key="ServerSettings_StructureResistanceTooltip">Specifies the scaling factor for the resistance to damage structures receive when attacked. Higher values decrease resistance, increasing damage per attack. Lower values increase it, reducing damage per attack.</sys:String>
<sys:String x:Key="ServerSettings_StructureDamageLabel">Structure Damage:</sys:String>
@ -2024,6 +2055,8 @@
<sys:String x:Key="ServerSettings_StructurePickupHoldDurationTooltip">Specifies the amount of time of the quick-pickup hold duration, use 0 to disable and have instant pickup.</sys:String>
<sys:String x:Key="ServerSettings_AllowIntegratedSPlusStructuresLabel">Allow Integrated Structures Plus</sys:String>
<sys:String x:Key="ServerSettings_AllowIntegratedSPlusStructuresTooltip">If enabled, will add all of the new S+ structures; otherwise disables all of the new S+ structures (intended mainly for letting unofficials that want to keep using the S+ mod version to keep using that without a ton of extra duplicate structures).</sys:String>
<sys:String x:Key="ServerSettings_IgnoreStructuresPreventionVolumesLabel">Disable Building in Special Areas</sys:String>
<sys:String x:Key="ServerSettings_IgnoreStructuresPreventionVolumesTooltip">If enabled, building areas where normally it's not allowed, such around some maps' Obelisks, in the Aberration Portal and in Mission Volumes areas on Genesis: Part 1. Note: in Genesis: Part 1 this settings is enabled by default and there is an ad hoc settings called bGenesisUseStructuresPreventionVolumes to disable it.</sys:String>
<sys:String x:Key="ServerSettings_GenesisUseStructuresPreventionVolumesLabel">Disable Building in Mission Areas</sys:String>
<sys:String x:Key="ServerSettings_GenesisUseStructuresPreventionVolumesTooltip">If enabled, will disable building in mission areas on the Genesis map.</sys:String>
<!--#endregion-->
@ -2548,6 +2581,23 @@
<sys:String x:Key="ServerSettings_SupplyCrate_SaveCrateTooltip">Save supply crate</sys:String>
<!--#endregion-->
<!--#region Server Settings - Exclude Item Indices -->
<sys:String x:Key="ServerSettings_ExcludeItemIndicesOverridesLabel">Exclude ItemIDs From Supply Crate Overrides</sys:String>
<sys:String x:Key="ServerSettings_ExcludeItemIndicesOverrides_ItemsLabel">Exclude ItemIDs from Supply Crates</sys:String>
<sys:String x:Key="ServerSettings_ExcludeItemIndicesOverrides_SaveTitle">Exclude ItemIDs from Supply Crates Overrides Settings</sys:String>
<sys:String x:Key="ServerSettings_ExcludeItemIndicesOverrides_DisableLabel">NOTE: If you want to manage your overrides manually or with another application, you can disable the option that will prevent the server manager managing the overrides. See the 'Custom Override Options' in the global settings.</sys:String>
<sys:String x:Key="ServerSettings_ExcludeItemIndicesOverrides_WarningLabel">WARNING: Items on this list will be excluded from supply crates.</sys:String>
<sys:String x:Key="ServerSettings_ExcludeItemIndicesOverrides_ItemClassColumnLabel">ItemID</sys:String>
<sys:String x:Key="ServerSettings_ExcludeItemIndicesOverrides_ItemClassColumnTooltip">ItemID Number</sys:String>
<sys:String x:Key="ServerSettings_ExcludeItemIndicesOverrides_AddItemTooltip">Add ItemID</sys:String>
<sys:String x:Key="ServerSettings_ExcludeItemIndicesOverrides_ClearItemsTooltip">Delete all ItemIDs</sys:String>
<sys:String x:Key="ServerSettings_ExcludeItemIndicesOverrides_PasteItemsTooltip">Paste exclude item indices data</sys:String>
<sys:String x:Key="ServerSettings_ExcludeItemIndicesOverrides_RemoveItemTooltip">Delete ItemID</sys:String>
<sys:String x:Key="ServerSettings_ExcludeItemIndicesOverrides_SaveItemsTooltip">Save exclude item indices data</sys:String>
<!--#endregion-->
<!--#region Server Settings - Stack Size Overrides -->
<sys:String x:Key="ServerSettings_StackSizeOverridesLabel">Stack Size Overrides</sys:String>
<sys:String x:Key="ServerSettings_ItemStackSizeMultiplierLabel">Item Stack Size Multiplier</sys:String>

View file

@ -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);

View 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";
}
}
}

View file

@ -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

View file

@ -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}";

View file

@ -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)

View file

@ -1041,6 +1041,8 @@
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
@ -1051,38 +1053,50 @@
<cctl:AnnotatedSlider Grid.Row="0" Grid.Column="0" Margin="20,1,5,1" Grid.ColumnSpan="2" Label="{DynamicResource ServerSettings_MaxPlayersLabel}" Value="{Binding MaxPlayers}" ToolTip="{DynamicResource ServerSettings_MaxPlayersTooltip}" VerticalAlignment="Center" Minimum="1" Maximum="250" LargeChange="25" SmallChange="10" TickFrequency="50" LabelRelativeWidth="Auto" SliderRelativeWidth="15*" SuffixRelativeWidth="0"/>
<cctl:AnnotatedCheckBoxAndIntegerSlider Grid.Row="0" Grid.Column="2" Margin="20,1,5,1" Grid.ColumnSpan="2" Label="{DynamicResource ServerSettings_EnableIdleTimeoutLabel}" Suffix="{DynamicResource ServerSettings_IdleTimeoutUnits}" Value="{Binding KickIdlePlayersPeriod}" ToolTip="{DynamicResource ServerSettings_IdleTimeoutTooltip}" Minimum="60" Maximum="7200" VerticalAlignment="Center" LargeChange="300" SmallChange="60" TickFrequency="300" LabelRelativeWidth="Auto" SliderRelativeWidth="15*" SuffixRelativeWidth="Auto"/>
<DockPanel Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="4" HorizontalAlignment="Stretch">
<cctl:CheckBoxAndTextBlock DockPanel.Dock="Left" Margin="5" VerticalAlignment="Center" IsChecked="{Binding EnableBanListURL, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseBanListLabel}" ToolTip="{DynamicResource ServerSettings_UseBanListTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="1" Grid.Column="0" Margin="5" VerticalAlignment="Center" IsChecked="{Binding EnableBanListURL, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseBanListLabel}" ToolTip="{DynamicResource ServerSettings_UseBanListTooltip}"/>
<DockPanel Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="4" HorizontalAlignment="Stretch">
<Button DockPanel.Dock="Right" ToolTip="{DynamicResource ServerSettings_ResetBanlistTooltip}" Style="{StaticResource ButtonStyle1}" Command="{Binding ResetActionCommand, ElementName=SettingsControl}" CommandParameter="{x:Static enum:ServerSettingsResetAction.BanListProperty}">
<Image Source="{com:Icon Path=/Ark Server Manager;component/Art/Refresh.ico,Size=32}"/>
</Button>
<TextBox DockPanel.Dock="Left" Margin="1" Text="{Binding BanListURL}" ToolTip="{DynamicResource ServerSettings_BanListTooltip}" IsEnabled="{Binding EnableBanListURL}"/>
</DockPanel>
<cctl:CheckBoxAndTextBlock Grid.Row="2" Grid.Column="0" Margin="5" VerticalAlignment="Center" IsChecked="{Binding EnableCustomDynamicConfigUrl, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseCustomDynamicConfigUrlLabel}" ToolTip="{DynamicResource ServerSettings_UseCustomDynamicConfigUrlTooltip}"/>
<DockPanel Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="4" HorizontalAlignment="Stretch">
<TextBox DockPanel.Dock="Left" Margin="1" Text="{Binding CustomDynamicConfigUrl}" ToolTip="{DynamicResource ServerSettings_CustomDynamicConfigUrlTooltip}" IsEnabled="{Binding EnableCustomDynamicConfigUrl}"/>
</DockPanel>
<cctl:CheckBoxAndTextBlock Grid.Row="2" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding DisableValveAntiCheatSystem, Mode=TwoWay}" Text="{DynamicResource ServerSettings_DisableVACLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_DisableVACTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="3" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding UseBattlEye, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseBattlEyeLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseBattlEyeTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="4" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding DisablePlayerMovePhysicsOptimization, Mode=TwoWay}" Text="{DynamicResource ServerSettings_DisablePMVOptimizationLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_DisablePMVOptimizationTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="5" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding OutputServerLog, Mode=TwoWay}" Text="{DynamicResource ServerSettings_OutputServerLogLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_OutputServerLogTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="6" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding UseNoHangDetection, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseNoHangDetectionLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseNoHangDetectionTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="7" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding NoDinos, Mode=TwoWay}" Text="{DynamicResource ServerSettings_NoDinosLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_NoDinosTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="8" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding NoUnderMeshChecking, Mode=TwoWay}" Text="{DynamicResource ServerSettings_NoUnderMeshCheckingLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_NoUnderMeshCheckingTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="9" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding NoUnderMeshKilling, Mode=TwoWay}" Text="{DynamicResource ServerSettings_NoUnderMeshKillingLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_NoUnderMeshKillingTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="10" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding UseVivox, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseVivoxLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseVivoxTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="11" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding AllowSharedConnections, Mode=TwoWay}" Text="{DynamicResource ServerSettings_AllowSharedConnectionsLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowSharedConnectionsTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="12" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding SecureSendArKPayload, Mode=TwoWay}" Text="{DynamicResource ServerSettings_SecureSendArKPayloadLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_SecureSendArKPayloadTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="13" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding UseItemDupeCheck, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseItemDupeCheckLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseItemDupeCheckTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="14" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding UseSecureSpawnRules, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseSecureSpawnRulesLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseSecureSpawnRulesTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="3" Grid.Column="0" Margin="5" VerticalAlignment="Center" IsChecked="{Binding EnableCustomLiveTuningUrl, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseCustomLiveTuningUrlLabel}" ToolTip="{DynamicResource ServerSettings_UseCustomLiveTuningUrlTooltip}"/>
<DockPanel Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="3" HorizontalAlignment="Stretch">
<TextBox DockPanel.Dock="Left" Margin="1" Text="{Binding CustomLiveTuningUrl}" ToolTip="{DynamicResource ServerSettings_CustomLiveTuningUrlTooltip}" IsEnabled="{Binding EnableCustomLiveTuningUrl}"/>
</DockPanel>
<cctl:CheckBoxAndTextBlock Grid.Row="15" Grid.Column="0" Grid.ColumnSpan="4" Margin="5,5,5,0" IsChecked="{Binding ForceRespawnDinos, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ForceRespawnDinosLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_ForceRespawnDinosTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="16" Grid.Column="0" Grid.ColumnSpan="4" Margin="5,5,5,0" IsChecked="{Binding EnableServerAutoForceRespawnWildDinosInterval, Mode=TwoWay}" Text="{DynamicResource ServerSettings_EnableServerAutoForceRespawnWildDinosIntervalLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_EnableServerAutoForceRespawnWildDinosIntervalTooltip}"/>
<Label Grid.Row="4" Grid.Column="0" Content="{DynamicResource ServerSettings_CultureLabel}" ToolTip="{DynamicResource ServerSettings_CultureTooltip}" VerticalAlignment="Center"/>
<ComboBox Grid.Row="4" Grid.Column="1" Margin="1" Name="CultureComboBox" ItemsSource="{Binding Culture, ElementName=SettingsControl}" SelectedValue="{Binding Culture, Mode=TwoWay, UpdateSourceTrigger=Explicit}" SelectedValuePath="ValueMember" DisplayMemberPath="DisplayMember" IsEditable="True" ToolTip="{DynamicResource ServerSettings_CultureTooltip}" LostFocus="ComboBoxItemList_LostFocus" PreviewMouseWheel="ComboBox_PreviewMouseWheel"/>
<cctl:AnnotatedSlider Grid.Row="17" Grid.Column="0" Grid.ColumnSpan="4" Margin="20,1,5,1" Label="{DynamicResource ServerSettings_ServerAutoForceRespawnWildDinosIntervalLabel}" Value="{Binding ServerAutoForceRespawnWildDinosInterval, Converter={StaticResource SecondsToHoursConverter}}" Suffix="{DynamicResource SliderUnits_Hours}" Minimum="1" Maximum="720" SmallChange="1" LargeChange="24" TickFrequency="24" LabelRelativeWidth="Auto" SliderRelativeWidth="15*" SuffixRelativeWidth="Auto" ToolTip="{DynamicResource ServerSettings_ServerAutoForceRespawnWildDinosIntervalTooltip}" IsEnabled="{Binding EnableServerAutoForceRespawnWildDinosInterval, FallbackValue=False}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="5" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding DisableValveAntiCheatSystem, Mode=TwoWay}" Text="{DynamicResource ServerSettings_DisableVACLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_DisableVACTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="6" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding UseBattlEye, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseBattlEyeLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseBattlEyeTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="7" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding DisablePlayerMovePhysicsOptimization, Mode=TwoWay}" Text="{DynamicResource ServerSettings_DisablePMVOptimizationLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_DisablePMVOptimizationTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="8" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding OutputServerLog, Mode=TwoWay}" Text="{DynamicResource ServerSettings_OutputServerLogLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_OutputServerLogTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="9" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding UseNoHangDetection, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseNoHangDetectionLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseNoHangDetectionTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="10" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding NoDinos, Mode=TwoWay}" Text="{DynamicResource ServerSettings_NoDinosLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_NoDinosTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="11" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding NoUnderMeshChecking, Mode=TwoWay}" Text="{DynamicResource ServerSettings_NoUnderMeshCheckingLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_NoUnderMeshCheckingTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="12" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding NoUnderMeshKilling, Mode=TwoWay}" Text="{DynamicResource ServerSettings_NoUnderMeshKillingLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_NoUnderMeshKillingTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="13" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding UseVivox, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseVivoxLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseVivoxTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="14" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding AllowSharedConnections, Mode=TwoWay}" Text="{DynamicResource ServerSettings_AllowSharedConnectionsLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowSharedConnectionsTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="15" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding SecureSendArKPayload, Mode=TwoWay}" Text="{DynamicResource ServerSettings_SecureSendArKPayloadLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_SecureSendArKPayloadTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="16" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding UseItemDupeCheck, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseItemDupeCheckLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseItemDupeCheckTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="17" Grid.Column="0" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding UseSecureSpawnRules, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseSecureSpawnRulesLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseSecureSpawnRulesTooltip}"/>
<Label Grid.Row="18" Grid.Column="0" Margin="20,0,5,0" Grid.ColumnSpan="2" Content="{DynamicResource ServerSettings_AltSaveDirectoryNameLabel}" ToolTip="{DynamicResource ServerSettings_AltSaveDirectoryNameTooltip}" VerticalAlignment="Center" MinWidth="200" Foreground="{DynamicResource UnSyncedSetting}"/>
<TextBox Grid.Row="18" Grid.Column="2" Margin="1,1,0,1" VerticalContentAlignment="Center" HorizontalAlignment="Stretch" ToolTip="{DynamicResource ServerSettings_AltSaveDirectoryNameTooltip}">
<cctl:CheckBoxAndTextBlock Grid.Row="18" Grid.Column="0" Grid.ColumnSpan="4" Margin="5,5,5,0" IsChecked="{Binding ForceRespawnDinos, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ForceRespawnDinosLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_ForceRespawnDinosTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="19" Grid.Column="0" Grid.ColumnSpan="4" Margin="5,5,5,0" IsChecked="{Binding EnableServerAutoForceRespawnWildDinosInterval, Mode=TwoWay}" Text="{DynamicResource ServerSettings_EnableServerAutoForceRespawnWildDinosIntervalLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_EnableServerAutoForceRespawnWildDinosIntervalTooltip}"/>
<cctl:AnnotatedSlider Grid.Row="20" Grid.Column="0" Grid.ColumnSpan="4" Margin="20,1,5,1" Label="{DynamicResource ServerSettings_ServerAutoForceRespawnWildDinosIntervalLabel}" Value="{Binding ServerAutoForceRespawnWildDinosInterval, Converter={StaticResource SecondsToHoursConverter}}" Suffix="{DynamicResource SliderUnits_Hours}" Minimum="1" Maximum="720" SmallChange="1" LargeChange="24" TickFrequency="24" LabelRelativeWidth="Auto" SliderRelativeWidth="15*" SuffixRelativeWidth="Auto" ToolTip="{DynamicResource ServerSettings_ServerAutoForceRespawnWildDinosIntervalTooltip}" IsEnabled="{Binding EnableServerAutoForceRespawnWildDinosInterval, FallbackValue=False}"/>
<Label Grid.Row="21" Grid.Column="0" Margin="20,0,5,0" Grid.ColumnSpan="2" Content="{DynamicResource ServerSettings_AltSaveDirectoryNameLabel}" ToolTip="{DynamicResource ServerSettings_AltSaveDirectoryNameTooltip}" VerticalAlignment="Center" MinWidth="200" Foreground="{DynamicResource UnSyncedSetting}"/>
<TextBox Grid.Row="21" Grid.Column="2" Margin="1,1,0,1" VerticalContentAlignment="Center" HorizontalAlignment="Stretch" ToolTip="{DynamicResource ServerSettings_AltSaveDirectoryNameTooltip}">
<Validation.ErrorTemplate>
<ControlTemplate>
<StackPanel>
@ -1099,24 +1113,26 @@
</Binding>
</TextBox.Text>
</TextBox>
<Label Grid.Row="18" Grid.Column="3" Content="{DynamicResource ServerSettings_AltSaveDirectoryNameLabel2}" ToolTip="{DynamicResource ServerSettings_AltSaveDirectoryNameTooltip}" VerticalAlignment="Center"/>
<TextBlock Grid.Row="19" Grid.Column="0" Grid.ColumnSpan="4" Margin="30,0,5,0" Text="{DynamicResource ServerSettings_AltSaveDirectoryNameNote}" FontWeight="Bold" TextWrapping="WrapWithOverflow" IsEnabled="False"/>
<Label Grid.Row="21" Grid.Column="3" Content="{DynamicResource ServerSettings_AltSaveDirectoryNameLabel2}" ToolTip="{DynamicResource ServerSettings_AltSaveDirectoryNameTooltip}" VerticalAlignment="Center"/>
<Label Grid.Row="20" Grid.Column="0" Margin="20,0,5,0" Grid.ColumnSpan="2" Content="{DynamicResource ServerSettings_CrossArkClusterIdLabel}" ToolTip="{DynamicResource ServerSettings_CrossArkClusterIdTooltip}" VerticalAlignment="Center" MinWidth="200" Foreground="{DynamicResource UnSyncedSetting}"/>
<TextBox Grid.Row="20" Grid.Column="2" Margin="1,1,0,1" VerticalContentAlignment="Center" HorizontalAlignment="Stretch" Text="{Binding CrossArkClusterId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}" ToolTip="{DynamicResource ServerSettings_CrossArkClusterIdTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="20" Grid.Column="3" Margin="5,1,0,0" IsEnabled="{Binding CrossArkClusterId, Converter={StaticResource HasStringValueConverter}, FallbackValue=false}" IsChecked="{Binding ClusterDirOverride, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ClusterDirOverrideLabel}" ToolTip="{DynamicResource ServerSettings_ClusterDirOverrideTooltip}" VerticalAlignment="Center" HorizontalAlignment="Left" UseLayoutRounding="False" Foreground="{DynamicResource UnSyncedSetting}"/>
<TextBlock Grid.Row="22" Grid.Column="0" Grid.ColumnSpan="4" Margin="30,0,5,0" Text="{DynamicResource ServerSettings_AltSaveDirectoryNameNote}" FontWeight="Bold" TextWrapping="WrapWithOverflow" IsEnabled="False"/>
<cctl:CheckBoxAndTextBlock Grid.Row="2" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding DisableAntiSpeedHackDetection, Mode=TwoWay}" Text="{DynamicResource ServerSettings_DisableAntiSpeedHackLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_DisableAntiSpeedHackTooltip}"/>
<cctl:AnnotatedSlider Grid.Row="3" Grid.Column="2" Margin="20,1,5,1" Grid.ColumnSpan="2" Label="{DynamicResource ServerSettings_AntiSpeedHackBiasLabel}" Value="{Binding SpeedHackBias}" Suffix="{DynamicResource ServerSettings_AntiSpeedHackBiasUnits}" Minimum="0.0" Maximum="1.0" SmallChange="0.1" LargeChange="0.25" TickFrequency="60" LabelRelativeWidth="Auto" SliderRelativeWidth="15*" SuffixRelativeWidth="Auto" ToolTip="{DynamicResource ServerSettings_AntiSpeedHackBiasTooltip}" />
<cctl:CheckBoxAndTextBlock Grid.Row="4" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding ForceDirectX10, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ForceDirectX10Label}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_ForceDirectX10Tooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="5" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding ForceShaderModel4, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ForceShaderModel4Label}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_ForceShaderModel4Tooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="6" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding ForceLowMemory, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ForceLowMemoryLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_ForceLowMemoryTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="7" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding ForceNoManSky, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ForceNoManSkyLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_ForceNoManSkyTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="8" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding UseNoMemoryBias, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseNoMemoryBiasLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseNoMemoryBiasTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="9" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding StasisKeepControllers, Mode=TwoWay}" Text="{DynamicResource ServerSettings_StasisKeepControllersLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_StasisKeepControllersTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="10" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding ServerAllowAnsel, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ServerAllowAnselLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_ServerAllowAnselTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="11" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding StructureMemoryOptimizations, Mode=TwoWay}" Text="{DynamicResource ServerSettings_StructureMemoryOptimizationsLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_StructureMemoryOptimizationsTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="12" Grid.Column="2" Margin="5,5,5,0" IsChecked="{Binding Crossplay, Mode=TwoWay}" Text="{DynamicResource ServerSettings_CrossplayLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_CrossplayTooltip}">
<Label Grid.Row="23" Grid.Column="0" Margin="20,0,5,0" Grid.ColumnSpan="2" Content="{DynamicResource ServerSettings_CrossArkClusterIdLabel}" ToolTip="{DynamicResource ServerSettings_CrossArkClusterIdTooltip}" VerticalAlignment="Center" MinWidth="200" Foreground="{DynamicResource UnSyncedSetting}"/>
<TextBox Grid.Row="23" Grid.Column="2" Margin="1,1,0,1" VerticalContentAlignment="Center" HorizontalAlignment="Stretch" Text="{Binding CrossArkClusterId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}" ToolTip="{DynamicResource ServerSettings_CrossArkClusterIdTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="23" Grid.Column="3" Margin="5,1,0,0" IsEnabled="{Binding CrossArkClusterId, Converter={StaticResource HasStringValueConverter}, FallbackValue=false}" IsChecked="{Binding ClusterDirOverride, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ClusterDirOverrideLabel}" ToolTip="{DynamicResource ServerSettings_ClusterDirOverrideTooltip}" VerticalAlignment="Center" HorizontalAlignment="Left" UseLayoutRounding="False" Foreground="{DynamicResource UnSyncedSetting}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="5" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding DisableAntiSpeedHackDetection, Mode=TwoWay}" Text="{DynamicResource ServerSettings_DisableAntiSpeedHackLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_DisableAntiSpeedHackTooltip}"/>
<cctl:AnnotatedSlider Grid.Row="6" Grid.Column="2" Margin="20,1,5,1" Grid.ColumnSpan="2" Label="{DynamicResource ServerSettings_AntiSpeedHackBiasLabel}" Value="{Binding SpeedHackBias}" Suffix="{DynamicResource ServerSettings_AntiSpeedHackBiasUnits}" Minimum="0.0" Maximum="1.0" SmallChange="0.1" LargeChange="0.25" TickFrequency="60" LabelRelativeWidth="Auto" SliderRelativeWidth="15*" SuffixRelativeWidth="Auto" ToolTip="{DynamicResource ServerSettings_AntiSpeedHackBiasTooltip}" />
<cctl:CheckBoxAndTextBlock Grid.Row="7" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding ForceDirectX10, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ForceDirectX10Label}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_ForceDirectX10Tooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="8" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding ForceShaderModel4, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ForceShaderModel4Label}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_ForceShaderModel4Tooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="9" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding ForceLowMemory, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ForceLowMemoryLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_ForceLowMemoryTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="10" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding ForceNoManSky, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ForceNoManSkyLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_ForceNoManSkyTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="11" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding UseNoMemoryBias, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseNoMemoryBiasLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseNoMemoryBiasTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="12" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding StasisKeepControllers, Mode=TwoWay}" Text="{DynamicResource ServerSettings_StasisKeepControllersLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_StasisKeepControllersTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="13" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding ServerAllowAnsel, Mode=TwoWay}" Text="{DynamicResource ServerSettings_ServerAllowAnselLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_ServerAllowAnselTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="14" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding StructureMemoryOptimizations, Mode=TwoWay}" Text="{DynamicResource ServerSettings_StructureMemoryOptimizationsLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_StructureMemoryOptimizationsTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="15" Grid.Column="2" Margin="5,5,5,0" Grid.ColumnSpan="2" IsChecked="{Binding UseStructureStasisGrid, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseStructureStasisGridLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseStructureStasisGridTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="16" Grid.Column="2" Margin="5,5,5,0" IsChecked="{Binding Crossplay, Mode=TwoWay}" Text="{DynamicResource ServerSettings_CrossplayLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_CrossplayTooltip}">
<cctl:CheckBoxAndTextBlock.Style>
<Style TargetType="{x:Type cctl:CheckBoxAndTextBlock}">
<Style.Triggers>
@ -1148,7 +1164,7 @@
</Style>
</cctl:CheckBoxAndTextBlock.Style>
</cctl:CheckBoxAndTextBlock>
<cctl:CheckBoxAndTextBlock Grid.Row="12" Grid.Column="3" Margin="5,5,5,0" IsChecked="{Binding EnablePublicIPForEpic, Mode=TwoWay}" Text="{DynamicResource ServerSettings_EnablePublicIPForEpicLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_EnablePublicIPForEpicTooltip}">
<cctl:CheckBoxAndTextBlock Grid.Row="16" Grid.Column="3" Margin="5,5,5,0" IsChecked="{Binding EnablePublicIPForEpic, Mode=TwoWay}" Text="{DynamicResource ServerSettings_EnablePublicIPForEpicLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_EnablePublicIPForEpicTooltip}">
<cctl:CheckBoxAndTextBlock.Style>
<Style TargetType="{x:Type cctl:CheckBoxAndTextBlock}">
<Setter Property="IsEnabled" Value="False"/>
@ -1203,7 +1219,7 @@
</Style>
</cctl:CheckBoxAndTextBlock.Style>
</cctl:CheckBoxAndTextBlock>
<cctl:CheckBoxAndTextBlock Grid.Row="13" Grid.Column="2" Margin="5,5,5,0" IsChecked="{Binding EpicOnly, Mode=TwoWay}" Text="{DynamicResource ServerSettings_EpicOnlyLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_EpicOnlyTooltip}">
<cctl:CheckBoxAndTextBlock Grid.Row="17" Grid.Column="2" Margin="5,5,5,0" IsChecked="{Binding EpicOnly, Mode=TwoWay}" Text="{DynamicResource ServerSettings_EpicOnlyLabel}" VerticalAlignment="Center" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_EpicOnlyTooltip}">
<cctl:CheckBoxAndTextBlock.Style>
<Style TargetType="{x:Type cctl:CheckBoxAndTextBlock}">
<Style.Triggers>
@ -1860,8 +1876,11 @@
<cctl:CheckBoxAndTextBlock Grid.Row="2" Grid.Column="2" Margin="5,5,5,0" IsChecked="{Binding EnableCryoSicknessPVE, Mode=TwoWay}" Text="{DynamicResource ServerSettings_EnableCryoSicknessPVELabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_EnableCryoSicknessPVETooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="3" Grid.Column="0" Margin="5,5,5,0" IsChecked="{Binding DisableFriendlyFirePvP, Mode=TwoWay}" Text="{DynamicResource ServerSettings_DisablePvPFriendlyFireLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_DisablePvPFriendlyFireTooltip}" />
<cctl:CheckBoxAndTextBlock Grid.Row="3" Grid.Column="1" Margin="5,5,5,0" IsChecked="{Binding AllowCaveBuildingPvP, Mode=TwoWay}" Text="{DynamicResource ServerSettings_AllowCaveBuildingPvPLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowCaveBuildingPvPTooltip}" />
<cctl:CheckBoxAndTextBlock Grid.Row="3" Grid.Column="2" Margin="5,5,5,0" IsChecked="{Binding DisableRailgunPVP, Mode=TwoWay}" Text="{DynamicResource ServerSettings_DisableRailgunPVPLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_DisableRailgunPVPTooltip}" />
<cctl:CheckBoxAndTextBlock Grid.Row="4" Grid.Column="0" Margin="5,5,5,0" IsChecked="{Binding EnableExtraStructurePreventionVolumes, Mode=TwoWay}" Text="{DynamicResource ServerSettings_EnableExtraStructurePreventionVolumesLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_EnableExtraStructurePreventionVolumesTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="4" Grid.Column="1" Margin="5,5,5,0" IsChecked="{Binding UseSingleplayerSettings, Mode=TwoWay}" Text="{DynamicResource ServerSettings_UseSingleplayerSettingsLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_UseSingleplayerSettingsTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="5" Grid.Column="0" Margin="5,5,5,0" IsChecked="{Binding DisableLootCrates, Mode=TwoWay}" Text="{DynamicResource ServerSettings_DisableLootCratesLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_DisableLootCratesTooltip}" />
<cctl:CheckBoxAndTextBlock Grid.Row="5" Grid.Column="1" Margin="5,5,5,0" IsChecked="{Binding AllowCrateSpawnsOnTopOfStructures, Mode=TwoWay}" Text="{DynamicResource ServerSettings_AllowCrateSpawnsOnTopOfStructuresLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowCrateSpawnsOnTopOfStructuresTooltip}" />
@ -1957,6 +1976,7 @@
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/>
@ -1964,16 +1984,17 @@
</Grid.ColumnDefinitions>
<cctl:CheckBoxAndTextBlock Grid.Row="0" Grid.Column="0" Margin="5,5,5,0" IsChecked="{Binding NoTransferFromFiltering, Mode=TwoWay}" Text="{DynamicResource ServerSettings_NoTransferFromFilteringLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_NoTransferFromFilteringTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="1" Grid.Column="0" Margin="5,5,5,0" IsChecked="{Binding DisableCustomFoldersInTributeInventories, Mode=TwoWay}" Text="{DynamicResource ServerSettings_DisableCustomFoldersInTributeInventoriesLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_DisableCustomFoldersInTributeInventoriesTooltip}"/>
<cctl:CheckBoxAndTextBlock Grid.Row="1" Grid.Column="0" Margin="5,5,5,5" IsChecked="{Binding OverrideTributeCharacterExpirationSeconds, Mode=TwoWay}" Text="{DynamicResource ServerSettings_OverrideTributeCharacterExpirationSecondsLabel}" HorizontalAlignment="Left" VerticalAlignment="Center" ToolTip="{DynamicResource ServerSettings_OverrideTributeCharacterExpirationSecondsTooltip}"/>
<cctl:AnnotatedSlider Grid.Row="1" Grid.Column="1" Margin="1" IsEnabled="{Binding OverrideTributeCharacterExpirationSeconds}" Value="{Binding TributeCharacterExpirationSeconds, Converter={StaticResource TributeExpirationConverter}}" Suffix="{DynamicResource SliderUnits_Minutes}" Minimum="1" Maximum="20000" SmallChange="1" LargeChange="5" TickFrequency="60" LabelRelativeWidth="Auto" ToolTip="{DynamicResource ServerSettings_OverrideTributeCharacterExpirationSecondsTooltip}" />
<cctl:CheckBoxAndTextBlock Grid.Row="2" Grid.Column="0" Margin="5,5,5,5" IsChecked="{Binding OverrideTributeItemExpirationSeconds, Mode=TwoWay}" Text="{DynamicResource ServerSettings_OverrideTributeItemExpirationSecondsLabel}" HorizontalAlignment="Left" VerticalAlignment="Center" ToolTip="{DynamicResource ServerSettings_OverrideTributeItemExpirationSecondsTooltip}"/>
<cctl:AnnotatedSlider Grid.Row="2" Grid.Column="1" Margin="1" IsEnabled="{Binding OverrideTributeItemExpirationSeconds}" Value="{Binding TributeItemExpirationSeconds, Converter={StaticResource TributeExpirationConverter}}" Suffix="{DynamicResource SliderUnits_Minutes}" Minimum="1" Maximum="20000" SmallChange="1" LargeChange="5" TickFrequency="60" LabelRelativeWidth="Auto" ToolTip="{DynamicResource ServerSettings_OverrideTributeItemExpirationSecondsTooltip}" />
<cctl:CheckBoxAndTextBlock Grid.Row="3" Grid.Column="0" Margin="5,5,5,5" IsChecked="{Binding OverrideTributeDinoExpirationSeconds, Mode=TwoWay}" Text="{DynamicResource ServerSettings_OverrideTributeDinoExpirationSecondsLabel}" HorizontalAlignment="Left" VerticalAlignment="Center" ToolTip="{DynamicResource ServerSettings_OverrideTributeDinoExpirationSecondsTooltip}"/>
<cctl:AnnotatedSlider Grid.Row="3" Grid.Column="1" Margin="1" IsEnabled="{Binding OverrideTributeDinoExpirationSeconds}" Value="{Binding TributeDinoExpirationSeconds, Converter={StaticResource TributeExpirationConverter}}" Suffix="{DynamicResource SliderUnits_Minutes}" Minimum="1" Maximum="20000" SmallChange="1" LargeChange="5" TickFrequency="60" LabelRelativeWidth="Auto" ToolTip="{DynamicResource ServerSettings_OverrideTributeDinoExpirationSecondsTooltip}" />
<cctl:CheckBoxAndTextBlock Grid.Row="2" Grid.Column="0" Margin="5,5,5,5" IsChecked="{Binding OverrideTributeCharacterExpirationSeconds, Mode=TwoWay}" Text="{DynamicResource ServerSettings_OverrideTributeCharacterExpirationSecondsLabel}" HorizontalAlignment="Left" VerticalAlignment="Center" ToolTip="{DynamicResource ServerSettings_OverrideTributeCharacterExpirationSecondsTooltip}"/>
<cctl:AnnotatedSlider Grid.Row="2" Grid.Column="1" Margin="1" IsEnabled="{Binding OverrideTributeCharacterExpirationSeconds}" Value="{Binding TributeCharacterExpirationSeconds, Converter={StaticResource TributeExpirationConverter}}" Suffix="{DynamicResource SliderUnits_Minutes}" Minimum="1" Maximum="20000" SmallChange="1" LargeChange="5" TickFrequency="60" LabelRelativeWidth="Auto" ToolTip="{DynamicResource ServerSettings_OverrideTributeCharacterExpirationSecondsTooltip}" />
<cctl:CheckBoxAndTextBlock Grid.Row="3" Grid.Column="0" Margin="5,5,5,5" IsChecked="{Binding OverrideTributeItemExpirationSeconds, Mode=TwoWay}" Text="{DynamicResource ServerSettings_OverrideTributeItemExpirationSecondsLabel}" HorizontalAlignment="Left" VerticalAlignment="Center" ToolTip="{DynamicResource ServerSettings_OverrideTributeItemExpirationSecondsTooltip}"/>
<cctl:AnnotatedSlider Grid.Row="3" Grid.Column="1" Margin="1" IsEnabled="{Binding OverrideTributeItemExpirationSeconds}" Value="{Binding TributeItemExpirationSeconds, Converter={StaticResource TributeExpirationConverter}}" Suffix="{DynamicResource SliderUnits_Minutes}" Minimum="1" Maximum="20000" SmallChange="1" LargeChange="5" TickFrequency="60" LabelRelativeWidth="Auto" ToolTip="{DynamicResource ServerSettings_OverrideTributeItemExpirationSecondsTooltip}" />
<cctl:CheckBoxAndTextBlock Grid.Row="4" Grid.Column="0" Margin="5,5,5,5" IsChecked="{Binding OverrideTributeDinoExpirationSeconds, Mode=TwoWay}" Text="{DynamicResource ServerSettings_OverrideTributeDinoExpirationSecondsLabel}" HorizontalAlignment="Left" VerticalAlignment="Center" ToolTip="{DynamicResource ServerSettings_OverrideTributeDinoExpirationSecondsTooltip}"/>
<cctl:AnnotatedSlider Grid.Row="4" Grid.Column="1" Margin="1" IsEnabled="{Binding OverrideTributeDinoExpirationSeconds}" Value="{Binding TributeDinoExpirationSeconds, Converter={StaticResource TributeExpirationConverter}}" Suffix="{DynamicResource SliderUnits_Minutes}" Minimum="1" Maximum="20000" SmallChange="1" LargeChange="5" TickFrequency="60" LabelRelativeWidth="Auto" ToolTip="{DynamicResource ServerSettings_OverrideTributeDinoExpirationSecondsTooltip}" />
<cctl:CheckBoxAndTextBlock Grid.Row="4" Grid.Column="0" Margin="5,5,5,5" IsChecked="{Binding OverrideMinimumDinoReuploadInterval, Mode=TwoWay}" Text="{DynamicResource ServerSettings_OverrideMinimumDinoReuploadIntervalLabel}" HorizontalAlignment="Left" VerticalAlignment="Center" ToolTip="{DynamicResource ServerSettings_OverrideMinimumDinoReuploadIntervalTooltip}"/>
<cctl:AnnotatedSlider Grid.Row="4" Grid.Column="1" Margin="1" IsEnabled="{Binding OverrideMinimumDinoReuploadInterval}" Value="{Binding MinimumDinoReuploadInterval, Converter={StaticResource TributeExpirationConverter}}" Suffix="{DynamicResource SliderUnits_Minutes}" Minimum="1" Maximum="20000" SmallChange="1" LargeChange="5" TickFrequency="60" LabelRelativeWidth="Auto" ToolTip="{DynamicResource ServerSettings_OverrideMinimumDinoReuploadIntervalTooltip}" />
<cctl:CheckBoxAndTextBlock Grid.Row="5" Grid.Column="0" Margin="5,5,5,5" IsChecked="{Binding OverrideMinimumDinoReuploadInterval, Mode=TwoWay}" Text="{DynamicResource ServerSettings_OverrideMinimumDinoReuploadIntervalLabel}" HorizontalAlignment="Left" VerticalAlignment="Center" ToolTip="{DynamicResource ServerSettings_OverrideMinimumDinoReuploadIntervalTooltip}"/>
<cctl:AnnotatedSlider Grid.Row="5" Grid.Column="1" Margin="1" IsEnabled="{Binding OverrideMinimumDinoReuploadInterval}" Value="{Binding MinimumDinoReuploadInterval, Converter={StaticResource TributeExpirationConverter}}" Suffix="{DynamicResource SliderUnits_Minutes}" Minimum="1" Maximum="20000" SmallChange="1" LargeChange="5" TickFrequency="60" LabelRelativeWidth="Auto" ToolTip="{DynamicResource ServerSettings_OverrideMinimumDinoReuploadIntervalTooltip}" />
</Grid>
</GroupBox>
@ -2174,6 +2195,7 @@
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
@ -2186,6 +2208,7 @@
<cctl:CheckBoxAndTextBlock Grid.Row="0" Grid.Column="2" Margin="5,5,5,0" IsChecked="{Binding EnableWorldBuffScaling, Mode=TwoWay}" Text="{DynamicResource ServerSettings_EnableWorldBuffScalingLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_EnableWorldBuffScalingTooltip}"/>
<cctl:AnnotatedSlider Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Margin="5,5,5,0" IsEnabled="{Binding EnableWorldBuffScaling}" Label="{DynamicResource ServerSettings_WorldBuffScalingEfficacyLabel}" Value="{Binding WorldBuffScalingEfficacy}" Suffix="{DynamicResource SliderUnits_Multiplier}" Minimum="0" Maximum="5000" SmallChange="1" LargeChange="10" TickFrequency="50" ToolTip="{DynamicResource ServerSettings_WorldBuffScalingEfficacyTooltip}"/>
<cctl:AnnotatedSlider Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" Margin="5,5,5,0" Label="{DynamicResource ServerSettings_AdjustableMutagenSpawnDelayMultiplierLabel}" Value="{Binding AdjustableMutagenSpawnDelayMultiplier}" Suffix="{DynamicResource SliderUnits_Multiplier}" Minimum="0.1" Maximum="10" SmallChange="0.1" LargeChange="1" TickFrequency="1" ToolTip="{DynamicResource ServerSettings_AdjustableMutagenSpawnDelayMultiplierTooltip}"/>
</Grid>
</GroupBox>
@ -2595,6 +2618,7 @@
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
@ -2608,10 +2632,13 @@
<cctl:CheckBoxAndTextBlock Grid.Row="1" Grid.Column="0" Margin="5" Text="{DynamicResource ServerSettings_PreventMateBoostLabel}" IsChecked="{Binding PreventMateBoost, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_PreventMateBoostTooltip}" HorizontalAlignment="Left"/>
<cctl:CheckBoxAndTextBlock Grid.Row="1" Grid.Column="1" Margin="5" Text="{DynamicResource ServerSettings_AllowMultipleAttachedC4Label}" IsChecked="{Binding AllowMultipleAttachedC4, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_AllowMultipleAttachedC4Tooltip}" HorizontalAlignment="Left"/>
<cctl:CheckBoxAndTextBlock Grid.Row="1" Grid.Column="2" Margin="5" Text="{DynamicResource ServerSettings_AllowUnclaimDinosLabel}" IsChecked="{Binding AllowUnclaimDinos, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_AllowUnclaimDinosTooltip}" HorizontalAlignment="Left"/>
<cctl:CheckBoxAndTextBlock Grid.Row="2" Grid.Column="0" Margin="5" Text="{DynamicResource ServerSettings_DisableDinoDecayLabel}" IsChecked="{Binding DisableDinoDecayPvE, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_DisableDinoDecayTooltip}" HorizontalAlignment="Left"/>
<cctl:CheckBoxAndTextBlock Grid.Row="2" Grid.Column="1" Margin="5" Text="{DynamicResource ServerSettings_DisableDinoDecayPvPLabel}" IsChecked="{Binding DisableDinoDecayPvP, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_DisableDinoDecayPvPTooltip}" HorizontalAlignment="Left"/>
<cctl:CheckBoxAndTextBlock Grid.Row="2" Grid.Column="2" Margin="5" Text="{DynamicResource ServerSettings_AutoDestroyDecayedDinosLabel}" IsChecked="{Binding AutoDestroyDecayedDinos, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_AutoDestroyDecayedDinosTooltip}" HorizontalAlignment="Left"/>
<cctl:CheckBoxAndTextBlock Grid.Row="3" Grid.Column="0" Margin="5" Text="{DynamicResource ServerSettings_UseDinoLevelUpAnimationsLabel}" IsChecked="{Binding UseDinoLevelUpAnimations, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_UseDinoLevelUpAnimationsTooltip}" HorizontalAlignment="Left"/>
</Grid>
<cctl:AnnotatedSlider Margin="0,1,22,1" Label="{DynamicResource ServerSettings_DinoDecayPeriodLabel}" Value="{Binding PvEDinoDecayPeriodMultiplier}" Suffix="{DynamicResource SliderUnits_Multiplier}" Minimum="0" Maximum="10" SmallChange="0.1" LargeChange="1" TickFrequency="1" ToolTip="{DynamicResource ServerSettings_DinoDecayPeriodTooltip}"/>
@ -2629,6 +2656,7 @@
<cctl:CheckBoxAndTextBlock Grid.Row="0" Grid.Column="0" Margin="5" Text="{DynamicResource ServerSettings_DisableDinoRidingLabel}" IsChecked="{Binding DisableDinoRiding, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_DisableDinoRidingTooltip}" HorizontalAlignment="Left"/>
<cctl:CheckBoxAndTextBlock Grid.Row="0" Grid.Column="1" Margin="5" Text="{DynamicResource ServerSettings_DisableDinoTamingLabel}" IsChecked="{Binding DisableDinoTaming, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_DisableDinoTamingTooltip}" HorizontalAlignment="Left"/>
<cctl:CheckBoxAndTextBlock Grid.Row="0" Grid.Column="2" Margin="5" Text="{DynamicResource ServerSettings_DisableDinoBreedingLabel}" IsChecked="{Binding DisableDinoBreeding, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_DisableDinoBreedingTooltip}" HorizontalAlignment="Left"/>
</Grid>
<GroupBox Style="{StaticResource GroupBoxStyle}">
@ -2762,6 +2790,34 @@
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
<DataGridTemplateColumn SortMemberPath="CanBreedingSort" MinWidth="50">
<DataGridTemplateColumn.Header>
<TextBlock Text="{DynamicResource ServerSettings_BreedingableColumnLabel}" HorizontalAlignment="Center"/>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</DataGridTemplateColumn.HeaderStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding CanBreeding, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}" HorizontalAlignment="Center" VerticalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<DataTrigger Binding="{Binding HasClassName}" Value="False">
<Setter Property="Visibility" Value="Hidden" />
</DataTrigger>
<DataTrigger Binding="{Binding IsBreedingable}" Value="{x:Static cenum:DinoBreedingable.False}">
<Setter Property="Visibility" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
<DataGridTemplateColumn CanUserSort="True" SortMemberPath="ReplacementNameSort" MinWidth="100">
<DataGridTemplateColumn.Header>
<TextBlock Text="{DynamicResource ServerSettings_ReplacementColumnLabel}" />
@ -3450,6 +3506,7 @@
<Grid Margin="-8,0,2,0">
<StackPanel Grid.Column="0">
<cctl:CheckBoxAndTextBlock Margin="5" Text="{DynamicResource ServerSettings_DisableStructurePlacementCollisionLabel}" IsChecked="{Binding DisableStructurePlacementCollision, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_DisableStructurePlacementCollisionTooltip}" HorizontalAlignment="Left"/>
<cctl:CheckBoxAndTextBlock Margin="5" Text="{DynamicResource ServerSettings_IgnoreLimitMaxStructuresInRangeTypeFlagLabel}" IsChecked="{Binding IgnoreLimitMaxStructuresInRangeTypeFlag, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_IgnoreLimitMaxStructuresInRangeTypeFlagTooltip}" HorizontalAlignment="Left"/>
<cctl:AnnotatedSlider Margin="1" Label="{DynamicResource ServerSettings_StructureResistanceLabel}" Value="{Binding StructureResistanceMultiplier}" Suffix="{DynamicResource SliderUnits_Multiplier}" Minimum="0" Maximum="10" SmallChange="0.1" LargeChange="1" TickFrequency="1" ToolTip="{DynamicResource ServerSettings_StructureResistanceTooltip}"/>
<cctl:AnnotatedSlider Margin="1" Label="{DynamicResource ServerSettings_StructureDamageLabel}" Value="{Binding StructureDamageMultiplier}" Suffix="{DynamicResource SliderUnits_Multiplier}" Minimum="0" Maximum="10" SmallChange="0.1" LargeChange="1" TickFrequency="1" ToolTip="{DynamicResource ServerSettings_StructureDamageTooltip}"/>
@ -3522,6 +3579,7 @@
</GroupBox>
<cctl:CheckBoxAndTextBlock Margin="5" IsChecked="{Binding AllowIntegratedSPlusStructures, Mode=TwoWay}" Text="{DynamicResource ServerSettings_AllowIntegratedSPlusStructuresLabel}" ToolTip="{DynamicResource ServerSettings_AllowIntegratedSPlusStructuresTooltip}" HorizontalAlignment="Left"/>
<cctl:CheckBoxAndTextBlock Margin="5" IsChecked="{Binding IgnoreStructuresPreventionVolumes, Mode=TwoWay}" Text="{DynamicResource ServerSettings_IgnoreStructuresPreventionVolumesLabel}" ToolTip="{DynamicResource ServerSettings_IgnoreStructuresPreventionVolumesTooltip}" HorizontalAlignment="Left"/>
<GroupBox Header="{DynamicResource Mod_Genesis}" Style="{StaticResource GroupBoxStyle}">
<Grid>
@ -6093,6 +6151,142 @@
</Grid>
</Expander>
<Expander Name="SectionExcludeItemIndicesOverrides" IsExpanded="{Binding Config.SectionExcludeItemIndicesOverridesIsExpanded, ElementName=SettingsControl, FallbackValue=True, Mode=TwoWay}" Visibility="{Binding Config.SectionExcludeItemIndicesOverridesEnabled, ElementName=SettingsControl, Converter={StaticResource BooleanToVisibilityConverter}}">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{DynamicResource ServerSettings_ExcludeItemIndicesOverridesLabel}" Style="{StaticResource ExpanderHeaderTextStyle}"/>
<Button Margin="20,0,0,0" ToolTip="{DynamicResource ServerSettings_ResetSectionTooltip}" Style="{StaticResource ButtonStyle1}"
IsEnabled="{Binding ElementName=SectionExcludeItemIndicesOverrides, Path=IsExpanded}"
Command="{Binding ResetActionCommand, ElementName=SettingsControl}" CommandParameter="{x:Static enum:ServerSettingsResetAction.ExcludeItemIndicesOverridesSection}">
<Image Source="{com:Icon Path=/Ark Server Manager;component/Art/Refresh.ico,Size=32}"/>
</Button>
</StackPanel>
</Expander.Header>
<Expander.Style>
<Style BasedOn="{StaticResource ExpanderStyle1}" TargetType="{x:Type Expander}">
<Setter Property="Template" Value="{StaticResource ExpanderTemplateSE}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=EnableSOTFCheckbox, Path=IsChecked}" Value="True">
<Setter Property="Template" Value="{StaticResource ExpanderTemplateSotF}"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=EnablePGMCheckbox, Path=IsChecked}" Value="True">
<Setter Property="Template" Value="{StaticResource ExpanderTemplatePGM}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Expander.Style>
<Grid Margin="-8,0,2,0">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition Height="{Binding Config.ExcludeItemIndicesOverrideGridHeight, ElementName=SettingsControl, FallbackValue=400, Mode=TwoWay}" MinHeight="200"/>
<RowDefinition Height="Auto"/>
<!--Splitter Row-->
<RowDefinition Height="1" MinHeight="1"/>
<!--Empty Row for Last Splitter-->
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" Margin="5" Text="{DynamicResource ServerSettings_ExcludeItemIndicesOverrides_DisableLabel}" TextWrapping="Wrap" VerticalAlignment="Center" FontWeight="Bold" Foreground="DarkCyan"/>
<TextBlock Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Margin="5" Text="{DynamicResource ServerSettings_ExcludeItemIndicesOverrides_WarningLabel}" TextWrapping="Wrap" VerticalAlignment="Center" FontWeight="Bold"/>
<GroupBox Grid.Row="2" Grid.Column="0" HorizontalAlignment="Stretch" Style="{StaticResource GroupBoxStyle}">
<GroupBox.Header>
<StackPanel Orientation="Horizontal">
<Label Content="{DynamicResource ServerSettings_ExcludeItemIndicesOverrides_ItemsLabel}"/>
<Button Width="22" Height="22" Click="AddExcludeItemIndicesOverride_Click" Margin="20,0,0,0" ToolTip="{DynamicResource ServerSettings_ExcludeItemIndicesOverrides_AddItemTooltip}" Style="{StaticResource ButtonStyle1}">
<Image Source="{com:Icon Path=/Ark Server Manager;component/Art/Add.ico,Size=32}"/>
</Button>
<Button Width="22" Height="22" Click="PasteExcludeItemIndicesOverride_Click" Margin="5,0,0,0" ToolTip="{DynamicResource ServerSettings_ExcludeItemIndicesOverrides_PasteItemsTooltip}" Style="{StaticResource ButtonStyle1}">
<Image Source="{com:Icon Path=/Ark Server Manager;component/Art/Paste.ico,Size=32}"/>
</Button>
<Button Width="22" Height="22" Click="ClearExcludeItemIndicesOverrides_Click" Margin="10,0,0,0" ToolTip="{DynamicResource ServerSettings_ExcludeItemIndicesOverrides_ClearItemsTooltip}" Style="{StaticResource ButtonStyle1}">
<Image Source="{com:Icon Path=/Ark Server Manager;component/Art/Delete.ico,Size=32}"/>
</Button>
<Button Width="22" Height="22" Click="SaveExcludeItemIndicesOverride_Click" Margin="10,0,0,0" ToolTip="{DynamicResource ServerSettings_ExcludeItemIndicesOverrides_SaveItemsTooltip}" Style="{StaticResource ButtonStyle1}">
<Image Source="{com:Icon Path=/Ark Server Manager;component/Art/Save.ico,Size=32}"/>
</Button>
</StackPanel>
</GroupBox.Header>
<DataGrid Name="ExcludeItemIndicesOverrideGrid" ItemsSource="{Binding ExcludeItemIndices}" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserSortColumns="true" SelectionMode="Single" CanUserResizeRows="False" RowHeaderWidth="25" SourceUpdated="ExcludeItemIndicesOverrideGrids_SourceUpdated">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridRow}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="{x:Static SystemColors.HighlightColor}"/>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="{x:Static SystemColors.HighlightTextColor}"/>
</Style.Resources>
</Style>
</DataGrid.Resources>
<DataGrid.HorizontalGridLinesBrush>
<SolidColorBrush Color="#FFB4B4B4"/>
</DataGrid.HorizontalGridLinesBrush>
<DataGrid.VerticalGridLinesBrush>
<SolidColorBrush Color="#FFB4B4B4"/>
</DataGrid.VerticalGridLinesBrush>
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<Image HorizontalAlignment="Center" VerticalAlignment="Center" Width="16" Height="16">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<DataTrigger Binding="{Binding DataContext.ValidStatus, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="Y">
<Setter Property="Source" Value="{com:Icon Path=/Ark Server Manager;component/Art/StatusGood.ico,Size=32}"/>
</DataTrigger>
<DataTrigger Binding="{Binding DataContext.ValidStatus, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="N">
<Setter Property="Source" Value="{com:Icon Path=/Ark Server Manager;component/Art/StatusBad.ico,Size=32}"/>
</DataTrigger>
<DataTrigger Binding="{Binding DataContext.ValidStatus, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="W">
<Setter Property="Source" Value="{com:Icon Path=/Ark Server Manager;component/Art/StatusWarning.ico,Size=32}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
<DataGrid.Columns>
<DataGridTextColumn Width="2*" MinWidth="50" Binding="{Binding ItemId, Mode=TwoWay, Converter={cc:Int64RangeValueConverter 0, 9223372036854775807}, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}" >
<DataGridTextColumn.Header>
<TextBlock Text="{DynamicResource ServerSettings_ExcludeItemIndicesOverrides_ItemClassColumnLabel}" ToolTip="{DynamicResource ServerSettings_ExcludeItemIndicesOverrides_ItemClassColumnTooltip}" TextWrapping="Wrap"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTemplateColumn Width="30" CanUserReorder="False" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Width="22" Height="22" Margin="0" IsTabStop="False" HorizontalAlignment="Center" VerticalAlignment="Center" Click="RemoveExcludeItemIndicesOverrideItem_Click" ToolTip="{DynamicResource ServerSettings_ExcludeItemIndicesOverrides_RemoveItemTooltip}">
<Image Source="{com:Icon Path=/Ark Server Manager;component/Art/Delete.ico,Size=32}"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="30" CanUserReorder="False" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Width="22" Height="22" Margin="0" IsTabStop="False" HorizontalAlignment="Center" VerticalAlignment="Center" Click="SaveExcludeItemIndicesOverrideItem_Click" ToolTip="{DynamicResource ServerSettings_ExcludeItemIndicesOverrides_SaveItemsTooltip}">
<Image Source="{com:Icon Path=/Ark Server Manager;component/Art/Save.ico,Size=32}"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
<GridSplitter Grid.Row="3" Grid.Column="0" Height="5" ShowsPreview="True" HorizontalAlignment="Stretch" VerticalAlignment="Center" Opacity="0"/>
</Grid>
</Expander>
<Expander Name="SectionPreventTransferOverrides" IsExpanded="{Binding Config.SectionPreventTransferOverridesIsExpanded, ElementName=SettingsControl, FallbackValue=True, Mode=TwoWay}" Visibility="{Binding Config.SectionPreventTransferOverridesEnabled, ElementName=SettingsControl, Converter={StaticResource BooleanToVisibilityConverter}}">
<Expander.Header>
<StackPanel Orientation="Horizontal">

View file

@ -20,6 +20,7 @@ using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
@ -53,6 +54,7 @@ namespace ServerManagerTool
public static readonly DependencyProperty BaseEventsProperty = DependencyProperty.Register(nameof(BaseEvents), typeof(ComboBoxItemList), typeof(ServerSettingsControl), new PropertyMetadata(null));
public static readonly DependencyProperty BetaVersionProperty = DependencyProperty.Register(nameof(BetaVersion), typeof(bool), typeof(ServerSettingsControl), new PropertyMetadata(false));
public static readonly DependencyProperty ConfigProperty = DependencyProperty.Register(nameof(Config), typeof(Config), typeof(ServerSettingsControl));
public static readonly DependencyProperty CultureProperty = DependencyProperty.Register(nameof(Culture), typeof(ComboBoxItemList), typeof(ServerSettingsControl), new PropertyMetadata(null));
public static readonly DependencyProperty IsAdministratorProperty = DependencyProperty.Register(nameof(IsAdministrator), typeof(bool), typeof(ServerSettingsControl), new PropertyMetadata(false));
public static readonly DependencyProperty NetworkInterfacesProperty = DependencyProperty.Register(nameof(NetworkInterfaces), typeof(List<NetworkAdapterEntry>), typeof(ServerSettingsControl), new PropertyMetadata(new List<NetworkAdapterEntry>()));
public static readonly DependencyProperty RuntimeProperty = DependencyProperty.Register(nameof(Runtime), typeof(ServerRuntime), typeof(ServerSettingsControl));
@ -159,6 +161,12 @@ namespace ServerManagerTool
set { SetValue(ConfigProperty, value); }
}
public ComboBoxItemList Culture
{
get { return (ComboBoxItemList)GetValue(CultureProperty); }
set { SetValue(CultureProperty, value); }
}
public bool IsAdministrator
{
get { return (bool)GetValue(IsAdministratorProperty); }
@ -364,6 +372,7 @@ namespace ServerManagerTool
this.RefreshBaseSupplyCrateList();
this.RefreshBaseGameMapsList();
this.RefreshBaseTotalConversionsList();
this.RefreshCultureList();
this.RefreshBaseBranchesList();
this.RefreshBaseEventsList();
this.RefreshProcessPrioritiesList();
@ -374,6 +383,7 @@ namespace ServerManagerTool
this.Settings.ConfigOverrideItemCraftingCosts.Update();
this.Settings.ConfigOverrideItemMaxQuantity.Update();
this.Settings.ConfigOverrideSupplyCrateItems.Update();
this.Settings.ExcludeItemIndices.Update();
this.Settings.NPCSpawnSettings.Update();
this.Settings.PreventTransferForClassNames.Update();
}
@ -398,6 +408,7 @@ namespace ServerManagerTool
ssc.RefreshBaseSupplyCrateList();
ssc.RefreshBaseGameMapsList();
ssc.RefreshBaseTotalConversionsList();
ssc.RefreshCultureList();
ssc.RefreshBaseBranchesList();
ssc.RefreshBaseEventsList();
ssc.RefreshProcessPrioritiesList();
@ -1385,6 +1396,11 @@ namespace ServerManagerTool
Settings.ConfigOverrideSupplyCrateItems.Update();
}
private void ExcludeItemIndicesOverrideGrids_SourceUpdated(object sender, DataTransferEventArgs e)
{
Settings.ExcludeItemIndices.Update();
}
private void CraftingOverrideGrids_SourceUpdated(object sender, DataTransferEventArgs e)
{
Settings.ConfigOverrideItemCraftingCosts.Update();
@ -1454,6 +1470,11 @@ namespace ServerManagerTool
Server.Profile.PreventDinoTameClassNames.AddRange(preventDinoTameClassNames);
Server.Profile.PreventDinoTameClassNames.IsEnabled |= preventDinoTameClassNames.IsEnabled;
var preventBreedingForClassNames = new StringIniValueList(nameof(Server.Profile.PreventBreedingForClassNames), null);
preventBreedingForClassNames.FromIniValues(section.KeysToStringEnumerable().Where(s => s.StartsWith($"{preventBreedingForClassNames.IniCollectionKey}=")));
Server.Profile.PreventBreedingForClassNames.AddRange(preventBreedingForClassNames);
Server.Profile.PreventBreedingForClassNames.IsEnabled |= preventBreedingForClassNames.IsEnabled;
var npcReplacements = new AggregateIniValueList<NPCReplacement>(nameof(Server.Profile.NPCReplacements), null);
npcReplacements.FromIniValues(section.KeysToStringEnumerable().Where(s => s.StartsWith($"{npcReplacements.IniCollectionKey}=")));
Server.Profile.NPCReplacements.AddRange(npcReplacements);
@ -1480,7 +1501,7 @@ namespace ServerManagerTool
Server.Profile.DinoClassResistanceMultipliers.IsEnabled |= dinoClassResistanceMultipliers.IsEnabled;
}
Server.Profile.DinoSettings = new DinoSettingsList(Server.Profile.DinoSpawnWeightMultipliers, Server.Profile.PreventDinoTameClassNames, Server.Profile.NPCReplacements, Server.Profile.TamedDinoClassDamageMultipliers, Server.Profile.TamedDinoClassResistanceMultipliers, Server.Profile.DinoClassDamageMultipliers, Server.Profile.DinoClassResistanceMultipliers);
Server.Profile.DinoSettings = new DinoSettingsList(Server.Profile.DinoSpawnWeightMultipliers, Server.Profile.PreventDinoTameClassNames, Server.Profile.PreventBreedingForClassNames, Server.Profile.NPCReplacements, Server.Profile.TamedDinoClassDamageMultipliers, Server.Profile.TamedDinoClassResistanceMultipliers, Server.Profile.DinoClassDamageMultipliers, Server.Profile.DinoClassResistanceMultipliers);
Server.Profile.DinoSettings.RenderToView();
RefreshBaseDinoList();
@ -1506,6 +1527,7 @@ namespace ServerManagerTool
var iniValues = new List<string>();
iniValues.AddRange(Settings.DinoSpawnWeightMultipliers.ToIniValues());
iniValues.AddRange(Settings.PreventDinoTameClassNames.ToIniValues());
iniValues.AddRange(Settings.PreventBreedingForClassNames.ToIniValues());
iniValues.AddRange(Settings.NPCReplacements.ToIniValues());
iniValues.AddRange(Settings.DinoClassDamageMultipliers.ToIniValues());
iniValues.AddRange(Settings.DinoClassResistanceMultipliers.ToIniValues());
@ -3349,6 +3371,109 @@ namespace ServerManagerTool
}
#endregion
#region Exclude Item Indices Overrides
private void AddExcludeItemIndicesOverride_Click(object sender, RoutedEventArgs e)
{
Settings.ExcludeItemIndices.Add(new ExcludeItemIndicesOverride());
Settings.ExcludeItemIndices.Update();
}
private void ClearExcludeItemIndicesOverrides_Click(object sender, RoutedEventArgs e)
{
if (MessageBox.Show(_globalizer.GetResourceString("ServerSettings_ClearLabel"), _globalizer.GetResourceString("ServerSettings_ClearTitle"), MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes)
return;
Settings.ExcludeItemIndices.Clear();
Settings.ExcludeItemIndices.Update();
}
private void PasteExcludeItemIndicesOverride_Click(object sender, RoutedEventArgs e)
{
var window = new CustomConfigDataWindow();
window.Owner = Window.GetWindow(this);
window.Closed += Window_Closed;
var result = window.ShowDialog();
if (!result.HasValue || !result.Value)
return;
// read the pasted data into an ini file.
var iniFile = IniFileUtils.ReadString(window.ConfigData.Replace(" ", ""));
Server.Profile.ExcludeItemIndices.RenderToModel();
// cycle through the sections, adding them to the list. Will bypass any sections that are named as per the ARK default sections.
foreach (var section in iniFile.Sections.Where(s => s.SectionName != null && !SystemIniFile.IniSectionNames.ContainsValue(s.SectionName)))
{
var excludeItemIndices = new AggregateIniValueList<ExcludeItemIndicesOverride>(nameof(Server.Profile.ExcludeItemIndices), null);
excludeItemIndices.FromIniValues(section.KeysToStringEnumerable().Where(s => s.StartsWith($"{excludeItemIndices.IniCollectionKey}=")));
Server.Profile.ExcludeItemIndices.AddRange(excludeItemIndices);
Server.Profile.ExcludeItemIndices.IsEnabled |= excludeItemIndices.IsEnabled;
}
var errors = Server.Profile.ExcludeItemIndices.RenderToView();
RefreshBaseDinoList();
if (errors.Any())
{
var error = $"The following errors have been found:\r\n\r\n{string.Join("\r\n", errors)}";
var window2 = new CommandLineWindow(error);
window2.OutputTextWrapping = TextWrapping.NoWrap;
window2.Height = 500;
window2.Title = "Import Errors";
window2.Owner = Window.GetWindow(this);
window2.ShowDialog();
}
}
private void RemoveExcludeItemIndicesOverrideItem_Click(object sender, RoutedEventArgs e)
{
if (MessageBox.Show(_globalizer.GetResourceString("ServerSettings_DeleteLabel"), _globalizer.GetResourceString("ServerSettings_DeleteTitle"), MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes)
return;
var item = ((ExcludeItemIndicesOverride)((Button)e.Source).DataContext);
Settings.ExcludeItemIndices.Remove(item);
Settings.ExcludeItemIndices.Update();
}
private void SaveExcludeItemIndicesOverride_Click(object sender, RoutedEventArgs e)
{
Settings.ExcludeItemIndices.RenderToModel();
var iniValues = new List<string>();
iniValues.AddRange(Settings.ExcludeItemIndices.ToIniValues());
var iniValue = string.Join("\r\n", iniValues);
var window = new CommandLineWindow(iniValue);
window.OutputTextWrapping = TextWrapping.NoWrap;
window.Height = 500;
window.Title = _globalizer.GetResourceString("ServerSettings_ExcludeItemIndicesOverrides_SaveTitle");
window.Owner = Window.GetWindow(this);
window.ShowDialog();
}
private void SaveExcludeItemIndicesOverrideItem_Click(object sender, RoutedEventArgs e)
{
var item = ((ExcludeItemIndicesOverride)((Button)e.Source).DataContext);
if (item == null)
return;
Settings.ExcludeItemIndices.RenderToModel();
var iniName = Settings.ExcludeItemIndices.IniCollectionKey;
var iniValue = $"{iniName}={item.ToINIValue()}";
var window = new CommandLineWindow(iniValue);
window.OutputTextWrapping = TextWrapping.Wrap;
window.Height = 500;
window.Title = _globalizer.GetResourceString("ServerSettings_ExcludeItemIndicesOverrides_SaveTitle");
window.Owner = Window.GetWindow(this);
window.ShowDialog();
}
#endregion
#region Stack Size Overrides
private void AddStackSizeOverride_Click(object sender, RoutedEventArgs e)
{
@ -3564,6 +3689,24 @@ namespace ServerManagerTool
GlobalizedApplication.Instance.GlobalizationManager.ResourceDictionaryChangedEvent -= ResourceDictionaryChangedEvent;
}
public void RefreshCultureList()
{
var newList = new ComboBoxItemList();
string[] culture = { "ca", "cs", "da", "de", "en", "es", "eu", "fi", "fr", "hu", "it", "ja", "ka", "ko", "nl", "pl", "pt_BR", "ru", "sv", "th", "tr", "zh", "zh-Hans-CN", "zh-TW" };
foreach (var lang in culture)
{
newList.Add(new Common.Model.ComboBoxItem
{
DisplayMember = lang,
ValueMember = lang,
});
}
this.Culture = newList;
this.CultureComboBox.SelectedValue = this.Settings.Culture;
}
public void RefreshBaseDinoModList()
{
var selectedValue = SelectedModDino;
@ -4138,6 +4281,7 @@ namespace ServerManagerTool
this.Settings.ResetAdministrationSection();
RefreshBaseGameMapsList();
RefreshBaseTotalConversionsList();
RefreshCultureList();
RefreshBaseBranchesList();
RefreshBaseEventsList();
RefreshProcessPrioritiesList();
@ -4213,6 +4357,11 @@ namespace ServerManagerTool
RefreshBasePrimalItemList();
break;
case ServerSettingsResetAction.ExcludeItemIndicesOverridesSection:
this.Settings.ResetExcludeItemIndicesOverridesSection();
RefreshBasePrimalItemList();
break;
case ServerSettingsResetAction.StackSizeOverridesSection:
this.Settings.ResetStackSizeOverridesSection();
RefreshBasePrimalItemList();
@ -4364,6 +4513,7 @@ namespace ServerManagerTool
RefreshBaseSupplyCrateList();
RefreshBaseGameMapsList();
RefreshBaseTotalConversionsList();
RefreshCultureList();
RefreshBaseBranchesList();
RefreshBaseEventsList();
RefreshProcessPrioritiesList();

View file

@ -238,6 +238,8 @@ namespace ServerManagerTool
SyncSections.Add(new SyncSection() { Selected = false, Category = ServerProfileCategory.MapSpawnerOverrides, SectionName = _globalizer.GetResourceString("ServerSettings_MapSpawnerOverridesLabel") });
if (Config.Default.SectionSupplyCrateOverridesEnabled)
SyncSections.Add(new SyncSection() { Selected = false, Category = ServerProfileCategory.SupplyCrateOverrides, SectionName = _globalizer.GetResourceString("ServerSettings_SupplyCrateOverridesLabel") });
if (Config.Default.SectionExcludeItemIndicesOverridesEnabled)
SyncSections.Add(new SyncSection() { Selected = false, Category = ServerProfileCategory.ExcludeItemIndicesOverrides, SectionName = _globalizer.GetResourceString("ServerSettings_ExcludeItemIndicesOverridesLabel") });
if (Config.Default.SectionStackSizeOverridesEnabled)
SyncSections.Add(new SyncSection() { Selected = false, Category = ServerProfileCategory.StackSizeOverrides, SectionName = _globalizer.GetResourceString("ServerSettings_StackSizeOverridesLabel") });
if (Config.Default.SectionPreventTransferOverridesEnabled)

View file

@ -0,0 +1,62 @@
using System;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Markup;
namespace ServerManagerTool.Common.Converters
{
public class Int64RangeValueConverter : MarkupExtension, IValueConverter
{
public const string DEFAULT_CULTURE_CODE = "en-US";
protected Int64 MinValue { get; set; }
protected Int64 MaxValue { get; set; }
public Int64RangeValueConverter()
{
MinValue = Int64.MinValue;
MaxValue = Int64.MaxValue;
}
public Int64RangeValueConverter(Int64 minValue)
{
MinValue = minValue;
MaxValue = Int64.MaxValue;
}
public Int64RangeValueConverter(Int64 minValue, Int64 maxValue)
{
MinValue = minValue;
MaxValue = maxValue;
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var scaledValue = System.Convert.ToInt64(value);
var sliderValue = scaledValue;
sliderValue = Math.Max(MinValue, sliderValue);
sliderValue = Math.Min(MaxValue, sliderValue);
return sliderValue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is null || value.ToString() == string.Empty)
return default;
if (!Int64.TryParse(value.ToString(), NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, CultureInfo.GetCultureInfo(DEFAULT_CULTURE_CODE), out Int64 sliderValue))
return default;
sliderValue = Math.Max(MinValue, sliderValue);
sliderValue = Math.Min(MaxValue, sliderValue);
var scaledValue = sliderValue;
return scaledValue;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
}