using System.Text.Json.Serialization;
using Core.Models.Common;
using Core.Models.Enums;
namespace Core.Models.Spt.Services;
public record LootRequest
{
///
/// Count of weapons to generate
///
[JsonPropertyName("weaponPresetCount")]
public MinMax? WeaponPresetCount
{
get;
set;
}
///
/// Count of armor to generate
///
[JsonPropertyName("armorPresetCount")]
public MinMax? ArmorPresetCount
{
get;
set;
}
///
/// Count of items to generate
///
[JsonPropertyName("itemCount")]
public MinMax? ItemCount
{
get;
set;
}
///
/// Count of sealed weapon crates to generate
///
[JsonPropertyName("weaponCrateCount")]
public MinMax? WeaponCrateCount
{
get;
set;
}
///
/// Item tpl blacklist to exclude
///
[JsonPropertyName("itemBlacklist")]
public HashSet? ItemBlacklist
{
get;
set;
}
///
/// Item tpl whitelist to pick from
///
[JsonPropertyName("itemTypeWhitelist")]
public List? ItemTypeWhitelist
{
get;
set;
}
///
/// key: item base type: value: max count
///
[JsonPropertyName("itemLimits")]
public Dictionary? ItemLimits
{
get;
set;
}
[JsonPropertyName("itemStackLimits")]
public Dictionary>? ItemStackLimits
{
get;
set;
}
///
/// Allowed armor plate levels 2/3/4/5/6 for armor generated
///
[JsonPropertyName("armorLevelWhitelist")]
public List? ArmorLevelWhitelist
{
get;
set;
}
///
/// Should boss items be included in allowed items
///
[JsonPropertyName("allowBossItems")]
public bool? AllowBossItems
{
get;
set;
}
///
/// Should item.json item reward blacklist be used
///
[JsonPropertyName("useRewardItemBlacklist")]
public bool? UseRewardItemBlacklist
{
get;
set;
}
///
/// Should forced loot be used instead of randomised loot
///
[JsonPropertyName("useForcedLoot")]
public bool? UseForcedLoot
{
get;
set;
}
///
/// Item tpls + count of items to force include
///
[JsonPropertyName("forcedLoot")]
public Dictionary>? ForcedLoot
{
get;
set;
}
///
/// Should seasonal items appear when it's not the season for them
///
[JsonPropertyName("blockSeasonalItemsOutOfSeason")]
public bool? BlockSeasonalItemsOutOfSeason
{
get;
set;
}
}
public record AirdropLootRequest : LootRequest
{
///
/// Airdrop icon used by client to show crate type
///
[JsonPropertyName("icon")]
public AirdropTypeEnum? Icon
{
get;
set;
}
}