forked from aly/qstbak
627 lines
32 KiB
C#
627 lines
32 KiB
C#
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<string>(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<string>(-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<string>(-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<string>(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<string>(-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<FFXIVClientStructs.FFXIV.Common.Math.Vector3?>.Default.Equals(Position, other.Position);
|
|
case 1:
|
|
num = (((object)other == null) ? (-244243582) : (-244243584));
|
|
break;
|
|
case 6:
|
|
return false;
|
|
case 3:
|
|
num = ((!EqualityComparer<ushort>.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<EMountIf>.Default.Equals(MountIf, other.MountIf)) ? (-244243582) : (-244243583));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
bool IEquatable<MountTask>.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<MountEvaluator> 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<string>(-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<string>(-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<string>(603618635), Array.Empty<object>());
|
|
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<string>(1312445464), Array.Empty<object>());
|
|
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<string>(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<MountExecutor> logger) : TaskExecutor<MountTask>()
|
|
{
|
|
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<string>(1137964517), Array.Empty<object>());
|
|
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<string>(614136280), Array.Empty<object>());
|
|
_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<string>(1257322524), Array.Empty<object>());
|
|
_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<string>(-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<UnmountTask>.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<UnmountExecutor> logger, GameFunctions gameFunctions, IObjectTable objectTable) : TaskExecutor<UnmountTask>()
|
|
{
|
|
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<string>(-194036115), Array.Empty<object>());
|
|
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
|
|
}
|
|
}
|