using Core.Annotations; using Core.Models.Eft.Common.Tables; using Core.Models.Eft.Hideout; using Core.Models.Spt.Hideout; namespace Core.Generators; [Injectable] public class ScavCaseRewardGenerator() { /// /// Create an array of rewards that will be given to the player upon completing their scav case build /// /// recipe of the scav case craft /// Product array public List> Generate(string recipeId) { throw new NotImplementedException(); } /// /// Get all db items that are not blacklisted in scavcase config or global blacklist /// Store in class field /// protected void CacheDbItems() { throw new NotImplementedException(); } /// /// Pick a number of items to be rewards, the count is defined by the values in `itemFilters` param /// /// item pool to pick rewards from /// how the rewards should be filtered down (by item count) /// protected List PickRandomRewards( List items, RewardCountAndPriceDetails itemFilters, string rarity) { throw new NotImplementedException(); } /// /// Choose if money should be a reward based on the moneyRewardChancePercent config chance in scavCaseConfig /// /// true if reward should be money protected bool RewardShouldBeMoney() { throw new NotImplementedException(); } /// /// Choose if ammo should be a reward based on the ammoRewardChancePercent config chance in scavCaseConfig /// /// true if reward should be ammo protected bool RewardShouldBeAmmo() { throw new NotImplementedException(); } /// /// Choose from rouble/dollar/euro at random /// protected TemplateItem GetRandomMoney() { throw new NotImplementedException(); } /// /// Get a random ammo from items.json that is not in the ammo blacklist AND inside the price range defined in scavcase.json config /// /// The rarity this ammo reward is for /// random ammo item from items.json protected TemplateItem GetRandomAmmo(string rarity) { throw new NotImplementedException(); } /// /// Take all the rewards picked create the Product object array ready to return to calling code /// Also add a stack count to ammo and money /// /// items to convert /// Product array protected List> RandomiseContainerItemRewards(List rewardItems, string rarity) { throw new NotImplementedException(); } /// /// /// all items from the items.json /// controls how the dbItems will be filtered and returned (handbook price) /// filtered dbItems array protected List GetFilteredItemsByPrice( List dbItems, RewardCountAndPriceDetails itemFilters) { throw new NotImplementedException(); } /// /// Gathers the reward min and max count params for each reward quality level from config and scavcase.json into a single object /// /// production.json/scavRecipes object /// ScavCaseRewardCountsAndPrices object protected ScavCaseRewardCountsAndPrices GetScavCaseRewardCountsAndPrices(ScavRecipe scavCaseDetails) { throw new NotImplementedException(); } /// /// Randomises the size of ammo and money stacks /// /// ammo or money item /// rarity (common/rare/superrare) /// value to set stack count to protected int GetRandomAmountRewardForScavCase(TemplateItem itemToCalculate, string rarity) { throw new NotImplementedException(); } }