using System; using System.Collections.Generic; using System.Numerics; using System.Runtime.CompilerServices; using System.Text; using Dalamud.Game.ClientState.Conditions; using Dalamud.Game.ClientState.Objects.SubKinds; using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Plugin.Services; using FFXIVClientStructs.FFXIV.Client.Game; using FFXIVClientStructs.FFXIV.Client.Game.Character; using FFXIVClientStructs.FFXIV.Common.Math; using Microsoft.Extensions.Logging; using Questionable.Data; using Questionable.Functions; namespace Questionable.Controller.Steps.Common; internal static class Mount { internal sealed record MountTask : ITask { [CompilerGenerated] private Type EqualityContract { [CompilerGenerated] get { return _206E_202A_200B_206E_202B_206B_202B_206B_200B_206D_206C_206B_206B_202D_206B_200E_202C_200B_202E_200F_202A_200B_202A_200E_200C_206C_206C_206D_200B_206A_206E_206F_202A_200D_200C_200E_200C_202C_202E_202E(typeof(MountTask).TypeHandle); } } public ushort TerritoryId { get; init; } public EMountIf MountIf { get; init; } public FFXIVClientStructs.FFXIV.Common.Math.Vector3? Position { get; } [MethodImpl(MethodImplOptions.NoInlining)] public MountTask(ushort TerritoryId, EMountIf MountIf, FFXIVClientStructs.FFXIV.Common.Math.Vector3? Position = null) { this.TerritoryId = TerritoryId; this.MountIf = MountIf; this.Position = ((MountIf == EMountIf.AwayFromPosition) ? new FFXIVClientStructs.FFXIV.Common.Math.Vector3?(Position ?? throw _202C_200E_202C_200D_200F_206F_202E_206F_202A_202E_202D_206A_200D_206A_206D_200C_200C_206A_206E_206B_200B_200B_200B_200D_206A_202A_200F_206A_202B_202E_200E_200D_202A_202A_206F_200E_200C_202B_200D_206A_202E(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(1692510639))) : ((FFXIVClientStructs.FFXIV.Common.Math.Vector3?)null)); base._002Ector(); } public bool ShouldRedoOnInterrupt() { return true; } bool ITask.ShouldRedoOnInterrupt() { //ILSpy generated this explicit interface implementation from .override directive in ShouldRedoOnInterrupt return this.ShouldRedoOnInterrupt(); } [MethodImpl(MethodImplOptions.NoInlining)] public override string ToString() { return 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(-9684774); } [MethodImpl(MethodImplOptions.NoInlining)] [CompilerGenerated] private bool PrintMembers(StringBuilder builder) { _206A_206A_206A_206C_206E_200C_200D_202A_200C_200C_202B_202D_202A_206A_202C_206E_206D_206F_202A_206E_206F_202E_202E_206E_200E_206B_202A_200F_202B_202C_206B_202B_200F_200C_206F_206D_200B_200B_200C_206D_202E(); _202B_202A_202E_202B_206B_206C_202E_200D_202C_200F_206D_202A_206E_202E_202A_202A_200E_200D_200F_206A_202D_202A_200C_202D_202B_200C_206B_206F_200B_202A_206B_202C_206C_202B_200E_200C_202B_200E_206B_200F_202E(builder, 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(-871596524)); _202B_202A_202E_202B_206B_206C_202E_200D_202C_200F_206D_202A_206E_202E_202A_202A_200E_200D_200F_206A_202D_202A_200C_202D_202B_200C_206B_206F_200B_202A_206B_202C_206C_202B_200E_200C_202B_200E_206B_200F_202E(builder, TerritoryId.ToString()); _202B_202A_202E_202B_206B_206C_202E_200D_202C_200F_206D_202A_206E_202E_202A_202A_200E_200D_200F_206A_202D_202A_200C_202D_202B_200C_206B_206F_200B_202A_206B_202C_206C_202B_200E_200C_202B_200E_206B_200F_202E(builder, 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(1100545370)); _202B_202A_202E_202B_206B_206C_202E_200D_202C_200F_206D_202A_206E_202E_202A_202A_200E_200D_200F_206A_202D_202A_200C_202D_202B_200C_206B_206F_200B_202A_206B_202C_206C_202B_200E_200C_202B_200E_206B_200F_202E(builder, MountIf.ToString()); _202B_202A_202E_202B_206B_206C_202E_200D_202C_200F_206D_202A_206E_202E_202A_202A_200E_200D_200F_206A_202D_202A_200C_202D_202B_200C_206B_206F_200B_202A_206B_202C_206C_202B_200E_200C_202B_200E_206B_200F_202E(builder, 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(-1993330002)); _202B_202A_202E_202B_206B_206C_202E_200D_202C_200F_206D_202A_206E_202E_202A_202A_200E_200D_200F_206A_202D_202A_200C_202D_202B_200C_206B_206F_200B_202A_206B_202C_206C_202B_200E_200C_202B_200E_206B_200F_202E(builder, Position.ToString()); return true; } [CompilerGenerated] public bool Equals(MountTask? other) { int num = (((object)this == other) ? (-244243578) : (-244243579)); while (true) { int num2 = num; int num3 = -244243580; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: num = -244243579; break; case 5: return EqualityComparer.Default.Equals(Position, other.Position); case 1: num = (((object)other == null) ? (-244243582) : (-244243584)); break; case 6: return false; case 3: num = ((!EqualityComparer.Default.Equals(TerritoryId, other.TerritoryId)) ? (-244243582) : (-244243581)); break; case 4: num = ((!_206A_206E_206B_202B_206B_206A_200C_200D_202E_206B_202B_200B_206B_202E_202B_206A_206B_202A_200B_206D_202E_202A_202B_202B_206A_200F_202E_206A_206D_206C_206B_206F_206B_202E_202A_202D_202D_200F_202C_202B_202E(EqualityContract, other.EqualityContract)) ? (-244243582) : (-244243577)); break; case 2: return true; case 7: num = ((!EqualityComparer.Default.Equals(MountIf, other.MountIf)) ? (-244243582) : (-244243583)); break; } } } bool IEquatable.Equals(MountTask? other) { //ILSpy generated this explicit interface implementation from .override directive in Equals return this.Equals(other); } [CompilerGenerated] public void Deconstruct(out ushort TerritoryId, out EMountIf MountIf, out FFXIVClientStructs.FFXIV.Common.Math.Vector3? Position) { TerritoryId = this.TerritoryId; MountIf = this.MountIf; Position = this.Position; } static ArgumentNullException _202C_200E_202C_200D_200F_206F_202E_206F_202A_202E_202D_206A_200D_206A_206D_200C_200C_206A_206E_206B_200B_200B_200B_200D_206A_202A_200F_206A_202B_202E_200E_200D_202A_202A_206F_200E_200C_202B_200D_206A_202E(string P_0) { return new ArgumentNullException(P_0); } static Type _206E_202A_200B_206E_202B_206B_202B_206B_200B_206D_206C_206B_206B_202D_206B_200E_202C_200B_202E_200F_202A_200B_202A_200E_200C_206C_206C_206D_200B_206A_206E_206F_202A_200D_200C_200E_200C_202C_202E_202E(RuntimeTypeHandle P_0) { return Type.GetTypeFromHandle(P_0); } static void _206A_206A_206A_206C_206E_200C_200D_202A_200C_200C_202B_202D_202A_206A_202C_206E_206D_206F_202A_206E_206F_202E_202E_206E_200E_206B_202A_200F_202B_202C_206B_202B_200F_200C_206F_206D_200B_200B_200C_206D_202E() { RuntimeHelpers.EnsureSufficientExecutionStack(); } static StringBuilder _202B_202A_202E_202B_206B_206C_202E_200D_202C_200F_206D_202A_206E_202E_202A_202A_200E_200D_200F_206A_202D_202A_200C_202D_202B_200C_206B_206F_200B_202A_206B_202C_206C_202B_200E_200C_202B_200E_206B_200F_202E(StringBuilder P_0, string P_1) { return P_0.Append(P_1); } static bool _206A_206E_206B_202B_206B_206A_200C_200D_202E_206B_202B_200B_206B_202E_202B_206A_206B_202A_200B_206D_202E_202A_202B_202B_206A_200F_202E_206A_206D_206C_206B_206F_206B_202E_202A_202D_202D_200F_202C_202B_202E(Type P_0, Type P_1) { return P_0 == P_1; } } internal sealed class MountEvaluator(GameFunctions gameFunctions, ICondition condition, TerritoryData territoryData, IClientState clientState, IObjectTable objectTable, ILogger logger) { [MethodImpl(MethodImplOptions.NoInlining)] public unsafe MountResult EvaluateMountState(MountTask task, bool dryRun, ref long retryAtMs) { int num = ((!_200D_200F_200B_200B_200E_206D_206D_200C_206E_200C_202A_206D_202C_206B_206E_200F_206F_202D_202B_200B_202A_206B_206A_202A_202E_202D_200E_200F_202B_206C_200D_206C_206F_202D_206D_206E_202A_206D_206F_202E_202E(condition, ConditionFlag.Mounted)) ? (-1122253637) : (-1122253641)); float num8 = default(float); LogLevel logLevel = default(LogLevel); while (true) { int num2 = num; int num3 = -1122253647; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; int num7; switch (num5 - (num6 + num6)) { case 14: num = ((!(num8 < 30f)) ? (-1122253635) : (-1122253640)); break; case 3: num7 = 6; goto IL_00b6; case 8: _202B_202E_200B_202E_206F_206F_202E_206A_200C_202E_206A_202E_206E_200D_200C_200D_200B_202E_200C_200E_206D_200C_202B_202D_206E_206B_206B_206C_202C_200C_206D_200B_202D_206E_200C_202E_206B_206E_200B_202C_202E((ILogger)logger, logLevel, 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(-353154207), new object[1] { task.TerritoryId }); num = (_200D_200F_200B_200B_200E_206D_206D_200C_206E_200C_202A_206D_202C_206B_206E_200F_206F_202D_202B_200B_202A_206B_206A_202A_202E_202D_200E_200F_202B_206C_200D_206C_206F_202D_206D_206E_202A_206D_206F_202E_202E(condition, ConditionFlag.InCombat) ? (-1122253644) : (-1122253643)); break; case 4: num = ((!dryRun) ? (-1122253642) : (-1122253663)); break; case 5: return MountResult.WhenOutOfCombat; case 12: _202B_202E_200B_202E_206F_206F_202E_206A_200C_202E_206A_202E_206E_200D_200C_200D_200B_202E_200C_200E_206D_200C_202B_202D_206E_206B_206B_206C_202C_200C_206D_200B_202D_206E_200C_202E_206B_206E_200B_202C_202E((ILogger)logger, logLevel, 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(-1123067859), new object[2] { num8, task.TerritoryId }); num = -1122253639; break; case 2: _202B_202E_200B_202E_206F_206F_202E_206A_200C_202E_206A_202E_206E_200D_200C_200D_200B_202E_200C_200E_206D_200C_202B_202D_206E_206B_206B_206C_202C_200C_206D_200B_202D_206E_200C_202E_206B_206E_200B_202C_202E((ILogger)logger, logLevel, 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(603618635), Array.Empty()); return MountResult.DontMount; case 11: num7 = 1; goto IL_00b6; case 6: return MountResult.DontMount; case 10: num = (dryRun ? (-1122253646) : (-1122253638)); break; case 17: { IPlayerCharacter playerCharacter = _206D_202A_206A_206C_206E_206B_206D_200F_200D_206C_202B_200F_206D_202B_202B_202A_200F_200D_206A_202D_200F_200C_206B_202A_202E_200B_202C_206B_206E_206D_206D_200C_202E_206B_200C_200F_200B_202B_202C_206F_202E(objectTable); num8 = System.Numerics.Vector3.Distance((FFXIVClientStructs.FFXIV.Common.Math.Vector3)((playerCharacter != null) ? _206A_202D_206A_206C_202C_206D_200C_200D_202A_206C_202B_202D_206C_206D_206C_206C_202E_206D_200C_202C_206E_206B_202A_206C_200B_200B_206B_200E_206D_202D_200F_202D_206B_200F_206F_202B_202C_206B_200D_200D_202E((IGameObject)playerCharacter) : ((System.Numerics.Vector3)FFXIVClientStructs.FFXIV.Common.Math.Vector3.Zero)), task.Position.GetValueOrDefault()); num = ((task.TerritoryId != _200D_200E_200C_202C_200D_202A_200E_206A_202B_206E_202E_206B_200B_202B_200D_202E_200C_206F_202A_206A_206D_206D_202B_206F_202A_206B_206F_200E_206E_200D_202C_206A_202C_202D_206C_206B_200E_200C_200B_200D_202E(clientState)) ? (-1122253635) : (-1122253633)); break; } case 7: return MountResult.Mount; case 1: num = ((task.MountIf != EMountIf.AwayFromPosition) ? (-1122253639) : (-1122253664)); break; case 15: _202B_202E_200B_202E_206F_206F_202E_206A_200C_202E_206A_202E_206E_200D_200C_200D_200B_202E_200C_200E_206D_200C_202B_202D_206E_206B_206B_206C_202C_200C_206D_200B_202D_206E_200C_202E_206B_206E_200B_202C_202E((ILogger)logger, logLevel, 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(1312445464), Array.Empty()); return MountResult.DontMount; case 0: num = -1122253641; break; case 13: num = ((!gameFunctions.HasStatusPreventingMount()) ? (-1122253648) : (-1122253634)); break; case 9: num = (FFXIVClientStructs.FFXIV.Client.Game.Conditions.Instance()->Diving ? (-1122253635) : (-1122253645)); break; case 18: _202B_202E_200B_202E_206F_206F_202E_206A_200C_202E_206A_202E_206E_200D_200C_200D_200B_202E_200C_200E_206D_200C_202B_202D_206E_206B_206B_206C_202C_200C_206D_200B_202D_206E_200C_202E_206B_206E_200B_202C_202E((ILogger)logger, logLevel, 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(2123178136), new object[1] { task.TerritoryId }); return MountResult.DontMount; case 16: { retryAtMs = _202A_206E_202A_202E_200C_200F_200E_206C_206A_206A_202A_206A_206C_202D_200D_202D_200B_202B_206C_206B_206A_200F_200C_206D_206C_206C_200E_200B_200B_202A_206C_202D_200F_200D_206E_200D_200D_206F_206A_202D_202E() + 500; num = -1122253642; break; } IL_00b6: logLevel = (LogLevel)num7; num = (territoryData.CanUseMount(task.TerritoryId) ? (-1122253636) : (-1122253661)); break; } } } static bool _200D_200F_200B_200B_200E_206D_206D_200C_206E_200C_202A_206D_202C_206B_206E_200F_206F_202D_202B_200B_202A_206B_206A_202A_202E_202D_200E_200F_202B_206C_200D_206C_206F_202D_206D_206E_202A_206D_206F_202E_202E(ICondition P_0, ConditionFlag P_1) { return P_0[P_1]; } static void _202B_202E_200B_202E_206F_206F_202E_206A_200C_202E_206A_202E_206E_200D_200C_200D_200B_202E_200C_200E_206D_200C_202B_202D_206E_206B_206B_206C_202C_200C_206D_200B_202D_206E_200C_202E_206B_206E_200B_202C_202E(ILogger P_0, LogLevel P_1, string P_2, object[] P_3) { P_0.Log(P_1, P_2, P_3); } static IPlayerCharacter _206D_202A_206A_206C_206E_206B_206D_200F_200D_206C_202B_200F_206D_202B_202B_202A_200F_200D_206A_202D_200F_200C_206B_202A_202E_200B_202C_206B_206E_206D_206D_200C_202E_206B_200C_200F_200B_202B_202C_206F_202E(IObjectTable P_0) { return P_0.LocalPlayer; } static System.Numerics.Vector3 _206A_202D_206A_206C_202C_206D_200C_200D_202A_206C_202B_202D_206C_206D_206C_206C_202E_206D_200C_202C_206E_206B_202A_206C_200B_200B_206B_200E_206D_202D_200F_202D_206B_200F_206F_202B_202C_206B_200D_200D_202E(IGameObject P_0) { return P_0.Position; } static uint _200D_200E_200C_202C_200D_202A_200E_206A_202B_206E_202E_206B_200B_202B_200D_202E_200C_206F_202A_206A_206D_206D_202B_206F_202A_206B_206F_200E_206E_200D_202C_206A_202C_202D_206C_206B_200E_200C_200B_200D_202E(IClientState P_0) { return P_0.TerritoryType; } static long _202A_206E_202A_202E_200C_200F_200E_206C_206A_206A_202A_206A_206C_202D_200D_202D_200B_202B_206C_206B_206A_200F_200C_206D_206C_206C_200E_200B_200B_202A_206C_202D_200F_200D_206E_200D_200D_206F_206A_202D_202E() { return Environment.TickCount64; } } internal sealed class MountExecutor(GameFunctions gameFunctions, ICondition condition, MountEvaluator mountEvaluator, ILogger logger) : TaskExecutor() { private bool _mountTriggered; private long _retryAtMs; protected override bool Start() { _mountTriggered = false; return mountEvaluator.EvaluateMountState(base.Task, dryRun: false, ref _retryAtMs) == MountResult.Mount; } [MethodImpl(MethodImplOptions.NoInlining)] public override ETaskResult Update() { int num = ((!_mountTriggered) ? (-694294955) : (-694294952)); while (true) { int num2 = num; int num3 = -694294945; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 2: num = ((!gameFunctions.HasStatusPreventingMount()) ? (-694294957) : (-694294950)); break; case 3: ResetProgressTimer(); return ETaskResult.TaskComplete; case 5: _200D_206B_202E_200F_200E_202A_200B_202B_200F_206A_202C_206D_202E_202C_200F_202A_206E_202A_202C_202A_202A_200E_206C_202A_206A_202E_206E_200F_202B_200B_200F_202A_206F_206C_200F_202E_202A_206A_202B_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(1137964517), Array.Empty()); return ETaskResult.TaskComplete; case 6: _200D_206B_202E_200F_200E_202A_200B_202B_200F_206A_202C_206D_202E_202C_200F_202A_206E_202A_202C_202A_202A_200E_206C_202A_206A_202E_206E_200F_202B_200B_200F_202A_206F_206C_200F_202E_202A_206A_202B_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(614136280), Array.Empty()); _mountTriggered = false; _retryAtMs = long.MaxValue; num = -694294955; break; case 11: ResetProgressTimer(); num = -694294945; break; case 10: num = (_mountTriggered ? (-694294946) : (-694294947)); break; case 9: num = ((!base.ProgressContext.WasInterrupted()) ? (-694294958) : (-694294953)); break; case 15: num = ((base.ProgressContext == null) ? (-694294945) : (-694294954)); break; case 14: num = ((_206D_202C_200D_206E_202D_206D_206D_206B_202B_200F_200E_206C_202B_206B_200F_206E_202C_206F_200F_206E_206B_202C_202E_206F_206A_202B_202D_202A_206F_206A_200F_202B_206F_202E_202A_206C_200D_202A_206D_202E_202E() <= _retryAtMs) ? (-694294955) : (-694294951)); break; case 7: num = (_200E_206F_200E_202D_200C_206F_200F_202C_202B_200F_202B_200E_206D_200F_202D_202D_206F_202D_200E_200D_200E_206A_206B_206F_202C_202E_202D_202B_206E_206E_206C_206A_206C_200E_200C_200C_206D_200B_200B_200C_202E(condition, ConditionFlag.Mounted) ? (-694294955) : (-694294959)); break; case 13: num = ((!base.ProgressContext.WasSuccessful()) ? (-694294945) : (-694294956)); break; case 1: num = ((!_200E_206F_200E_202D_200C_206F_200F_202C_202B_200F_202B_200E_206D_200F_202D_202D_206F_202D_200E_200D_200E_206A_206B_206F_202C_202E_202D_202B_206E_206E_206C_206A_206C_200E_200C_200C_206D_200B_200B_200C_202E(condition, ConditionFlag.Mounted)) ? (-694294960) : (-694294948)); break; case 4: num = -694294952; break; case 8: _200D_206B_202E_200F_200E_202A_200B_202B_200F_206A_202C_206D_202E_202C_200F_202A_206E_202A_202C_202A_202A_200E_206C_202A_206A_202E_206E_200F_202B_200B_200F_202A_206F_206C_200F_202E_202A_206A_202B_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(1257322524), Array.Empty()); _mountTriggered = false; return ETaskResult.StillRunning; case 0: return ETaskResult.StillRunning; case 12: base.ProgressContext = InteractionProgressContext.FromActionUse(() => _mountTriggered = gameFunctions.Mount()); ResetProgressTimer(); _retryAtMs = _206D_202C_200D_206E_202D_206D_206D_206B_202B_200F_200E_206C_202B_206B_200F_206E_202C_206F_200F_206E_206B_202C_202E_206F_206A_202B_202D_202A_206F_206A_200F_202B_206F_202E_202A_206C_200D_202A_206D_202E_202E() + 5000; return ETaskResult.StillRunning; } } } public override bool ShouldInterruptOnDamage() { return false; } static bool _200E_206F_200E_202D_200C_206F_200F_202C_202B_200F_202B_200E_206D_200F_202D_202D_206F_202D_200E_200D_200E_206A_206B_206F_202C_202E_202D_202B_206E_206E_206C_206A_206C_200E_200C_200C_206D_200B_200B_200C_202E(ICondition P_0, ConditionFlag P_1) { return P_0[P_1]; } static long _206D_202C_200D_206E_202D_206D_206D_206B_202B_200F_200E_206C_202B_206B_200F_206E_202C_206F_200F_206E_206B_202C_202E_206F_206A_202B_202D_202A_206F_206A_200F_202B_206F_202E_202A_206C_200D_202A_206D_202E_202E() { return Environment.TickCount64; } static void _200D_206B_202E_200F_200E_202A_200B_202B_200F_206A_202C_206D_202E_202C_200F_202A_206E_202A_202C_202A_202A_200E_206C_202A_206A_202E_206E_200F_202B_200B_200F_202A_206F_206C_200F_202E_202A_206A_202B_202E(ILogger P_0, string P_1, object[] P_2) { P_0.LogDebug(P_1, P_2); } } internal enum MountResult { DontMount, Mount, WhenOutOfCombat } internal sealed record UnmountTask : ITask { [CompilerGenerated] private Type EqualityContract { [CompilerGenerated] get { return _200C_206C_200F_206C_202C_202E_200C_200D_202B_202B_200C_206B_200D_206D_202E_206E_206F_206E_206E_202B_202B_200C_206E_202B_200F_206C_200C_200E_206F_206C_206D_200B_200C_206D_206D_202C_206E_200F_200E_202B_202E(typeof(UnmountTask).TypeHandle); } } public bool ShouldRedoOnInterrupt() { return true; } bool ITask.ShouldRedoOnInterrupt() { //ILSpy generated this explicit interface implementation from .override directive in ShouldRedoOnInterrupt return this.ShouldRedoOnInterrupt(); } [MethodImpl(MethodImplOptions.NoInlining)] public override string ToString() { return 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(-2092040442); } [CompilerGenerated] public bool Equals(UnmountTask? other) { int num = (((object)this == other) ? (-325437699) : (-325437704)); while (true) { int num2 = num; int num3 = -325437700; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 3: return false; case 0: return _202E_200D_202B_206F_202E_206C_200C_200E_202A_206F_200E_206F_202E_202D_202C_206D_202E_200C_206D_206D_200F_200B_206F_202C_202D_206E_200E_206B_206F_200C_202E_206C_206C_206F_206B_206D_206B_200D_202D_206F_202E(EqualityContract, other.EqualityContract); case 4: num = (((object)other == null) ? (-325437697) : (-325437700)); break; case 1: return true; case 2: num = -325437704; break; } } } bool IEquatable.Equals(UnmountTask? other) { //ILSpy generated this explicit interface implementation from .override directive in Equals return this.Equals(other); } static Type _200C_206C_200F_206C_202C_202E_200C_200D_202B_202B_200C_206B_200D_206D_202E_206E_206F_206E_206E_202B_202B_200C_206E_202B_200F_206C_200C_200E_206F_206C_206D_200B_200C_206D_206D_202C_206E_200F_200E_202B_202E(RuntimeTypeHandle P_0) { return Type.GetTypeFromHandle(P_0); } static bool _202E_200D_202B_206F_202E_206C_200C_200E_202A_206F_200E_206F_202E_202D_202C_206D_202E_200C_206D_206D_200F_200B_206F_202C_202D_206E_200E_206B_206F_200C_202E_206C_206C_206F_206B_206D_206B_200D_202D_206F_202E(Type P_0, Type P_1) { return P_0 == P_1; } } internal sealed class UnmountExecutor(ICondition condition, ILogger logger, GameFunctions gameFunctions, IObjectTable objectTable) : TaskExecutor() { private bool _unmountTriggered; private long _continueAtMs; [MethodImpl(MethodImplOptions.NoInlining)] protected override bool Start() { int num = (_202B_202C_206F_200E_202E_206E_200E_200C_200C_206B_202D_200F_202C_206F_206D_206A_200E_202B_200D_206A_202C_202A_200B_206A_200D_202B_206B_206F_202B_202D_202D_200D_206A_206A_202E_200C_200F_200B_202C_206C_202E(condition, ConditionFlag.Mounted) ? 488246470 : 488246469); while (true) { int num2 = num; int num3 = 488246471; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: _unmountTriggered = gameFunctions.Unmount(); _continueAtMs = _202B_206A_206A_206D_206A_200C_200F_206E_206F_206D_206C_202A_206B_206C_200C_202C_206F_206D_206C_200E_202E_200C_200C_200C_202A_202E_206B_200E_206F_200B_206C_202B_200E_200F_206E_202C_202D_206A_200C_206D_202E() + 1000; return true; case 2: return false; case 4: gameFunctions.Unmount(); _continueAtMs = _202B_206A_206A_206D_206A_200C_200F_206E_206F_206D_206C_202A_206B_206C_200C_202C_206F_206D_206C_200E_202E_200C_200C_200C_202A_202E_206B_200E_206F_200B_206C_202B_200E_200F_206E_202C_202D_206A_200C_206D_202E() + 1000; return true; case 3: num = 488246469; break; case 1: _202C_202D_200C_202C_200B_206C_200E_200F_202B_200F_200C_200E_206C_206A_200C_206F_202A_200B_202D_206E_206A_202D_206A_206A_200C_202B_200D_206B_206D_206F_202C_206F_202A_206D_202E_202E_202B_200F_200D_202A_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(-194036115), Array.Empty()); num = ((!_202B_202C_206F_200E_202E_206E_200E_200C_200C_206B_202D_200F_202C_206F_206D_206A_200E_202B_200D_206A_202C_202A_200B_206A_200D_202B_206B_206F_202B_202D_202D_200D_206A_206A_202E_200C_200F_200B_202C_206C_202E(condition, ConditionFlag.InFlight)) ? 488246471 : 488246467); break; } } } public override ETaskResult Update() { int num = ((_202B_206A_206A_206D_206A_200C_200F_206E_206F_206D_206C_202A_206B_206C_200C_202C_206F_206D_206C_200E_202E_200C_200C_200C_202A_202E_206B_200E_206F_200B_206C_202B_200E_200F_206E_202C_202D_206A_200C_206D_202E() >= _continueAtMs) ? 353264902 : 353264910); while (true) { int num2 = num; int num3 = 353264907; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 13: num = ((!IsUnmounting()) ? 353264903 : 353264898); break; case 14: num = ((!_202B_202C_206F_200E_202E_206E_200E_200C_200C_206B_202D_200F_202C_206F_206D_206A_200E_202B_200D_206A_202C_202A_200B_206A_200D_202B_206B_206F_202B_202D_202D_200D_206A_206A_202E_200C_200F_200B_202C_206C_202E(condition, ConditionFlag.InCombat)) ? 353264899 : 353264904); break; case 6: _continueAtMs = _202B_206A_206A_206D_206A_200C_200F_206E_206F_206D_206C_202A_206B_206C_200C_202C_206F_206D_206C_200E_202E_200C_200C_200C_202A_202E_206B_200E_206F_200B_206C_202B_200E_200F_206E_202C_202D_206A_200C_206D_202E() + 1000; return ETaskResult.StillRunning; case 1: num = ((!_202B_202C_206F_200E_202E_206E_200E_200C_200C_206B_202D_200F_202C_206F_206D_206A_200E_202B_200D_206A_202C_202A_200B_206A_200D_202B_206B_206F_202B_202D_202D_200D_206A_206A_202E_200C_200F_200B_202C_206C_202E(condition, ConditionFlag.Mounted)) ? 353264899 : 353264901); break; case 0: num = 353264910; break; case 2: return ETaskResult.TaskComplete; case 3: _unmountTriggered = gameFunctions.Unmount(); _continueAtMs = _202B_206A_206A_206D_206A_200C_200F_206E_206F_206D_206C_202A_206B_206C_200C_202C_206F_206D_206C_200E_202E_200C_200C_200C_202A_202E_206B_200E_206F_200B_206C_202B_200E_200F_206E_202C_202D_206A_200C_206D_202E() + 1000; return ETaskResult.StillRunning; case 11: num = ((!_202B_202C_206F_200E_202E_206E_200E_200C_200C_206B_202D_200F_202C_206F_206D_206A_200E_202B_200D_206A_202C_202A_200B_206A_200D_202B_206B_206F_202B_202D_202D_200D_206A_206A_202E_200C_200F_200B_202C_206C_202E(condition, ConditionFlag.InFlight)) ? 353264911 : 353264897); break; case 12: num = (_unmountTriggered ? 353264906 : 353264896); break; case 5: return ETaskResult.StillRunning; case 7: return ETaskResult.StillRunning; case 4: _unmountTriggered = gameFunctions.Unmount(); num = 353264909; break; case 8: num = (_202B_202C_206F_200E_202E_206E_200E_200C_200C_206B_202D_200F_202C_206F_206D_206A_200E_202B_200D_206A_202C_202A_200B_206A_200D_202B_206B_206F_202B_202D_202D_200D_206A_206A_202E_200C_200F_200B_202C_206C_202E(condition, ConditionFlag.Mounted) ? 353264908 : 353264905); break; case 10: gameFunctions.Unmount(); num = 353264909; break; case 9: return ETaskResult.StillRunning; } } } private unsafe bool IsUnmounting() { IPlayerCharacter playerCharacter = _200B_202D_206D_206F_206B_202D_206B_206C_200C_202B_206F_206C_206E_200C_200E_202E_202D_202E_206C_206B_202B_200D_202B_206A_202B_206E_202B_206A_206E_206D_206D_200D_202D_202B_206E_200C_202D_206C_202E_202A_202E(objectTable); int num = ((playerCharacter == null) ? 117430025 : 117430026); while (true) { int num2 = num; int num3 = 117430027; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: goto IL_0052; case 2: return false; case 1: { BattleChara* ptr = (BattleChara*)_200F_202B_206E_200F_206E_200C_200C_200F_206E_206D_206C_200D_202D_206E_200C_200E_206B_202D_202C_206D_206A_206D_200C_206E_200D_202E_202B_206F_200B_202D_206F_202A_206C_200E_206E_200E_206A_200D_202E_202E((IGameObject)playerCharacter); byte flags = ptr->Mount.Flags; num3 = 1; num4 = flags; return num4 + num3 - (num4 | num3) == 1; } } continue; IL_0052: num = 117430026; } } public override bool ShouldInterruptOnDamage() { return false; } static bool _202B_202C_206F_200E_202E_206E_200E_200C_200C_206B_202D_200F_202C_206F_206D_206A_200E_202B_200D_206A_202C_202A_200B_206A_200D_202B_206B_206F_202B_202D_202D_200D_206A_206A_202E_200C_200F_200B_202C_206C_202E(ICondition P_0, ConditionFlag P_1) { return P_0[P_1]; } static void _202C_202D_200C_202C_200B_206C_200E_200F_202B_200F_200C_200E_206C_206A_200C_206F_202A_200B_202D_206E_206A_202D_206A_206A_200C_202B_200D_206B_206D_206F_202C_206F_202A_206D_202E_202E_202B_200F_200D_202A_202E(ILogger P_0, string P_1, object[] P_2) { P_0.LogDebug(P_1, P_2); } static long _202B_206A_206A_206D_206A_200C_200F_206E_206F_206D_206C_202A_206B_206C_200C_202C_206F_206D_206C_200E_202E_200C_200C_200C_202A_202E_206B_200E_206F_200B_206C_202B_200E_200F_206E_202C_202D_206A_200C_206D_202E() { return Environment.TickCount64; } static IPlayerCharacter _200B_202D_206D_206F_206B_202D_206B_206C_200C_202B_206F_206C_206E_200C_200E_202E_202D_202E_206C_206B_202B_200D_202B_206A_202B_206E_202B_206A_206E_206D_206D_200D_202D_202B_206E_200C_202D_206C_202E_202A_202E(IObjectTable P_0) { return P_0.LocalPlayer; } static nint _200F_202B_206E_200F_206E_200C_200C_200F_206E_206D_206C_200D_202D_206E_200C_200E_206B_202D_202C_206D_206A_206D_200C_206E_200D_202E_202B_206F_200B_202D_206F_202A_206C_200E_206E_200E_206A_200D_202E_202E(IGameObject P_0) { return P_0.Address; } } public enum EMountIf { Always, AwayFromPosition } }