muffin v7.4.14

This commit is contained in:
alydev 2026-02-27 22:56:00 +10:00
parent 78e48294c5
commit 9bf3dbdf69
2 changed files with 28 additions and 8 deletions

View file

@ -107,11 +107,13 @@ internal static class Interact
public SkipStepConditions? SkipConditions { get; init; } public SkipStepConditions? SkipConditions { get; init; }
public EStatus? RequiredStatusId { get; init; }
public List<QuestWorkValue?> CompletionQuestVariablesFlags { get; } public List<QuestWorkValue?> CompletionQuestVariablesFlags { get; }
public bool HasCompletionQuestVariablesFlags { 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<QuestWorkValue?>? CompletionQuestVariablesFlags = null) public Task(uint DataId, Quest? Quest, EInteractionType InteractionType, bool SkipMarkerCheck = false, uint? PickUpItemId = null, byte? TaxiStandId = null, SkipStepConditions? SkipConditions = null, List<QuestWorkValue?>? CompletionQuestVariablesFlags = null, EStatus? RequiredStatusId = null)
{ {
this.DataId = DataId; this.DataId = DataId;
this.Quest = Quest; this.Quest = Quest;
@ -120,6 +122,7 @@ internal static class Interact
this.PickUpItemId = PickUpItemId; this.PickUpItemId = PickUpItemId;
this.TaxiStandId = TaxiStandId; this.TaxiStandId = TaxiStandId;
this.SkipConditions = SkipConditions; this.SkipConditions = SkipConditions;
this.RequiredStatusId = RequiredStatusId;
this.CompletionQuestVariablesFlags = CompletionQuestVariablesFlags ?? new List<QuestWorkValue>(); this.CompletionQuestVariablesFlags = CompletionQuestVariablesFlags ?? new List<QuestWorkValue>();
HasCompletionQuestVariablesFlags = Quest != null && CompletionQuestVariablesFlags != null && QuestWorkUtils.HasCompletionFlags(CompletionQuestVariablesFlags); HasCompletionQuestVariablesFlags = Quest != null && CompletionQuestVariablesFlags != null && QuestWorkUtils.HasCompletionFlags(CompletionQuestVariablesFlags);
base._002Ector(); base._002Ector();
@ -136,7 +139,7 @@ internal static class Interact
} }
[CompilerGenerated] [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<QuestWorkValue?>? 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<QuestWorkValue?>? CompletionQuestVariablesFlags, out EStatus? RequiredStatusId)
{ {
DataId = this.DataId; DataId = this.DataId;
Quest = this.Quest; Quest = this.Quest;
@ -146,6 +149,7 @@ internal static class Interact
TaxiStandId = this.TaxiStandId; TaxiStandId = this.TaxiStandId;
SkipConditions = this.SkipConditions; SkipConditions = this.SkipConditions;
CompletionQuestVariablesFlags = this.CompletionQuestVariablesFlags; CompletionQuestVariablesFlags = this.CompletionQuestVariablesFlags;
RequiredStatusId = this.RequiredStatusId;
} }
} }
@ -224,11 +228,20 @@ internal static class Interact
} }
_needsUnmount = false; _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; uint? pickUpItemId = base.Task.PickUpItemId;
if (pickUpItemId.HasValue) if (pickUpItemId.HasValue)
{ {
uint valueOrDefault = pickUpItemId.GetValueOrDefault(); uint valueOrDefault2 = pickUpItemId.GetValueOrDefault();
if (InventoryManager.Instance()->GetInventoryItemCount(valueOrDefault, isHq: false, checkEquipped: true, checkArmory: true, 0) > 0) if (InventoryManager.Instance()->GetInventoryItemCount(valueOrDefault2, isHq: false, checkEquipped: true, checkArmory: true, 0) > 0)
{ {
return ETaskResult.TaskComplete; return ETaskResult.TaskComplete;
} }
@ -238,8 +251,8 @@ internal static class Interact
byte? taxiStandId = base.Task.TaxiStandId; byte? taxiStandId = base.Task.TaxiStandId;
if (taxiStandId.HasValue) if (taxiStandId.HasValue)
{ {
byte valueOrDefault2 = taxiStandId.GetValueOrDefault(); byte valueOrDefault3 = taxiStandId.GetValueOrDefault();
if (UIState.Instance()->IsChocoboTaxiStandUnlocked((uint)(valueOrDefault2 + 1179648))) if (UIState.Instance()->IsChocoboTaxiStandUnlocked((uint)(valueOrDefault3 + 1179648)))
{ {
return ETaskResult.TaskComplete; return ETaskResult.TaskComplete;
} }

View file

@ -102,10 +102,17 @@ internal sealed class FateController : MiniTaskController<FateController>
} }
if (_currentFate.RequiredStatusId.HasValue && _currentFate.TransformNpcDataId.HasValue && _currentFate.TransformNpcPosition.HasValue && !_gameFunctions.HasStatus(_currentFate.RequiredStatusId.Value)) 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<FateController> 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 MoveTask(_currentFate.TerritoryId, _currentFate.TransformNpcPosition.Value, null, 3f));
_taskQueue.Enqueue(new Mount.UnmountTask()); _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 WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(2L)));
} }
_taskQueue.Enqueue(new MoveTask(_currentFate.TerritoryId, _currentFate.Position, null, 5f)); _taskQueue.Enqueue(new MoveTask(_currentFate.TerritoryId, _currentFate.Position, null, 5f));