using System.Text.Json.Serialization; using SPTarkov.Server.Core.Models.Common; using SPTarkov.Server.Core.Models.Eft.Common.Tables; namespace SPTarkov.Server.Core.Models.Spt.Bots; public record GenerateWeaponRequest { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } /// /// Weapon to add mods to / result that is returned /// [JsonPropertyName("weapon")] public List? Weapon { get; set; } /// /// Pool of compatible mods to attach to weapon /// [JsonPropertyName("modPool")] public GlobalMods? ModPool { get; set; } /// /// ParentId of weapon /// [JsonPropertyName("weaponId")] public string? WeaponId { get; set; } /// /// Weapon which mods will be generated on /// [JsonPropertyName("parentTemplate")] public TemplateItem? ParentTemplate { get; set; } /// /// Chance values mod will be added /// [JsonPropertyName("modSpawnChances")] public Dictionary? ModSpawnChances { get; set; } /// /// Ammo tpl to use when generating magazines/cartridges /// [JsonPropertyName("ammoTpl")] public MongoId? AmmoTpl { get; set; } /// /// Bot-specific properties /// [JsonPropertyName("botData")] public BotData? BotData { get; set; } /// /// limits placed on certain mod types per gun /// [JsonPropertyName("modLimits")] public BotModLimits? ModLimits { get; set; } /// /// Info related to the weapon being generated /// [JsonPropertyName("weaponStats")] public WeaponStats? WeaponStats { get; set; } /// /// Array of item tpls the weapon does not support /// [JsonPropertyName("conflictingItemTpls")] public HashSet? ConflictingItemTpls { get; set; } } public record BotData { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } /// /// Role of bot weapon is generated for /// [JsonPropertyName("role")] public string? Role { get; set; } /// /// Level of the bot weapon is being generated for /// [JsonPropertyName("level")] public int? Level { get; set; } /// /// role of bot when accessing bot.json equipment config settings /// [JsonPropertyName("equipmentRole")] public string? EquipmentRole { get; set; } } public record WeaponStats { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("hasOptic")] public bool? HasOptic { get; set; } [JsonPropertyName("hasFrontIronSight")] public bool? HasFrontIronSight { get; set; } [JsonPropertyName("hasRearIronSight")] public bool? HasRearIronSight { get; set; } } public record BotModLimits { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("scope")] public ItemCount? Scope { get; set; } [JsonPropertyName("scopeMax")] public int? ScopeMax { get; set; } [JsonPropertyName("scopeBaseTypes")] public List? ScopeBaseTypes { get; set; } [JsonPropertyName("flashlightLaser")] public ItemCount? FlashlightLaser { get; set; } [JsonPropertyName("flashlightLaserMax")] public int? FlashlightLaserMax { get; set; } [JsonPropertyName("flashlightLaserBaseTypes")] public List? FlashlightLaserBaseTypes { get; set; } } public record ItemCount { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("count")] public int? Count { get; set; } }