using System; using System.Collections.Generic; using System.Globalization; using System.Numerics; using System.Runtime.CompilerServices; using Dalamud.Plugin.Services; using Microsoft.Extensions.Logging; using Questionable.Controller.Steps; using Questionable.Controller.Steps.Common; using Questionable.Controller.Steps.Interactions; using Questionable.Controller.Steps.Movement; using Questionable.Controller.Steps.Shared; using Questionable.Functions; using Questionable.Model.Questing; using Questionable.Navigation; namespace Questionable.Controller; internal sealed class FateController : MiniTaskController { private readonly MovementController _movementController; private readonly GameFunctions _gameFunctions; private readonly SmartNavRouteEnqueuer _routeEnqueuer; private FateDefinition? _currentFate; private int _completedCycles; private int? _cycleLimit; private DateTime _startTime; public bool IsRunning => _currentFate != null; public FateDefinition? CurrentFate => _currentFate; public TaskQueue TaskQueue => _taskQueue; public int CompletedCycles => _completedCycles; public int? CycleLimit => _cycleLimit; public TimeSpan ElapsedTime { get { int num = (IsRunning ? (-1577720551) : (-1577720550)); while (true) { int num2 = num; int num3 = -1577720549; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 2: return DateTime.UtcNow - _startTime; case 1: return TimeSpan.Zero; case 0: goto IL_005d; } continue; IL_005d: num = -1577720550; } } } public FateController(IChatGui chatGui, ICondition condition, IServiceProvider serviceProvider, InterruptHandler interruptHandler, IDataManager dataManager, Configuration configuration, ILogger logger, MovementController movementController, GameFunctions gameFunctions, SmartNavRouteEnqueuer routeEnqueuer) : base(chatGui, condition, serviceProvider, interruptHandler, dataManager, configuration, logger) { _movementController = movementController; _gameFunctions = gameFunctions; _routeEnqueuer = routeEnqueuer; } [MethodImpl(MethodImplOptions.NoInlining)] public void Start(FateDefinition fate, int? cycleLimit = null) { _currentFate = fate; _completedCycles = 0; _cycleLimit = cycleLimit; _startTime = DateTime.UtcNow; _202B_200F_202C_200F_202A_206F_200B_206A_202B_200B_202D_202D_202B_200D_206B_206C_202C_200C_200B_206A_202E_206C_200F_206B_206B_206C_202A_202D_200D_200E_206A_200F_202B_202D_206D_206A_206A_200E_206F_206E_202E((ILogger)_logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E(1566011469), new object[2] { _200D_206B_202C_206C_206E_206F_202E_206E_200D_202C_202D_200B_200E_206F_200B_202D_200B_202D_200D_202D_200D_200D_202E_200F_206D_202D_200F_200D_206A_202C_202A_200E_206F_206D_200E_206F_202B_206A_200F_200F_202E(fate), cycleLimit?.ToString(_206F_200E_200D_202A_200F_200B_206A_202D_200D_202D_206A_206D_206E_206C_200B_200F_200E_206C_206B_206F_200B_200F_206B_202D_202A_206F_206E_200E_200E_200D_202B_202C_206D_206F_200E_206C_202B_206A_206B_206B_202E()) ?? global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E(1353267636) }); EnqueueFateCycle(); } [MethodImpl(MethodImplOptions.NoInlining)] public void Update() { int num = ((_currentFate != null) ? 799509446 : 799509451); while (true) { int num2 = num; int num3 = 799509447; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 8: num = ((!_gameFunctions.IsOccupied()) ? 799509443 : 799509442); break; case 2: _202B_200F_202C_200F_202A_206F_200B_206A_202B_200B_202D_202D_202B_200D_206B_206C_202C_200C_200B_206A_202E_206C_200F_206B_206B_206C_202A_202D_200D_200E_206A_200F_202B_202D_206D_206A_206A_200E_206F_206E_202E((ILogger)_logger, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E(-1655536442), new object[2] { _completedCycles, _cycleLimit.Value }); Stop(global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E(1011465347)); return; case 12: return; case 6: { int completedCycles = _completedCycles; num3 = 1; num4 = completedCycles; _completedCycles = (num4 | num3) + (num4 & num3); num = ((!_cycleLimit.HasValue) ? 799509440 : 799509453); break; } case 3: num = ((!_movementController.IsPathRunning) ? 799509455 : 799509454); break; case 5: return; case 10: num = ((_completedCycles < _cycleLimit.Value) ? 799509440 : 799509445); break; case 4: num = ((!_taskQueue.AllTasksComplete) ? 799509452 : 799509441); break; case 7: EnqueueFateCycle(); num = 799509452; break; case 0: num = 799509451; break; case 11: UpdateCurrentTask(); return; case 1: num = (_movementController.IsPathfinding ? 799509454 : 799509444); break; case 9: return; } } } [MethodImpl(MethodImplOptions.NoInlining)] private void EnqueueFateCycle() { int num = ((_currentFate != null) ? (-147335237) : (-147335233)); while (true) { int num2 = num; int num3 = -147335238; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 4: num = -147335233; break; case 3: num = (_gameFunctions.HasStatus(_202D_202B_202E_200E_206C_200F_206D_206B_200D_200E_206E_206D_206B_206C_206C_200F_206F_200B_202A_206F_206B_202D_200D_200F_206F_206B_200F_200C_206F_202C_206F_206F_200D_200E_200C_202C_200B_206F_202E_206E_202E(_currentFate).Value) ? (-147335235) : (-147335238)); break; case 6: num = ((!_202A_206E_202D_200E_202D_200E_206D_202A_202C_202B_202B_202E_206B_200B_202D_206C_202C_206D_200E_206E_202C_200E_200B_206F_202E_206A_206F_206F_200C_206A_202A_200C_200E_202A_206B_200D_200C_206C_206B_200E_202E(_currentFate).HasValue) ? (-147335235) : (-147335239)); break; case 0: { _200F_202D_200C_206D_206E_206B_200D_200C_200C_206F_202D_200F_200E_206A_200E_200B_206E_206C_206D_200B_200D_206A_206B_200B_206E_202E_202C_200C_200D_206B_206D_206C_206E_202A_200E_200E_200F_200F_202E_200F_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E(534849822), new object[1] { _202D_202B_202E_200E_206C_200F_206D_206B_200D_200E_206E_206D_206B_206C_206C_200F_206F_200B_202A_206F_206B_202D_200D_200F_206F_206B_200F_200C_206F_202C_206F_206F_200D_200E_200C_202C_200B_206F_202E_206E_202E(_currentFate).Value }); _taskQueue.Enqueue(new MoveTask(_206F_206F_200C_206C_200E_206E_202B_202B_206D_200D_206D_202B_206D_206D_206A_202B_206D_206D_206E_202A_206F_206C_202D_206B_206D_202A_206F_200F_206F_206B_200E_206D_202A_202B_202A_206F_202A_202B_200E_200F_202E(_currentFate), _202A_206E_202D_200E_202D_200E_206D_202A_202C_202B_202B_202E_206B_200B_202D_206C_202C_206D_200E_206E_202C_200E_200B_206F_202E_206A_206F_206F_200C_206A_202A_200C_200E_202A_206B_200D_200C_206C_206B_200E_202E(_currentFate).Value, null, MountRequired: false, DismountRequired: false, 3f)); _taskQueue.Enqueue(new Mount.UnmountTask()); TaskQueue taskQueue = _taskQueue; uint value = _202A_200C_202E_202B_206C_206A_202E_206C_206D_202C_200E_200D_206D_206C_200C_200D_200B_200C_200E_200D_206C_206F_200E_206C_200F_206F_206E_206B_202E_206E_200D_206B_206F_206C_206D_206F_206A_202D_206A_200F_202E(_currentFate).Value; EStatus? completionStatusId = _202D_202B_202E_200E_206C_200F_206D_206B_200D_200E_206E_206D_206B_206C_206C_200F_206F_200B_202A_206F_206B_202D_200D_200F_206F_206B_200F_200C_206F_202C_206F_206F_200D_200E_200C_202C_200B_206F_202E_206E_202E(_currentFate); taskQueue.Enqueue(new Interact.Task(value, null, EInteractionType.Interact, SkipMarkerCheck: true, null, null, null, null, completionStatusId)); _taskQueue.Enqueue(new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(2L))); _taskQueue.Enqueue(new MoveTask(_206F_206F_200C_206C_200E_206E_202B_202B_206D_200D_206D_202B_206D_206D_206A_202B_206D_206D_206E_202A_206F_206C_202D_206B_206D_202A_206F_200F_206F_206B_200E_206D_202A_202B_202A_206F_202A_202B_200E_200F_202E(_currentFate), _206B_200F_200F_202B_206B_206C_200C_206A_206A_202D_202A_202B_206A_206F_202D_200D_200D_206B_202D_202B_202C_200F_200F_206A_202C_202D_206B_202C_206C_206C_202E_202E_206A_202E_202D_200F_200E_206A_200F_206D_202E(_currentFate), null, MountRequired: false, DismountRequired: false, 5f)); num = -147335235; break; } case 1: _200F_202D_200C_206D_206E_206B_200D_200C_200C_206F_202D_200F_200E_206A_200E_200B_206E_206C_206D_200B_200D_206A_206B_200B_206E_202E_202C_200C_200D_206B_206D_206C_206E_202A_200E_200E_200F_200F_202E_200F_202E((ILogger)_logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E(-371117818), new object[1] { _200D_206B_202C_206C_206E_206F_202E_206E_200D_202C_202D_200B_200E_206F_200B_202D_200B_202D_200D_202D_200D_200D_202E_200F_206D_202D_200F_200D_206A_202C_202A_200E_206F_206D_200E_206F_202B_206A_200F_200F_202E(_currentFate) }); _routeEnqueuer.Enqueue(_taskQueue, _206F_206F_200C_206C_200E_206E_202B_202B_206D_200D_206D_202B_206D_206D_206A_202B_206D_206D_206E_202A_206F_206C_202D_206B_206D_202A_206F_200F_206F_206B_200E_206D_202A_202B_202A_206F_202A_202B_200E_200F_202E(_currentFate), _206B_200F_200F_202B_206B_206C_200C_206A_206A_202D_202A_202B_206A_206F_202D_200D_200D_206B_202D_202B_202C_200F_200F_206A_202C_202D_206B_202C_206C_206C_202E_202E_206A_202E_202D_200F_200E_206A_200F_206D_202E(_currentFate), 5f); num = ((!_202D_202B_202E_200E_206C_200F_206D_206B_200D_200E_206E_206D_206B_206C_206C_200F_206F_200B_202A_206F_206B_202D_200D_200F_206F_206B_200F_200C_206F_202C_206F_206F_200D_200E_200C_202C_200B_206F_202E_206E_202E(_currentFate).HasValue) ? (-147335235) : (-147335240)); break; case 2: num = ((!_202A_200C_202E_202B_206C_206A_202E_206C_206D_202C_200E_200D_206D_206C_200C_200D_200B_200C_200E_200D_206C_206F_200E_206C_200F_206F_206E_206B_202E_206E_200D_206B_206F_206C_206D_206F_206A_202D_206A_200F_202E(_currentFate).HasValue) ? (-147335235) : (-147335236)); break; case 7: _taskQueue.Enqueue(new Mount.UnmountTask()); _taskQueue.Enqueue(new FateFarming.WaitForFateTargets(_202C_200D_200B_206B_206C_200F_206E_202D_206F_206A_206D_202C_206D_202A_202C_202D_200E_202B_202D_202A_202D_202B_200E_200F_202A_206D_206D_202D_206A_206E_200B_202A_206B_206A_206E_206B_206B_202A_206E_206A_202E(_currentFate))); _taskQueue.Enqueue(new FateFarming.SyncFateLevel()); _taskQueue.Enqueue(new FateFarming.FateActionLoop(_202C_200D_200B_206B_206C_200F_206E_202D_206F_206A_206D_202C_206D_202A_202C_202D_200E_202B_202D_202A_202D_202B_200E_200F_202A_206D_206D_202D_206A_206E_200B_202A_206B_206A_206E_206B_206B_202A_206E_206A_202E(_currentFate), _202D_202B_202E_200E_206C_200F_206D_206B_200D_200E_206E_206D_206B_206C_206C_200F_206F_200B_202A_206F_206B_202D_200D_200F_206F_206B_200F_200C_206F_202C_206F_206F_200D_200E_200C_202C_200B_206F_202E_206E_202E(_currentFate))); _taskQueue.Enqueue(new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(3L))); return; case 5: return; } } } [MethodImpl(MethodImplOptions.NoInlining)] public void Replan() { int num = ((_currentFate != null) ? 1044869375 : 1044869372); while (true) { int num2 = num; int num3 = 1044869374; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 1: _202B_200F_202C_200F_202A_206F_200B_206A_202B_200B_202D_202D_202B_200D_206B_206C_202C_200C_200B_206A_202E_206C_200F_206B_206B_206C_202A_202D_200D_200E_206A_200F_202B_202D_206D_206A_206A_200E_206F_206E_202E((ILogger)_logger, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E(522631181), new object[1] { _200D_206B_202C_206C_206E_206F_202E_206E_200D_202C_202D_200B_200E_206F_200B_202D_200B_202D_200D_202D_200D_200D_202E_200F_206D_202D_200F_200D_206A_202C_202A_200E_206F_206D_200E_206F_202B_206A_200F_200F_202E(_currentFate) }); _taskQueue.Reset(); EnqueueFateCycle(); return; case 2: return; case 0: goto IL_0082; } continue; IL_0082: num = 1044869372; } } [MethodImpl(MethodImplOptions.NoInlining)] public override void Stop(string label) { base.Stop(label); int num = ((_currentFate == null) ? 1034562538 : 1034562541); while (true) { int num2 = num; int num3 = 1034562539; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 2: _202B_200F_202C_200F_202A_206F_200B_206A_202B_200B_202D_202D_202B_200D_206B_206C_202C_200C_200B_206A_202E_206C_200F_206B_206B_206C_202A_202D_200D_200E_206A_200F_202B_202D_206D_206A_206A_200E_206F_206E_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E(-757113622), new object[1] { _206B_200F_206B_202A_206A_202B_206C_206F_206C_202E_202A_200C_206F_206F_202C_206C_206D_206E_206B_206B_206B_200F_200D_206A_202E_202B_202C_206B_206B_206D_206A_206D_200E_202C_202E_206C_206C_202E_200D_200D_202E(_currentFate).Value }); _gameFunctions.UseAction(_206B_200F_206B_202A_206A_202B_206C_206F_206C_202E_202A_200C_206F_206F_202C_206C_206D_206E_206B_206B_206B_200F_200D_206A_202E_202B_202C_206B_206B_206D_206A_206D_200E_202C_202E_206C_206C_202E_200D_200D_202E(_currentFate).Value); num = 1034562543; break; case 0: num = ((!_gameFunctions.HasStatus(_202D_202B_202E_200E_206C_200F_206D_206B_200D_200E_206E_206D_206B_206C_206C_200F_206F_200B_202A_206F_206B_202D_200D_200F_206F_206B_200F_200C_206F_202C_206F_206F_200D_200E_200C_202C_200B_206F_202E_206E_202E(_currentFate).Value)) ? 1034562543 : 1034562537); break; case 5: num = ((!_202D_202B_202E_200E_206C_200F_206D_206B_200D_200E_206E_206D_206B_206C_206C_200F_206F_200B_202A_206F_206B_202D_200D_200F_206F_206B_200F_200C_206F_202C_206F_206F_200D_200E_200C_202C_200B_206F_202E_206E_202E(_currentFate).HasValue) ? 1034562543 : 1034562539); break; case 6: _202B_200F_202C_200F_202A_206F_200B_206A_202B_200B_202D_202D_202B_200D_206B_206C_202C_200C_200B_206A_202E_206C_200F_206B_206B_206C_202A_202D_200D_200E_206A_200F_202B_202D_206D_206A_206A_200E_206F_206E_202E((ILogger)_logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E(-1276129984), new object[2] { label, _completedCycles }); num = ((!_206B_200F_206B_202A_206A_202B_206C_206F_206C_202E_202A_200C_206F_206F_202C_206C_206D_206E_206B_206B_206B_200F_200D_206A_202E_202B_202C_206B_206B_206D_206A_206D_200E_202C_202E_206C_206C_202E_200D_200D_202E(_currentFate).HasValue) ? 1034562543 : 1034562542); break; case 4: _routeEnqueuer.ClearDestination(); _currentFate = null; _completedCycles = 0; _cycleLimit = null; _taskQueue.Reset(); num = 1034562538; break; case 1: return; case 3: num = 1034562541; break; } } } static string _200D_206B_202C_206C_206E_206F_202E_206E_200D_202C_202D_200B_200E_206F_200B_202D_200B_202D_200D_202D_200D_200D_202E_200F_206D_202D_200F_200D_206A_202C_202A_200E_206F_206D_200E_206F_202B_206A_200F_200F_202E(FateDefinition P_0) { return P_0.Name; } static CultureInfo _206F_200E_200D_202A_200F_200B_206A_202D_200D_202D_206A_206D_206E_206C_200B_200F_200E_206C_206B_206F_200B_200F_206B_202D_202A_206F_206E_200E_200E_200D_202B_202C_206D_206F_200E_206C_202B_206A_206B_206B_202E() { return CultureInfo.InvariantCulture; } static void _202B_200F_202C_200F_202A_206F_200B_206A_202B_200B_202D_202D_202B_200D_206B_206C_202C_200C_200B_206A_202E_206C_200F_206B_206B_206C_202A_202D_200D_200E_206A_200F_202B_202D_206D_206A_206A_200E_206F_206E_202E(ILogger P_0, string P_1, object[] P_2) { P_0.LogInformation(P_1, P_2); } static void _200F_202D_200C_206D_206E_206B_200D_200C_200C_206F_202D_200F_200E_206A_200E_200B_206E_206C_206D_200B_200D_206A_206B_200B_206E_202E_202C_200C_200D_206B_206D_206C_206E_202A_200E_200E_200F_200F_202E_200F_202E(ILogger P_0, string P_1, object[] P_2) { P_0.LogDebug(P_1, P_2); } static ushort _206F_206F_200C_206C_200E_206E_202B_202B_206D_200D_206D_202B_206D_206D_206A_202B_206D_206D_206E_202A_206F_206C_202D_206B_206D_202A_206F_200F_206F_206B_200E_206D_202A_202B_202A_206F_202A_202B_200E_200F_202E(FateDefinition P_0) { return P_0.TerritoryId; } static Vector3 _206B_200F_200F_202B_206B_206C_200C_206A_206A_202D_202A_202B_206A_206F_202D_200D_200D_206B_202D_202B_202C_200F_200F_206A_202C_202D_206B_202C_206C_206C_202E_202E_206A_202E_202D_200F_200E_206A_200F_206D_202E(FateDefinition P_0) { return P_0.Position; } static EStatus? _202D_202B_202E_200E_206C_200F_206D_206B_200D_200E_206E_206D_206B_206C_206C_200F_206F_200B_202A_206F_206B_202D_200D_200F_206F_206B_200F_200C_206F_202C_206F_206F_200D_200E_200C_202C_200B_206F_202E_206E_202E(FateDefinition P_0) { return P_0.RequiredStatusId; } static uint? _202A_200C_202E_202B_206C_206A_202E_206C_206D_202C_200E_200D_206D_206C_200C_200D_200B_200C_200E_200D_206C_206F_200E_206C_200F_206F_206E_206B_202E_206E_200D_206B_206F_206C_206D_206F_206A_202D_206A_200F_202E(FateDefinition P_0) { return P_0.TransformNpcDataId; } static Vector3? _202A_206E_202D_200E_202D_200E_206D_202A_202C_202B_202B_202E_206B_200B_202D_206C_202C_206D_200E_206E_202C_200E_200B_206F_202E_206A_206F_206F_200C_206A_202A_200C_200E_202A_206B_200D_200C_206C_206B_200E_202E(FateDefinition P_0) { return P_0.TransformNpcPosition; } static List _202C_200D_200B_206B_206C_200F_206E_202D_206F_206A_206D_202C_206D_202A_202C_202D_200E_202B_202D_202A_202D_202B_200E_200F_202A_206D_206D_202D_206A_206E_200B_202A_206B_206A_206E_206B_206B_202A_206E_206A_202E(FateDefinition P_0) { return P_0.Targets; } static EAction? _206B_200F_206B_202A_206A_202B_206C_206F_206C_202E_202A_200C_206F_206F_202C_206C_206D_206E_206B_206B_206B_200F_200D_206A_202E_202B_202C_206B_206B_206D_206A_206D_200E_202C_202E_206C_206C_202E_200D_200D_202E(FateDefinition P_0) { return P_0.StopAction; } }