using Core.Models.Eft.Common.Tables;
using Core.Models.Enums;
using Core.Models.Spt.Bots;
using Core.Models.Spt.Config;
namespace Core.Generators;
public class BotLootGenerator
{
private BotConfig _botConfig;
private PmcConfig _pmcConfig;
public BotLootGenerator()
{
}
///
///
///
///
///
///
public ItemSpawnLimitSettings GetItemSpawnLimitsForBot(string botRole)
{
throw new NotImplementedException();
}
///
/// Add loot to bots containers
///
/// Session id
/// Base json db file for the bot having its loot generated
/// Will bot be a pmc
/// Role of bot, e.g. asssult
/// Inventory to add loot to
/// Level of bot
public void GenerateLoot(string sessionId, BotType botJsonTemplate, bool isPmc, string botRole, BotBaseInventory botInventory, int botLevel)
{
throw new NotImplementedException();
}
///
/// Gets the rouble cost total for loot in a bots backpack by the bots levl
/// Will return 0 for non PMCs
///
/// Bots level
/// Is the bot a PMC
/// int
public int GetBackpackRoubleTotalByLevel(int botLevel, bool isPmc)
{
throw new NotImplementedException();
}
///
///
///
///
///
///
public List GetAvailableContainersBotCanStoreItemsIn(BotBaseInventory botInventory)
{
throw new NotImplementedException();
}
///
/// Force healing items onto bot to ensure they can heal in-raid
///
/// Inventory to add items to
/// Role of bot (pmcBEAR/pmcUSEC)
public void AddForcedMedicalItemsToPmcSecure(BotBaseInventory botInventory, string botRole)
{
throw new NotImplementedException();
}
///
/// Take random items from a pool and add to an inventory until totalItemCount or totalValueLimit or space limit is reached
///
/// Pool of items to pick from with weight
/// What equipment slot will the loot items be added to
/// Max count of items to add
/// Bot inventory loot will be added to
/// Role of the bot loot is being generated for (assault/pmcbot)
/// Item spawn limits the bot must adhere to
///
/// Total value of loot allowed in roubles
/// Is bot being generated for a pmc
///
public void AddLootFromPool(Dictionary pool, List equipmentSlots, int totalItemCount,
BotBaseInventory inventoryToAddItemsTo, // TODO: type for containersIdFull was Set
string botRole, ItemSpawnLimitSettings? itemSpawnLimits, List containersIdFull, int totalValueLimitRub = 0, bool isPmc = false)
{
throw new NotImplementedException();
}
///
///
///
///
///
///
public List> CrateWalletLoot(string walletId)
{
throw new NotImplementedException();
}
///
/// Some items need child items to function, add them to the itemToAddChildrenTo array
///
/// Db template of item to check
/// Item to add children to
/// Is the item being generated for a pmc (affects money/ammo stack sizes)
/// role bot has that owns item
public void AddRequiredChildItemsToParent(TemplateItem itemToAddTemplate, List- itemToAddChildrenTo, bool isPmc, string botRole)
{
throw new NotImplementedException();
}
///
/// Add generated weapons to inventory as loot
///
///
/// inventory to add preset to
/// slot to place the preset in (backpack)
/// bots template, assault.json
/// chances for mods to spawn on weapon
/// bots role .e.g. pmcBot
/// are we generating for a pmc
///
///
public void AddLooseWeaponsToInventorySlot(string sessionId, BotBaseInventory botInventory, string equipmentSlot,
BotBaseInventory templateInventory, // TODO: type for containersIdFull was Set
Dictionary modsChances, string botRole, bool isPmc, int botLevel, List? containersIdFull)
{
throw new NotImplementedException();
}
///
/// Hydrate item limit array to contain items that have a limit for a specific bot type
/// All values are set to 0
///
/// Role the bot has
///
public void InitItemLimitArray(string botRole, Dictionary limitCount)
{
throw new NotImplementedException();
}
///
/// Check if an item has reached its bot-specific spawn limit
///
/// Item we check to see if its reached spawn limit
/// Bot type
///
/// true if item has reached spawn limit
public bool ItemHasReachedSpawnLimit(TemplateItem itemTemplate, string botRole, ItemSpawnLimitSettings itemSpawnLimits)
{
throw new NotImplementedException();
}
///
/// Randomise the stack size of a money object, uses different values for pmc or scavs
///
/// Role bot has that has money stack
/// item details from db
/// Money item to randomise
public void RandomiseMoneyStackSize(string botRole, TemplateItem itemTemplate, Item moneyItem)
{
throw new NotImplementedException();
}
///
/// Randomise the size of an ammo stack
///
/// Is ammo on a PMC bot
/// item details from db
/// Ammo item to randomise
public void RandomiseAmmoStackSize(bool isPmc, TemplateItem itemTemplate, Item ammoItem)
{
throw new NotImplementedException();
}
///
/// Get spawn limits for a specific bot type from bot.json config
/// If no limit found for a non pmc bot, fall back to defaults
///
/// what role does the bot have
/// Dictionary of tplIds and limit
public Dictionary GetItemSpawnLimitsForBotType(string botRole)
{
throw new NotImplementedException();
}
///
/// Get the parentId or tplId of item inside spawnLimits object if it exists
///
/// item we want to look for in spawn limits
/// Limits to check for item
/// id as string, otherwise undefined
public string? GetMatchingIdFromSpawnLimits(TemplateItem itemTemplate, Dictionary spawnLimits)
{
throw new NotImplementedException();
}
}