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(); } }