using System.Text.Json.Serialization; using Core.Models.Eft.Common; using Core.Models.Enums; using Core.Utils.Json.Converters; namespace Core.Models.Spt.Config; public class SeasonalEventConfig : BaseConfig { [JsonPropertyName("kind")] public string Kind { get; set; } = "spt-seasonalevents"; [JsonPropertyName("enableSeasonalEventDetection")] public bool EnableSeasonalEventDetection { get; set; } /** event / botType / equipSlot / itemid */ [JsonPropertyName("eventGear")] public Dictionary>>> EventGear { get; set; } /** event / bot type / equipSlot / itemid */ [JsonPropertyName("eventLoot")] public Dictionary>>> EventLoot { get; set; } [JsonPropertyName("events")] public List Events { get; set; } [JsonPropertyName("eventBotMapping")] public Dictionary EventBotMapping { get; set; } [JsonPropertyName("eventBossSpawns")] public Dictionary>> EventBossSpawns { get; set; } [JsonPropertyName("eventWaves")] public Dictionary>> EventWaves { get; set; } [JsonPropertyName("gifterSettings")] public List GifterSettings { get; set; } /** key = event, second key = map name */ [JsonPropertyName("hostilitySettingsForEvent")] public Dictionary>> HostilitySettingsForEvent { get; set; } /** Ids of containers on locations that only have christmas loot */ [JsonPropertyName("christmasContainerIds")] public List ChristmasContainerIds { get; set; } /** Season - botType - location (body/feet/hands/head) */ [JsonPropertyName("botAppearanceChanges")] public Dictionary>>> BotAppearanceChanges { get; set; } } public class SeasonalEvent { [JsonPropertyName("enabled")] public bool Enabled { get; set; } [JsonPropertyName("name")] public string Name { get; set; } [JsonPropertyName("type")] public SeasonalEventType Type { get; set; } [JsonPropertyName("startDay")] [JsonConverter(typeof(StringToNumberFactoryConverter))] public int StartDay { get; set; } [JsonPropertyName("startMonth")] [JsonConverter(typeof(StringToNumberFactoryConverter))] public int StartMonth { get; set; } [JsonPropertyName("endDay")] [JsonConverter(typeof(StringToNumberFactoryConverter))] public int EndDay { get; set; } [JsonPropertyName("endMonth")] [JsonConverter(typeof(StringToNumberFactoryConverter))] public int EndMonth { get; set; } [JsonPropertyName("settings")] public Dictionary Settings { get; set; } // TODO: Type was Record [JsonPropertyName("setting")] public Dictionary SettingsDoNOTUse { set => Settings = value; } } public class SeasonalEventSettings { [JsonPropertyName("enabled")] public bool Enabled { get; set; } } public class ZombieSettings : SeasonalEventSettings { [JsonPropertyName("mapInfectionAmount")] public Dictionary MapInfectionAmount { get; set; } [JsonPropertyName("disableBosses")] public List DisableBosses { get; set; } [JsonPropertyName("disableWaves")] public List DisableWaves { get; set; } } public class GifterSetting { [JsonPropertyName("map")] public string Map { get; set; } [JsonPropertyName("zones")] public string Zones { get; set; } [JsonPropertyName("spawnChance")] public int SpawnChance { get; set; } }