using System.Text.Json.Serialization; using Core.Models.Eft.Common.Tables; namespace Core.Models.Spt.Bots; public class GenerateWeaponRequest { /** 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 string? 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 List? ConflictingItemTpls { get; set; } } public class BotData { /** 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 class WeaponStats { [JsonPropertyName("hasOptic")] public bool? HasOptic { get; set; } [JsonPropertyName("hasFrontIronSight")] public bool? HasFrontIronSight { get; set; } [JsonPropertyName("hasRearIronSight")] public bool? HasRearIronSight { get; set; } } public class BotModLimits { [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 class ItemCount { [JsonPropertyName("count")] public int? Count { get; set; } }