1354 lines
52 KiB
C#
1354 lines
52 KiB
C#
using System;
|
|
using System.Numerics;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Runtime.InteropServices;
|
|
using Dalamud.Game.ClientState.Objects.SubKinds;
|
|
using Dalamud.Game.ClientState.Objects.Types;
|
|
using Dalamud.Game.ClientState.Statuses;
|
|
using Dalamud.Game.Config;
|
|
using Dalamud.Hooking;
|
|
using Dalamud.Plugin.Services;
|
|
using FFXIVClientStructs.FFXIV.Client.Game;
|
|
using FFXIVClientStructs.FFXIV.Client.Game.Control;
|
|
using FFXIVClientStructs.FFXIV.Client.Graphics.Render;
|
|
using FFXIVClientStructs.FFXIV.Common.Math;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace LLib.Movement;
|
|
|
|
public sealed class MovementOverrideHook : IDisposable
|
|
{
|
|
private unsafe delegate bool RMIWalkIsInputEnabledDelegate(void* self);
|
|
|
|
private unsafe delegate void RMIWalkDelegate(void* self, float* sumLeft, float* sumForward, float* sumTurnLeft, byte* haveBackwardOrStrafe, byte* a6, byte bAdditiveUnk);
|
|
|
|
private unsafe delegate void RMIFlyDelegate(void* self, PlayerMoveControllerFlyInput* result);
|
|
|
|
private unsafe delegate byte MoveControlIsInputActiveDelegate(void* self, byte inputSourceFlags);
|
|
|
|
private const float DefaultPrecision = 0.1f;
|
|
|
|
private const float StallDistanceThreshold = 0.3f;
|
|
|
|
private const long StallTimeThresholdMs = 500L;
|
|
|
|
private const long StallCooldownMs = 500L;
|
|
|
|
private const long StallContinuityGapMs = 250L;
|
|
|
|
private const long UserInputFreshnessMs = 250L;
|
|
|
|
private const float MisdirectionThresholdRad = MathF.PI / 4f;
|
|
|
|
private static readonly uint[] MisdirectionStatusIds;
|
|
|
|
private readonly ILogger<MovementOverrideHook> _logger;
|
|
|
|
private readonly IObjectTable _objectTable;
|
|
|
|
private readonly IGameConfig _gameConfig;
|
|
|
|
private RMIWalkIsInputEnabledDelegate? _isInputEnabled1;
|
|
|
|
private RMIWalkIsInputEnabledDelegate? _isInputEnabled2;
|
|
|
|
private Hook<RMIWalkDelegate>? _rmiWalkHook;
|
|
|
|
private Hook<RMIFlyDelegate>? _rmiFlyHook;
|
|
|
|
private Hook<MoveControlIsInputActiveDelegate>? _mcIsInputActiveHook;
|
|
|
|
private unsafe float* _forcedMovementDirection;
|
|
|
|
private bool? _forcedControlState;
|
|
|
|
private System.Numerics.Vector3? _desiredDirection;
|
|
|
|
private System.Numerics.Vector3? _desiredPosition;
|
|
|
|
private System.Numerics.Vector3? _desiredFlyPosition;
|
|
|
|
private System.Numerics.Vector3 _stallCheckPosition;
|
|
|
|
private long _stallCheckStartMs;
|
|
|
|
private long _stallCooldownUntilMs;
|
|
|
|
private long _lastDriveMs;
|
|
|
|
private float _flyStallBestDist;
|
|
|
|
private long _flyStallImprovementMs;
|
|
|
|
private long _flyStallCooldownUntilMs;
|
|
|
|
private long _flyLastDriveMs;
|
|
|
|
private bool _legacyMode;
|
|
|
|
private long _lastUserInputAtMs;
|
|
|
|
public Func<bool>? IsExternalPathfindingActive { get; set; }
|
|
|
|
public bool IsAvailable { get; private set; }
|
|
|
|
public bool IsActive { get; private set; }
|
|
|
|
public bool UserInputDetected => _202C_200F_206E_202D_202A_202D_202E_206A_202D_202B_206E_200F_200D_200E_202A_202A_200E_206D_206D_202B_200C_206E_200E_202B_202A_200E_202B_200E_202E_206C_202C_206F_202D_202C_200B_202C_206B_202B_200D_206F_202E() - _lastUserInputAtMs < 250;
|
|
|
|
public float Precision { get; set; } = 0.1f;
|
|
|
|
public System.Numerics.Vector3? DesiredDirection
|
|
{
|
|
get
|
|
{
|
|
return _desiredDirection;
|
|
}
|
|
set
|
|
{
|
|
System.Numerics.Vector3? desiredDirection = _desiredDirection;
|
|
System.Numerics.Vector3? vector = value;
|
|
int num = ((desiredDirection.HasValue == vector.HasValue) ? (-1630909431) : (-1630909425));
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = -1630909430;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 8:
|
|
num = -1630909425;
|
|
break;
|
|
case 2:
|
|
if (desiredDirection.GetValueOrDefault() == vector.GetValueOrDefault())
|
|
{
|
|
goto case 6;
|
|
}
|
|
goto case 5;
|
|
case 6:
|
|
num = -1630909429;
|
|
break;
|
|
case 5:
|
|
num = -1630909426;
|
|
break;
|
|
case 3:
|
|
num = (desiredDirection.HasValue ? (-1630909432) : (-1630909428));
|
|
break;
|
|
case 4:
|
|
_desiredDirection = value;
|
|
num = ((!value.HasValue) ? (-1630909427) : (-1630909430));
|
|
break;
|
|
case 0:
|
|
_desiredPosition = null;
|
|
num = -1630909427;
|
|
break;
|
|
case 7:
|
|
ResetStallTracking();
|
|
return;
|
|
case 1:
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public System.Numerics.Vector3? DesiredPosition
|
|
{
|
|
get
|
|
{
|
|
return _desiredPosition;
|
|
}
|
|
set
|
|
{
|
|
System.Numerics.Vector3? desiredPosition = _desiredPosition;
|
|
System.Numerics.Vector3? vector = value;
|
|
int num = ((desiredPosition.HasValue == vector.HasValue) ? 1571063872 : 1571063873);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 1571063878;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
default:
|
|
continue;
|
|
case 3:
|
|
num = 1571063873;
|
|
continue;
|
|
case 5:
|
|
_desiredPosition = value;
|
|
num = ((!value.HasValue) ? 1571063878 : 1571063879);
|
|
continue;
|
|
case 6:
|
|
num = (desiredPosition.HasValue ? 1571063874 : 1571063876);
|
|
continue;
|
|
case 8:
|
|
return;
|
|
case 0:
|
|
ResetStallTracking();
|
|
return;
|
|
case 1:
|
|
_desiredDirection = null;
|
|
num = 1571063878;
|
|
continue;
|
|
case 4:
|
|
if (!(desiredPosition.GetValueOrDefault() == vector.GetValueOrDefault()))
|
|
{
|
|
break;
|
|
}
|
|
goto case 2;
|
|
case 2:
|
|
num = 1571063886;
|
|
continue;
|
|
case 7:
|
|
break;
|
|
}
|
|
num = 1571063875;
|
|
}
|
|
}
|
|
}
|
|
|
|
public System.Numerics.Vector3? DesiredFlyPosition
|
|
{
|
|
get
|
|
{
|
|
return _desiredFlyPosition;
|
|
}
|
|
set
|
|
{
|
|
System.Numerics.Vector3? desiredFlyPosition = _desiredFlyPosition;
|
|
System.Numerics.Vector3? vector = value;
|
|
int num = ((desiredFlyPosition.HasValue == vector.HasValue) ? 175204761 : 175204766);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 175204762;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 0:
|
|
return;
|
|
case 6:
|
|
if (desiredFlyPosition.GetValueOrDefault() == vector.GetValueOrDefault())
|
|
{
|
|
goto case 1;
|
|
}
|
|
goto case 4;
|
|
case 1:
|
|
num = 175204762;
|
|
break;
|
|
case 4:
|
|
num = 175204760;
|
|
break;
|
|
case 5:
|
|
num = 175204766;
|
|
break;
|
|
case 3:
|
|
num = (desiredFlyPosition.HasValue ? 175204764 : 175204763);
|
|
break;
|
|
case 2:
|
|
_desiredFlyPosition = value;
|
|
ResetFlyStallTracking();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public MovementOverrideHook(ILogger<MovementOverrideHook> logger, IObjectTable objectTable, IGameConfig gameConfig, ISigScanner sigScanner, IGameInteropProvider interop, bool enabled = true)
|
|
{
|
|
_logger = logger;
|
|
_objectTable = objectTable;
|
|
_gameConfig = gameConfig;
|
|
_202B_206B_206B_202B_202A_206A_200E_200F_206C_206E_206F_200C_200F_202C_206B_206B_202B_206A_202C_206A_206E_206E_206B_206E_206D_200D_200D_206C_206B_202E_206F_206A_200C_202A_200E_206E_200E_202B_206A_202C_202E(_gameConfig, (EventHandler<ConfigChangeEvent>)OnGameConfigChanged);
|
|
UpdateLegacyMode();
|
|
TryInstallHook(sigScanner, interop, enabled);
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.NoInlining)]
|
|
private unsafe void TryInstallHook(ISigScanner sigScanner, IGameInteropProvider interop, bool enabled)
|
|
{
|
|
int num = (enabled ? (-1900473583) : (-1900473584));
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = -1900473583;
|
|
int num4 = num2;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 2:
|
|
goto IL_004a;
|
|
case 1:
|
|
_200C_200F_202B_200E_202B_200C_206E_200D_202A_202D_206A_202D_200D_200F_206C_200E_202C_202C_206D_206D_206D_200E_202E_200C_200C_206B_200D_200C_206D_206E_200D_202B_206D_206D_202A_202B_202A_206E_200C_200D_202E((ILogger)_logger, global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(-1885951886), Array.Empty<object>());
|
|
IsAvailable = false;
|
|
return;
|
|
case 0:
|
|
try
|
|
{
|
|
nint num5 = _202E_206A_202B_200D_202E_206C_200D_206D_200C_200B_202C_206B_202B_200D_206C_206A_206E_202A_202D_200E_200B_200F_200E_206C_200E_200C_200D_206E_202E_202D_202B_200F_206E_200D_202E_202B_202E_206B_202C_200F_202E(sigScanner, global::_003CModule_003E._202E_202C_206D_206B_202B_202D_206D_202E_206F_202E_202A_206A_206A_202B_206A_202D_202C_206C_206B_202C_206E_202B_200E_206E_206A_206C_200D_200D_200F_200B_202C_200B_200E_206F_202C_200F_202D_202A_206E_202B_202E<string>(4336795));
|
|
_isInputEnabled1 = Marshal.GetDelegateForFunctionPointer<RMIWalkIsInputEnabledDelegate>(num5);
|
|
nint num6 = _202E_206A_202B_200D_202E_206C_200D_206D_200C_200B_202C_206B_202B_200D_206C_206A_206E_202A_202D_200E_200B_200F_200E_206C_200E_200C_200D_206E_202E_202D_202B_200F_206E_200D_202E_202B_202E_206B_202C_200F_202E(sigScanner, global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(-343401937));
|
|
_isInputEnabled2 = Marshal.GetDelegateForFunctionPointer<RMIWalkIsInputEnabledDelegate>(num6);
|
|
_rmiWalkHook = interop.HookFromSignature<RMIWalkDelegate>(global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(211326417), RMIWalkDetour);
|
|
_rmiWalkHook.Enable();
|
|
_rmiFlyHook = interop.HookFromSignature<RMIFlyDelegate>(global::_003CModule_003E._206A_206D_202C_206E_206D_206E_202A_200F_200D_206A_200F_206C_202C_202D_206D_206A_200D_200F_206A_206C_202C_206D_206E_200F_200F_200C_206B_200B_206B_206E_202B_206B_200E_200E_200B_206F_200F_202E_200C_200C_202E<string>(509698149), RMIFlyDetour);
|
|
_rmiFlyHook.Enable();
|
|
IsAvailable = true;
|
|
_200C_200F_202B_200E_202B_200C_206E_200D_202A_202D_206A_202D_200D_200F_206C_200E_202C_202C_206D_206D_206D_200E_202E_200C_200C_206B_200D_200C_206D_206E_200D_202B_206D_206D_202A_202B_202A_206E_200C_200D_202E((ILogger)_logger, global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(113861434), new object[4] { _rmiWalkHook.Address, _rmiFlyHook.Address, num5, num6 });
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
num = ((!IsTrampolineExhaustion(ex)) ? (-1568159259) : (-1568159263));
|
|
while (true)
|
|
{
|
|
int num7 = num;
|
|
num3 = -1568159264;
|
|
num4 = num7;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
default:
|
|
continue;
|
|
case 2:
|
|
num = -1568159263;
|
|
continue;
|
|
case 0:
|
|
{
|
|
_rmiWalkHook = null;
|
|
Hook<RMIFlyDelegate>? rmiFlyHook = _rmiFlyHook;
|
|
if (rmiFlyHook == null)
|
|
{
|
|
break;
|
|
}
|
|
rmiFlyHook.Dispose();
|
|
num = -1568159261;
|
|
continue;
|
|
}
|
|
case 4:
|
|
{
|
|
IsAvailable = false;
|
|
_isInputEnabled1 = null;
|
|
_isInputEnabled2 = null;
|
|
Hook<RMIWalkDelegate>? rmiWalkHook = _rmiWalkHook;
|
|
if (rmiWalkHook == null)
|
|
{
|
|
goto case 0;
|
|
}
|
|
rmiWalkHook.Dispose();
|
|
num = -1568159264;
|
|
continue;
|
|
}
|
|
case 1:
|
|
_206C_206C_202A_200B_206C_200C_200E_202B_200C_202B_202D_200B_200D_200D_202A_200B_206D_202E_200B_206B_206D_200D_202D_200B_206C_202C_206A_202C_206E_202D_200B_206C_206F_206F_202B_200E_206F_202A_200C_206A_202E((ILogger)_logger, ex, global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(-763323413), Array.Empty<object>());
|
|
num = -1568159260;
|
|
continue;
|
|
case 5:
|
|
_206C_206C_202A_200B_206C_200C_200E_202B_200C_202B_202D_200B_200D_200D_202A_200B_206D_202E_200B_206B_206D_200D_202D_200B_206C_202C_206A_202C_206E_202D_200B_206C_206F_206F_202B_200E_206F_202A_200C_206A_202E((ILogger)_logger, ex, global::_003CModule_003E._206A_206D_202C_206E_206D_206E_202A_200F_200D_206A_200F_206C_202C_202D_206D_206A_200D_200F_206A_206C_202C_206D_206E_200F_200F_200C_206B_200B_206B_206E_202B_206B_200E_200E_200B_206F_200F_202E_200C_200C_202E<string>(1136207760), Array.Empty<object>());
|
|
num = -1568159260;
|
|
continue;
|
|
case 3:
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
_rmiFlyHook = null;
|
|
return;
|
|
}
|
|
try
|
|
{
|
|
nint num8 = (nint)(_forcedMovementDirection = (float*)_206F_202A_206B_202A_200C_202D_206F_202E_206C_206D_202A_206B_200C_200E_202D_200D_202C_200C_206A_206D_206A_206A_200C_202C_202B_200E_206E_202B_200B_206A_200D_200D_206C_206A_206C_200B_200C_206E_202D_206B_202E(sigScanner, global::_003CModule_003E._202E_202C_206D_206B_202B_202D_206D_202E_206F_202E_202A_206A_206A_202B_206A_202D_202C_206C_206B_202C_206E_202B_200E_206E_206A_206C_200D_200D_200F_200B_202C_200B_200E_206F_202C_200F_202D_202A_206E_202B_202E<string>(-334079399), 0));
|
|
_mcIsInputActiveHook = interop.HookFromSignature<MoveControlIsInputActiveDelegate>(global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(-1492373940), MCIsInputActiveDetour);
|
|
_mcIsInputActiveHook.Enable();
|
|
_200C_200F_202B_200E_202B_200C_206E_200D_202A_202D_206A_202D_200D_200F_206C_200E_202C_202C_206D_206D_206D_200E_202E_200C_200C_206B_200D_200C_206D_206E_200D_202B_206D_206D_202A_202B_202A_206E_200C_200D_202E((ILogger)_logger, global::_003CModule_003E._202E_202C_206D_206B_202B_202D_206D_202E_206F_202E_202A_206A_206A_202B_206A_202D_202C_206C_206B_202C_206E_202B_200E_206E_206A_206C_200D_200D_200F_200B_202C_200B_200E_206F_202C_200F_202D_202A_206E_202B_202E<string>(-1868632107), new object[2] { _mcIsInputActiveHook.Address, num8 });
|
|
return;
|
|
}
|
|
catch (Exception ex2)
|
|
{
|
|
_206C_206C_202A_200B_206C_200C_200E_202B_200C_202B_202D_200B_200D_200D_202A_200B_206D_202E_200B_206B_206D_200D_202D_200B_206C_202C_206A_202C_206E_202D_200B_206C_206F_206F_202B_200E_206F_202A_200C_206A_202E((ILogger)_logger, ex2, global::_003CModule_003E._206E_202B_206C_202A_202A_200E_202B_202B_206D_200B_200C_206B_200B_206D_202E_202D_206C_202B_200B_206A_202D_206C_202A_200F_202D_200C_200B_200B_200B_200D_202C_206E_206D_202E_200C_206B_206A_206D_202D_202C_202E<string>(164606071), Array.Empty<object>());
|
|
_forcedMovementDirection = null;
|
|
_mcIsInputActiveHook?.Dispose();
|
|
_mcIsInputActiveHook = null;
|
|
return;
|
|
}
|
|
}
|
|
continue;
|
|
IL_004a:
|
|
num = -1900473584;
|
|
}
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.NoInlining)]
|
|
private static bool IsTrampolineExhaustion(Exception ex)
|
|
{
|
|
int num = (_206C_202D_206F_202C_206C_200D_200E_202B_206B_206C_200E_206F_206F_206B_206B_200B_202C_206F_202E_200C_206A_200C_200E_202D_200D_206B_206C_206E_200D_206C_206B_206B_200C_200F_200D_202C_206B_200E_206C_200D_202E(_200B_200E_202A_200F_206F_200D_206F_206C_202C_206E_206E_206C_202C_202C_200B_202B_206F_200B_202D_206C_200D_206F_206A_206A_202B_202A_200F_206E_200D_200D_202B_202A_202E_202E_206B_200D_200E_202D_206E_202B_202E(ex), global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(493339631), StringComparison.Ordinal) ? (-550622530) : (-550622529));
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = -550622530;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 2:
|
|
goto IL_0058;
|
|
case 0:
|
|
return true;
|
|
case 1:
|
|
return _206C_202D_206F_202C_206C_200D_200E_202B_206B_206C_200E_206F_206F_206B_206B_200B_202C_206F_202E_200C_206A_200C_200E_202D_200D_206B_206C_206E_200D_206C_206B_206B_200C_200F_200D_202C_206B_200E_206C_200D_202E(_200B_200E_202A_200F_206F_200D_206F_206C_202C_206E_206E_206C_202C_202C_200B_202B_206F_200B_202D_206C_200D_206F_206A_206A_202B_202A_200F_206E_200D_200D_202B_202A_202E_202E_206B_200D_200E_202D_206E_202B_202E(ex), global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(2133354563), StringComparison.OrdinalIgnoreCase);
|
|
}
|
|
continue;
|
|
IL_0058:
|
|
num = -550622529;
|
|
}
|
|
}
|
|
|
|
private unsafe byte MCIsInputActiveDetour(void* self, byte inputSourceFlags)
|
|
{
|
|
int num = ((!_forcedControlState.HasValue) ? 1868292107 : 1868292104);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 1868292106;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 0:
|
|
goto IL_004d;
|
|
case 1:
|
|
return _mcIsInputActiveHook.Original(self, inputSourceFlags);
|
|
case 2:
|
|
return _forcedControlState.Value ? ((byte)1) : ((byte)0);
|
|
}
|
|
continue;
|
|
IL_004d:
|
|
num = 1868292104;
|
|
}
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.NoInlining)]
|
|
private unsafe void RMIFlyDetour(void* self, PlayerMoveControllerFlyInput* result)
|
|
{
|
|
_rmiFlyHook.Original(self, result);
|
|
int num = ((result->Forward != 0f) ? (-511834047) : (-511834036));
|
|
float num6 = default(float);
|
|
float num12 = default(float);
|
|
IPlayerCharacter playerCharacter = default(IPlayerCharacter);
|
|
bool flag = default(bool);
|
|
float num5 = default(float);
|
|
float? num10 = default(float?);
|
|
long num8 = default(long);
|
|
System.Numerics.Vector3 vector2 = default(System.Numerics.Vector3);
|
|
System.Numerics.Vector3 valueOrDefault = default(System.Numerics.Vector3);
|
|
System.Numerics.Vector3? desiredFlyPosition = default(System.Numerics.Vector3?);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = -511834024;
|
|
int num4 = num2;
|
|
int num11;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 15:
|
|
{
|
|
Func<bool>? isExternalPathfindingActive = IsExternalPathfindingActive;
|
|
num = ((isExternalPathfindingActive == null || !isExternalPathfindingActive()) ? (-511834032) : (-511834039));
|
|
break;
|
|
}
|
|
case 26:
|
|
return;
|
|
case 29:
|
|
_desiredFlyPosition = null;
|
|
ResetFlyStallTracking();
|
|
return;
|
|
case 16:
|
|
return;
|
|
case 0:
|
|
num6 = _202B_200B_200F_200C_202D_206C_206D_202B_202A_200B_200F_206B_200C_206D_200B_202D_206E_202C_206F_206C_202D_200D_200F_202A_202A_200D_200B_206B_206A_206C_202C_206C_200E_206C_206D_200B_206C_202D_202A_206D_202E(num12);
|
|
num = ((_flyStallImprovementMs == 0L) ? (-511834041) : (-511834034));
|
|
break;
|
|
case 8:
|
|
playerCharacter = _200B_206D_206B_202B_206D_200D_200B_200C_206D_200C_206B_206F_202B_206A_200D_202C_202A_200D_202C_200C_200E_206F_200E_202C_202B_206A_202E_200C_202E_202C_206D_202A_206E_202A_202D_202A_202A_200F_200D_200D_202E(_objectTable);
|
|
num = ((playerCharacter != null) ? (-511834018) : (-511834038));
|
|
break;
|
|
case 14:
|
|
num = ((!flag) ? (-511834025) : (-511834040));
|
|
break;
|
|
case 5:
|
|
num5 = num10.Value + MathF.PI;
|
|
num = -511834033;
|
|
break;
|
|
case 27:
|
|
{
|
|
long num7 = num8;
|
|
long flyStallImprovementMs = _flyStallImprovementMs;
|
|
long num9 = num7;
|
|
num = ((~(~num9 + flyStallImprovementMs) < 500) ? (-511834020) : (-511834035));
|
|
break;
|
|
}
|
|
case 17:
|
|
return;
|
|
case 19:
|
|
num = -511834036;
|
|
break;
|
|
case 18:
|
|
return;
|
|
case 1:
|
|
{
|
|
System.Numerics.Vector3 vector = _202E_202C_206C_206F_200D_200F_206A_206F_202A_200B_206F_200D_206E_202B_200C_202A_202B_202B_200B_200E_200D_202E_206C_206B_202D_200C_200B_200B_206C_200D_200B_206F_200B_206B_202B_206A_206C_200C_202B_200E_202E((IGameObject)playerCharacter);
|
|
vector2 = valueOrDefault - vector;
|
|
num12 = vector2.X * vector2.X + vector2.Y * vector2.Y + vector2.Z * vector2.Z;
|
|
num = ((!(num12 < Precision * Precision)) ? (-511834022) : (-511834043));
|
|
break;
|
|
}
|
|
case 12:
|
|
valueOrDefault = desiredFlyPosition.GetValueOrDefault();
|
|
num = -511834023;
|
|
break;
|
|
case 20:
|
|
num = ((result->Left != 0f) ? (-511834047) : (-511834048));
|
|
break;
|
|
case 23:
|
|
num8 = _202C_200F_206E_202D_202A_202D_202E_206A_202D_202B_206E_200F_200D_200E_202A_202A_200E_206D_206D_202B_200C_206E_200E_202B_202A_200E_202B_200E_202E_206C_202C_206F_202D_202C_200B_202C_206B_202B_200D_206F_202E();
|
|
num = ((num8 >= _flyStallCooldownUntilMs) ? (-511834024) : (-511834046));
|
|
break;
|
|
case 13:
|
|
_lastUserInputAtMs = _202C_200F_206E_202D_202A_202D_202E_206A_202D_202B_206E_200F_200D_200E_202A_202A_200E_206D_206D_202B_200C_206E_200E_202B_202A_200E_202B_200E_202E_206C_202C_206F_202D_202C_200B_202C_206B_202B_200D_206F_202E();
|
|
num = -511834044;
|
|
break;
|
|
case 9:
|
|
return;
|
|
case 22:
|
|
{
|
|
long num19 = num8;
|
|
long flyStallImprovementMs = _flyLastDriveMs;
|
|
long num9 = num19;
|
|
num = ((~(~num9 + flyStallImprovementMs) > 250) ? (-511834041) : (-511834030));
|
|
break;
|
|
}
|
|
case 4:
|
|
{
|
|
_flyLastDriveMs = num8;
|
|
float num17 = _200E_206F_200F_200B_206F_200B_200B_200B_200B_206C_206E_206A_202D_206C_202D_200C_202B_202B_200B_200F_206A_202B_200D_206B_206A_202E_206E_202A_202A_202C_206A_202C_206D_206A_202A_202A_206F_202D_206E_206F_202E(vector2.X, vector2.Z) - num5;
|
|
result->Forward = _206B_202D_206C_200D_206A_206A_202E_206B_200D_206C_202E_206A_202A_206C_200B_206C_202C_200B_206D_200B_206C_202B_202D_200C_200F_200D_202D_202C_206C_202C_206E_202A_200D_206B_206F_200F_202B_200D_202A_206D_202E(num17);
|
|
result->Left = _206D_202C_200F_202D_200D_200C_206D_202D_206E_206F_206D_206F_200E_200D_200D_200B_200C_202C_202D_200C_202D_200E_200E_200B_206F_200E_202C_202E_206D_200E_200C_200D_206A_202C_200D_206B_206E_200D_200F_206F_202E(num17);
|
|
float num18 = _202B_200B_200F_200C_202D_206C_206D_202B_202A_200B_200F_206B_200C_206D_200B_202D_206E_202C_206F_206C_202D_200D_200F_202A_202A_200D_200B_206B_206A_206C_202C_206C_200E_206C_206D_200B_206C_202D_202A_206D_202E(vector2.X * vector2.X + vector2.Z * vector2.Z);
|
|
result->Up = _200E_206F_200F_200B_206F_200B_200B_200B_200B_206C_206E_206A_202D_206C_202D_200C_202B_202B_200B_200F_206A_202B_200D_206B_206A_202E_206E_202A_202A_202C_206A_202C_206D_206A_202A_202A_206F_202D_206E_206F_202E(vector2.Y, num18);
|
|
return;
|
|
}
|
|
case 21:
|
|
{
|
|
ILogger<MovementOverrideHook> logger = _logger;
|
|
string text = global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(-934855556);
|
|
object[] obj = new object[2] { num6, null };
|
|
long num13 = num8;
|
|
long flyStallImprovementMs = _flyStallImprovementMs;
|
|
long num9 = num13;
|
|
obj[1] = ~(~num9 + flyStallImprovementMs);
|
|
_206E_200C_206E_206B_202C_202D_200E_200F_206D_202E_202A_202A_206B_202A_200E_200D_200E_202E_202D_200C_206A_200E_206A_200D_200E_202A_200F_200F_206A_206A_206E_206B_206C_202B_202B_206D_206E_200F_206B_206C_202E((ILogger)logger, text, obj);
|
|
_desiredFlyPosition = null;
|
|
ResetFlyStallTracking();
|
|
long num14 = num8;
|
|
flyStallImprovementMs = 500L;
|
|
num9 = num14;
|
|
long num15 = num9 ^ flyStallImprovementMs;
|
|
long num16 = num9 & flyStallImprovementMs;
|
|
_flyStallCooldownUntilMs = num15 + (num16 + num16);
|
|
return;
|
|
}
|
|
case 2:
|
|
num = ((!_legacyMode) ? (-511834017) : (-511834042));
|
|
break;
|
|
case 3:
|
|
return;
|
|
case 24:
|
|
num11 = ((result->Up != 0f) ? 1 : 0);
|
|
goto IL_0447;
|
|
case 25:
|
|
num11 = 1;
|
|
goto IL_0447;
|
|
case 6:
|
|
desiredFlyPosition = _desiredFlyPosition;
|
|
num = ((!desiredFlyPosition.HasValue) ? (-511834029) : (-511834028));
|
|
break;
|
|
case 28:
|
|
num = (IsAvailable ? (-511834026) : (-511834021));
|
|
break;
|
|
case 31:
|
|
_flyStallBestDist = num6;
|
|
_flyStallImprovementMs = num8;
|
|
num = -511834020;
|
|
break;
|
|
case 30:
|
|
num10 = TryGetCameraAzimuth();
|
|
num = (num10.HasValue ? (-511834019) : (-511834031));
|
|
break;
|
|
case 11:
|
|
return;
|
|
case 10:
|
|
num = ((!(num6 < _flyStallBestDist - 0.3f)) ? (-511834045) : (-511834041));
|
|
break;
|
|
case 7:
|
|
{
|
|
num5 = _206F_206B_206B_202D_200E_202B_206C_202A_202D_206A_202D_206D_206B_200B_206E_206D_200B_202B_206D_206F_200F_200E_200C_202E_206E_200B_206B_200C_206D_206E_200C_202D_206C_200D_202B_200F_200B_200F_200E_206C_202E((IGameObject)playerCharacter);
|
|
num = -511834033;
|
|
break;
|
|
}
|
|
IL_0447:
|
|
flag = (byte)num11 != 0;
|
|
num = ((!flag) ? (-511834044) : (-511834027));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private static bool PlayerHasMisdirection(IPlayerCharacter player)
|
|
{
|
|
StatusList statusList = _202E_206C_206D_202E_206C_206C_200D_206B_206A_206F_200B_202D_206C_200F_200C_200B_206C_206A_206A_202C_206B_202C_206A_206F_200B_200E_202E_206B_202D_202D_206F_202E_200B_206C_206A_206D_206F_202B_206B_200E_202E((IBattleChara)player);
|
|
int num = 0;
|
|
int num2 = -1842578236;
|
|
uint num8 = default(uint);
|
|
IStatus status = default(IStatus);
|
|
int num9 = default(int);
|
|
while (true)
|
|
{
|
|
int num3 = num2;
|
|
int num4 = -1842578235;
|
|
int num5 = num3;
|
|
int num6 = num5 + num4;
|
|
int num7 = num5 & num4;
|
|
switch (num6 - (num7 + num7))
|
|
{
|
|
case 9:
|
|
num2 = -1842578236;
|
|
break;
|
|
case 2:
|
|
{
|
|
int num13 = num;
|
|
num4 = 1;
|
|
num5 = num13;
|
|
int num14 = num5 ^ num4;
|
|
int num15 = num5 & num4;
|
|
num = num14 + (num15 + num15);
|
|
num2 = -1842578236;
|
|
break;
|
|
}
|
|
case 0:
|
|
num8 = _200F_200B_206A_200E_206A_200E_206F_206B_206B_202B_202A_206E_206C_202B_200F_200E_202B_202A_202E_200F_206D_206E_200F_200F_202B_202D_202A_206A_200B_206F_200B_200D_206D_200C_200F_206A_200E_200F_200F_202D_202E(status);
|
|
num9 = 0;
|
|
num2 = -1842578237;
|
|
break;
|
|
case 3:
|
|
num2 = ((num8 != MisdirectionStatusIds[num9]) ? (-1842578240) : (-1842578238));
|
|
break;
|
|
case 5:
|
|
{
|
|
int num10 = num9;
|
|
num4 = 1;
|
|
num5 = num10;
|
|
int num11 = num5 ^ num4;
|
|
int num12 = num5 & num4;
|
|
num9 = num11 + (num12 + num12);
|
|
num2 = -1842578237;
|
|
break;
|
|
}
|
|
case 6:
|
|
num2 = ((num9 < MisdirectionStatusIds.Length) ? (-1842578234) : (-1842578233));
|
|
break;
|
|
case 1:
|
|
num2 = ((num < _200F_202E_200C_200D_200F_202C_206F_206B_200D_200D_200D_202A_206C_202D_202A_200C_200D_206C_200D_202D_202C_206F_206C_200C_206B_200E_206B_202B_200B_200B_206C_202D_202B_202B_206D_206F_206F_206C_206A_202B_202E(statusList)) ? (-1842578227) : (-1842578239));
|
|
break;
|
|
case 7:
|
|
return true;
|
|
case 4:
|
|
return false;
|
|
case 8:
|
|
status = _200C_202B_200D_206B_202C_202E_200B_200F_200F_202B_200C_200B_206A_202D_200E_202E_200F_206A_202E_200F_206C_202D_206A_206B_206B_206A_202C_200B_202C_202B_206E_202D_202E_200E_200D_200B_200C_200C_200B_202D_202E(statusList, num);
|
|
num2 = ((status == null) ? (-1842578233) : (-1842578235));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.NoInlining)]
|
|
private unsafe void RMIWalkDetour(void* self, float* sumLeft, float* sumForward, float* sumTurnLeft, byte* haveBackwardOrStrafe, byte* a6, byte bAdditiveUnk)
|
|
{
|
|
int num = ((bAdditiveUnk != 0) ? (-1181401386) : (-1181401372));
|
|
float num11 = default(float);
|
|
System.Numerics.Vector3 vector = default(System.Numerics.Vector3);
|
|
long num14 = default(long);
|
|
float? num12 = default(float?);
|
|
float referenceRotation = default(float);
|
|
float num9 = default(float);
|
|
System.Numerics.Vector3? vector2 = default(System.Numerics.Vector3?);
|
|
float item = default(float);
|
|
float item2 = default(float);
|
|
IPlayerCharacter playerCharacter = default(IPlayerCharacter);
|
|
bool flag = default(bool);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = -1181401394;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
int num21;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 8:
|
|
num = ((num11 < -MathF.PI) ? (-1181401363) : (-1181401398));
|
|
break;
|
|
case 35:
|
|
num11 += MathF.PI * 2f;
|
|
num = -1181401402;
|
|
break;
|
|
case 48:
|
|
IsActive = false;
|
|
return;
|
|
case 33:
|
|
_stallCheckPosition = vector;
|
|
_stallCheckStartMs = num14;
|
|
num = -1181401375;
|
|
break;
|
|
case 15:
|
|
_stallCheckPosition = vector;
|
|
_stallCheckStartMs = num14;
|
|
num = -1181401375;
|
|
break;
|
|
case 46:
|
|
num = ((!_legacyMode) ? (-1181401370) : (-1181401394));
|
|
break;
|
|
case 21:
|
|
num = -1181401402;
|
|
break;
|
|
case 10:
|
|
num21 = 1;
|
|
goto IL_01b5;
|
|
case 34:
|
|
num = ((!_isInputEnabled1(self)) ? (-1181401403) : (-1181401378));
|
|
break;
|
|
case 0:
|
|
num12 = TryGetCameraAzimuth();
|
|
num = (num12.HasValue ? (-1181401380) : (-1181401397));
|
|
break;
|
|
case 18:
|
|
referenceRotation = num12.Value + MathF.PI;
|
|
num = -1181401395;
|
|
break;
|
|
case 36:
|
|
{
|
|
float num7 = vector.X - _stallCheckPosition.X;
|
|
float num8 = vector.Z - _stallCheckPosition.Z;
|
|
num9 = num7 * num7 + num8 * num8;
|
|
num = ((!(num9 < 0.09f)) ? (-1181401407) : (-1181401408));
|
|
break;
|
|
}
|
|
case 50:
|
|
IsActive = false;
|
|
return;
|
|
case 4:
|
|
{
|
|
bool flag2 = _206E_206E_200B_200C_202D_206C_200D_200E_200D_200B_206C_206E_200F_206E_206A_202C_200C_202D_206A_200D_202C_206E_206D_200F_202A_206A_200B_200C_200D_202A_202D_202B_206A_202D_206D_202C_206F_200F_206D_202A_202E(num11) <= MathF.PI / 4f;
|
|
_forcedControlState = flag2;
|
|
num = (flag2 ? (-1181401396) : (-1181401374));
|
|
break;
|
|
}
|
|
case 32:
|
|
num21 = ((*sumForward != 0f) ? 1 : 0);
|
|
goto IL_01b5;
|
|
case 42:
|
|
_forcedControlState = null;
|
|
num = -1181401386;
|
|
break;
|
|
case 6:
|
|
num14 = _202C_200F_206E_202D_202A_202D_202E_206A_202D_202B_206E_200F_200D_200E_202A_202A_200E_206D_206D_202B_200C_206E_200E_202B_202A_200E_202B_200E_202E_206C_202C_206F_202D_202C_200B_202C_206B_202B_200D_206F_202E();
|
|
num = ((num14 >= _stallCooldownUntilMs) ? (-1181401376) : (-1181401365));
|
|
break;
|
|
case 25:
|
|
{
|
|
long num20 = num14;
|
|
long stallCheckStartMs = _lastDriveMs;
|
|
long num15 = num20;
|
|
num = ((~(~num15 + stallCheckStartMs) <= 250) ? (-1181401345) : (-1181401361));
|
|
break;
|
|
}
|
|
case 29:
|
|
return;
|
|
case 38:
|
|
num = ((*sumLeft != 0f) ? (-1181401404) : (-1181401362));
|
|
break;
|
|
case 28:
|
|
IsActive = false;
|
|
return;
|
|
case 11:
|
|
IsActive = false;
|
|
return;
|
|
case 23:
|
|
_lastUserInputAtMs = _202C_200F_206E_202D_202A_202D_202E_206A_202D_202B_206E_200F_200D_200E_202A_202A_200E_206D_206D_202B_200C_206E_200E_202B_202A_200E_202B_200E_202E_206C_202C_206F_202D_202C_200B_202C_206B_202B_200D_206F_202E();
|
|
num = -1181401377;
|
|
break;
|
|
case 3:
|
|
{
|
|
(float left, float forward) tuple = WorldToPlayerRelative(vector2.Value, referenceRotation);
|
|
item = tuple.left;
|
|
item2 = tuple.forward;
|
|
num = ((!PlayerHasMisdirection(playerCharacter)) ? (-1181401396) : (-1181401401));
|
|
break;
|
|
}
|
|
case 30:
|
|
IsActive = false;
|
|
return;
|
|
case 43:
|
|
num = -1181401372;
|
|
break;
|
|
case 20:
|
|
IsActive = false;
|
|
return;
|
|
case 7:
|
|
{
|
|
Func<bool>? isExternalPathfindingActive = IsExternalPathfindingActive;
|
|
num = ((isExternalPathfindingActive == null || !isExternalPathfindingActive()) ? (-1181401393) : (-1181401392));
|
|
break;
|
|
}
|
|
case 1:
|
|
num = ((_isInputEnabled1 == null) ? (-1181401390) : (-1181401405));
|
|
break;
|
|
case 17:
|
|
num = (IsAvailable ? (-1181401369) : (-1181401382));
|
|
break;
|
|
case 40:
|
|
referenceRotation = _206F_206B_206B_202D_200E_202B_206C_202A_202D_206A_202D_206D_206B_200B_206E_206D_200B_202B_206D_206F_200F_200E_200C_202E_206E_200B_206B_200C_206D_206E_200C_202D_206C_200D_202B_200F_200B_200F_200E_206C_202E((IGameObject)playerCharacter);
|
|
num = -1181401395;
|
|
break;
|
|
case 22:
|
|
vector = _202E_202C_206C_206F_200D_200F_206A_206F_202A_200B_206F_200D_206E_202B_200C_202A_202B_202B_200B_200E_200D_202E_206C_206B_202D_200C_200B_200B_206C_200D_200B_206F_200B_206B_202B_206A_206C_200C_202B_200E_202E((IGameObject)playerCharacter);
|
|
vector2 = ComputeDesiredWorldDirection(vector);
|
|
num = (vector2.HasValue ? (-1181401400) : (-1181401406));
|
|
break;
|
|
case 2:
|
|
num = ((_stallCheckStartMs == 0L) ? (-1181401361) : (-1181401385));
|
|
break;
|
|
case 27:
|
|
num11 -= MathF.PI * 2f;
|
|
num = -1181401373;
|
|
break;
|
|
case 26:
|
|
playerCharacter = _200B_206D_206B_202B_206D_200D_200B_200C_206D_200C_206B_206F_202B_206A_200D_202C_202A_200D_202C_200C_200E_206F_200E_202C_202B_206A_202E_200C_202E_202C_206D_202A_206E_202A_202D_202A_202A_200F_200D_200D_202E(_objectTable);
|
|
num = ((playerCharacter != null) ? (-1181401384) : (-1181401348));
|
|
break;
|
|
case 44:
|
|
*sumLeft = 0f;
|
|
*sumForward = 0f;
|
|
IsActive = false;
|
|
return;
|
|
case 24:
|
|
_rmiWalkHook.Original(self, sumLeft, sumForward, sumTurnLeft, haveBackwardOrStrafe, a6, bAdditiveUnk);
|
|
num = ((bAdditiveUnk == 0) ? (-1181401368) : (-1181401389));
|
|
break;
|
|
case 47:
|
|
_lastDriveMs = num14;
|
|
*sumLeft = item;
|
|
*sumForward = item2;
|
|
IsActive = true;
|
|
return;
|
|
case 49:
|
|
{
|
|
long num19 = num14;
|
|
long stallCheckStartMs = _stallCheckStartMs;
|
|
long num15 = num19;
|
|
num = ((~(~num15 + stallCheckStartMs) < 500) ? (-1181401375) : (-1181401366));
|
|
break;
|
|
}
|
|
case 45:
|
|
num = ((num11 > MathF.PI) ? (-1181401387) : (-1181401381));
|
|
break;
|
|
case 16:
|
|
num = (_isInputEnabled2(self) ? (-1181401388) : (-1181401403));
|
|
break;
|
|
case 14:
|
|
{
|
|
ILogger<MovementOverrideHook> logger = _logger;
|
|
string text = global::_003CModule_003E._206E_202B_206C_202A_202A_200E_202B_202B_206D_200B_200C_206B_200B_206D_202E_202D_206C_202B_200B_206A_202D_206C_202A_200F_202D_200C_200B_200B_200B_200D_202C_206E_206D_202E_200C_206B_206A_206D_202D_202C_202E<string>(1233622867);
|
|
object[] obj = new object[2]
|
|
{
|
|
_202B_200B_200F_200C_202D_206C_206D_202B_202A_200B_200F_206B_200C_206D_200B_202D_206E_202C_206F_206C_202D_200D_200F_202A_202A_200D_200B_206B_206A_206C_202C_206C_200E_206C_206D_200B_206C_202D_202A_206D_202E(num9),
|
|
null
|
|
};
|
|
long num13 = num14;
|
|
long stallCheckStartMs = _stallCheckStartMs;
|
|
long num15 = num13;
|
|
obj[1] = ~(~num15 + stallCheckStartMs);
|
|
_206E_200C_206E_206B_202C_202D_200E_200F_206D_202E_202A_202A_206B_202A_200E_200D_200E_202E_202D_200C_206A_200E_206A_200D_200E_202A_200F_200F_206A_206A_206E_206B_206C_202B_202B_206D_206E_200F_206B_206C_202E((ILogger)logger, text, obj);
|
|
_desiredDirection = null;
|
|
_desiredPosition = null;
|
|
ResetStallTracking();
|
|
long num16 = num14;
|
|
stallCheckStartMs = 500L;
|
|
num15 = num16;
|
|
long num17 = num15 ^ stallCheckStartMs;
|
|
long num18 = num15 & stallCheckStartMs;
|
|
_stallCooldownUntilMs = num17 + (num18 + num18);
|
|
_forcedControlState = null;
|
|
IsActive = false;
|
|
return;
|
|
}
|
|
case 31:
|
|
IsActive = false;
|
|
return;
|
|
case 13:
|
|
num = ((_isInputEnabled2 != null) ? (-1181401364) : (-1181401390));
|
|
break;
|
|
case 41:
|
|
num = ((!flag) ? (-1181401399) : (-1181401391));
|
|
break;
|
|
case 39:
|
|
{
|
|
float num10 = _200E_206F_200F_200B_206F_200B_200B_200B_200B_206C_206E_206A_202D_206C_202D_200C_202B_202B_200B_200F_206A_202B_200D_206B_206A_202E_206E_202A_202A_202C_206A_202C_206D_206A_202A_202A_206F_202D_206E_206F_202E(vector2.Value.X, vector2.Value.Z);
|
|
float forcedMovementDirection = *_forcedMovementDirection;
|
|
num11 = num10 - forcedMovementDirection;
|
|
num = -1181401373;
|
|
break;
|
|
}
|
|
case 12:
|
|
IsActive = false;
|
|
return;
|
|
case 5:
|
|
IsActive = false;
|
|
return;
|
|
case 37:
|
|
IsActive = false;
|
|
return;
|
|
case 19:
|
|
num = ((_mcIsInputActiveHook != null) ? (-1181401367) : (-1181401346));
|
|
break;
|
|
case 9:
|
|
{
|
|
num = ((_forcedMovementDirection == null) ? (-1181401346) : (-1181401379));
|
|
break;
|
|
}
|
|
IL_01b5:
|
|
flag = (byte)num21 != 0;
|
|
num = ((!flag) ? (-1181401377) : (-1181401383));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void OnGameConfigChanged(object? sender, ConfigChangeEvent evt)
|
|
{
|
|
UpdateLegacyMode();
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.NoInlining)]
|
|
private void UpdateLegacyMode()
|
|
{
|
|
uint num2 = default(uint);
|
|
int num = ((!_202B_206F_202D_206E_202A_206C_206A_200B_202D_200B_206D_206C_206E_206C_202E_206A_202D_200F_202A_200B_206A_200B_202E_202D_206F_202C_206F_202E_206F_206D_206A_206A_206B_202E_202E_202E_202A_206D_202B_206A_202E(_206D_200E_206E_202E_206B_200D_206A_206E_206E_200C_202B_202A_200F_206B_202A_202E_202C_202A_206E_202E_200C_206C_202D_206F_202C_200C_200F_206B_206B_200C_200B_202D_202D_200B_202D_206C_202A_200D_200B_202E_202E(_gameConfig), global::_003CModule_003E._206E_202B_206C_202A_202A_200E_202B_202B_206D_200B_200C_206B_200B_206D_202E_202D_206C_202B_200B_206A_202D_206C_202A_200F_202D_200C_200B_200B_200B_200D_202C_206E_206D_202E_200C_206B_206A_206D_202D_202C_202E<string>(-1244554421), ref num2)) ? (-1166724982) : (-1166724977));
|
|
bool flag = default(bool);
|
|
while (true)
|
|
{
|
|
int num3 = num;
|
|
int num4 = -1166724978;
|
|
int num5 = num3;
|
|
int num6 = num5 + num4;
|
|
int num7 = num5 & num4;
|
|
int num8;
|
|
switch (num6 - (num7 + num7))
|
|
{
|
|
case 4:
|
|
num8 = 0;
|
|
goto IL_006a;
|
|
case 1:
|
|
num8 = ((num2 == 1) ? 1 : 0);
|
|
goto IL_006a;
|
|
case 0:
|
|
return;
|
|
case 2:
|
|
num = -1166724977;
|
|
break;
|
|
case 3:
|
|
{
|
|
_legacyMode = flag;
|
|
_200C_200F_202B_200E_202B_200C_206E_200D_202A_202D_206A_202D_200D_200F_206C_200E_202C_202C_206D_206D_206D_200E_202E_200C_200C_206B_200D_200C_206D_206E_200D_202B_206D_206D_202A_202B_202A_206E_200C_200D_202E((ILogger)_logger, global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(-1714575420), new object[1] { flag ? global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(527119189) : global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(-585283226) });
|
|
num = -1166724978;
|
|
break;
|
|
}
|
|
IL_006a:
|
|
flag = (byte)num8 != 0;
|
|
num = ((flag == _legacyMode) ? (-1166724978) : (-1166724979));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private unsafe static float? TryGetCameraAzimuth()
|
|
{
|
|
CameraManager* ptr = CameraManager.Instance();
|
|
int num = ((ptr != null) ? 129017006 : 129017005);
|
|
FFXIVClientStructs.FFXIV.Client.Game.Camera* activeCamera = default(FFXIVClientStructs.FFXIV.Client.Game.Camera*);
|
|
FFXIVClientStructs.FFXIV.Client.Graphics.Render.Camera* renderCamera = default(FFXIVClientStructs.FFXIV.Client.Graphics.Render.Camera*);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 129017004;
|
|
int num4 = num2;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 6:
|
|
return null;
|
|
case 2:
|
|
activeCamera = ptr->GetActiveCamera();
|
|
num = ((activeCamera != null) ? 129017007 : 129017002);
|
|
break;
|
|
case 1:
|
|
return null;
|
|
case 5:
|
|
return null;
|
|
case 4:
|
|
{
|
|
FFXIVClientStructs.FFXIV.Common.Math.Matrix4x4 viewMatrix = renderCamera->ViewMatrix;
|
|
return _200E_206F_200F_200B_206F_200B_200B_200B_200B_206C_206E_206A_202D_206C_202D_200C_202B_202B_200B_200F_206A_202B_200D_206B_206A_202E_206E_202A_202A_202C_206A_202C_206D_206A_202A_202A_206F_202D_206E_206F_202E(viewMatrix.M13, viewMatrix.M33);
|
|
}
|
|
case 0:
|
|
num = 129017005;
|
|
break;
|
|
case 3:
|
|
renderCamera = activeCamera->SceneCamera.RenderCamera;
|
|
num = ((renderCamera != null) ? 129017000 : 129017001);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Reset()
|
|
{
|
|
_desiredDirection = null;
|
|
_desiredPosition = null;
|
|
_desiredFlyPosition = null;
|
|
ResetStallTracking();
|
|
ResetFlyStallTracking();
|
|
_stallCooldownUntilMs = 0L;
|
|
_flyStallCooldownUntilMs = 0L;
|
|
_forcedControlState = null;
|
|
IsActive = false;
|
|
}
|
|
|
|
private void ResetStallTracking()
|
|
{
|
|
_stallCheckPosition = default(System.Numerics.Vector3);
|
|
_stallCheckStartMs = 0L;
|
|
_lastDriveMs = 0L;
|
|
}
|
|
|
|
private void ResetFlyStallTracking()
|
|
{
|
|
_flyStallBestDist = 0f;
|
|
_flyStallImprovementMs = 0L;
|
|
_flyLastDriveMs = 0L;
|
|
}
|
|
|
|
private System.Numerics.Vector3? ComputeDesiredWorldDirection(System.Numerics.Vector3 playerPosition)
|
|
{
|
|
System.Numerics.Vector3? vector = _desiredDirection;
|
|
int num = ((!vector.HasValue) ? (-84514510) : (-84514509));
|
|
System.Numerics.Vector3 valueOrDefault = default(System.Numerics.Vector3);
|
|
float num9 = default(float);
|
|
float num7 = default(float);
|
|
float num8 = default(float);
|
|
float num6 = default(float);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = -84514510;
|
|
int num4 = num2;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 5:
|
|
num = -84514509;
|
|
break;
|
|
case 4:
|
|
_desiredPosition = null;
|
|
ResetStallTracking();
|
|
return null;
|
|
case 1:
|
|
valueOrDefault = vector.GetValueOrDefault();
|
|
num9 = valueOrDefault.X * valueOrDefault.X + valueOrDefault.Z * valueOrDefault.Z;
|
|
num = ((!(num9 < 1E-08f)) ? (-84514507) : (-84514511));
|
|
break;
|
|
case 6:
|
|
return null;
|
|
case 2:
|
|
{
|
|
System.Numerics.Vector3 valueOrDefault2 = vector.GetValueOrDefault();
|
|
num7 = valueOrDefault2.X - playerPosition.X;
|
|
num8 = valueOrDefault2.Z - playerPosition.Z;
|
|
num6 = num7 * num7 + num8 * num8;
|
|
num = ((!(num6 < Precision * Precision)) ? (-84514502) : (-84514506));
|
|
break;
|
|
}
|
|
case 7:
|
|
{
|
|
float num10 = _202B_200B_200F_200C_202D_206C_206D_202B_202A_200B_200F_206B_200C_206D_200B_202D_206E_202C_206F_206C_202D_200D_200F_202A_202A_200D_200B_206B_206A_206C_202C_206C_200E_206C_206D_200B_206C_202D_202A_206D_202E(num9);
|
|
return new System.Numerics.Vector3(valueOrDefault.X / num10, 0f, valueOrDefault.Z / num10);
|
|
}
|
|
case 3:
|
|
return null;
|
|
case 0:
|
|
vector = _desiredPosition;
|
|
num = ((!vector.HasValue) ? (-84514508) : (-84514512));
|
|
break;
|
|
case 8:
|
|
{
|
|
float num5 = _202B_200B_200F_200C_202D_206C_206D_202B_202A_200B_200F_206B_200C_206D_200B_202D_206E_202C_206F_206C_202D_200D_200F_202A_202A_200D_200B_206B_206A_206C_202C_206C_200E_206C_206D_200B_206C_202D_202A_206D_202E(num6);
|
|
return new System.Numerics.Vector3(num7 / num5, 0f, num8 / num5);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private static (float left, float forward) WorldToPlayerRelative(System.Numerics.Vector3 worldDir, float referenceRotation)
|
|
{
|
|
float num = _206D_202C_200F_202D_200D_200C_206D_202D_206E_206F_206D_206F_200E_200D_200D_200B_200C_202C_202D_200C_202D_200E_200E_200B_206F_200E_202C_202E_206D_200E_200C_200D_206A_202C_200D_206B_206E_200D_200F_206F_202E(referenceRotation);
|
|
float num2 = _206B_202D_206C_200D_206A_206A_202E_206B_200D_206C_202E_206A_202A_206C_200B_206C_202C_200B_206D_200B_206C_202B_202D_200C_200F_200D_202D_202C_206C_202C_206E_202A_200D_206B_206F_200F_202B_200D_202A_206D_202E(referenceRotation);
|
|
float item = worldDir.X * num + worldDir.Z * num2;
|
|
return (left: worldDir.X * num2 - worldDir.Z * num, forward: item);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_202C_200C_202E_206D_206F_202C_206C_202D_206E_206C_200B_206D_206F_202E_202B_202D_206A_206E_200D_200E_202A_200F_202B_202C_202E_202A_202B_206D_200E_206F_206D_200F_200C_202B_206C_200C_206C_206A_206B_200E_202E(_gameConfig, (EventHandler<ConfigChangeEvent>)OnGameConfigChanged);
|
|
Hook<MoveControlIsInputActiveDelegate>? mcIsInputActiveHook = _mcIsInputActiveHook;
|
|
if (mcIsInputActiveHook == null)
|
|
{
|
|
goto IL_00e8;
|
|
}
|
|
mcIsInputActiveHook.Disable();
|
|
int num = -1239037411;
|
|
goto IL_0039;
|
|
IL_0112:
|
|
_rmiFlyHook = null;
|
|
Hook<RMIWalkDelegate>? rmiWalkHook = _rmiWalkHook;
|
|
if (rmiWalkHook == null)
|
|
{
|
|
goto IL_00c6;
|
|
}
|
|
rmiWalkHook.Disable();
|
|
num = -1239037416;
|
|
goto IL_0039;
|
|
IL_00e8:
|
|
Hook<MoveControlIsInputActiveDelegate>? mcIsInputActiveHook2 = _mcIsInputActiveHook;
|
|
if (mcIsInputActiveHook2 == null)
|
|
{
|
|
goto IL_007b;
|
|
}
|
|
mcIsInputActiveHook2.Dispose();
|
|
num = -1239037412;
|
|
goto IL_0039;
|
|
IL_0039:
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = -1239037410;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 0:
|
|
num = -1239037411;
|
|
break;
|
|
case 2:
|
|
goto end_IL_0039;
|
|
case 5:
|
|
goto IL_00a4;
|
|
case 6:
|
|
goto IL_00c6;
|
|
case 3:
|
|
goto IL_00e8;
|
|
case 1:
|
|
goto IL_010a;
|
|
case 4:
|
|
goto IL_0112;
|
|
}
|
|
continue;
|
|
end_IL_0039:
|
|
break;
|
|
}
|
|
goto IL_007b;
|
|
IL_007b:
|
|
_mcIsInputActiveHook = null;
|
|
Hook<RMIFlyDelegate>? rmiFlyHook = _rmiFlyHook;
|
|
if (rmiFlyHook == null)
|
|
{
|
|
goto IL_00a4;
|
|
}
|
|
rmiFlyHook.Disable();
|
|
num = -1239037413;
|
|
goto IL_0039;
|
|
IL_00c6:
|
|
Hook<RMIWalkDelegate>? rmiWalkHook2 = _rmiWalkHook;
|
|
if (rmiWalkHook2 == null)
|
|
{
|
|
goto IL_010a;
|
|
}
|
|
rmiWalkHook2.Dispose();
|
|
num = -1239037409;
|
|
goto IL_0039;
|
|
IL_00a4:
|
|
Hook<RMIFlyDelegate>? rmiFlyHook2 = _rmiFlyHook;
|
|
if (rmiFlyHook2 == null)
|
|
{
|
|
goto IL_0112;
|
|
}
|
|
rmiFlyHook2.Dispose();
|
|
num = -1239037414;
|
|
goto IL_0039;
|
|
IL_010a:
|
|
_rmiWalkHook = null;
|
|
}
|
|
|
|
void IDisposable.Dispose()
|
|
{
|
|
//ILSpy generated this explicit interface implementation from .override directive in Dispose
|
|
this.Dispose();
|
|
}
|
|
|
|
static MovementOverrideHook()
|
|
{
|
|
uint[] array = new uint[4];
|
|
_202D_200F_206F_200F_200C_200E_200C_200D_200B_202A_206C_200E_202C_202C_200B_206A_206F_202D_206D_202E_202D_202B_206E_206F_200D_206F_206F_206B_200D_206E_202C_200C_206A_206D_200D_206E_200F_206B_202E_202D_202E((Array)array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
|
|
MisdirectionStatusIds = array;
|
|
}
|
|
|
|
static long _202C_200F_206E_202D_202A_202D_202E_206A_202D_202B_206E_200F_200D_200E_202A_202A_200E_206D_206D_202B_200C_206E_200E_202B_202A_200E_202B_200E_202E_206C_202C_206F_202D_202C_200B_202C_206B_202B_200D_206F_202E()
|
|
{
|
|
return Environment.TickCount64;
|
|
}
|
|
|
|
static void _202B_206B_206B_202B_202A_206A_200E_200F_206C_206E_206F_200C_200F_202C_206B_206B_202B_206A_202C_206A_206E_206E_206B_206E_206D_200D_200D_206C_206B_202E_206F_206A_200C_202A_200E_206E_200E_202B_206A_202C_202E(IGameConfig P_0, EventHandler<ConfigChangeEvent> P_1)
|
|
{
|
|
P_0.UiControlChanged += P_1;
|
|
}
|
|
|
|
static void _200C_200F_202B_200E_202B_200C_206E_200D_202A_202D_206A_202D_200D_200F_206C_200E_202C_202C_206D_206D_206D_200E_202E_200C_200C_206B_200D_200C_206D_206E_200D_202B_206D_206D_202A_202B_202A_206E_200C_200D_202E(ILogger P_0, string P_1, object[] P_2)
|
|
{
|
|
P_0.LogInformation(P_1, P_2);
|
|
}
|
|
|
|
static nint _202E_206A_202B_200D_202E_206C_200D_206D_200C_200B_202C_206B_202B_200D_206C_206A_206E_202A_202D_200E_200B_200F_200E_206C_200E_200C_200D_206E_202E_202D_202B_200F_206E_200D_202E_202B_202E_206B_202C_200F_202E(ISigScanner P_0, string P_1)
|
|
{
|
|
return P_0.ScanText(P_1);
|
|
}
|
|
|
|
static void _206C_206C_202A_200B_206C_200C_200E_202B_200C_202B_202D_200B_200D_200D_202A_200B_206D_202E_200B_206B_206D_200D_202D_200B_206C_202C_206A_202C_206E_202D_200B_206C_206F_206F_202B_200E_206F_202A_200C_206A_202E(ILogger P_0, Exception P_1, string P_2, object[] P_3)
|
|
{
|
|
P_0.LogWarning(P_1, P_2, P_3);
|
|
}
|
|
|
|
static nint _206F_202A_206B_202A_200C_202D_206F_202E_206C_206D_202A_206B_200C_200E_202D_200D_202C_200C_206A_206D_206A_206A_200C_202C_202B_200E_206E_202B_200B_206A_200D_200D_206C_206A_206C_200B_200C_206E_202D_206B_202E(ISigScanner P_0, string P_1, int P_2)
|
|
{
|
|
return P_0.GetStaticAddressFromSig(P_1, P_2);
|
|
}
|
|
|
|
static string _200B_200E_202A_200F_206F_200D_206F_206C_202C_206E_206E_206C_202C_202C_200B_202B_206F_200B_202D_206C_200D_206F_206A_206A_202B_202A_200F_206E_200D_200D_202B_202A_202E_202E_206B_200D_200E_202D_206E_202B_202E(Exception P_0)
|
|
{
|
|
return P_0.Message;
|
|
}
|
|
|
|
static bool _206C_202D_206F_202C_206C_200D_200E_202B_206B_206C_200E_206F_206F_206B_206B_200B_202C_206F_202E_200C_206A_200C_200E_202D_200D_206B_206C_206E_200D_206C_206B_206B_200C_200F_200D_202C_206B_200E_206C_200D_202E(string P_0, string P_1, StringComparison P_2)
|
|
{
|
|
return P_0.Contains(P_1, P_2);
|
|
}
|
|
|
|
static IPlayerCharacter _200B_206D_206B_202B_206D_200D_200B_200C_206D_200C_206B_206F_202B_206A_200D_202C_202A_200D_202C_200C_200E_206F_200E_202C_202B_206A_202E_200C_202E_202C_206D_202A_206E_202A_202D_202A_202A_200F_200D_200D_202E(IObjectTable P_0)
|
|
{
|
|
return P_0.LocalPlayer;
|
|
}
|
|
|
|
static System.Numerics.Vector3 _202E_202C_206C_206F_200D_200F_206A_206F_202A_200B_206F_200D_206E_202B_200C_202A_202B_202B_200B_200E_200D_202E_206C_206B_202D_200C_200B_200B_206C_200D_200B_206F_200B_206B_202B_206A_206C_200C_202B_200E_202E(IGameObject P_0)
|
|
{
|
|
return P_0.Position;
|
|
}
|
|
|
|
static float _206F_206B_206B_202D_200E_202B_206C_202A_202D_206A_202D_206D_206B_200B_206E_206D_200B_202B_206D_206F_200F_200E_200C_202E_206E_200B_206B_200C_206D_206E_200C_202D_206C_200D_202B_200F_200B_200F_200E_206C_202E(IGameObject P_0)
|
|
{
|
|
return P_0.Rotation;
|
|
}
|
|
|
|
static float _202B_200B_200F_200C_202D_206C_206D_202B_202A_200B_200F_206B_200C_206D_200B_202D_206E_202C_206F_206C_202D_200D_200F_202A_202A_200D_200B_206B_206A_206C_202C_206C_200E_206C_206D_200B_206C_202D_202A_206D_202E(float P_0)
|
|
{
|
|
return MathF.Sqrt(P_0);
|
|
}
|
|
|
|
static void _206E_200C_206E_206B_202C_202D_200E_200F_206D_202E_202A_202A_206B_202A_200E_200D_200E_202E_202D_200C_206A_200E_206A_200D_200E_202A_200F_200F_206A_206A_206E_206B_206C_202B_202B_206D_206E_200F_206B_206C_202E(ILogger P_0, string P_1, object[] P_2)
|
|
{
|
|
P_0.LogDebug(P_1, P_2);
|
|
}
|
|
|
|
static float _200E_206F_200F_200B_206F_200B_200B_200B_200B_206C_206E_206A_202D_206C_202D_200C_202B_202B_200B_200F_206A_202B_200D_206B_206A_202E_206E_202A_202A_202C_206A_202C_206D_206A_202A_202A_206F_202D_206E_206F_202E(float P_0, float P_1)
|
|
{
|
|
return MathF.Atan2(P_0, P_1);
|
|
}
|
|
|
|
static float _206B_202D_206C_200D_206A_206A_202E_206B_200D_206C_202E_206A_202A_206C_200B_206C_202C_200B_206D_200B_206C_202B_202D_200C_200F_200D_202D_202C_206C_202C_206E_202A_200D_206B_206F_200F_202B_200D_202A_206D_202E(float P_0)
|
|
{
|
|
return MathF.Cos(P_0);
|
|
}
|
|
|
|
static float _206D_202C_200F_202D_200D_200C_206D_202D_206E_206F_206D_206F_200E_200D_200D_200B_200C_202C_202D_200C_202D_200E_200E_200B_206F_200E_202C_202E_206D_200E_200C_200D_206A_202C_200D_206B_206E_200D_200F_206F_202E(float P_0)
|
|
{
|
|
return MathF.Sin(P_0);
|
|
}
|
|
|
|
static StatusList _202E_206C_206D_202E_206C_206C_200D_206B_206A_206F_200B_202D_206C_200F_200C_200B_206C_206A_206A_202C_206B_202C_206A_206F_200B_200E_202E_206B_202D_202D_206F_202E_200B_206C_206A_206D_206F_202B_206B_200E_202E(IBattleChara P_0)
|
|
{
|
|
return P_0.StatusList;
|
|
}
|
|
|
|
static IStatus _200C_202B_200D_206B_202C_202E_200B_200F_200F_202B_200C_200B_206A_202D_200E_202E_200F_206A_202E_200F_206C_202D_206A_206B_206B_206A_202C_200B_202C_202B_206E_202D_202E_200E_200D_200B_200C_200C_200B_202D_202E(StatusList P_0, int P_1)
|
|
{
|
|
return P_0[P_1];
|
|
}
|
|
|
|
static uint _200F_200B_206A_200E_206A_200E_206F_206B_206B_202B_202A_206E_206C_202B_200F_200E_202B_202A_202E_200F_206D_206E_200F_200F_202B_202D_202A_206A_200B_206F_200B_200D_206D_200C_200F_206A_200E_200F_200F_202D_202E(IStatus P_0)
|
|
{
|
|
return P_0.StatusId;
|
|
}
|
|
|
|
static int _200F_202E_200C_200D_200F_202C_206F_206B_200D_200D_200D_202A_206C_202D_202A_200C_200D_206C_200D_202D_202C_206F_206C_200C_206B_200E_206B_202B_200B_200B_206C_202D_202B_202B_206D_206F_206F_206C_206A_202B_202E(StatusList P_0)
|
|
{
|
|
return P_0.Length;
|
|
}
|
|
|
|
static float _206E_206E_200B_200C_202D_206C_200D_200E_200D_200B_206C_206E_200F_206E_206A_202C_200C_202D_206A_200D_202C_206E_206D_200F_202A_206A_200B_200C_200D_202A_202D_202B_206A_202D_206D_202C_206F_200F_206D_202A_202E(float P_0)
|
|
{
|
|
return MathF.Abs(P_0);
|
|
}
|
|
|
|
static GameConfigSection _206D_200E_206E_202E_206B_200D_206A_206E_206E_200C_202B_202A_200F_206B_202A_202E_202C_202A_206E_202E_200C_206C_202D_206F_202C_200C_200F_206B_206B_200C_200B_202D_202D_200B_202D_206C_202A_200D_200B_202E_202E(IGameConfig P_0)
|
|
{
|
|
return P_0.UiControl;
|
|
}
|
|
|
|
static bool _202B_206F_202D_206E_202A_206C_206A_200B_202D_200B_206D_206C_206E_206C_202E_206A_202D_200F_202A_200B_206A_200B_202E_202D_206F_202C_206F_202E_206F_206D_206A_206A_206B_202E_202E_202E_202A_206D_202B_206A_202E(GameConfigSection P_0, string P_1, ref uint P_2)
|
|
{
|
|
return P_0.TryGetUInt(P_1, out P_2);
|
|
}
|
|
|
|
static void _202C_200C_202E_206D_206F_202C_206C_202D_206E_206C_200B_206D_206F_202E_202B_202D_206A_206E_200D_200E_202A_200F_202B_202C_202E_202A_202B_206D_200E_206F_206D_200F_200C_202B_206C_200C_206C_206A_206B_200E_202E(IGameConfig P_0, EventHandler<ConfigChangeEvent> P_1)
|
|
{
|
|
P_0.UiControlChanged -= P_1;
|
|
}
|
|
|
|
static void _202D_200F_206F_200F_200C_200E_200C_200D_200B_202A_206C_200E_202C_202C_200B_206A_206F_202D_206D_202E_202D_202B_206E_206F_200D_206F_206F_206B_200D_206E_202C_200C_206A_206D_200D_206E_200F_206B_202E_202D_202E(Array P_0, RuntimeFieldHandle P_1)
|
|
{
|
|
RuntimeHelpers.InitializeArray(P_0, P_1);
|
|
}
|
|
}
|