From 02dc5ed8821703211184d0632c4bb1d6b4cf688b Mon Sep 17 00:00:00 2001 From: Chomp Date: Sat, 18 Jan 2025 12:00:49 +0000 Subject: [PATCH] Further repeatable quest improvements --- Core/Models/Spt/Repeatable/QuestTypePool.cs | 6 +++++- Core/Utils/Collections/ProbabilityObjectArray.cs | 9 ++++----- Core/Utils/Extensions/EliminationTargetPoolExtensions.cs | 4 ++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Core/Models/Spt/Repeatable/QuestTypePool.cs b/Core/Models/Spt/Repeatable/QuestTypePool.cs index 25a34a87..ccee6fb1 100644 --- a/Core/Models/Spt/Repeatable/QuestTypePool.cs +++ b/Core/Models/Spt/Repeatable/QuestTypePool.cs @@ -74,12 +74,16 @@ public record EliminationTargetPool [JsonPropertyName("bossBoarSniper")] public TargetLocation? BossBoarSniper { get; set; } - public EliminationTargetPool this[string toLower] + public EliminationTargetPool? this[string toLower] { get { return (EliminationTargetPool?)GetType().GetProperties().SingleOrDefault(p => p.GetJsonName() == toLower)?.GetValue(this); } + set + { + // Implement + } } } diff --git a/Core/Utils/Collections/ProbabilityObjectArray.cs b/Core/Utils/Collections/ProbabilityObjectArray.cs index 74ada0fb..e8e496fe 100644 --- a/Core/Utils/Collections/ProbabilityObjectArray.cs +++ b/Core/Utils/Collections/ProbabilityObjectArray.cs @@ -133,13 +133,12 @@ public class ProbabilityObjectArray : List where T : ProbabilityObje * Drawing can be with or without replacement * @param count The number of times we want to draw * @param replacement Draw with or without replacement from the input dict (true = dont remove after drawing) - * @param locklist list keys which shall be replaced even if drawing without replacement + * @param lockList list keys which shall be replaced even if drawing without replacement * @returns Array consisting of N random keys for this ProbabilityObjectArray */ - public List Draw(int count = 1, bool replacement = true, List? locklist = null) + public List Draw(int count = 1, bool replacement = true, List? lockList = null) { - if (locklist == null) - locklist = new List(); + lockList ??= []; if (Count == 0) { return []; @@ -163,7 +162,7 @@ public class ProbabilityObjectArray : List where T : ProbabilityObje var rand = Random.Shared.NextDouble(); var randomIndex = (int)probCumsum.First((x) => x > rand); // We cannot put Math.random() directly in the findIndex because then it draws anew for each of its iteration - if (replacement || locklist.Contains(totals.keyArray[randomIndex])) + if (replacement || lockList.Contains(totals.keyArray[randomIndex])) { // Add random item from possible value into return array drawnKeys.Add(totals.keyArray[randomIndex]); diff --git a/Core/Utils/Extensions/EliminationTargetPoolExtensions.cs b/Core/Utils/Extensions/EliminationTargetPoolExtensions.cs index 82c56e8b..c9c003dc 100644 --- a/Core/Utils/Extensions/EliminationTargetPoolExtensions.cs +++ b/Core/Utils/Extensions/EliminationTargetPoolExtensions.cs @@ -4,9 +4,9 @@ namespace Core.Utils.Extensions { public static class EliminationTargetPoolExtensions { - public static void Remove(this EliminationTargetPool pool, T key) + public static void Remove(this EliminationTargetPool pool, string key) { - // TODO: Implement + pool[key] = null; } } }