using Core.Annotations; using Core.Models.Spt.Config; using Core.Models.Utils; using Core.Utils; using Core.Utils.Cloners; using Core.Utils.Collections; namespace Core.Helpers; [Injectable] public class RepeatableQuestHelper { protected ISptLogger _logger; protected ICloner _cloner; protected MathUtil _mathUtil; public RepeatableQuestHelper( ISptLogger logger, ICloner cloner, MathUtil mathUtil ) { _logger = logger; _cloner = cloner; _mathUtil = mathUtil; } /// /// Get the relevant elimination config based on the current players PMC level /// /// Level of PMC character /// Main repeatable config /// EliminationConfig public EliminationConfig? GetEliminationConfigByPmcLevel(int pmcLevel, RepeatableQuestConfig repeatableConfig) { return repeatableConfig.QuestConfig.Elimination.FirstOrDefault( (x) => pmcLevel >= x.LevelRange.Min && pmcLevel <= x.LevelRange.Max ); } public ProbabilityObjectArray ProbabilityObjectArray( List? configArrayInput ) where T : ProbabilityObject { var configArray = _cloner.Clone(configArrayInput); var probabilityArray = new ProbabilityObjectArray(_mathUtil, _cloner, configArray); return probabilityArray; } }