diff --git a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/CompletionQuestGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/CompletionQuestGenerator.cs index c3b76f91..11262246 100644 --- a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/CompletionQuestGenerator.cs +++ b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGeneration/CompletionQuestGenerator.cs @@ -17,13 +17,13 @@ public class CompletionQuestGenerator( RepeatableQuestHelper repeatableQuestHelper, RepeatableQuestRewardGenerator repeatableQuestRewardGenerator, DatabaseService databaseService, - SeasonalEventService seasonalEventService, + SeasonalEventService seasonalEventService, LocalisationService localisationService, RandomUtil randomUtil, MathUtil mathUtil, HashUtil hashUtil, ItemHelper itemHelper - ) +) { protected const int MaxRandomNumberAttempts = 6; @@ -43,7 +43,7 @@ public class CompletionQuestGenerator( int pmcLevel, string traderId, RepeatableQuestConfig repeatableConfig - ) + ) { var completionConfig = repeatableConfig.QuestConfig.Completion; var levelsConfig = repeatableConfig.RewardScaling.Levels; @@ -58,7 +58,9 @@ public class CompletionQuestGenerator( if (quest is null) { - logger.Error("Quest template null when attempting to create completion operational task."); + logger.Error( + "Quest template null when attempting to create completion operational task." + ); return null; } @@ -69,7 +71,12 @@ public class CompletionQuestGenerator( ); // Filter items within our budget - var (hashSet, budget) = GetItemsWithinBudget(pmcLevel, levelsConfig, roublesConfig, itemsToRetrievePool); + var (hashSet, budget) = GetItemsWithinBudget( + pmcLevel, + levelsConfig, + roublesConfig, + itemsToRetrievePool + ); itemsToRetrievePool = hashSet; // We also have the option to use whitelist and/or blacklist which is defined in repeatableQuests.json as @@ -96,10 +103,13 @@ public class CompletionQuestGenerator( return null; } - var selectedItems = GenerateAvailableForFinish( - quest, completionConfig, repeatableConfig, itemsToRetrievePool.ToList(), budget - ); + quest, + completionConfig, + repeatableConfig, + itemsToRetrievePool.ToList(), + budget + ); quest.Rewards = repeatableQuestRewardGenerator.GenerateReward( pmcLevel, @@ -167,7 +177,8 @@ public class CompletionQuestGenerator( int pmcLevel, List levelsConfig, List roublesConfig, - HashSet itemsToRetrievePool) + HashSet itemsToRetrievePool + ) { // Be fair, don't value the items be more expensive than the reward var multiplier = randomUtil.GetDouble(0.5, 1); @@ -179,9 +190,11 @@ public class CompletionQuestGenerator( roublesBudget = Math.Max(roublesBudget, 5000d); return ( - itemsToRetrievePool.Where(itemTpl => itemHelper.GetItemPrice(itemTpl) < roublesBudget).ToHashSet(), + itemsToRetrievePool + .Where(itemTpl => itemHelper.GetItemPrice(itemTpl) < roublesBudget) + .ToHashSet(), roublesBudget - ); + ); } /// @@ -190,7 +203,10 @@ public class CompletionQuestGenerator( /// Item selection to filter /// Level of pmc /// Filtered selection, or original if null or empty - protected HashSet GetWhitelistedItemSelection(HashSet itemSelection, int pmcLevel) + protected HashSet GetWhitelistedItemSelection( + HashSet itemSelection, + int pmcLevel + ) { var itemWhitelist = databaseService .GetTemplates() @@ -213,7 +229,7 @@ public class CompletionQuestGenerator( { // Whitelist can contain item tpls and item base type ids return itemIdsWhitelisted.Any(v => itemHelper.IsOfBaseclass(x, v)) - || itemIdsWhitelisted.Contains(x); + || itemIdsWhitelisted.Contains(x); }) .ToHashSet(); @@ -230,7 +246,10 @@ public class CompletionQuestGenerator( /// Item selection to filter /// Level of pmc /// Filtered selection, or original if null or empty - protected HashSet GetBlacklistedItemSelection(HashSet itemSelection, int pmcLevel) + protected HashSet GetBlacklistedItemSelection( + HashSet itemSelection, + int pmcLevel + ) { var itemBlacklist = databaseService .GetTemplates() @@ -252,7 +271,7 @@ public class CompletionQuestGenerator( .Where(x => { return itemIdsBlacklisted.All(v => !itemHelper.IsOfBaseclass(x, v)) - || !itemIdsBlacklisted.Contains(x); + || !itemIdsBlacklisted.Contains(x); }) .ToHashSet(); @@ -274,7 +293,7 @@ public class CompletionQuestGenerator( RepeatableQuestConfig repeatableConfig, List itemSelection, double roublesBudget - ) + ) { // Store the indexes of items we are asking player to supply var distinctItemsToRetrieveCount = randomUtil.GetInt(1, completionConfig.UniqueItemCount); @@ -336,11 +355,7 @@ public class CompletionQuestGenerator( // Push a CompletionCondition with the item and the amount of the item into quest chosenRequirementItemsTpls.Add(tplChosen); quest.Conditions.AvailableForFinish.Add( - GenerateCondition( - tplChosen, - value, - repeatableConfig.QuestConfig.Completion - ) + GenerateCondition(tplChosen, value, repeatableConfig.QuestConfig.Completion) ); // Is there budget left for more items diff --git a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs index 36ef7532..f013e7fa 100644 --- a/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs +++ b/Libraries/SPTarkov.Server.Core/Generators/RepeatableQuestGenerator.cs @@ -85,7 +85,9 @@ public class RepeatableQuestGenerator( if (traderId is null) { // TODO: Localize me! - _logger.Error("Could not draw traderId from whitelist during repeatable quest generation"); + _logger.Error( + "Could not draw traderId from whitelist during repeatable quest generation" + ); return null; } diff --git a/Libraries/SPTarkov.Server.Core/Helpers/RepeatableQuestHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/RepeatableQuestHelper.cs index 43776fc6..903b78e4 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/RepeatableQuestHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/RepeatableQuestHelper.cs @@ -13,7 +13,7 @@ namespace SPTarkov.Server.Core.Helpers; [Injectable] public class RepeatableQuestHelper( ISptLogger logger, - DatabaseService databaseService, + DatabaseService databaseService, HashUtil hashUtil, ICloner cloner, ConfigServer configServer @@ -62,22 +62,23 @@ public class RepeatableQuestHelper( /// TraderId that should provide this quest /// Cloned quest template /// - public RepeatableQuest? GetClonedQuestTemplateForType( - RepeatableQuestType type, - string traderId - ) + public RepeatableQuest? GetClonedQuestTemplateForType(RepeatableQuestType type, string traderId) { var quest = type switch { RepeatableQuestType.Elimination => cloner.Clone( - databaseService.GetTemplates().RepeatableQuests?.Templates?.Elimination), + databaseService.GetTemplates().RepeatableQuests?.Templates?.Elimination + ), RepeatableQuestType.Completion => cloner.Clone( - databaseService.GetTemplates().RepeatableQuests?.Templates?.Completion), + databaseService.GetTemplates().RepeatableQuests?.Templates?.Completion + ), RepeatableQuestType.Exploration => cloner.Clone( - databaseService.GetTemplates().RepeatableQuests?.Templates?.Exploration), + databaseService.GetTemplates().RepeatableQuests?.Templates?.Exploration + ), RepeatableQuestType.Pickup => cloner.Clone( - databaseService.GetTemplates().RepeatableQuests?.Templates?.Pickup), - _ => null + databaseService.GetTemplates().RepeatableQuests?.Templates?.Pickup + ), + _ => null, }; if (quest is null) diff --git a/Libraries/SPTarkov.Server.Core/Models/Enums/RepeatableQuestType.cs b/Libraries/SPTarkov.Server.Core/Models/Enums/RepeatableQuestType.cs index 035ffaab..1d6a3764 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Enums/RepeatableQuestType.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Enums/RepeatableQuestType.cs @@ -8,5 +8,5 @@ public enum RepeatableQuestType Elimination, Completion, Exploration, - Pickup + Pickup, }