Add a minimum delay to redeeming item rewards
authorLiza Carvelli <liza@carvel.li>
Fri, 3 Jan 2025 10:18:45 +0000 (11:18 +0100)
committerLiza Carvelli <liza@carvel.li>
Fri, 3 Jan 2025 10:18:45 +0000 (11:18 +0100)
Questionable/Controller/Steps/Shared/RedeemRewardItems.cs

index 4d11e72bb6edfda9601f5f3460104f7e22bd7f9f..e03d989da4b27f5e1f50aa38b628c8c3bd5f9f95 100644 (file)
@@ -49,6 +49,7 @@ internal static class RedeemRewardItems
         GameFunctions gameFunctions,
         ICondition condition) : TaskExecutor<Task>
     {
+        private static readonly TimeSpan MinimumCastTime = TimeSpan.FromSeconds(4);
         private DateTime _continueAt;
 
         protected override bool Start()
@@ -56,7 +57,13 @@ internal static class RedeemRewardItems
             if (condition[ConditionFlag.Mounted])
                 return false;
 
-            _continueAt = DateTime.Now.Add(Task.ItemReward.CastTime).AddSeconds(1);
+            TimeSpan castTime = Task.ItemReward.CastTime;
+            if (castTime < MinimumCastTime)
+                castTime = MinimumCastTime;
+
+            _continueAt = DateTime.Now
+                .Add(castTime)
+                .AddSeconds(1);
             return gameFunctions.UseItem(Task.ItemReward.ItemId);
         }