more models
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Core.Models.Common;
|
||||
|
||||
public class MinMax
|
||||
{
|
||||
[JsonPropertyName("max")]
|
||||
public double Max { get; set; }
|
||||
|
||||
[JsonPropertyName("min")]
|
||||
public double Min { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Core.Models.Eft.Common.Tables;
|
||||
|
||||
namespace Core.Models.Eft.Common;
|
||||
|
||||
public class Location
|
||||
{
|
||||
/** Map meta-data */
|
||||
[JsonPropertyName("base")]
|
||||
public LocationBase Base { get; set; }
|
||||
|
||||
/** Loose loot positions and item weights */
|
||||
[JsonPropertyName("looseLoot")]
|
||||
public LooseLoot LooseLoot { get; set; }
|
||||
|
||||
/** Static loot item weights */
|
||||
[JsonPropertyName("staticLoot")]
|
||||
public Dictionary<string, StaticLootDetails> StaticLoot { get; set; }
|
||||
|
||||
/** Static container positions and item weights */
|
||||
[JsonPropertyName("staticContainers")]
|
||||
public StaticContainerDetails StaticContainers { get; set; }
|
||||
|
||||
[JsonPropertyName("staticAmmo")]
|
||||
public Dictionary<string, StaticAmmoDetails[]> StaticAmmo { get; set; }
|
||||
|
||||
/** All possible static containers on map + their assign groupings */
|
||||
[JsonPropertyName("statics")]
|
||||
public StaticContainer StaticContainer { get; set; }
|
||||
|
||||
/** All possible map extracts */
|
||||
[JsonPropertyName("allExtracts")]
|
||||
public Exit[] AllExtracts { get; set; }
|
||||
}
|
||||
|
||||
public class StaticContainer
|
||||
{
|
||||
[JsonPropertyName("containersGroups")]
|
||||
public Dictionary<string, ContainerMinMax> ContainersGroups { get; set; }
|
||||
|
||||
[JsonPropertyName("containers")]
|
||||
public Dictionary<string, ContainerData> Containers { get; set; }
|
||||
}
|
||||
|
||||
public class ContainerMinMax
|
||||
{
|
||||
[JsonPropertyName("minContainers")]
|
||||
public int MinContainers { get; set; }
|
||||
|
||||
[JsonPropertyName("maxContainers")]
|
||||
public int MaxContainers { get; set; }
|
||||
|
||||
[JsonPropertyName("current")]
|
||||
public int? Current { get; set; }
|
||||
|
||||
[JsonPropertyName("chosenCount")]
|
||||
public int? ChosenCount { get; set; }
|
||||
}
|
||||
|
||||
public class ContainerData
|
||||
{
|
||||
[JsonPropertyName("groupId")]
|
||||
public string GroupId { get; set; }
|
||||
}
|
||||
|
||||
public class StaticLootDetails
|
||||
{
|
||||
[JsonPropertyName("itemcountDistribution")]
|
||||
public ItemCountDistribution[] ItemCountDistribution { get; set; }
|
||||
|
||||
[JsonPropertyName("itemDistribution")]
|
||||
public ItemDistribution[] ItemDistribution { get; set; }
|
||||
}
|
||||
|
||||
public class ItemCountDistribution
|
||||
{
|
||||
[JsonPropertyName("count")]
|
||||
public int Count { get; set; }
|
||||
|
||||
[JsonPropertyName("relativeProbability")]
|
||||
public float RelativeProbability { get; set; }
|
||||
}
|
||||
|
||||
public class ItemDistribution
|
||||
{
|
||||
[JsonPropertyName("tpl")]
|
||||
public string Tpl { get; set; }
|
||||
|
||||
[JsonPropertyName("relativeProbability")]
|
||||
public float RelativeProbability { get; set; }
|
||||
}
|
||||
|
||||
public class StaticPropsBase
|
||||
{
|
||||
[JsonPropertyName("Id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("IsContainer")]
|
||||
public bool IsContainer { get; set; }
|
||||
|
||||
[JsonPropertyName("useGravity")]
|
||||
public bool UseGravity { get; set; }
|
||||
|
||||
[JsonPropertyName("randomRotation")]
|
||||
public bool RandomRotation { get; set; }
|
||||
|
||||
[JsonPropertyName("Position")]
|
||||
public XYZ Position { get; set; }
|
||||
|
||||
[JsonPropertyName("Rotation")]
|
||||
public XYZ Rotation { get; set; }
|
||||
|
||||
[JsonPropertyName("IsGroupPosition")]
|
||||
public bool IsGroupPosition { get; set; }
|
||||
|
||||
[JsonPropertyName("IsAlwaysSpawn")]
|
||||
public bool IsAlwaysSpawn { get; set; }
|
||||
|
||||
[JsonPropertyName("GroupPositions")]
|
||||
public GroupPosition[] GroupPositions { get; set; }
|
||||
|
||||
[JsonPropertyName("Root")]
|
||||
public string Root { get; set; }
|
||||
|
||||
[JsonPropertyName("Items")]
|
||||
public Item[] Items { get; set; }
|
||||
}
|
||||
|
||||
public class StaticWeaponProps : StaticPropsBase
|
||||
{
|
||||
[JsonPropertyName("Items")]
|
||||
public Item[] Items { get; set; }
|
||||
}
|
||||
|
||||
public class StaticContainerDetails
|
||||
{
|
||||
[JsonPropertyName("staticWeapons")]
|
||||
public StaticWeaponProps[] StaticWeapons { get; set; }
|
||||
|
||||
[JsonPropertyName("staticContainers")]
|
||||
public StaticContainerData[] StaticContainers { get; set; }
|
||||
|
||||
[JsonPropertyName("staticForced")]
|
||||
public StaticForcedProps[] StaticForced { get; set; }
|
||||
}
|
||||
|
||||
public class StaticContainerData
|
||||
{
|
||||
[JsonPropertyName("probability")]
|
||||
public float Probability { get; set; }
|
||||
|
||||
[JsonPropertyName("template")]
|
||||
public StaticContainerProps Template { get; set; }
|
||||
}
|
||||
|
||||
public class StaticAmmoDetails
|
||||
{
|
||||
[JsonPropertyName("tpl")]
|
||||
public string Tpl { get; set; }
|
||||
|
||||
[JsonPropertyName("relativeProbability")]
|
||||
public float RelativeProbability { get; set; }
|
||||
}
|
||||
|
||||
public class StaticForcedProps
|
||||
{
|
||||
[JsonPropertyName("containerId")]
|
||||
public string ContainerId { get; set; }
|
||||
|
||||
[JsonPropertyName("itemTpl")]
|
||||
public string ItemTpl { get; set; }
|
||||
}
|
||||
|
||||
public class StaticContainerProps : StaticPropsBase
|
||||
{
|
||||
[JsonPropertyName("Items")]
|
||||
public StaticItem[] Items { get; set; }
|
||||
}
|
||||
|
||||
public class StaticItem
|
||||
{
|
||||
[JsonPropertyName("_id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("_tpl")]
|
||||
public string Tpl { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,842 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Core.Models.Common;
|
||||
|
||||
namespace Core.Models.Eft.Common;
|
||||
|
||||
public class LocationBase
|
||||
{
|
||||
[JsonPropertyName("AccessKeys")]
|
||||
public List<string> AccessKeys { get; set; }
|
||||
|
||||
[JsonPropertyName("AccessKeysPvE")]
|
||||
public List<string> AccessKeysPvE { get; set; }
|
||||
|
||||
[JsonPropertyName("AirdropParameters")]
|
||||
public List<AirdropParameter> AirdropParameters { get; set; }
|
||||
|
||||
[JsonPropertyName("Area")]
|
||||
public int Area { get; set; }
|
||||
|
||||
[JsonPropertyName("AveragePlayTime")]
|
||||
public double AveragePlayTime { get; set; }
|
||||
|
||||
[JsonPropertyName("AveragePlayerLevel")]
|
||||
public double AveragePlayerLevel { get; set; }
|
||||
|
||||
[JsonPropertyName("Banners")]
|
||||
public List<Banner> Banners { get; set; }
|
||||
|
||||
[JsonPropertyName("BossLocationSpawn")]
|
||||
public List<BossLocationSpawn> BossLocationSpawn { get; set; }
|
||||
|
||||
[JsonPropertyName("BotAssault")]
|
||||
public int BotAssault { get; set; }
|
||||
|
||||
/** Weighting on how likely a bot will be Easy difficulty */
|
||||
[JsonPropertyName("BotEasy")]
|
||||
public int BotEasy { get; set; }
|
||||
|
||||
/** Weighting on how likely a bot will be Hard difficulty */
|
||||
[JsonPropertyName("BotHard")]
|
||||
public int BotHard { get; set; }
|
||||
|
||||
/** Weighting on how likely a bot will be Impossible difficulty */
|
||||
[JsonPropertyName("BotImpossible")]
|
||||
public int BotImpossible { get; set; }
|
||||
|
||||
[JsonPropertyName("BotLocationModifier")]
|
||||
public BotLocationModifier BotLocationModifier { get; set; }
|
||||
|
||||
[JsonPropertyName("BotMarksman")]
|
||||
public int BotMarksman { get; set; }
|
||||
|
||||
/** Maximum Number of bots that are currently alive/loading/delayed */
|
||||
[JsonPropertyName("BotMax")]
|
||||
public int BotMax { get; set; }
|
||||
|
||||
/** Is not used in 33420 */
|
||||
[JsonPropertyName("BotMaxPlayer")]
|
||||
public int BotMaxPlayer { get; set; }
|
||||
|
||||
/** Is not used in 33420 */
|
||||
[JsonPropertyName("BotMaxTimePlayer")]
|
||||
public int BotMaxTimePlayer { get; set; }
|
||||
|
||||
/** Does not even exist in the client in 33420 */
|
||||
[JsonPropertyName("BotMaxPvE")]
|
||||
public int BotMaxPvE { get; set; }
|
||||
|
||||
/** Weighting on how likely a bot will be Normal difficulty */
|
||||
[JsonPropertyName("BotNormal")]
|
||||
public int BotNormal { get; set; }
|
||||
|
||||
/** How many bot slots that need to be open before trying to spawn new bots. */
|
||||
[JsonPropertyName("BotSpawnCountStep")]
|
||||
public int BotSpawnCountStep { get; set; }
|
||||
|
||||
/** How often to check if bots are spawn-able. In seconds */
|
||||
[JsonPropertyName("BotSpawnPeriodCheck")]
|
||||
public int BotSpawnPeriodCheck { get; set; }
|
||||
|
||||
/** The bot spawn will toggle on and off in intervals of Off(Min/Max) and On(Min/Max) */
|
||||
[JsonPropertyName("BotSpawnTimeOffMax")]
|
||||
public int BotSpawnTimeOffMax { get; set; }
|
||||
|
||||
[JsonPropertyName("BotSpawnTimeOffMin")]
|
||||
public int BotSpawnTimeOffMin { get; set; }
|
||||
|
||||
[JsonPropertyName("BotSpawnTimeOnMax")]
|
||||
public int BotSpawnTimeOnMax { get; set; }
|
||||
|
||||
[JsonPropertyName("BotSpawnTimeOnMin")]
|
||||
public int BotSpawnTimeOnMin { get; set; }
|
||||
|
||||
/** How soon bots will be allowed to spawn */
|
||||
[JsonPropertyName("BotStart")]
|
||||
public int BotStart { get; set; }
|
||||
|
||||
/** After this long bots will no longer spawn */
|
||||
[JsonPropertyName("BotStop")]
|
||||
public int BotStop { get; set; }
|
||||
|
||||
[JsonPropertyName("Description")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[JsonPropertyName("DisabledForScav")]
|
||||
public bool DisabledForScav { get; set; }
|
||||
|
||||
[JsonPropertyName("DisabledScavExits")]
|
||||
public string DisabledScavExits { get; set; }
|
||||
|
||||
[JsonPropertyName("Enabled")]
|
||||
public bool Enabled { get; set; }
|
||||
|
||||
[JsonPropertyName("EnableCoop")]
|
||||
public bool EnableCoop { get; set; }
|
||||
|
||||
[JsonPropertyName("GlobalLootChanceModifier")]
|
||||
public double GlobalLootChanceModifier { get; set; }
|
||||
|
||||
[JsonPropertyName("GlobalLootChanceModifierPvE")]
|
||||
public double GlobalLootChanceModifierPvE { get; set; }
|
||||
|
||||
[JsonPropertyName("GlobalContainerChanceModifier")]
|
||||
public double GlobalContainerChanceModifier { get; set; }
|
||||
|
||||
[JsonPropertyName("IconX")]
|
||||
public int IconX { get; set; }
|
||||
|
||||
[JsonPropertyName("IconY")]
|
||||
public int IconY { get; set; }
|
||||
|
||||
[JsonPropertyName("Id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("Insurance")]
|
||||
public bool Insurance { get; set; }
|
||||
|
||||
[JsonPropertyName("IsSecret")]
|
||||
public bool IsSecret { get; set; }
|
||||
|
||||
[JsonPropertyName("Locked")]
|
||||
public bool Locked { get; set; }
|
||||
|
||||
[JsonPropertyName("Loot")]
|
||||
public List<SpawnpointTemplate> Loot { get; set; }
|
||||
|
||||
[JsonPropertyName("MatchMakerMinPlayersByWaitTime")]
|
||||
public List<MinPlayerWaitTime> MatchMakerMinPlayersByWaitTime { get; set; }
|
||||
|
||||
[JsonPropertyName("MaxBotPerZone")]
|
||||
public int MaxBotPerZone { get; set; }
|
||||
|
||||
[JsonPropertyName("MaxDistToFreePoint")]
|
||||
public double MaxDistToFreePoint { get; set; }
|
||||
|
||||
[JsonPropertyName("MaxPlayers")]
|
||||
public int MaxPlayers { get; set; }
|
||||
|
||||
[JsonPropertyName("MinDistToExitPoint")]
|
||||
public double MinDistToExitPoint { get; set; }
|
||||
|
||||
[JsonPropertyName("MinDistToFreePoint")]
|
||||
public double MinDistToFreePoint { get; set; }
|
||||
|
||||
[JsonPropertyName("MinMaxBots")]
|
||||
public List<MinMaxBot> MinMaxBots { get; set; }
|
||||
|
||||
[JsonPropertyName("MinPlayers")]
|
||||
public int MinPlayers { get; set; }
|
||||
|
||||
[JsonPropertyName("MaxCoopGroup")]
|
||||
public int MaxCoopGroup { get; set; }
|
||||
|
||||
[JsonPropertyName("Name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[JsonPropertyName("NonWaveGroupScenario")]
|
||||
public NonWaveGroupScenario NonWaveGroupScenario { get; set; }
|
||||
|
||||
[JsonPropertyName("NewSpawn")]
|
||||
public bool NewSpawn { get; set; }
|
||||
|
||||
[JsonPropertyName("OcculsionCullingEnabled")]
|
||||
public bool OcculsionCullingEnabled { get; set; }
|
||||
|
||||
[JsonPropertyName("OldSpawn")]
|
||||
public bool OldSpawn { get; set; }
|
||||
|
||||
[JsonPropertyName("OpenZones")]
|
||||
public string OpenZones { get; set; }
|
||||
|
||||
[JsonPropertyName("Preview")]
|
||||
public Preview Preview { get; set; }
|
||||
|
||||
[JsonPropertyName("PlayersRequestCount")]
|
||||
public int PlayersRequestCount { get; set; }
|
||||
|
||||
[JsonPropertyName("RequiredPlayerLevel")]
|
||||
public int? RequiredPlayerLevel { get; set; }
|
||||
|
||||
[JsonPropertyName("RequiredPlayerLevelMin")]
|
||||
public int? RequiredPlayerLevelMin { get; set; }
|
||||
|
||||
[JsonPropertyName("RequiredPlayerLevelMax")]
|
||||
public int? RequiredPlayerLevelMax { get; set; }
|
||||
|
||||
[JsonPropertyName("MinPlayerLvlAccessKeys")]
|
||||
public int MinPlayerLvlAccessKeys { get; set; }
|
||||
|
||||
[JsonPropertyName("PmcMaxPlayersInGroup")]
|
||||
public int PmcMaxPlayersInGroup { get; set; }
|
||||
|
||||
[JsonPropertyName("ScavMaxPlayersInGroup")]
|
||||
public int ScavMaxPlayersInGroup { get; set; }
|
||||
|
||||
[JsonPropertyName("Rules")]
|
||||
public string Rules { get; set; }
|
||||
|
||||
[JsonPropertyName("SafeLocation")]
|
||||
public bool SafeLocation { get; set; }
|
||||
|
||||
[JsonPropertyName("Scene")]
|
||||
public Scene Scene { get; set; }
|
||||
|
||||
[JsonPropertyName("SpawnPointParams")]
|
||||
public List<SpawnPointParam> SpawnPointParams { get; set; }
|
||||
|
||||
[JsonPropertyName("UnixDateTime")]
|
||||
public long UnixDateTime { get; set; }
|
||||
|
||||
[JsonPropertyName("_Id")]
|
||||
public string IdField { get; set; }
|
||||
|
||||
[JsonPropertyName("doors")]
|
||||
public List<object> Doors { get; set; }
|
||||
|
||||
[JsonPropertyName("EscapeTimeLimit")]
|
||||
public int EscapeTimeLimit { get; set; }
|
||||
|
||||
[JsonPropertyName("EscapeTimeLimitCoop")]
|
||||
public int EscapeTimeLimitCoop { get; set; }
|
||||
|
||||
[JsonPropertyName("EscapeTimeLimitPVE")]
|
||||
public int EscapeTimeLimitPVE { get; set; }
|
||||
|
||||
[JsonPropertyName("Events")]
|
||||
public LocationEvents Events { get; set; }
|
||||
|
||||
[JsonPropertyName("exit_access_time")]
|
||||
public int ExitAccessTime { get; set; }
|
||||
|
||||
[JsonPropertyName("ForceOnlineRaidInPVE")]
|
||||
public bool ForceOnlineRaidInPVE { get; set; }
|
||||
|
||||
[JsonPropertyName("exit_count")]
|
||||
public int ExitCount { get; set; }
|
||||
|
||||
[JsonPropertyName("exit_time")]
|
||||
public int ExitTime { get; set; }
|
||||
|
||||
[JsonPropertyName("exits")]
|
||||
public List<Exit> Exits { get; set; }
|
||||
|
||||
[JsonPropertyName("filter_ex")]
|
||||
public List<string> FilterEx { get; set; }
|
||||
|
||||
[JsonPropertyName("limits")]
|
||||
public List<Limit> Limits { get; set; }
|
||||
|
||||
[JsonPropertyName("matching_min_seconds")]
|
||||
public int MatchingMinSeconds { get; set; }
|
||||
|
||||
[JsonPropertyName("GenerateLocalLootCache")]
|
||||
public bool GenerateLocalLootCache { get; set; }
|
||||
|
||||
[JsonPropertyName("maxItemCountInLocation")]
|
||||
public List<MaxItemCountInLocation> MaxItemCountInLocation { get; set; }
|
||||
|
||||
[JsonPropertyName("sav_summon_seconds")]
|
||||
public int SavSummonSeconds { get; set; }
|
||||
|
||||
[JsonPropertyName("tmp_location_field_remove_me")]
|
||||
public int TmpLocationFieldRemoveMe { get; set; }
|
||||
|
||||
[JsonPropertyName("transits")]
|
||||
public List<Transit> Transits { get; set; }
|
||||
|
||||
[JsonPropertyName("users_gather_seconds")]
|
||||
public int UsersGatherSeconds { get; set; }
|
||||
|
||||
[JsonPropertyName("users_spawn_seconds_n")]
|
||||
public int UsersSpawnSecondsN { get; set; }
|
||||
|
||||
[JsonPropertyName("users_spawn_seconds_n2")]
|
||||
public int UsersSpawnSecondsN2 { get; set; }
|
||||
|
||||
[JsonPropertyName("users_summon_seconds")]
|
||||
public int UsersSummonSeconds { get; set; }
|
||||
|
||||
[JsonPropertyName("waves")]
|
||||
public List<Wave> Waves { get; set; }
|
||||
}
|
||||
|
||||
public class Transit {
|
||||
[JsonPropertyName("activateAfterSec")]
|
||||
public string ActivateAfterSeconds { get; set; }
|
||||
|
||||
[JsonPropertyName("active")]
|
||||
public bool IsActive { get; set; }
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[JsonPropertyName("conditions")]
|
||||
public string Conditions { get; set; }
|
||||
|
||||
[JsonPropertyName("description")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[JsonPropertyName("id")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[JsonPropertyName("location")]
|
||||
public string Location { get; set; }
|
||||
|
||||
[JsonPropertyName("target")]
|
||||
public string Target { get; set; }
|
||||
|
||||
[JsonPropertyName("time")]
|
||||
public int Time { get; set; }
|
||||
}
|
||||
|
||||
public class NonWaveGroupScenario {
|
||||
[JsonPropertyName("Chance")]
|
||||
public double Chance { get; set; }
|
||||
|
||||
[JsonPropertyName("Enabled")]
|
||||
public bool IsEnabled { get; set; }
|
||||
|
||||
[JsonPropertyName("MaxToBeGroup")]
|
||||
public int MaximumToBeGrouped { get; set; }
|
||||
|
||||
[JsonPropertyName("MinToBeGroup")]
|
||||
public int MinimumToBeGrouped { get; set; }
|
||||
}
|
||||
|
||||
public class Limit : MinMax {
|
||||
[JsonPropertyName("items")]
|
||||
public object[] Items { get; set; } // TODO: was on TS any[] hmmm..
|
||||
}
|
||||
|
||||
public class AirdropParameter {
|
||||
[JsonPropertyName("AirdropPointDeactivateDistance")]
|
||||
public double AirdropPointDeactivateDistance { get; set; }
|
||||
|
||||
[JsonPropertyName("MinPlayersCountToSpawnAirdrop")]
|
||||
public double MinimumPlayersCountToSpawnAirdrop { get; set; }
|
||||
|
||||
[JsonPropertyName("PlaneAirdropChance")]
|
||||
public double PlaneAirdropChance { get; set; }
|
||||
|
||||
[JsonPropertyName("PlaneAirdropCooldownMax")]
|
||||
public double PlaneAirdropCooldownMax { get; set; }
|
||||
|
||||
[JsonPropertyName("PlaneAirdropCooldownMin")]
|
||||
public double PlaneAirdropCooldownMin { get; set; }
|
||||
|
||||
[JsonPropertyName("PlaneAirdropEnd")]
|
||||
public double PlaneAirdropEnd { get; set; }
|
||||
|
||||
[JsonPropertyName("PlaneAirdropMax")]
|
||||
public double PlaneAirdropMax { get; set; }
|
||||
|
||||
[JsonPropertyName("PlaneAirdropStartMax")]
|
||||
public double PlaneAirdropStartMax { get; set; }
|
||||
|
||||
[JsonPropertyName("PlaneAirdropStartMin")]
|
||||
public double PlaneAirdropStartMin { get; set; }
|
||||
|
||||
[JsonPropertyName("UnsuccessfulTryPenalty")]
|
||||
public double UnsuccessfulTryPenalty { get; set; }
|
||||
}
|
||||
|
||||
public class Banner {
|
||||
[JsonPropertyName("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("pic")]
|
||||
public Pic Picture { get; set; }
|
||||
}
|
||||
|
||||
public class Pic {
|
||||
[JsonPropertyName("path")]
|
||||
public string Path { get; set; }
|
||||
|
||||
[JsonPropertyName("rcid")]
|
||||
public string Rcid { get; set; }
|
||||
}
|
||||
|
||||
public class BossLocationSpawn {
|
||||
[JsonPropertyName("BossChance")]
|
||||
public double BossChance { get; set; }
|
||||
|
||||
[JsonPropertyName("BossDifficult")]
|
||||
public string BossDifficulty { get; set; }
|
||||
|
||||
[JsonPropertyName("BossEscortAmount")]
|
||||
public string BossEscortAmount { get; set; }
|
||||
|
||||
[JsonPropertyName("BossEscortDifficult")]
|
||||
public string BossEscortDifficulty { get; set; }
|
||||
|
||||
[JsonPropertyName("BossEscortType")]
|
||||
public string BossEscortType { get; set; }
|
||||
|
||||
[JsonPropertyName("BossName")]
|
||||
public string BossName { get; set; }
|
||||
|
||||
[JsonPropertyName("BossPlayer")]
|
||||
public bool IsBossPlayer { get; set; }
|
||||
|
||||
[JsonPropertyName("BossZone")]
|
||||
public string BossZone { get; set; }
|
||||
|
||||
[JsonPropertyName("RandomTimeSpawn")]
|
||||
public bool IsRandomTimeSpawn { get; set; }
|
||||
|
||||
[JsonPropertyName("Time")]
|
||||
public double Time { get; set; }
|
||||
|
||||
[JsonPropertyName("TriggerId")]
|
||||
public string TriggerId { get; set; }
|
||||
|
||||
[JsonPropertyName("TriggerName")]
|
||||
public string TriggerName { get; set; }
|
||||
|
||||
[JsonPropertyName("Delay")]
|
||||
public double? Delay { get; set; }
|
||||
|
||||
[JsonPropertyName("DependKarma")]
|
||||
public bool? DependKarma { get; set; }
|
||||
|
||||
[JsonPropertyName("DependKarmaPVE")]
|
||||
public bool? DependKarmaPVE { get; set; }
|
||||
|
||||
[JsonPropertyName("ForceSpawn")]
|
||||
public bool? ForceSpawn { get; set; }
|
||||
|
||||
[JsonPropertyName("IgnoreMaxBots")]
|
||||
public bool? IgnoreMaxBots { get; set; }
|
||||
|
||||
[JsonPropertyName("Supports")]
|
||||
public BossSupport[] Supports { get; set; }
|
||||
|
||||
[JsonPropertyName("sptId")]
|
||||
public string SptId { get; set; }
|
||||
|
||||
[JsonPropertyName("spawnMode")]
|
||||
public string[] SpawnMode { get; set; }
|
||||
}
|
||||
|
||||
public class BossSupport {
|
||||
[JsonPropertyName("BossEscortAmount")]
|
||||
public string BossEscortAmount { get; set; }
|
||||
|
||||
[JsonPropertyName("BossEscortDifficult")]
|
||||
public string[] BossEscortDifficulty { get; set; }
|
||||
|
||||
[JsonPropertyName("BossEscortType")]
|
||||
public string BossEscortType { get; set; }
|
||||
}
|
||||
|
||||
public class BotLocationModifier {
|
||||
[JsonPropertyName("AccuracySpeed")]
|
||||
public double AccuracySpeed { get; set; }
|
||||
|
||||
[JsonPropertyName("AdditionalHostilitySettings")]
|
||||
public AdditionalHostilitySettings[] AdditionalHostilitySettings { get; set; }
|
||||
|
||||
[JsonPropertyName("DistToActivate")]
|
||||
public double DistanceToActivate { get; set; }
|
||||
|
||||
[JsonPropertyName("DistToActivatePvE")]
|
||||
public double DistanceToActivatePvE { get; set; }
|
||||
|
||||
[JsonPropertyName("DistToPersueAxemanCoef")]
|
||||
public double DistanceToPursueAxemanCoefficient { get; set; }
|
||||
|
||||
[JsonPropertyName("DistToSleep")]
|
||||
public double DistanceToSleep { get; set; }
|
||||
|
||||
[JsonPropertyName("DistToSleepPvE")]
|
||||
public double DistanceToSleepPvE { get; set; }
|
||||
|
||||
[JsonPropertyName("GainSight")]
|
||||
public double GainSight { get; set; }
|
||||
|
||||
[JsonPropertyName("KhorovodChance")]
|
||||
public double KhorovodChance { get; set; }
|
||||
|
||||
[JsonPropertyName("MagnetPower")]
|
||||
public double MagnetPower { get; set; }
|
||||
|
||||
[JsonPropertyName("MarksmanAccuratyCoef")]
|
||||
public double MarksmanAccuracyCoefficient { get; set; }
|
||||
|
||||
[JsonPropertyName("Scattering")]
|
||||
public double Scattering { get; set; }
|
||||
|
||||
[JsonPropertyName("VisibleDistance")]
|
||||
public double VisibleDistance { get; set; }
|
||||
|
||||
[JsonPropertyName("MaxExfiltrationTime")]
|
||||
public double MaxExfiltrationTime { get; set; }
|
||||
|
||||
[JsonPropertyName("MinExfiltrationTime")]
|
||||
public double MinExfiltrationTime { get; set; }
|
||||
}
|
||||
|
||||
public class AdditionalHostilitySettings
|
||||
{
|
||||
[JsonPropertyName("AlwaysEnemies")]
|
||||
public List<string> AlwaysEnemies { get; set; }
|
||||
|
||||
[JsonPropertyName("AlwaysFriends")]
|
||||
public List<string> AlwaysFriends { get; set; }
|
||||
|
||||
[JsonPropertyName("BearEnemyChance")]
|
||||
public int BearEnemyChance { get; set; }
|
||||
|
||||
[JsonPropertyName("BearPlayerBehaviour")]
|
||||
public string BearPlayerBehaviour { get; set; }
|
||||
|
||||
[JsonPropertyName("BotRole")]
|
||||
public string BotRole { get; set; }
|
||||
|
||||
[JsonPropertyName("ChancedEnemies")]
|
||||
public List<ChancedEnemy> ChancedEnemies { get; set; }
|
||||
|
||||
[JsonPropertyName("Neutral")]
|
||||
public List<string> Neutral { get; set; }
|
||||
|
||||
[JsonPropertyName("SavagePlayerBehaviour")]
|
||||
public string SavagePlayerBehaviour { get; set; }
|
||||
|
||||
[JsonPropertyName("SavageEnemyChance")]
|
||||
public int? SavageEnemyChance { get; set; }
|
||||
|
||||
[JsonPropertyName("UsecEnemyChance")]
|
||||
public int UsecEnemyChance { get; set; }
|
||||
|
||||
[JsonPropertyName("UsecPlayerBehaviour")]
|
||||
public string UsecPlayerBehaviour { get; set; }
|
||||
|
||||
[JsonPropertyName("Warn")]
|
||||
public List<string> Warn { get; set; }
|
||||
}
|
||||
|
||||
public class ChancedEnemy
|
||||
{
|
||||
[JsonPropertyName("EnemyChance")]
|
||||
public int EnemyChance { get; set; }
|
||||
|
||||
[JsonPropertyName("Role")]
|
||||
public string Role { get; set; }
|
||||
}
|
||||
|
||||
public class MinMaxBot : MinMax
|
||||
{
|
||||
[JsonPropertyName("WildSpawnType")]
|
||||
public object WildSpawnType { get; set; } // TODO: Could be WildSpawnType or string
|
||||
}
|
||||
|
||||
public class MinPlayerWaitTime
|
||||
{
|
||||
[JsonPropertyName("minPlayers")]
|
||||
public int MinPlayers { get; set; }
|
||||
|
||||
[JsonPropertyName("time")]
|
||||
public int Time { get; set; }
|
||||
}
|
||||
|
||||
public class Preview
|
||||
{
|
||||
[JsonPropertyName("path")]
|
||||
public string Path { get; set; }
|
||||
|
||||
[JsonPropertyName("rcid")]
|
||||
public string Rcid { get; set; }
|
||||
}
|
||||
|
||||
public class Scene
|
||||
{
|
||||
[JsonPropertyName("path")]
|
||||
public string Path { get; set; }
|
||||
|
||||
[JsonPropertyName("rcid")]
|
||||
public string Rcid { get; set; }
|
||||
}
|
||||
|
||||
public class SpawnPointParam
|
||||
{
|
||||
[JsonPropertyName("BotZoneName")]
|
||||
public string BotZoneName { get; set; }
|
||||
|
||||
[JsonPropertyName("Categories")]
|
||||
public List<string> Categories { get; set; }
|
||||
|
||||
[JsonPropertyName("ColliderParams")]
|
||||
public ColliderParams ColliderParams { get; set; }
|
||||
|
||||
[JsonPropertyName("CorePointId")]
|
||||
public int CorePointId { get; set; }
|
||||
|
||||
[JsonPropertyName("DelayToCanSpawnSec")]
|
||||
public int DelayToCanSpawnSec { get; set; }
|
||||
|
||||
[JsonPropertyName("Id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("Infiltration")]
|
||||
public string Infiltration { get; set; }
|
||||
|
||||
[JsonPropertyName("Position")]
|
||||
public XYZ Position { get; set; }
|
||||
|
||||
[JsonPropertyName("Rotation")]
|
||||
public float Rotation { get; set; }
|
||||
|
||||
[JsonPropertyName("Sides")]
|
||||
public List<string> Sides { get; set; }
|
||||
}
|
||||
|
||||
public class ColliderParams
|
||||
{
|
||||
[JsonPropertyName("_parent")]
|
||||
public string Parent { get; set; }
|
||||
|
||||
[JsonPropertyName("_props")]
|
||||
public Props Props { get; set; }
|
||||
}
|
||||
|
||||
public class Props
|
||||
{
|
||||
[JsonPropertyName("Center")]
|
||||
public XYZ Center { get; set; }
|
||||
|
||||
[JsonPropertyName("Radius")]
|
||||
public float Radius { get; set; }
|
||||
}
|
||||
|
||||
public class Exit
|
||||
{
|
||||
/** % Chance out of 100 exit will appear in raid */
|
||||
[JsonPropertyName("Chance")]
|
||||
public int Chance { get; set; }
|
||||
|
||||
[JsonPropertyName("ChancePVE")]
|
||||
public int ChancePVE { get; set; }
|
||||
|
||||
[JsonPropertyName("Count")]
|
||||
public int Count { get; set; }
|
||||
|
||||
[JsonPropertyName("CountPVE")]
|
||||
public int CountPVE { get; set; }
|
||||
|
||||
[JsonPropertyName("EntryPoints")]
|
||||
public string EntryPoints { get; set; }
|
||||
|
||||
[JsonPropertyName("EventAvailable")]
|
||||
public bool EventAvailable { get; set; }
|
||||
|
||||
[JsonPropertyName("ExfiltrationTime")]
|
||||
public float ExfiltrationTime { get; set; }
|
||||
|
||||
[JsonPropertyName("ExfiltrationTimePVE")]
|
||||
public float ExfiltrationTimePVE { get; set; }
|
||||
|
||||
[JsonPropertyName("ExfiltrationType")]
|
||||
public string ExfiltrationType { get; set; }
|
||||
|
||||
[JsonPropertyName("RequiredSlot")]
|
||||
public string RequiredSlot { get; set; }
|
||||
|
||||
[JsonPropertyName("Id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("MaxTime")]
|
||||
public float MaxTime { get; set; }
|
||||
|
||||
[JsonPropertyName("MaxTimePVE")]
|
||||
public float MaxTimePVE { get; set; }
|
||||
|
||||
[JsonPropertyName("MinTime")]
|
||||
public float MinTime { get; set; }
|
||||
|
||||
[JsonPropertyName("MinTimePVE")]
|
||||
public float MinTimePVE { get; set; }
|
||||
|
||||
[JsonPropertyName("Name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[JsonPropertyName("PassageRequirement")]
|
||||
public string PassageRequirement { get; set; }
|
||||
|
||||
[JsonPropertyName("PlayersCount")]
|
||||
public int PlayersCount { get; set; }
|
||||
|
||||
[JsonPropertyName("PlayersCountPVE")]
|
||||
public int PlayersCountPVE { get; set; }
|
||||
|
||||
[JsonPropertyName("RequirementTip")]
|
||||
public string RequirementTip { get; set; }
|
||||
|
||||
[JsonPropertyName("Side")]
|
||||
public string Side { get; set; }
|
||||
}
|
||||
|
||||
public class MaxItemCountInLocation
|
||||
{
|
||||
[JsonPropertyName("TemplateId")]
|
||||
public string TemplateId { get; set; }
|
||||
|
||||
[JsonPropertyName("Value")]
|
||||
public int Value { get; set; }
|
||||
}
|
||||
|
||||
public class Wave
|
||||
{
|
||||
[JsonPropertyName("BotPreset")]
|
||||
public string BotPreset { get; set; }
|
||||
|
||||
[JsonPropertyName("BotSide")]
|
||||
public string BotSide { get; set; }
|
||||
|
||||
[JsonPropertyName("SpawnPoints")]
|
||||
public string SpawnPoints { get; set; }
|
||||
|
||||
[JsonPropertyName("WildSpawnType")]
|
||||
public WildSpawnType WildSpawnType { get; set; }
|
||||
|
||||
[JsonPropertyName("isPlayers")]
|
||||
public bool IsPlayers { get; set; }
|
||||
|
||||
[JsonPropertyName("number")]
|
||||
public int Number { get; set; }
|
||||
|
||||
[JsonPropertyName("slots_max")]
|
||||
public int SlotsMax { get; set; }
|
||||
|
||||
[JsonPropertyName("slots_min")]
|
||||
public int SlotsMin { get; set; }
|
||||
|
||||
[JsonPropertyName("time_max")]
|
||||
public int TimeMax { get; set; }
|
||||
|
||||
[JsonPropertyName("time_min")]
|
||||
public int TimeMin { get; set; }
|
||||
|
||||
/** OPTIONAL - Needs to be unique - Used by custom wave service to ensure same wave isnt added multiple times */
|
||||
[JsonPropertyName("sptId")]
|
||||
public string? SptId { get; set; }
|
||||
|
||||
[JsonPropertyName("ChanceGroup")]
|
||||
public int? ChanceGroup { get; set; }
|
||||
|
||||
/** 'pve' and/or 'regular' */
|
||||
[JsonPropertyName("SpawnMode")]
|
||||
public List<string> SpawnMode { get; set; }
|
||||
}
|
||||
|
||||
public class LocationEvents
|
||||
{
|
||||
[JsonPropertyName("Halloween2024")]
|
||||
public Halloween2024 Halloween2024 { get; set; }
|
||||
}
|
||||
|
||||
public class Halloween2024
|
||||
{
|
||||
[JsonPropertyName("CrowdAttackBlockRadius")]
|
||||
public int CrowdAttackBlockRadius { get; set; }
|
||||
|
||||
[JsonPropertyName("CrowdAttackSpawnParams")]
|
||||
public List<CrowdAttackSpawnParam> CrowdAttackSpawnParams { get; set; }
|
||||
|
||||
[JsonPropertyName("CrowdCooldownPerPlayerSec")]
|
||||
public int CrowdCooldownPerPlayerSec { get; set; }
|
||||
|
||||
[JsonPropertyName("CrowdsLimit")]
|
||||
public int CrowdsLimit { get; set; }
|
||||
|
||||
[JsonPropertyName("InfectedLookCoeff")]
|
||||
public double InfectedLookCoeff { get; set; }
|
||||
|
||||
[JsonPropertyName("MaxCrowdAttackSpawnLimit")]
|
||||
public int MaxCrowdAttackSpawnLimit { get; set; }
|
||||
|
||||
[JsonPropertyName("MinInfectionPercentage")]
|
||||
public double MinInfectionPercentage { get; set; }
|
||||
|
||||
[JsonPropertyName("MinSpawnDistToPlayer")]
|
||||
public double MinSpawnDistToPlayer { get; set; }
|
||||
|
||||
[JsonPropertyName("TargetPointSearchRadiusLimit")]
|
||||
public double TargetPointSearchRadiusLimit { get; set; }
|
||||
|
||||
[JsonPropertyName("ZombieCallDeltaRadius")]
|
||||
public double ZombieCallDeltaRadius { get; set; }
|
||||
|
||||
[JsonPropertyName("ZombieCallPeriodSec")]
|
||||
public int ZombieCallPeriodSec { get; set; }
|
||||
|
||||
[JsonPropertyName("ZombieCallRadiusLimit")]
|
||||
public double ZombieCallRadiusLimit { get; set; }
|
||||
|
||||
[JsonPropertyName("ZombieMultiplier")]
|
||||
public double ZombieMultiplier { get; set; }
|
||||
|
||||
[JsonPropertyName("InfectionPercentage")]
|
||||
public double InfectionPercentage { get; set; }
|
||||
}
|
||||
|
||||
public class CrowdAttackSpawnParam
|
||||
{
|
||||
[JsonPropertyName("Difficulty")]
|
||||
public string Difficulty { get; set; }
|
||||
|
||||
[JsonPropertyName("Role")]
|
||||
public string Role { get; set; }
|
||||
|
||||
[JsonPropertyName("Weight")]
|
||||
public int Weight { get; set; }
|
||||
}
|
||||
|
||||
public enum WildSpawnType
|
||||
{
|
||||
assault,
|
||||
marksman,
|
||||
pmcbot,
|
||||
bosskilla,
|
||||
bossknight
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Core.Models.Eft.Common.Tables;
|
||||
|
||||
namespace Core.Models.Eft.Common;
|
||||
|
||||
public class LooseLoot
|
||||
{
|
||||
[JsonPropertyName("spawnpointCount")]
|
||||
public SpawnpointCount SpawnpointCount { get; set; }
|
||||
|
||||
[JsonPropertyName("spawnpointsForced")]
|
||||
public List<SpawnpointsForced> SpawnpointsForced { get; set; }
|
||||
|
||||
[JsonPropertyName("spawnpoints")]
|
||||
public List<Spawnpoint> Spawnpoints { get; set; }
|
||||
}
|
||||
|
||||
public class SpawnpointCount
|
||||
{
|
||||
[JsonPropertyName("mean")]
|
||||
public double Mean { get; set; }
|
||||
|
||||
[JsonPropertyName("std")]
|
||||
public double Std { get; set; }
|
||||
}
|
||||
|
||||
public class SpawnpointsForced
|
||||
{
|
||||
[JsonPropertyName("locationId")]
|
||||
public string LocationId { get; set; }
|
||||
|
||||
[JsonPropertyName("probability")]
|
||||
public double Probability { get; set; }
|
||||
|
||||
[JsonPropertyName("template")]
|
||||
public SpawnpointTemplate Template { get; set; }
|
||||
}
|
||||
|
||||
public class SpawnpointTemplate
|
||||
{
|
||||
[JsonPropertyName("Id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("IsContainer")]
|
||||
public bool IsContainer { get; set; }
|
||||
|
||||
[JsonPropertyName("useGravity")]
|
||||
public bool UseGravity { get; set; }
|
||||
|
||||
[JsonPropertyName("randomRotation")]
|
||||
public bool RandomRotation { get; set; }
|
||||
|
||||
[JsonPropertyName("Position")]
|
||||
public XYZ Position { get; set; }
|
||||
|
||||
[JsonPropertyName("Rotation")]
|
||||
public XYZ Rotation { get; set; }
|
||||
|
||||
[JsonPropertyName("IsAlwaysSpawn")]
|
||||
public bool IsAlwaysSpawn { get; set; }
|
||||
|
||||
[JsonPropertyName("IsGroupPosition")]
|
||||
public bool IsGroupPosition { get; set; }
|
||||
|
||||
[JsonPropertyName("GroupPositions")]
|
||||
public List<GroupPosition> GroupPositions { get; set; }
|
||||
|
||||
[JsonPropertyName("Root")]
|
||||
public string Root { get; set; }
|
||||
|
||||
[JsonPropertyName("Items")]
|
||||
public List<Item> Items { get; set; }
|
||||
}
|
||||
|
||||
public class GroupPosition
|
||||
{
|
||||
[JsonPropertyName("Name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[JsonPropertyName("Weight")]
|
||||
public double Weight { get; set; }
|
||||
|
||||
[JsonPropertyName("Postion")]
|
||||
public XYZ Position { get; set; }
|
||||
|
||||
[JsonPropertyName("Rotation")]
|
||||
public XYZ Rotation { get; set; }
|
||||
}
|
||||
|
||||
public class Spawnpoint
|
||||
{
|
||||
[JsonPropertyName("locationId")]
|
||||
public string LocationId { get; set; }
|
||||
|
||||
[JsonPropertyName("probability")]
|
||||
public double Probability { get; set; }
|
||||
|
||||
[JsonPropertyName("template")]
|
||||
public SpawnpointTemplate Template { get; set; }
|
||||
|
||||
[JsonPropertyName("itemDistribution")]
|
||||
public List<LooseLootItemDistribution> ItemDistribution { get; set; }
|
||||
}
|
||||
|
||||
public class LooseLootItemDistribution
|
||||
{
|
||||
[JsonPropertyName("composedKey")]
|
||||
public ComposedKey ComposedKey { get; set; }
|
||||
|
||||
[JsonPropertyName("relativeProbability")]
|
||||
public double RelativeProbability { get; set; }
|
||||
}
|
||||
|
||||
public class ComposedKey
|
||||
{
|
||||
[JsonPropertyName("key")]
|
||||
public string Key { get; set; }
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Core.Models.Eft.Ragfair;
|
||||
using Core.Models.Enums;
|
||||
|
||||
namespace Core.Models.Eft.Common.Tables;
|
||||
|
||||
@@ -36,7 +38,7 @@ public class BotBase
|
||||
[JsonPropertyName("Hideout")]
|
||||
public Hideout Hideout { get; set; }
|
||||
[JsonPropertyName("Quests")]
|
||||
public List<QuestStatus> Quests { get; set; }
|
||||
public List<Quests> Quests { get; set; }
|
||||
[JsonPropertyName("TradersInfo")]
|
||||
public Dictionary<string, TraderInfo> TradersInfo { get; set; }
|
||||
[JsonPropertyName("UnlockedInfo")]
|
||||
@@ -602,7 +604,7 @@ public enum SurvivorClass {
|
||||
SURVIVOR = 4,
|
||||
}
|
||||
|
||||
public class QuestStatus
|
||||
public class Quests
|
||||
{
|
||||
[JsonPropertyName("qid")]
|
||||
public string QId { get; set; }
|
||||
|
||||
@@ -0,0 +1,245 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Core.Models.Eft.Common.Tables;
|
||||
|
||||
|
||||
public class Item
|
||||
{
|
||||
[JsonPropertyName("_id")]
|
||||
public string Id { get; set; }
|
||||
[JsonPropertyName("_tpl")]
|
||||
public string Template { get; set; }
|
||||
public string? ParentId { get; set; }
|
||||
public string? SlotId { get; set; }
|
||||
public object? Location { get; set; } // TODO: Can be IItemLocation or number
|
||||
public Upd? Update { get; set; }
|
||||
}
|
||||
|
||||
public class ItemLocation
|
||||
{
|
||||
public float X { get; set; }
|
||||
public float Y { get; set; }
|
||||
public object R { get; set; } // TODO: Can be string or number
|
||||
public bool? IsSearched { get; set; }
|
||||
/** SPT property? */
|
||||
public object? Rotation { get; set; } // TODO: Can be string or boolean
|
||||
}
|
||||
|
||||
public class Upd
|
||||
{
|
||||
public UpdBuff? Buff { get; set; }
|
||||
public int? OriginalStackObjectsCount { get; set; }
|
||||
public UpdTogglable? Togglable { get; set; }
|
||||
public UpdMap? Map { get; set; }
|
||||
public UpdTag? Tag { get; set; }
|
||||
/** SPT specific property, not made by BSG */
|
||||
[JsonPropertyName("sptPresetId")]
|
||||
public string? SptPresetId { get; set; }
|
||||
public UpdFaceShield? FaceShield { get; set; }
|
||||
public int? StackObjectsCount { get; set; }
|
||||
public bool? UnlimitedCount { get; set; }
|
||||
public UpdRepairable? Repairable { get; set; }
|
||||
public UpdRecodableComponent? RecodableComponent { get; set; }
|
||||
public UpdFireMode? FireMode { get; set; }
|
||||
public bool? SpawnedInSession { get; set; }
|
||||
public UpdLight? Light { get; set; }
|
||||
public UpdKey? Key { get; set; }
|
||||
public UpdResource? Resource { get; set; }
|
||||
public UpdSight? Sight { get; set; }
|
||||
public UpdMedKit? MedKit { get; set; }
|
||||
public UpdFoodDrink? FoodDrink { get; set; }
|
||||
public UpdDogtag? Dogtag { get; set; }
|
||||
public int? BuyRestrictionMax { get; set; }
|
||||
public int? BuyRestrictionCurrent { get; set; }
|
||||
public UpdFoldable? Foldable { get; set; }
|
||||
public UpdSideEffect? SideEffect { get; set; }
|
||||
public UpdRepairKit? RepairKit { get; set; }
|
||||
public UpdCultistAmulet? CultistAmulet { get; set; }
|
||||
public PinLockState? PinLockState { get; set; }
|
||||
}
|
||||
|
||||
public enum PinLockState {
|
||||
Free,
|
||||
Locked,
|
||||
Pinned
|
||||
}
|
||||
|
||||
public class UpdBuff
|
||||
{
|
||||
[JsonPropertyName("Rarity")]
|
||||
public string Rarity { get; set; }
|
||||
|
||||
[JsonPropertyName("BuffType")]
|
||||
public string BuffType { get; set; }
|
||||
|
||||
[JsonPropertyName("Value")]
|
||||
public int Value { get; set; }
|
||||
|
||||
[JsonPropertyName("ThresholdDurability")]
|
||||
public int? ThresholdDurability { get; set; }
|
||||
}
|
||||
|
||||
public class UpdTogglable
|
||||
{
|
||||
[JsonPropertyName("On")]
|
||||
public bool On { get; set; }
|
||||
}
|
||||
|
||||
public class UpdMap
|
||||
{
|
||||
[JsonPropertyName("Markers")]
|
||||
public List<MapMarker> Markers { get; set; }
|
||||
}
|
||||
|
||||
public class MapMarker
|
||||
{
|
||||
[JsonPropertyName("X")]
|
||||
public int X { get; set; }
|
||||
|
||||
[JsonPropertyName("Y")]
|
||||
public int Y { get; set; }
|
||||
}
|
||||
|
||||
public class UpdTag
|
||||
{
|
||||
[JsonPropertyName("Color")]
|
||||
public int Color { get; set; }
|
||||
|
||||
[JsonPropertyName("Name")]
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public class UpdFaceShield
|
||||
{
|
||||
[JsonPropertyName("Hits")]
|
||||
public int Hits { get; set; }
|
||||
}
|
||||
|
||||
public class UpdRepairable
|
||||
{
|
||||
[JsonPropertyName("Durability")]
|
||||
public int Durability { get; set; }
|
||||
|
||||
[JsonPropertyName("MaxDurability")]
|
||||
public int MaxDurability { get; set; }
|
||||
}
|
||||
|
||||
public class UpdRecodableComponent
|
||||
{
|
||||
[JsonPropertyName("IsEncoded")]
|
||||
public bool IsEncoded { get; set; }
|
||||
}
|
||||
|
||||
public class UpdMedKit
|
||||
{
|
||||
[JsonPropertyName("HpResource")]
|
||||
public int HpResource { get; set; }
|
||||
}
|
||||
|
||||
public class UpdSight
|
||||
{
|
||||
[JsonPropertyName("ScopesCurrentCalibPointIndexes")]
|
||||
public List<int> ScopesCurrentCalibPointIndexes { get; set; }
|
||||
|
||||
[JsonPropertyName("ScopesSelectedModes")]
|
||||
public List<int> ScopesSelectedModes { get; set; }
|
||||
|
||||
[JsonPropertyName("SelectedScope")]
|
||||
public int SelectedScope { get; set; }
|
||||
}
|
||||
|
||||
public class UpdFoldable
|
||||
{
|
||||
[JsonPropertyName("Folded")]
|
||||
public bool Folded { get; set; }
|
||||
}
|
||||
|
||||
public class UpdFireMode
|
||||
{
|
||||
[JsonPropertyName("FireMode")]
|
||||
public string FireMode { get; set; }
|
||||
}
|
||||
|
||||
public class UpdFoodDrink
|
||||
{
|
||||
[JsonPropertyName("HpPercent")]
|
||||
public double HpPercent { get; set; }
|
||||
}
|
||||
|
||||
public class UpdKey
|
||||
{
|
||||
[JsonPropertyName("NumberOfUsages")]
|
||||
public double NumberOfUsages { get; set; }
|
||||
}
|
||||
|
||||
public class UpdResource
|
||||
{
|
||||
[JsonPropertyName("Value")]
|
||||
public double Value { get; set; }
|
||||
|
||||
[JsonPropertyName("UnitsConsumed")]
|
||||
public double UnitsConsumed { get; set; }
|
||||
}
|
||||
|
||||
public class UpdLight
|
||||
{
|
||||
[JsonPropertyName("IsActive")]
|
||||
public bool IsActive { get; set; }
|
||||
|
||||
[JsonPropertyName("SelectedMode")]
|
||||
public int SelectedMode { get; set; }
|
||||
}
|
||||
|
||||
public class UpdDogtag
|
||||
{
|
||||
[JsonPropertyName("AccountId")]
|
||||
public string AccountId { get; set; }
|
||||
|
||||
[JsonPropertyName("ProfileId")]
|
||||
public string ProfileId { get; set; }
|
||||
|
||||
[JsonPropertyName("Nickname")]
|
||||
public string Nickname { get; set; }
|
||||
|
||||
[JsonPropertyName("Side")]
|
||||
public string Side { get; set; }
|
||||
|
||||
[JsonPropertyName("Level")]
|
||||
public double Level { get; set; }
|
||||
|
||||
[JsonPropertyName("Time")]
|
||||
public string Time { get; set; }
|
||||
|
||||
[JsonPropertyName("Status")]
|
||||
public string Status { get; set; }
|
||||
|
||||
[JsonPropertyName("KillerAccountId")]
|
||||
public string KillerAccountId { get; set; }
|
||||
|
||||
[JsonPropertyName("KillerProfileId")]
|
||||
public string KillerProfileId { get; set; }
|
||||
|
||||
[JsonPropertyName("KillerName")]
|
||||
public string KillerName { get; set; }
|
||||
|
||||
[JsonPropertyName("WeaponName")]
|
||||
public string WeaponName { get; set; }
|
||||
}
|
||||
|
||||
public class UpdSideEffect
|
||||
{
|
||||
[JsonPropertyName("Value")]
|
||||
public double Value { get; set; }
|
||||
}
|
||||
|
||||
public class UpdRepairKit
|
||||
{
|
||||
[JsonPropertyName("Resource")]
|
||||
public double Resource { get; set; }
|
||||
}
|
||||
|
||||
public class UpdCultistAmulet
|
||||
{
|
||||
[JsonPropertyName("NumberOfUsages")]
|
||||
public double NumberOfUsages { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Core.Models.Eft.Common.Tables;
|
||||
|
||||
public class LocationsBase
|
||||
{
|
||||
[JsonPropertyName("locations")]
|
||||
public Locations Locations { get; set; }
|
||||
|
||||
[JsonPropertyName("paths")]
|
||||
public List<Path> Paths { get; set; }
|
||||
}
|
||||
|
||||
public class Locations
|
||||
{
|
||||
// Add properties as necessary
|
||||
}
|
||||
|
||||
public class Path
|
||||
{
|
||||
[JsonPropertyName("Source")]
|
||||
public string Source { get; set; }
|
||||
|
||||
[JsonPropertyName("Destination")]
|
||||
public string Destination { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,442 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Core.Models.Enums;
|
||||
|
||||
namespace Core.Models.Eft.Common.Tables;
|
||||
|
||||
public class Quest
|
||||
{
|
||||
/// <summary>
|
||||
/// SPT addition - human readable quest name
|
||||
/// </summary>
|
||||
[JsonPropertyName("QuestName")]
|
||||
public string? QuestName { get; set; }
|
||||
|
||||
[JsonPropertyName("_id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("canShowNotificationsInGame")]
|
||||
public bool CanShowNotificationsInGame { get; set; }
|
||||
|
||||
[JsonPropertyName("conditions")]
|
||||
public QuestConditionTypes Conditions { get; set; }
|
||||
|
||||
[JsonPropertyName("description")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[JsonPropertyName("failMessageText")]
|
||||
public string FailMessageText { get; set; }
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[JsonPropertyName("note")]
|
||||
public string Note { get; set; }
|
||||
|
||||
[JsonPropertyName("traderId")]
|
||||
public string TraderId { get; set; }
|
||||
|
||||
[JsonPropertyName("location")]
|
||||
public string Location { get; set; }
|
||||
|
||||
[JsonPropertyName("image")]
|
||||
public string Image { get; set; }
|
||||
|
||||
[JsonPropertyName("type")]
|
||||
public QuestTypeEnum Type { get; set; }
|
||||
|
||||
[JsonPropertyName("isKey")]
|
||||
public bool IsKey { get; set; }
|
||||
|
||||
[JsonPropertyName("restartable")]
|
||||
public bool Restartable { get; set; }
|
||||
|
||||
[JsonPropertyName("instantComplete")]
|
||||
public bool InstantComplete { get; set; }
|
||||
|
||||
[JsonPropertyName("secretQuest")]
|
||||
public bool SecretQuest { get; set; }
|
||||
|
||||
[JsonPropertyName("startedMessageText")]
|
||||
public string StartedMessageText { get; set; }
|
||||
|
||||
[JsonPropertyName("successMessageText")]
|
||||
public string SuccessMessageText { get; set; }
|
||||
|
||||
[JsonPropertyName("acceptPlayerMessage")]
|
||||
public string? AcceptPlayerMessage { get; set; }
|
||||
|
||||
[JsonPropertyName("declinePlayerMessage")]
|
||||
public string DeclinePlayerMessage { get; set; }
|
||||
|
||||
[JsonPropertyName("completePlayerMessage")]
|
||||
public string? CompletePlayerMessage { get; set; }
|
||||
|
||||
[JsonPropertyName("templateId")]
|
||||
public string? TemplateId { get; set; }
|
||||
|
||||
[JsonPropertyName("rewards")]
|
||||
public QuestRewards Rewards { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Becomes 'AppearStatus' inside client
|
||||
/// </summary>
|
||||
[JsonPropertyName("status")]
|
||||
public object? Status { get; set; } // TODO: string | number
|
||||
|
||||
[JsonPropertyName("KeyQuest")]
|
||||
public bool? KeyQuest { get; set; }
|
||||
|
||||
[JsonPropertyName("changeQuestMessageText")]
|
||||
public string ChangeQuestMessageText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// "Pmc" or "Scav"
|
||||
/// </summary>
|
||||
[JsonPropertyName("side")]
|
||||
public string Side { get; set; }
|
||||
|
||||
[JsonPropertyName("acceptanceAndFinishingSource")]
|
||||
public string AcceptanceAndFinishingSource { get; set; }
|
||||
|
||||
[JsonPropertyName("progressSource")]
|
||||
public string ProgressSource { get; set; }
|
||||
|
||||
[JsonPropertyName("rankingModes")]
|
||||
public List<string> RankingModes { get; set; }
|
||||
|
||||
[JsonPropertyName("gameModes")]
|
||||
public List<string> GameModes { get; set; }
|
||||
|
||||
[JsonPropertyName("arenaLocations")]
|
||||
public List<string> ArenaLocations { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Status of quest to player
|
||||
/// </summary>
|
||||
[JsonPropertyName("sptStatus")]
|
||||
public QuestStatus? SptStatus { get; set; }
|
||||
}
|
||||
|
||||
public class QuestConditionTypes
|
||||
{
|
||||
[JsonPropertyName("Started")]
|
||||
public List<QuestCondition>? Started { get; set; }
|
||||
|
||||
[JsonPropertyName("AvailableForFinish")]
|
||||
public List<QuestCondition> AvailableForFinish { get; set; }
|
||||
|
||||
[JsonPropertyName("AvailableForStart")]
|
||||
public List<QuestCondition> AvailableForStart { get; set; }
|
||||
|
||||
[JsonPropertyName("Success")]
|
||||
public List<QuestCondition>? Success { get; set; }
|
||||
|
||||
[JsonPropertyName("Fail")]
|
||||
public List<QuestCondition> Fail { get; set; }
|
||||
}
|
||||
|
||||
public class QuestCondition
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("index")]
|
||||
public int? Index { get; set; }
|
||||
|
||||
[JsonPropertyName("compareMethod")]
|
||||
public string? CompareMethod { get; set; }
|
||||
|
||||
[JsonPropertyName("dynamicLocale")]
|
||||
public bool DynamicLocale { get; set; }
|
||||
|
||||
[JsonPropertyName("visibilityConditions")]
|
||||
public List<VisibilityCondition>? VisibilityConditions { get; set; }
|
||||
|
||||
[JsonPropertyName("globalQuestCounterId")]
|
||||
public string? GlobalQuestCounterId { get; set; }
|
||||
|
||||
[JsonPropertyName("parentId")]
|
||||
public string? ParentId { get; set; }
|
||||
|
||||
[JsonPropertyName("target")]
|
||||
public object? Target { get; set; } // TODO: string[] | string
|
||||
|
||||
[JsonPropertyName("value")]
|
||||
public object? Value { get; set; } // TODO: string | number
|
||||
|
||||
[JsonPropertyName("type")]
|
||||
public object? Type { get; set; } // TODO: boolean | string
|
||||
|
||||
[JsonPropertyName("status")]
|
||||
public List<QuestStatus>? Status { get; set; }
|
||||
|
||||
[JsonPropertyName("availableAfter")]
|
||||
public int? AvailableAfter { get; set; }
|
||||
|
||||
[JsonPropertyName("dispersion")]
|
||||
public double? Dispersion { get; set; }
|
||||
|
||||
[JsonPropertyName("onlyFoundInRaid")]
|
||||
public bool? OnlyFoundInRaid { get; set; }
|
||||
|
||||
[JsonPropertyName("oneSessionOnly")]
|
||||
public bool? OneSessionOnly { get; set; }
|
||||
|
||||
[JsonPropertyName("isResetOnConditionFailed")]
|
||||
public bool? IsResetOnConditionFailed { get; set; }
|
||||
|
||||
[JsonPropertyName("isNecessary")]
|
||||
public bool? IsNecessary { get; set; }
|
||||
|
||||
[JsonPropertyName("doNotResetIfCounterCompleted")]
|
||||
public bool? DoNotResetIfCounterCompleted { get; set; }
|
||||
|
||||
[JsonPropertyName("dogtagLevel")]
|
||||
public object? DogtagLevel { get; set; } // TODO: number | string
|
||||
|
||||
[JsonPropertyName("traderId")]
|
||||
public string? TraderId { get; set; }
|
||||
|
||||
[JsonPropertyName("maxDurability")]
|
||||
public object? MaxDurability { get; set; } // TODO: number | string
|
||||
|
||||
[JsonPropertyName("minDurability")]
|
||||
public object? MinDurability { get; set; } // TODO: number | string
|
||||
|
||||
[JsonPropertyName("counter")]
|
||||
public QuestConditionCounter? Counter { get; set; }
|
||||
|
||||
[JsonPropertyName("plantTime")]
|
||||
public int? PlantTime { get; set; }
|
||||
|
||||
[JsonPropertyName("zoneId")]
|
||||
public string? ZoneId { get; set; }
|
||||
|
||||
[JsonPropertyName("countInRaid")]
|
||||
public bool? CountInRaid { get; set; }
|
||||
|
||||
[JsonPropertyName("completeInSeconds")]
|
||||
public int? CompleteInSeconds { get; set; }
|
||||
|
||||
[JsonPropertyName("isEncoded")]
|
||||
public bool? IsEncoded { get; set; }
|
||||
|
||||
[JsonPropertyName("conditionType")]
|
||||
public string? ConditionType { get; set; }
|
||||
}
|
||||
|
||||
public class QuestConditionCounter
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("conditions")]
|
||||
public List<QuestConditionCounterCondition> Conditions { get; set; }
|
||||
}
|
||||
|
||||
public class QuestConditionCounterCondition
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("dynamicLocale")]
|
||||
public bool? DynamicLocale { get; set; }
|
||||
|
||||
[JsonPropertyName("target")]
|
||||
public object? Target { get; set; } // TODO: string[] | string
|
||||
|
||||
[JsonPropertyName("completeInSeconds")]
|
||||
public int? CompleteInSeconds { get; set; }
|
||||
|
||||
[JsonPropertyName("energy")]
|
||||
public ValueCompare? Energy { get; set; }
|
||||
|
||||
[JsonPropertyName("exitName")]
|
||||
public string? ExitName { get; set; }
|
||||
|
||||
[JsonPropertyName("hydration")]
|
||||
public ValueCompare? Hydration { get; set; }
|
||||
|
||||
[JsonPropertyName("time")]
|
||||
public ValueCompare? Time { get; set; }
|
||||
|
||||
[JsonPropertyName("compareMethod")]
|
||||
public string? CompareMethod { get; set; }
|
||||
|
||||
[JsonPropertyName("value")]
|
||||
public object? Value { get; set; } // TODO: number | string
|
||||
|
||||
[JsonPropertyName("weapon")]
|
||||
public List<string>? Weapon { get; set; }
|
||||
|
||||
[JsonPropertyName("distance")]
|
||||
public CounterConditionDistance? Distance { get; set; }
|
||||
|
||||
[JsonPropertyName("equipmentInclusive")]
|
||||
public List<List<string>>? EquipmentInclusive { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponModsInclusive")]
|
||||
public List<List<string>>? WeaponModsInclusive { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponModsExclusive")]
|
||||
public List<List<string>>? WeaponModsExclusive { get; set; }
|
||||
|
||||
[JsonPropertyName("enemyEquipmentInclusive")]
|
||||
public List<List<string>>? EnemyEquipmentInclusive { get; set; }
|
||||
|
||||
[JsonPropertyName("enemyEquipmentExclusive")]
|
||||
public List<List<string>>? EnemyEquipmentExclusive { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponCaliber")]
|
||||
public List<string>? WeaponCaliber { get; set; }
|
||||
|
||||
[JsonPropertyName("savageRole")]
|
||||
public List<string>? SavageRole { get; set; }
|
||||
|
||||
[JsonPropertyName("status")]
|
||||
public List<string>? Status { get; set; }
|
||||
|
||||
[JsonPropertyName("bodyPart")]
|
||||
public List<string>? BodyPart { get; set; }
|
||||
|
||||
[JsonPropertyName("daytime")]
|
||||
public DaytimeCounter? Daytime { get; set; }
|
||||
|
||||
[JsonPropertyName("conditionType")]
|
||||
public string? ConditionType { get; set; }
|
||||
|
||||
[JsonPropertyName("enemyHealthEffects")]
|
||||
public List<EnemyHealthEffect>? EnemyHealthEffects { get; set; }
|
||||
|
||||
[JsonPropertyName("resetOnSessionEnd")]
|
||||
public bool? ResetOnSessionEnd { get; set; }
|
||||
}
|
||||
|
||||
public class EnemyHealthEffect
|
||||
{
|
||||
[JsonPropertyName("bodyParts")]
|
||||
public List<string> BodyParts { get; set; }
|
||||
|
||||
[JsonPropertyName("effects")]
|
||||
public List<string> Effects { get; set; }
|
||||
}
|
||||
|
||||
public class ValueCompare
|
||||
{
|
||||
[JsonPropertyName("compareMethod")]
|
||||
public string CompareMethod { get; set; }
|
||||
|
||||
[JsonPropertyName("value")]
|
||||
public int Value { get; set; }
|
||||
}
|
||||
|
||||
public class CounterConditionDistance
|
||||
{
|
||||
[JsonPropertyName("value")]
|
||||
public int Value { get; set; }
|
||||
|
||||
[JsonPropertyName("compareMethod")]
|
||||
public string CompareMethod { get; set; }
|
||||
}
|
||||
|
||||
public class DaytimeCounter
|
||||
{
|
||||
[JsonPropertyName("from")]
|
||||
public int From { get; set; }
|
||||
|
||||
[JsonPropertyName("to")]
|
||||
public int To { get; set; }
|
||||
}
|
||||
|
||||
public class VisibilityCondition
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("target")]
|
||||
public string Target { get; set; }
|
||||
|
||||
[JsonPropertyName("value")]
|
||||
public int? Value { get; set; }
|
||||
|
||||
[JsonPropertyName("dynamicLocale")]
|
||||
public bool? DynamicLocale { get; set; }
|
||||
|
||||
[JsonPropertyName("oneSessionOnly")]
|
||||
public bool? OneSessionOnly { get; set; }
|
||||
|
||||
[JsonPropertyName("conditionType")]
|
||||
public string ConditionType { get; set; }
|
||||
}
|
||||
|
||||
public class QuestRewards
|
||||
{
|
||||
[JsonPropertyName("AvailableForStart")]
|
||||
public List<QuestReward> AvailableForStart { get; set; }
|
||||
|
||||
[JsonPropertyName("AvailableForFinish")]
|
||||
public List<QuestReward> AvailableForFinish { get; set; }
|
||||
|
||||
[JsonPropertyName("Started")]
|
||||
public List<QuestReward> Started { get; set; }
|
||||
|
||||
[JsonPropertyName("Success")]
|
||||
public List<QuestReward> Success { get; set; }
|
||||
|
||||
[JsonPropertyName("Fail")]
|
||||
public List<QuestReward> Fail { get; set; }
|
||||
|
||||
[JsonPropertyName("FailRestartable")]
|
||||
public List<QuestReward> FailRestartable { get; set; }
|
||||
|
||||
[JsonPropertyName("Expired")]
|
||||
public List<QuestReward> Expired { get; set; }
|
||||
}
|
||||
|
||||
public class QuestReward
|
||||
{
|
||||
[JsonPropertyName("value")]
|
||||
public object Value { get; set; } // TODO: Can be either string or number
|
||||
|
||||
[JsonPropertyName("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("type")]
|
||||
public QuestRewardType Type { get; set; }
|
||||
|
||||
[JsonPropertyName("index")]
|
||||
public int Index { get; set; }
|
||||
|
||||
[JsonPropertyName("target")]
|
||||
public string Target { get; set; }
|
||||
|
||||
[JsonPropertyName("items")]
|
||||
public List<Item> Items { get; set; }
|
||||
|
||||
[JsonPropertyName("loyaltyLevel")]
|
||||
public int? LoyaltyLevel { get; set; }
|
||||
|
||||
/** Hideout area id */
|
||||
[JsonPropertyName("traderId")]
|
||||
public string TraderId { get; set; }
|
||||
|
||||
[JsonPropertyName("isEncoded")]
|
||||
public bool? IsEncoded { get; set; }
|
||||
|
||||
[JsonPropertyName("unknown")]
|
||||
public bool? Unknown { get; set; }
|
||||
|
||||
[JsonPropertyName("findInRaid")]
|
||||
public bool? FindInRaid { get; set; }
|
||||
|
||||
[JsonPropertyName("gameMode")]
|
||||
public List<string> GameMode { get; set; }
|
||||
|
||||
/** Game editions whitelisted to get reward */
|
||||
[JsonPropertyName("availableInGameEditions")]
|
||||
public List<string> AvailableInGameEditions { get; set; }
|
||||
|
||||
/** Game editions blacklisted from getting reward */
|
||||
[JsonPropertyName("notAvailableInGameEditions")]
|
||||
public List<string> NotAvailableInGameEditions { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,230 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Core.Models.Eft.Common.Tables;
|
||||
|
||||
public class RepeatableQuest : Quest
|
||||
{
|
||||
[JsonPropertyName("changeCost")]
|
||||
public List<ChangeCost> ChangeCost { get; set; }
|
||||
|
||||
[JsonPropertyName("changeStandingCost")]
|
||||
public int ChangeStandingCost { get; set; }
|
||||
|
||||
[JsonPropertyName("sptRepatableGroupName")]
|
||||
public string SptRepatableGroupName { get; set; }
|
||||
|
||||
[JsonPropertyName("acceptanceAndFinishingSource")]
|
||||
public string AcceptanceAndFinishingSource { get; set; }
|
||||
|
||||
[JsonPropertyName("progressSource")]
|
||||
public string ProgressSource { get; set; }
|
||||
|
||||
[JsonPropertyName("rankingModes")]
|
||||
public List<string> RankingModes { get; set; }
|
||||
|
||||
[JsonPropertyName("gameModes")]
|
||||
public List<string> GameModes { get; set; }
|
||||
|
||||
[JsonPropertyName("arenaLocations")]
|
||||
public List<string> ArenaLocations { get; set; }
|
||||
|
||||
[JsonPropertyName("questStatus")]
|
||||
public RepeatableQuestStatus QuestStatus { get; set; }
|
||||
}
|
||||
|
||||
public class RepeatableQuestDatabase
|
||||
{
|
||||
[JsonPropertyName("templates")]
|
||||
public RepeatableTemplates Templates { get; set; }
|
||||
|
||||
[JsonPropertyName("rewards")]
|
||||
public RewardOptions Rewards { get; set; }
|
||||
|
||||
[JsonPropertyName("data")]
|
||||
public Options Data { get; set; }
|
||||
|
||||
[JsonPropertyName("samples")]
|
||||
public List<SampleQuests> Samples { get; set; }
|
||||
}
|
||||
|
||||
public class RepeatableQuestStatus
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("uid")]
|
||||
public string Uid { get; set; }
|
||||
|
||||
[JsonPropertyName("qid")]
|
||||
public string Qid { get; set; }
|
||||
|
||||
[JsonPropertyName("startTime")]
|
||||
public long StartTime { get; set; }
|
||||
|
||||
[JsonPropertyName("status")]
|
||||
public int Status { get; set; }
|
||||
|
||||
[JsonPropertyName("statusTimers")]
|
||||
public object StatusTimers { get; set; } // Use object for any type
|
||||
}
|
||||
|
||||
public class RepeatableTemplates
|
||||
{
|
||||
[JsonPropertyName("Elimination")]
|
||||
public Quest Elimination { get; set; }
|
||||
|
||||
[JsonPropertyName("Completion")]
|
||||
public Quest Completion { get; set; }
|
||||
|
||||
[JsonPropertyName("Exploration")]
|
||||
public Quest Exploration { get; set; }
|
||||
}
|
||||
|
||||
public class PmcDataRepeatableQuest
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public string? Id { get; set; }
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[JsonPropertyName("unavailableTime")]
|
||||
public string? UnavailableTime { get; set; }
|
||||
|
||||
[JsonPropertyName("activeQuests")]
|
||||
public List<RepeatableQuest> ActiveQuests { get; set; }
|
||||
|
||||
[JsonPropertyName("inactiveQuests")]
|
||||
public List<RepeatableQuest> InactiveQuests { get; set; }
|
||||
|
||||
[JsonPropertyName("endTime")]
|
||||
public long EndTime { get; set; }
|
||||
|
||||
[JsonPropertyName("changeRequirement")]
|
||||
public Dictionary<string, ChangeRequirement> ChangeRequirement { get; set; }
|
||||
|
||||
[JsonPropertyName("freeChanges")]
|
||||
public int FreeChanges { get; set; }
|
||||
|
||||
[JsonPropertyName("freeChangesAvailable")]
|
||||
public int FreeChangesAvailable { get; set; }
|
||||
}
|
||||
|
||||
public class ChangeRequirement
|
||||
{
|
||||
[JsonPropertyName("changeCost")]
|
||||
public List<ChangeCost> ChangeCost { get; set; }
|
||||
|
||||
[JsonPropertyName("changeStandingCost")]
|
||||
public int ChangeStandingCost { get; set; }
|
||||
}
|
||||
|
||||
public class ChangeCost
|
||||
{
|
||||
[JsonPropertyName("templateId")]
|
||||
public string TemplateId { get; set; }
|
||||
|
||||
[JsonPropertyName("count")]
|
||||
public int Count { get; set; }
|
||||
}
|
||||
|
||||
// Config Options
|
||||
|
||||
public class RewardOptions
|
||||
{
|
||||
[JsonPropertyName("itemsBlacklist")]
|
||||
public List<string> ItemsBlacklist { get; set; }
|
||||
}
|
||||
|
||||
public class Options
|
||||
{
|
||||
[JsonPropertyName("Completion")]
|
||||
public CompletionFilter Completion { get; set; }
|
||||
}
|
||||
|
||||
public class CompletionFilter
|
||||
{
|
||||
[JsonPropertyName("itemsBlacklist")]
|
||||
public List<ItemsBlacklist> ItemsBlacklist { get; set; }
|
||||
|
||||
[JsonPropertyName("itemsWhitelist")]
|
||||
public List<ItemsWhitelist> ItemsWhitelist { get; set; }
|
||||
}
|
||||
|
||||
public class ItemsBlacklist
|
||||
{
|
||||
[JsonPropertyName("minPlayerLevel")]
|
||||
public int MinPlayerLevel { get; set; }
|
||||
|
||||
[JsonPropertyName("itemIds")]
|
||||
public List<string> ItemIds { get; set; }
|
||||
}
|
||||
|
||||
public class ItemsWhitelist
|
||||
{
|
||||
[JsonPropertyName("minPlayerLevel")]
|
||||
public int MinPlayerLevel { get; set; }
|
||||
|
||||
[JsonPropertyName("itemIds")]
|
||||
public List<string> ItemIds { get; set; }
|
||||
}
|
||||
|
||||
public class SampleQuests
|
||||
{
|
||||
[JsonPropertyName("_id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("traderId")]
|
||||
public string TraderId { get; set; }
|
||||
|
||||
[JsonPropertyName("location")]
|
||||
public string Location { get; set; }
|
||||
|
||||
[JsonPropertyName("image")]
|
||||
public string Image { get; set; }
|
||||
|
||||
[JsonPropertyName("type")]
|
||||
public string Type { get; set; }
|
||||
|
||||
[JsonPropertyName("isKey")]
|
||||
public bool IsKey { get; set; }
|
||||
|
||||
[JsonPropertyName("restartable")]
|
||||
public bool Restartable { get; set; }
|
||||
|
||||
[JsonPropertyName("instantComplete")]
|
||||
public bool InstantComplete { get; set; }
|
||||
|
||||
[JsonPropertyName("secretQuest")]
|
||||
public bool SecretQuest { get; set; }
|
||||
|
||||
[JsonPropertyName("canShowNotificationsInGame")]
|
||||
public bool CanShowNotificationsInGame { get; set; }
|
||||
|
||||
[JsonPropertyName("rewards")]
|
||||
public QuestRewards Rewards { get; set; }
|
||||
|
||||
[JsonPropertyName("conditions")]
|
||||
public QuestConditionTypes Conditions { get; set; }
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[JsonPropertyName("note")]
|
||||
public string Note { get; set; }
|
||||
|
||||
[JsonPropertyName("description")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[JsonPropertyName("successMessageText")]
|
||||
public string SuccessMessageText { get; set; }
|
||||
|
||||
[JsonPropertyName("failMessageText")]
|
||||
public string FailMessageText { get; set; }
|
||||
|
||||
[JsonPropertyName("startedMessageText")]
|
||||
public string StartedMessageText { get; set; }
|
||||
|
||||
[JsonPropertyName("templateId")]
|
||||
public string TemplateId { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Core.Models.Eft.Common;
|
||||
|
||||
public class XYZ
|
||||
{
|
||||
[JsonPropertyName("x")]
|
||||
public double X { get; set; }
|
||||
|
||||
[JsonPropertyName("y")]
|
||||
public double Y { get; set; }
|
||||
|
||||
[JsonPropertyName("z")]
|
||||
public double Z { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Core.Models.Eft.Common.Tables;
|
||||
using Core.Models.Enums;
|
||||
|
||||
namespace Core.Models.Eft.Ragfair;
|
||||
|
||||
public class RagfairOffer
|
||||
{
|
||||
[JsonPropertyName("sellResult")]
|
||||
public List<SellResult>? SellResults { get; set; }
|
||||
|
||||
[JsonPropertyName("_id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("items")]
|
||||
public List<Item> Items { get; set; }
|
||||
|
||||
[JsonPropertyName("requirements")]
|
||||
public List<OfferRequirement> Requirements { get; set; }
|
||||
|
||||
[JsonPropertyName("root")]
|
||||
public string Root { get; set; }
|
||||
|
||||
[JsonPropertyName("intId")]
|
||||
public int InternalId { get; set; }
|
||||
|
||||
/** Handbook price */
|
||||
[JsonPropertyName("itemsCost")]
|
||||
public decimal ItemsCost { get; set; }
|
||||
|
||||
/** Rouble price per item */
|
||||
[JsonPropertyName("requirementsCost")]
|
||||
public decimal RequirementsCost { get; set; }
|
||||
|
||||
[JsonPropertyName("startTime")]
|
||||
public long StartTime { get; set; }
|
||||
|
||||
[JsonPropertyName("endTime")]
|
||||
public long EndTime { get; set; }
|
||||
|
||||
/** True when offer is sold as pack */
|
||||
[JsonPropertyName("sellInOnePiece")]
|
||||
public bool SellInOnePiece { get; set; }
|
||||
|
||||
/** Rouble price - same as requirementsCost */
|
||||
[JsonPropertyName("summaryCost")]
|
||||
public decimal SummaryCost { get; set; }
|
||||
|
||||
[JsonPropertyName("user")]
|
||||
public RagfairOfferUser User { get; set; }
|
||||
|
||||
/** Trader only */
|
||||
[JsonPropertyName("unlimitedCount")]
|
||||
public bool? UnlimitedCount { get; set; }
|
||||
|
||||
[JsonPropertyName("loyaltyLevel")]
|
||||
public int LoyaltyLevel { get; set; }
|
||||
|
||||
[JsonPropertyName("buyRestrictionMax")]
|
||||
public int? BuyRestrictionMax { get; set; }
|
||||
|
||||
[JsonPropertyName("buyRestrictionCurrent")]
|
||||
public int? BuyRestrictionCurrent { get; set; }
|
||||
|
||||
[JsonPropertyName("locked")]
|
||||
public bool? Locked { get; set; }
|
||||
}
|
||||
|
||||
public class OfferRequirement
|
||||
{
|
||||
[JsonPropertyName("_tpl")]
|
||||
public string Template { get; set; }
|
||||
|
||||
[JsonPropertyName("count")]
|
||||
public int Count { get; set; }
|
||||
|
||||
[JsonPropertyName("onlyFunctional")]
|
||||
public bool OnlyFunctional { get; set; }
|
||||
|
||||
[JsonPropertyName("level")]
|
||||
public int? Level { get; set; }
|
||||
|
||||
[JsonPropertyName("side")]
|
||||
public DogtagExchangeSide? Side { get; set; }
|
||||
}
|
||||
|
||||
public class RagfairOfferUser
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("nickname")]
|
||||
public string? Nickname { get; set; }
|
||||
|
||||
[JsonPropertyName("rating")]
|
||||
public decimal? Rating { get; set; }
|
||||
|
||||
[JsonPropertyName("memberType")]
|
||||
public MemberCategory MemberType { get; set; }
|
||||
|
||||
[JsonPropertyName("selectedMemberCategory")]
|
||||
public MemberCategory? SelectedMemberCategory { get; set; }
|
||||
|
||||
[JsonPropertyName("avatar")]
|
||||
public string? Avatar { get; set; }
|
||||
|
||||
[JsonPropertyName("isRatingGrowing")]
|
||||
public bool? IsRatingGrowing { get; set; }
|
||||
|
||||
[JsonPropertyName("aid")]
|
||||
public int? Aid { get; set; }
|
||||
}
|
||||
|
||||
public class SellResult
|
||||
{
|
||||
[JsonPropertyName("sellTime")]
|
||||
public long SellTime { get; set; }
|
||||
|
||||
[JsonPropertyName("amount")]
|
||||
public decimal Amount { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace Core.Models.Enums;
|
||||
|
||||
public enum BonusSkillType
|
||||
{
|
||||
Physical,
|
||||
Combat,
|
||||
Special,
|
||||
Practical,
|
||||
Mental
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
namespace Core.Models.Enums;
|
||||
|
||||
public enum BonusType
|
||||
{
|
||||
EnergyRegeneration,
|
||||
HydrationRegeneration,
|
||||
HealthRegeneration,
|
||||
ExperienceRate,
|
||||
QuestMoneyReward,
|
||||
ScavCooldownTimer,
|
||||
UnlockItemCraft,
|
||||
UnlockItemPassiveCreation,
|
||||
UnlockRandomItemCreation,
|
||||
SkillLevelingBoost,
|
||||
DebuffEndDelay,
|
||||
RagfairCommission,
|
||||
InsuranceReturnTime,
|
||||
UnlockWeaponModification,
|
||||
UnlockScavPlay,
|
||||
UnlockAddOffer,
|
||||
UnlockItemCharge,
|
||||
ReceiveItemBonus,
|
||||
UnlockUniqueId,
|
||||
IncreaseCanisterSlots,
|
||||
AdditionalSlots,
|
||||
FuelConsumption,
|
||||
RepairWeaponBonus,
|
||||
RepairArmorBonus,
|
||||
UnlockWeaponRepair,
|
||||
UnlockArmorRepair,
|
||||
StashSize,
|
||||
MaximumEnergyReserve,
|
||||
TextBonus,
|
||||
SkillGroupLevelingBoost,
|
||||
StashRows
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace Core.Models.Enums;
|
||||
|
||||
public enum DogtagExchangeSide
|
||||
{
|
||||
Usec,
|
||||
Bear,
|
||||
Any
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
namespace Core.Models.Enums;
|
||||
|
||||
public enum ELocationName
|
||||
{
|
||||
factory4_day,
|
||||
factory4_night,
|
||||
bigmap,
|
||||
Woods,
|
||||
Shoreline,
|
||||
Sandbox,
|
||||
Interchange,
|
||||
Lighthouse,
|
||||
laboratory,
|
||||
RezervBase,
|
||||
TarkovStreets,
|
||||
any
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
namespace Core.Models.Enums;
|
||||
|
||||
public enum HideoutAreas
|
||||
{
|
||||
NOTSET = -1,
|
||||
VENTS = 0,
|
||||
SECURITY = 1,
|
||||
LAVATORY = 2,
|
||||
STASH = 3,
|
||||
GENERATOR = 4,
|
||||
HEATING = 5,
|
||||
WATER_COLLECTOR = 6,
|
||||
MEDSTATION = 7,
|
||||
NUTRITION_UNIT = 8,
|
||||
REST_SPACE = 9,
|
||||
WORKBENCH = 10,
|
||||
INTEL_CENTER = 11,
|
||||
SHOOTING_RANGE = 12,
|
||||
LIBRARY = 13,
|
||||
SCAV_CASE = 14,
|
||||
ILLUMINATION = 15,
|
||||
PLACE_OF_FAME = 16,
|
||||
AIR_FILTERING = 17,
|
||||
SOLAR_POWER = 18,
|
||||
BOOZE_GENERATOR = 19,
|
||||
BITCOIN_FARM = 20,
|
||||
CHRISTMAS_TREE = 21,
|
||||
EMERGENCY_WALL = 22,
|
||||
GYM = 23,
|
||||
WEAPON_STAND = 24,
|
||||
WEAPON_STAND_SECONDARY = 25,
|
||||
EQUIPMENT_PRESETS_STAND = 26,
|
||||
CIRCLE_OF_CULTISTS = 27,
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
namespace Core.Models.Enums;
|
||||
|
||||
public enum MemberCategory
|
||||
{
|
||||
DEFAULT = 0,
|
||||
DEVELOPER = 1,
|
||||
UNIQUE_ID = 2,
|
||||
TRADER = 4,
|
||||
GROUP = 8,
|
||||
SYSTEM = 16,
|
||||
CHAT_MODERATOR = 32,
|
||||
CHAT_MODERATOR_WITH_PERMANENT_BAN = 64,
|
||||
UNIT_TEST = 128,
|
||||
SHERPA = 256,
|
||||
EMISSARY = 512,
|
||||
UNHEARD = 1024,
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
namespace Core.Models.Enums;
|
||||
|
||||
public enum QuestRewardType
|
||||
{
|
||||
Skill,
|
||||
Experience,
|
||||
TraderStanding,
|
||||
TraderUnlock,
|
||||
Item,
|
||||
AssortmentUnlock,
|
||||
ProductionScheme,
|
||||
TraderStandingReset,
|
||||
TraderStandingRestore,
|
||||
StashRows,
|
||||
Achievement,
|
||||
Pockets
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace Core.Models.Enums;
|
||||
|
||||
public enum QuestStatus
|
||||
{
|
||||
Locked = 0,
|
||||
AvailableForStart = 1,
|
||||
Started = 2,
|
||||
AvailableForFinish = 3,
|
||||
Success = 4,
|
||||
Fail = 5,
|
||||
FailRestartable = 6,
|
||||
MarkedAsFailed = 7,
|
||||
Expired = 8,
|
||||
AvailableAfter = 9,
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
namespace Core.Models.Enums;
|
||||
|
||||
public enum QuestTypeEnum
|
||||
{
|
||||
PickUp,
|
||||
Elimination,
|
||||
Discover,
|
||||
Completion,
|
||||
Exploration,
|
||||
Levelling,
|
||||
Experience,
|
||||
Standing,
|
||||
Loyalty,
|
||||
Merchant,
|
||||
Skill,
|
||||
Multi,
|
||||
WeaponAssembly
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Core.Models.Eft.Common.Tables;
|
||||
|
||||
namespace Core.Models.Spt.Bots;
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Core.Models.Eft.Common.Tables;
|
||||
|
||||
namespace Core.Models.Spt.Quests;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
using Core.Models.Enums;
|
||||
|
||||
namespace Core.Models.Spt.Repeatable;
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Core.Models.Eft.Common;
|
||||
using Core.Models.Eft.Common.Tables;
|
||||
|
||||
namespace Core.Models.Spt.Server;
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_EXISTING_ATTRIBUTE_ARRANGEMENT/@EntryValue">True</s:Boolean>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSOR_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSORHOLDER_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
|
||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String></wpf:ResourceDictionary>
|
||||
Reference in New Issue
Block a user