using System.Text.Json.Serialization;
using Core.Models.Eft.Common.Tables;
using Core.Models.Enums;
using Core.Models.Spt.Config;
namespace Core.Models.Spt.Bots;
public record ModToSpawnRequest
{
///
/// Slot mod will fit into
///
[JsonPropertyName("modSlot")]
public string? ModSlot
{
get;
set;
}
///
/// Will generate a randomised mod pool if true
///
[JsonPropertyName("isRandomisableSlot")]
public bool? IsRandomisableSlot
{
get;
set;
}
[JsonPropertyName("randomisationSettings")]
public RandomisationDetails? RandomisationSettings
{
get;
set;
}
///
/// Parent slot the item will be a part of
///
[JsonPropertyName("botWeaponSightWhitelist")]
public Dictionary>? BotWeaponSightWhitelist
{
get;
set;
}
///
/// Blacklist to prevent mods from being picked
///
[JsonPropertyName("botEquipBlacklist")]
public EquipmentFilterDetails? BotEquipBlacklist
{
get;
set;
}
///
/// Pool of items to pick from
///
[JsonPropertyName("itemModPool")]
public Dictionary>? ItemModPool
{
get;
set;
}
///
/// List with only weapon tpl in it, ready for mods to be added
///
[JsonPropertyName("weapon")]
public List- ? Weapon
{
get;
set;
}
///
/// Ammo tpl to use if slot requires a cartridge to be added (e.g. mod_magazine)
///
[JsonPropertyName("ammoTpl")]
public string? AmmoTpl
{
get;
set;
}
///
/// Parent item the mod will go into
///
[JsonPropertyName("parentTemplate")]
public TemplateItem? ParentTemplate
{
get;
set;
}
///
/// Should mod be spawned/skipped/use default
///
[JsonPropertyName("modSpawnResult")]
public ModSpawn? ModSpawnResult
{
get;
set;
}
///
/// Weapon stats for weapon being generated
///
[JsonPropertyName("weaponStats")]
public WeaponStats? WeaponStats
{
get;
set;
}
///
/// List of item tpls the weapon does not support
///
[JsonPropertyName("conflictingItemTpls")]
public HashSet? ConflictingItemTpls
{
get;
set;
}
[JsonPropertyName("botData")]
public BotData? BotData
{
get;
set;
}
}