using SPTarkov.Server.Core.Models.Eft.Common.Tables; namespace SPTarkov.Server.Core.Extensions { public static class QuestConditionExtensions { /// /// Get all quest conditions from provided list /// /// Input conditions /// OPTIONAL - Additional filter code to run /// public static List GetQuestConditions( this IEnumerable questConditions, Func>? furtherFilter = null ) { return FilterConditions(questConditions, "Quest", furtherFilter); } public static List GetLevelConditions( this IEnumerable questConditions, Func>? furtherFilter = null ) { return FilterConditions(questConditions, "Level", furtherFilter); } public static List GetLoyaltyConditions( this IEnumerable questConditions, Func>? furtherFilter = null ) { return FilterConditions(questConditions, "TraderLoyalty", furtherFilter); } public static List GetStandingConditions( this IEnumerable questConditions, Func>? furtherFilter = null ) { return FilterConditions(questConditions, "TraderStanding", furtherFilter); } private static List FilterConditions( IEnumerable questConditions, string questType, Func>? furtherFilter = null ) { var filteredQuests = questConditions .Where(c => { if (c.ConditionType == questType) // return true or run the passed in function { return furtherFilter is null || furtherFilter(c).Any(); } return false; }) .ToList(); return filteredQuests; } } }