using System.Collections.ObjectModel; namespace GsConfigTool.Models; public class ArkServerSettings { // ── Session ────────────────────────────────────────────────────────── public string ServerName { get; set; } = "My ARK Server"; public string ServerPassword { get; set; } = ""; public string AdminPassword { get; set; } = "adminpassword"; public int MaxPlayers { get; set; } = 70; public int QueryPort { get; set; } = 27015; public int GamePort { get; set; } = 7777; public string Map { get; set; } = "TheIsland"; public string ActiveMods { get; set; } = ""; // ── Server Mode ─────────────────────────────────────────────────────── public bool PvE { get; set; } = false; public bool ServerHardcore { get; set; } = false; public bool CrosshairEnabled { get; set; } = true; public bool MapPlayerLocation { get; set; } = true; public bool EnableBattleEye { get; set; } = true; public bool AllowThirdPersonPlayer { get; set; } = true; public bool ShowMapPlayerLocation { get; set; } = true; public bool PreventOfflinePvP { get; set; } = false; public bool PreventTribeAlliances { get; set; } = false; public float KickIdlePlayersPeriod { get; set; } = 3600.0f; // ── XP & Rates ──────────────────────────────────────────────────────── public float XPMultiplier { get; set; } = 1.0f; public float TamingSpeedMultiplier { get; set; } = 1.0f; public float HarvestAmountMultiplier { get; set; } = 1.0f; public float HarvestHealthMultiplier { get; set; } = 1.0f; public float ResourcesRespawnPeriodMultiplier { get; set; } = 1.0f; public float DayCycleSpeedScale { get; set; } = 1.0f; public float DayTimeSpeedScale { get; set; } = 1.0f; public float NightTimeSpeedScale { get; set; } = 1.0f; public float DifficultyOffset { get; set; } = 0.2f; public float OverrideOfficialDifficulty { get; set; } = 5.0f; // ── Breeding ────────────────────────────────────────────────────────── public float MatingIntervalMultiplier { get; set; } = 1.0f; public float MatingSpeedMultiplier { get; set; } = 1.0f; public float EggHatchSpeedMultiplier { get; set; } = 1.0f; public float BabyMatureSpeedMultiplier { get; set; } = 1.0f; public float BabyFoodConsumptionSpeedMultiplier { get; set; } = 1.0f; public float BabyCuddleIntervalMultiplier { get; set; } = 1.0f; public float BabyImprintAmountMultiplier { get; set; } = 1.0f; public float BabyImprintingStatScaleMultiplier { get; set; } = 1.0f; public float LayEggIntervalMultiplier { get; set; } = 1.0f; // ── Player Stats ────────────────────────────────────────────────────── public float PlayerDamageMultiplier { get; set; } = 1.0f; public float PlayerResistanceMultiplier { get; set; } = 1.0f; public float PlayerWaterDrainMultiplier { get; set; } = 1.0f; public float PlayerFoodDrainMultiplier { get; set; } = 1.0f; public float PlayerStaminaDrainMultiplier { get; set; } = 1.0f; public float PlayerHealthRecoveryMultiplier { get; set; } = 1.0f; public float PlayerHarvestingDamageMultiplier { get; set; } = 1.0f; public float PlayerTurretDamageMultiplier { get; set; } = 1.0f; public int OverrideMaxExperiencePointsPlayer { get; set; } = 0; // ── Dino Stats ──────────────────────────────────────────────────────── public float DinoDamageMultiplier { get; set; } = 1.0f; public float DinoResistanceMultiplier { get; set; } = 1.0f; public float TamedDinoDamageMultiplier { get; set; } = 1.0f; public float TamedDinoResistanceMultiplier { get; set; } = 1.0f; public float DinoHarvestingDamageMultiplier { get; set; } = 1.0f; public float DinoTurretDamageMultiplier { get; set; } = 1.0f; public int MaxTamedDinos { get; set; } = 5000; public int MaxPersonalTamedDinos { get; set; } = 500; public int OverrideMaxExperiencePointsDino { get; set; } = 0; // ── Structures ──────────────────────────────────────────────────────── public bool DisableStructureDecayPvE { get; set; } = false; public float StructureResistanceMultiplier { get; set; } = 1.0f; public float StructureDamageRepairCooldown { get; set; } = 180.0f; public float PerPlatformMaxStructuresMultiplier { get; set; } = 1.0f; public bool AllowFlyerCarryPvE { get; set; } = false; // ── Tribe ───────────────────────────────────────────────────────────── public int MaxNumberOfPlayersInTribe { get; set; } = 0; public int MaxAlliancesPerTribe { get; set; } = 10; public int MaxTribesPerAlliance { get; set; } = 10; // ── Items & World ───────────────────────────────────────────────────── public float GlobalSpoilingTimeMultiplier { get; set; } = 1.0f; public float GlobalItemDecompositionTimeMultiplier { get; set; } = 1.0f; public float GlobalCorpseDecompositionTimeMultiplier { get; set; } = 1.0f; public float CropGrowthSpeedMultiplier { get; set; } = 1.0f; public float FuelConsumptionIntervalMultiplier { get; set; } = 1.0f; public float CustomRecipeEffectivenessMultiplier { get; set; } = 1.0f; public float CustomRecipeSkillMultiplier { get; set; } = 1.0f; public float PassiveTameFoodConsumptionMultiplier { get; set; } = 1.0f; // ── Loot / Engrams / Creatures ──────────────────────────────────────── public List LootDropOverrides { get; set; } = new(); public List EngramOverrides { get; set; } = new(); public List CreatureMultipliers { get; set; } = new(); public bool UnlockAllEngrams { get; set; } = false; // ── PerLevelStats ───────────────────────────────────────────────────── public PerLevelStats PerLevelStats { get; set; } = new(); public bool UseCustomPerLevelStats { get; set; } = false; // ── Stack Sizes ─────────────────────────────────────────────────────── public List StackSizeOverrides { get; set; } = new(); // ── Harvest ─────────────────────────────────────────────────────────── public List HarvestMultipliers { get; set; } = new(); // ── Spawn Overrides ─────────────────────────────────────────────────── public List SpawnOverrides { get; set; } = new(); // ── Cluster ─────────────────────────────────────────────────────────── public ArkClusterSettings Cluster { get; set; } = new(); // ── RCON ────────────────────────────────────────────────────────────── public ArkRCONSettings RCON { get; set; } = new(); }