diff --git a/CraftingSequence/CraftingSequenceExecutor.cs b/CraftingSequence/CraftingSequenceExecutor.cs index f21b41f..5bd3451 100644 --- a/CraftingSequence/CraftingSequenceExecutor.cs +++ b/CraftingSequence/CraftingSequenceExecutor.cs @@ -241,7 +241,7 @@ private static async SyncTask EvaluateConditionsAsync(CraftingStep current private static async SyncTask EvaluateConditionsAsync(List groups, CancellationToken cancellationToken) { - var andResult = true; // Start true for AND logic + var hasOrGroup = false; var orResult = false; // Start false for OR logic foreach (var group in groups) @@ -258,12 +258,19 @@ private static async SyncTask EvaluateConditionsAsync(List= group.ConditionalsToBePassForSuccess; + var andResult = trueCount.trueCount >= group.ConditionalsToBePassForSuccess; Logging.Logging.LogMessage($"AND Group Result: {andResult} (True Count: {trueCount.trueCount}, Required: {group.ConditionalsToBePassForSuccess})", LogMessageType.Evaluation); + if (!andResult) + { + Logging.Logging.LogMessage("Exiting early due to AND group result being false", LogMessageType.Evaluation); + return false; + } + break; case ConditionGroup.OR: + hasOrGroup = true; orResult |= trueCount.trueCount >= group.ConditionalsToBePassForSuccess; Logging.Logging.LogMessage($"OR Group Result: {orResult} (True Count: {trueCount.trueCount}, Required: {group.ConditionalsToBePassForSuccess})", LogMessageType.Evaluation); @@ -281,15 +288,9 @@ private static async SyncTask EvaluateConditionsAsync(List