From 9bf3dbdf69913aa5311828aebfdf6c0067e7efc8 Mon Sep 17 00:00:00 2001 From: alydev Date: Fri, 27 Feb 2026 22:56:00 +1000 Subject: [PATCH] muffin v7.4.14 --- .../Interact.cs | 25 ++++++++++++++----- .../Questionable.Controller/FateController.cs | 11 ++++++-- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/Questionable/Questionable.Controller.Steps.Interactions/Interact.cs b/Questionable/Questionable.Controller.Steps.Interactions/Interact.cs index cd86c1b..4fbd768 100644 --- a/Questionable/Questionable.Controller.Steps.Interactions/Interact.cs +++ b/Questionable/Questionable.Controller.Steps.Interactions/Interact.cs @@ -107,11 +107,13 @@ internal static class Interact public SkipStepConditions? SkipConditions { get; init; } + public EStatus? RequiredStatusId { get; init; } + public List CompletionQuestVariablesFlags { get; } public bool HasCompletionQuestVariablesFlags { get; } - public Task(uint DataId, Quest? Quest, EInteractionType InteractionType, bool SkipMarkerCheck = false, uint? PickUpItemId = null, byte? TaxiStandId = null, SkipStepConditions? SkipConditions = null, List? CompletionQuestVariablesFlags = null) + public Task(uint DataId, Quest? Quest, EInteractionType InteractionType, bool SkipMarkerCheck = false, uint? PickUpItemId = null, byte? TaxiStandId = null, SkipStepConditions? SkipConditions = null, List? CompletionQuestVariablesFlags = null, EStatus? RequiredStatusId = null) { this.DataId = DataId; this.Quest = Quest; @@ -120,6 +122,7 @@ internal static class Interact this.PickUpItemId = PickUpItemId; this.TaxiStandId = TaxiStandId; this.SkipConditions = SkipConditions; + this.RequiredStatusId = RequiredStatusId; this.CompletionQuestVariablesFlags = CompletionQuestVariablesFlags ?? new List(); HasCompletionQuestVariablesFlags = Quest != null && CompletionQuestVariablesFlags != null && QuestWorkUtils.HasCompletionFlags(CompletionQuestVariablesFlags); base._002Ector(); @@ -136,7 +139,7 @@ internal static class Interact } [CompilerGenerated] - public void Deconstruct(out uint DataId, out Quest? Quest, out EInteractionType InteractionType, out bool SkipMarkerCheck, out uint? PickUpItemId, out byte? TaxiStandId, out SkipStepConditions? SkipConditions, out List? CompletionQuestVariablesFlags) + public void Deconstruct(out uint DataId, out Quest? Quest, out EInteractionType InteractionType, out bool SkipMarkerCheck, out uint? PickUpItemId, out byte? TaxiStandId, out SkipStepConditions? SkipConditions, out List? CompletionQuestVariablesFlags, out EStatus? RequiredStatusId) { DataId = this.DataId; Quest = this.Quest; @@ -146,6 +149,7 @@ internal static class Interact TaxiStandId = this.TaxiStandId; SkipConditions = this.SkipConditions; CompletionQuestVariablesFlags = this.CompletionQuestVariablesFlags; + RequiredStatusId = this.RequiredStatusId; } } @@ -224,11 +228,20 @@ internal static class Interact } _needsUnmount = false; } + EStatus? requiredStatusId = base.Task.RequiredStatusId; + if (requiredStatusId.HasValue) + { + EStatus valueOrDefault = requiredStatusId.GetValueOrDefault(); + if (gameFunctions.HasStatus(valueOrDefault)) + { + return ETaskResult.TaskComplete; + } + } uint? pickUpItemId = base.Task.PickUpItemId; if (pickUpItemId.HasValue) { - uint valueOrDefault = pickUpItemId.GetValueOrDefault(); - if (InventoryManager.Instance()->GetInventoryItemCount(valueOrDefault, isHq: false, checkEquipped: true, checkArmory: true, 0) > 0) + uint valueOrDefault2 = pickUpItemId.GetValueOrDefault(); + if (InventoryManager.Instance()->GetInventoryItemCount(valueOrDefault2, isHq: false, checkEquipped: true, checkArmory: true, 0) > 0) { return ETaskResult.TaskComplete; } @@ -238,8 +251,8 @@ internal static class Interact byte? taxiStandId = base.Task.TaxiStandId; if (taxiStandId.HasValue) { - byte valueOrDefault2 = taxiStandId.GetValueOrDefault(); - if (UIState.Instance()->IsChocoboTaxiStandUnlocked((uint)(valueOrDefault2 + 1179648))) + byte valueOrDefault3 = taxiStandId.GetValueOrDefault(); + if (UIState.Instance()->IsChocoboTaxiStandUnlocked((uint)(valueOrDefault3 + 1179648))) { return ETaskResult.TaskComplete; } diff --git a/Questionable/Questionable.Controller/FateController.cs b/Questionable/Questionable.Controller/FateController.cs index b072c7d..2bb30a3 100644 --- a/Questionable/Questionable.Controller/FateController.cs +++ b/Questionable/Questionable.Controller/FateController.cs @@ -102,10 +102,17 @@ internal sealed class FateController : MiniTaskController } if (_currentFate.RequiredStatusId.HasValue && _currentFate.TransformNpcDataId.HasValue && _currentFate.TransformNpcPosition.HasValue && !_gameFunctions.HasStatus(_currentFate.RequiredStatusId.Value)) { - _logger.LogInformation("Player missing required status {StatusId}, enqueuing transform", _currentFate.RequiredStatusId.Value); + ILogger logger = _logger; + object[] array = new object[1]; + EStatus? requiredStatusId = _currentFate.RequiredStatusId; + array[0] = requiredStatusId.Value; + logger.LogInformation("Player missing required status {StatusId}, enqueuing transform", array); _taskQueue.Enqueue(new MoveTask(_currentFate.TerritoryId, _currentFate.TransformNpcPosition.Value, null, 3f)); _taskQueue.Enqueue(new Mount.UnmountTask()); - _taskQueue.Enqueue(new Interact.Task(_currentFate.TransformNpcDataId.Value, null, EInteractionType.Interact, SkipMarkerCheck: true)); + TaskQueue taskQueue = _taskQueue; + uint value = _currentFate.TransformNpcDataId.Value; + requiredStatusId = _currentFate.RequiredStatusId.Value; + taskQueue.Enqueue(new Interact.Task(value, null, EInteractionType.Interact, SkipMarkerCheck: true, null, null, null, null, requiredStatusId)); _taskQueue.Enqueue(new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(2L))); } _taskQueue.Enqueue(new MoveTask(_currentFate.TerritoryId, _currentFate.Position, null, 5f));