using System; using System.Collections; using System.Collections.Generic; 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.UI.Misc; using FFXIVClientStructs.Interop; using LLib.GameData; using LLib.Gear; using LLib.Inventory; using Lumina.Excel; using Lumina.Excel.Sheets; using Questionable.Model; using Questionable.Model.Questing; namespace Questionable.Controller.Steps.Interactions; internal static class EquipRecommended { internal sealed class Factory : SimpleTaskFactory { public override ITask? CreateTask(Questionable.Model.Quest quest, QuestSequence sequence, QuestStep step) { int num = ((_200B_206C_206A_206C_202E_206C_200F_206E_202C_206B_200F_206C_202B_202D_200F_202D_206A_200B_200C_202D_206B_206D_206B_206A_202A_202D_206C_202B_202A_202B_206E_206B_202A_206F_200C_206B_206A_202A_206C_200C_202E(step) == EInteractionType.EquipRecommended) ? 2145116314 : 2145116313); while (true) { int num2 = num; int num3 = 2145116312; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: goto IL_004a; case 2: return new EquipTask(); case 1: return null; } continue; IL_004a: num = 2145116313; } } static EInteractionType _200B_206C_206A_206C_202E_206C_200F_206E_202C_206B_200F_206C_202B_202D_200F_202D_206A_200B_200C_202D_206B_206D_206B_206A_202A_202D_206C_202B_202A_202B_206E_206B_202A_206F_200C_206B_206A_202A_206C_200C_202E(QuestStep P_0) { return P_0.InteractionType; } } internal sealed class BeforeDutyOrInstance : SimpleTaskFactory { public override ITask? CreateTask(Questionable.Model.Quest quest, QuestSequence sequence, QuestStep step) { int num = ((_206C_202B_200D_200E_202E_200C_200B_202A_206D_202E_200B_202E_200C_206F_200B_202B_200D_200F_206E_200C_200F_206C_200D_206E_206F_206A_206C_202E_206B_200C_202B_200D_206E_206A_202A_206C_206C_202B_200F_200F_202E(step) == EInteractionType.Duty) ? 590292274 : 590292275); while (true) { int num2 = num; int num3 = 590292273; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 1: num = ((_206C_202B_200D_200E_202E_200C_200B_202A_206D_202E_200B_202E_200C_206F_200B_202B_200D_200F_206E_200C_200F_206C_200D_206E_206F_206A_206C_202E_206B_200C_202B_200D_206E_206A_202A_206C_206C_202B_200F_200F_202E(step) == EInteractionType.Combat) ? 590292274 : 590292273); break; case 2: num = ((_206C_202B_200D_200E_202E_200C_200B_202A_206D_202E_200B_202E_200C_206F_200B_202B_200D_200F_206E_200C_200F_206C_200D_206E_206F_206A_206C_202E_206B_200C_202B_200D_206E_206A_202A_206C_206C_202B_200F_200F_202E(step) == EInteractionType.SinglePlayerDuty) ? 590292274 : 590292272); break; case 3: return new EquipTask(); case 0: return null; case 4: num = 590292275; break; } } } static EInteractionType _206C_202B_200D_200E_202E_200C_200B_202A_206D_202E_200B_202E_200C_206F_200B_202B_200D_200F_206E_200C_200F_206C_200D_206E_206F_206A_206C_202E_206B_200C_202B_200D_206E_206A_202A_206C_206C_202B_200F_200F_202E(QuestStep P_0) { return P_0.InteractionType; } } internal sealed class EquipTask : ITask { [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(-223560380); } } internal sealed class DoEquipRecommended(IObjectTable objectTable, IChatGui chatGui, ICondition condition, IDataManager dataManager, Configuration configuration, BestItemFinder bestItemFinder) : TaskExecutor() { private readonly record struct PendingMove(InventoryType SourceContainer, int SourceSlot, uint SourceItemId, InventoryType DestinationContainer, int DestinationSlot) { [MethodImpl(MethodImplOptions.NoInlining)] [CompilerGenerated] public override string ToString() { StringBuilder stringBuilder = _202D_202D_206E_200E_200E_200F_202C_200D_206B_206B_200C_202E_206C_202E_200B_200F_206B_206A_206B_202C_202E_202A_200C_206E_200C_200E_206F_202B_202C_200B_206E_200F_206E_202D_200D_200B_200D_200E_206E_206F_202E(); _200F_202C_206F_202D_202B_206B_202E_206D_206E_206A_200C_202E_202E_206E_202B_206E_206C_200C_202A_206E_202C_202A_200D_202D_206F_202B_200D_202D_202C_200C_206D_202A_202C_200E_206B_202D_206E_200D_206B_202E(stringBuilder, 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(-766310819)); _200F_202C_206F_202D_202B_206B_202E_206D_206E_206A_200C_202E_202E_206E_202B_206E_206C_200C_202A_206E_202C_202A_200D_202D_206F_202B_200D_202D_202C_200C_206D_202A_202C_200E_206B_202D_206E_200D_206B_202E(stringBuilder, 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(556540328)); int num = ((!PrintMembers(stringBuilder)) ? (-916392380) : (-916392379)); while (true) { int num2 = num; int num3 = -916392380; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: _202D_200F_206A_206E_200F_200E_202A_202E_206E_206A_202C_202B_206A_202D_200C_202E_206A_206D_206E_200E_202C_206D_206F_206C_202E_202A_206C_206B_200C_202D_202A_202E_206C_200E_202C_200D_206C_200B_206F_206B_202E(stringBuilder, '}'); return _202C_202A_200D_202B_206B_202A_202A_200E_200E_202D_200D_202B_200B_202E_206D_202C_200E_202A_206B_200C_202E_200B_200D_202D_206C_206A_206A_200D_202E_200E_200F_200F_202C_202B_200D_200C_200C_206D_200B_202C_202E((object)stringBuilder); case 1: _202D_200F_206A_206E_200F_200E_202A_202E_206E_206A_202C_202B_206A_202D_200C_202E_206A_206D_206E_200E_202C_206D_206F_206C_202E_202A_206C_206B_200C_202D_202A_202E_206C_200E_202C_200D_206C_200B_206F_206B_202E(stringBuilder, ' '); num = -916392380; break; case 2: num = -916392379; break; } } } [MethodImpl(MethodImplOptions.NoInlining)] [CompilerGenerated] private bool PrintMembers(StringBuilder builder) { _200F_202C_206F_202D_202B_206B_202E_206D_206E_206A_200C_202E_202E_206E_202B_206E_206C_200C_202A_206E_202C_202A_200D_202D_206F_202B_200D_202D_202C_200C_206D_202A_202C_200E_206B_202D_206E_200D_206B_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(402998006)); _200F_202C_206F_202D_202B_206B_202E_206D_206E_206A_200C_202E_202E_206E_202B_206E_206C_200C_202A_206E_202C_202A_200D_202D_206F_202B_200D_202D_202C_200C_206D_202A_202C_200E_206B_202D_206E_200D_206B_202E(builder, SourceContainer.ToString()); _200F_202C_206F_202D_202B_206B_202E_206D_206E_206A_200C_202E_202E_206E_202B_206E_206C_200C_202A_206E_202C_202A_200D_202D_206F_202B_200D_202D_202C_200C_206D_202A_202C_200E_206B_202D_206E_200D_206B_202E(builder, global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E(-147608127)); _200F_202C_206F_202D_202B_206B_202E_206D_206E_206A_200C_202E_202E_206E_202B_206E_206C_200C_202A_206E_202C_202A_200D_202D_206F_202B_200D_202D_202C_200C_206D_202A_202C_200E_206B_202D_206E_200D_206B_202E(builder, SourceSlot.ToString()); _200F_202C_206F_202D_202B_206B_202E_206D_206E_206A_200C_202E_202E_206E_202B_206E_206C_200C_202A_206E_202C_202A_200D_202D_206F_202B_200D_202D_202C_200C_206D_202A_202C_200E_206B_202D_206E_200D_206B_202E(builder, 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(45308124)); _200F_202C_206F_202D_202B_206B_202E_206D_206E_206A_200C_202E_202E_206E_202B_206E_206C_200C_202A_206E_202C_202A_200D_202D_206F_202B_200D_202D_202C_200C_206D_202A_202C_200E_206B_202D_206E_200D_206B_202E(builder, SourceItemId.ToString()); _200F_202C_206F_202D_202B_206B_202E_206D_206E_206A_200C_202E_202E_206E_202B_206E_206C_200C_202A_206E_202C_202A_200D_202D_206F_202B_200D_202D_202C_200C_206D_202A_202C_200E_206B_202D_206E_200D_206B_202E(builder, 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(223423418)); _200F_202C_206F_202D_202B_206B_202E_206D_206E_206A_200C_202E_202E_206E_202B_206E_206C_200C_202A_206E_202C_202A_200D_202D_206F_202B_200D_202D_202C_200C_206D_202A_202C_200E_206B_202D_206E_200D_206B_202E(builder, DestinationContainer.ToString()); _200F_202C_206F_202D_202B_206B_202E_206D_206E_206A_200C_202E_202E_206E_202B_206E_206C_200C_202A_206E_202C_202A_200D_202D_206F_202B_200D_202D_202C_200C_206D_202A_202C_200E_206B_202D_206E_200D_206B_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(-175990381)); _200F_202C_206F_202D_202B_206B_202E_206D_206E_206A_200C_202E_202E_206E_202B_206E_206C_200C_202A_206E_202C_202A_200D_202D_206F_202B_200D_202D_202C_200C_206D_202A_202C_200E_206B_202D_206E_200D_206B_202E(builder, DestinationSlot.ToString()); return true; } [CompilerGenerated] public bool Equals(PendingMove other) { int num = ((!EqualityComparer.Default.Equals(SourceContainer, other.SourceContainer)) ? (-560770928) : (-560770925)); while (true) { int num2 = num; int num3 = -560770928; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 4: num = -560770925; break; case 2: num = ((!EqualityComparer.Default.Equals(DestinationContainer, other.DestinationContainer)) ? (-560770928) : (-560770923)); break; case 0: return false; case 1: num = ((!EqualityComparer.Default.Equals(SourceItemId, other.SourceItemId)) ? (-560770928) : (-560770926)); break; case 3: num = ((!EqualityComparer.Default.Equals(SourceSlot, other.SourceSlot)) ? (-560770928) : (-560770927)); break; case 5: return EqualityComparer.Default.Equals(DestinationSlot, other.DestinationSlot); } } } bool IEquatable.Equals(PendingMove other) { //ILSpy generated this explicit interface implementation from .override directive in Equals return this.Equals(other); } static StringBuilder _202D_202D_206E_200E_200E_200F_202C_200D_206B_206B_200C_202E_206C_202E_200B_200F_206B_206A_206B_202C_202E_202A_200C_206E_200C_200E_206F_202B_202C_200B_206E_200F_206E_202D_200D_200B_200D_200E_206E_206F_202E() { return new StringBuilder(); } static StringBuilder _200F_202C_206F_202D_202B_206B_202E_206D_206E_206A_200C_202E_202E_206E_202B_206E_206C_200C_202A_206E_202C_202A_200D_202D_206F_202B_200D_202D_202C_200C_206D_202A_202C_200E_206B_202D_206E_200D_206B_202E(StringBuilder P_0, string P_1) { return P_0.Append(P_1); } static StringBuilder _202D_200F_206A_206E_200F_200E_202A_202E_206E_206A_202C_202B_206A_202D_200C_202E_206A_206D_206E_200E_202C_206D_206F_206C_202E_202A_206C_206B_200C_202D_202A_202E_206C_200E_202C_200D_206C_200B_206F_206B_202E(StringBuilder P_0, char P_1) { return P_0.Append(P_1); } static string _202C_202A_200D_202B_206B_202A_202A_200E_200E_202D_200D_202B_200B_202E_206D_202C_200E_202A_206B_200C_202E_200B_200D_202D_206C_206A_206A_200D_202E_200E_200F_200F_202C_202B_200D_200C_200C_206D_200B_202C_202E(object P_0) { return P_0.ToString(); } } private static readonly (string Name, uint[] Categories)[] SlotMap = new(string, uint[])[13] { (global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E(1721146867), new uint[2] { 1u, 13u }), (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(105879929), new uint[1] { 2u }), (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(-1559165310), new uint[1] { 3u }), (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(1871824440), new uint[1] { 4u }), (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(806048350), new uint[1] { 5u }), (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(1506216771), Array.Empty()), (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(1490430716), new uint[1] { 7u }), (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(-136195547), new uint[1] { 8u }), (global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E(-1065647700), new uint[1] { 9u }), (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(-1628747569), new uint[1] { 10u }), (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(-952953659), new uint[1] { 11u }), (global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E(639236081), new uint[1] { 12u }), (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(-1934160350), new uint[1] { 12u }) }; private const long EquipApplyTimeoutMs = 5000L; private const long MoveApplyTimeoutMs = 2000L; private bool _useSmart; private bool _checkedOrTriggeredEquipmentUpdate; private long _timeoutAt; private List<(int Slot, BestItemRef Item)>? _smartUpgrades; private List? _smartMoves; private int _smartMoveCursor; private bool _currentMoveStarted; private bool _smartApplied; private int _directEquipCursor; private bool _directEquipStarted; protected unsafe override bool Start() { int num = ((configuration.General.EquipMode != Configuration.EEquipMode.Disabled) ? 244763499 : 244763502); IPlayerCharacter playerCharacter = default(IPlayerCharacter); while (true) { int num2 = num; int num3 = 244763503; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: _useSmart = false; RecommendEquipModule.Instance()->SetupForClassJob((byte)_200F_202D_202B_200C_200F_206F_206B_200E_206C_200E_206C_206A_202B_200C_206A_206D_200E_200C_202C_206F_200D_200C_200D_206A_202C_200F_206A_202C_200B_202E_200D_206B_206F_202B_202A_206B_202A_200F_202B_206E_202E((ICharacter)playerCharacter).RowId); return true; case 1: return false; case 4: num = ((!_206D_206D_206B_200F_200F_202D_206F_200C_206E_200E_200B_202A_206F_206D_206D_202A_200F_206C_200C_200C_200B_202A_200C_206B_202C_200B_206F_200D_200E_200B_206C_206C_206E_200B_200D_202D_202C_200C_206D_202A_202E(condition, ConditionFlag.InCombat)) ? 244763498 : 244763496); break; case 2: return false; case 9: _useSmart = configuration.General.EquipMode == Configuration.EEquipMode.Smart; num = ((!_useSmart) ? 244763503 : 244763495); break; case 6: return true; case 3: num = 244763502; break; case 5: playerCharacter = _200D_206A_206B_200E_202A_206A_206E_202D_200C_202E_200F_202B_202D_206F_200F_200E_200F_202C_206E_206E_202A_206F_206E_200D_200C_202E_206B_200E_206C_202B_202C_206A_202E_202A_206B_200D_206E_202A_202C_202E(objectTable); num = ((playerCharacter != null) ? 244763494 : 244763501); break; case 8: num = ((!TrySmartStart(playerCharacter)) ? 244763503 : 244763497); break; case 7: return false; } } } public override ETaskResult Update() { int num = ((!_useSmart) ? 210203164 : 210203167); while (true) { int num2 = num; int num3 = 210203166; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: goto IL_0048; case 1: return SmartUpdate(); case 2: return GameUpdate(); } continue; IL_0048: num = 210203167; } } private unsafe bool TrySmartStart(ICharacter localPlayer) { uint rowId = _200F_202D_202B_200C_200F_206F_206B_200E_206C_200E_206C_206A_202B_200C_206A_206D_200E_200C_202C_206F_200D_200C_200D_206A_202C_200F_206A_202C_200B_202E_200D_206B_206F_202B_202A_206B_202A_200F_202B_206E_202E(localPlayer).RowId; int num = (_202D_206A_200D_202E_202D_206B_202E_200D_202E_206D_202A_202B_200B_206D_206B_206E_206C_202B_206A_206C_202A_206D_202A_202C_200E_200B_200F_202A_206A_200C_206E_202C_202B_200B_200F_206D_200C_206B_202A_200C_202E(_206B_206D_202E_200C_202C_202A_200F_206F_206B_200D_202A_206E_206D_206A_206C_202D_200F_200C_202C_206E_202E_200B_200F_202A_200F_202D_202E_200E_200D_202D_206C_202E_206E_206F_202D_206B_202D_202A_200F_200D_202E(typeof(EClassJob).TypeHandle), (object)rowId) ? 85530533 : 85530531); int currentGearsetIndex = default(int); RaptureGearsetModule* ptr = default(RaptureGearsetModule*); while (true) { int num2 = num; int num3 = 85530532; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 6: currentGearsetIndex = ptr->CurrentGearsetIndex; num = ((currentGearsetIndex < 0) ? 85530529 : 85530541); break; case 2: return false; case 5: return false; case 9: num = (ptr->IsValidGearset(currentGearsetIndex) ? 85530540 : 85530529); break; case 1: ptr = RaptureGearsetModule.Instance(); num = ((ptr != null) ? 85530530 : 85530534); break; case 8: { EClassJob eClassJob = (EClassJob)rowId; StatPriority priority = _202B_200D_200C_206E_206D_206D_206D_202C_200F_206D_202D_202D_206D_200B_206A_202C_200C_200C_206F_202D_200C_200D_202D_206D_206B_200E_202B_206B_202B_202D_206E_202A_206F_206D_206B_200D_202C_200F_202D_206B_202E(eClassJob); byte playerLevel = GetPlayerLevel(eClassJob); RaptureGearsetModule.GearsetEntry* entry = (RaptureGearsetModule.GearsetEntry*)Unsafe.AsPointer(in ptr->Entries[currentGearsetIndex]); num = (TryComputeUpgradesAndMoves(eClassJob, priority, playerLevel, entry, out _smartUpgrades, out _smartMoves) ? 85530535 : 85530528); break; } case 0: num = 85530531; break; case 4: _smartUpgrades = null; _smartMoves = null; return false; case 7: return false; case 3: _smartMoveCursor = 0; _currentMoveStarted = false; return true; } } } [MethodImpl(MethodImplOptions.NoInlining)] private ETaskResult SmartUpdate() { List smartMoves = _smartMoves; int num = ((smartMoves == null) ? (-896452185) : (-896452172)); PendingMove pendingMove = default(PendingMove); List<(int, BestItemRef)> smartUpgrades2 = default(List<(int, BestItemRef)>); List<(int, BestItemRef)> smartUpgrades = default(List<(int, BestItemRef)>); while (true) { int num2 = num; int num3 = -896452186; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 24: num = ((_smartUpgrades == null) ? (-896452182) : (-896452184)); break; case 15: pendingMove = smartMoves[_smartMoveCursor]; num = (_currentMoveStarted ? (-896452175) : (-896452191)); break; case 27: { IChatGui chatGui2 = chatGui; DefaultInterpolatedStringHandler defaultInterpolatedStringHandler2 = new DefaultInterpolatedStringHandler(35, 1); defaultInterpolatedStringHandler2.AppendLiteral(global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E(1393568432)); defaultInterpolatedStringHandler2.AppendFormatted(smartUpgrades2.Count); defaultInterpolatedStringHandler2.AppendLiteral(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(583340872)); _206B_206D_200F_206D_202E_200F_206C_206C_206E_206F_202E_206F_206C_206A_202A_202C_202D_200C_200D_206F_200C_206A_202E_200D_200C_200F_202E_200C_200D_206D_200F_202C_202D_206B_202C_206D_202D_202D_200B_206F_202E(chatGui2, defaultInterpolatedStringHandler2.ToStringAndClear(), 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(-1179749275), (ushort?)(ushort)576); ApplyUpgrades(smartUpgrades2); _timeoutAt = _202E_206B_200E_200C_200B_200B_202E_206C_206F_206C_206F_200F_206E_202A_206F_206B_202E_202C_206D_206D_206D_202E_202D_202B_200C_206C_200F_206E_206E_206F_200F_206F_200C_206B_202C_206F_200D_206F_206D_200C_202E() + 5000; num = -896452188; break; } case 5: { IChatGui chatGui = chatGui; DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(43, 2); defaultInterpolatedStringHandler.AppendLiteral(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(646015485)); int smartMoveCursor = _smartMoveCursor; num3 = 1; num4 = smartMoveCursor; int num7 = num4 ^ num3; int num8 = num4 & num3; defaultInterpolatedStringHandler.AppendFormatted(num7 + (num8 + num8)); defaultInterpolatedStringHandler.AppendLiteral(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(-1680133376)); defaultInterpolatedStringHandler.AppendFormatted(smartMoves.Count); defaultInterpolatedStringHandler.AppendLiteral(global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E(-1426065974)); _206B_206D_200F_206D_202E_200F_206C_206C_206E_206F_202E_206F_206C_206A_202A_202C_202D_200C_200D_206F_200C_206A_202E_200D_200C_200F_202E_200C_200D_206D_200F_202C_202D_206B_202C_206D_202D_202D_200B_206F_202E(chatGui, defaultInterpolatedStringHandler.ToStringAndClear(), 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(-1179749275), (ushort?)(ushort)576); return ETaskResult.TaskComplete; } case 4: return ETaskResult.StillRunning; case 0: num = ((_smartMoveCursor >= smartMoves.Count) ? (-896452185) : (-896452183)); break; case 1: num = ((!configuration.General.PreserveGearset) ? (-896452178) : (-896452179)); break; case 7: num = (TryStartMove(pendingMove) ? (-896452169) : (-896452189)); break; case 2: _smartApplied = true; return ETaskResult.StillRunning; case 26: num = ((_202E_206B_200E_200C_200B_200B_202E_206C_206F_206C_206F_200F_206E_202A_206F_206B_202E_202C_206D_206D_206D_202E_202D_202B_200C_206C_200F_206E_206E_206F_200F_206F_200C_206B_202C_206F_200D_206F_206D_200C_202E() >= _timeoutAt) ? (-896452171) : (-896452190)); break; case 16: smartUpgrades = _smartUpgrades; num = ((smartUpgrades == null) ? (-896452164) : (-896452181)); break; case 22: num = ((_202E_206B_200E_200C_200B_200B_202E_206C_206F_206C_206F_200F_206E_202A_206F_206B_202E_202C_206D_206D_206D_202E_202D_202B_200C_206C_200F_206E_206E_206F_200F_206F_200C_206B_202C_206F_200D_206F_206D_200C_202E() < _timeoutAt) ? (-896452173) : (-896452192)); break; case 12: { int smartMoveCursor3 = _smartMoveCursor; num3 = 1; num4 = smartMoveCursor3; int num9 = num4 ^ num3; int num10 = num4 & num3; _smartMoveCursor = num9 + (num10 + num10); _currentMoveStarted = false; return ETaskResult.StillRunning; } case 11: return DirectEquipPhase(); case 9: return ETaskResult.TaskComplete; case 23: num = ((!IsMoveApplied(pendingMove)) ? (-896452176) : (-896452162)); break; case 14: NotifyStagingMoveApplied(_smartUpgrades, pendingMove); num = -896452182; break; case 3: return ETaskResult.TaskComplete; case 21: return ETaskResult.StillRunning; case 19: return ETaskResult.TaskComplete; case 8: num = (_smartApplied ? (-896452170) : (-896452161)); break; case 10: num = -896452172; break; case 6: { IChatGui chatGui3 = chatGui; DefaultInterpolatedStringHandler defaultInterpolatedStringHandler3 = new DefaultInterpolatedStringHandler(44, 2); defaultInterpolatedStringHandler3.AppendLiteral(global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E(-1622777026)); int smartMoveCursor2 = _smartMoveCursor; num3 = 1; num4 = smartMoveCursor2; defaultInterpolatedStringHandler3.AppendFormatted((num4 | num3) + (num4 & num3)); defaultInterpolatedStringHandler3.AppendLiteral(global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E(-1392036559)); defaultInterpolatedStringHandler3.AppendFormatted(smartMoves.Count); defaultInterpolatedStringHandler3.AppendLiteral(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(907614092)); _206B_206D_200F_206D_202E_200F_206C_206C_206E_206F_202E_206F_206C_206A_202A_202C_202D_200C_200D_206F_200C_206A_202E_200D_200C_200F_202E_200C_200D_206D_200F_202C_202D_206B_202C_206D_202D_202D_200B_206F_202E(chatGui3, defaultInterpolatedStringHandler3.ToStringAndClear(), 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(1481660241), (ushort?)(ushort)576); return ETaskResult.TaskComplete; } case 25: smartUpgrades2 = _smartUpgrades; num = ((smartUpgrades2 == null) ? (-896452187) : (-896452174)); break; case 18: num = ((smartMoves.Count <= 0) ? (-896452185) : (-896452186)); break; case 20: num = ((smartUpgrades2.Count <= 0) ? (-896452187) : (-896452163)); break; case 13: num = ((!AreUpgradesApplied(smartUpgrades)) ? (-896452164) : (-896452177)); break; case 17: _currentMoveStarted = true; _timeoutAt = _202E_206B_200E_200C_200B_200B_202E_206C_206F_206C_206F_200F_206E_202A_206F_206B_202E_202C_206D_206D_206D_202E_202D_202B_200C_206C_200F_206E_206E_206F_200F_206F_200C_206B_202C_206F_200D_206F_206D_200C_202E() + 2000; return ETaskResult.StillRunning; } } } [MethodImpl(MethodImplOptions.NoInlining)] private ETaskResult DirectEquipPhase() { List<(int, BestItemRef)> smartUpgrades = _smartUpgrades; int num = ((smartUpgrades != null) ? (-760599422) : (-760599424)); int item = default(int); BestItemRef item2 = default(BestItemRef); while (true) { int num2 = num; int num3 = -760599423; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 2: { int directEquipCursor3 = _directEquipCursor; num3 = 1; num4 = directEquipCursor3; _directEquipCursor = (num4 | num3) + (num4 & num3); _directEquipStarted = false; return ETaskResult.StillRunning; } case 15: { (int, BestItemRef) tuple = smartUpgrades[_directEquipCursor]; item = tuple.Item1; item2 = tuple.Item2; num = (_directEquipStarted ? (-760599412) : (-760599409)); break; } case 16: num = ((!AreUpgradesApplied(smartUpgrades)) ? (-760599423) : (-760599419)); break; case 1: return ETaskResult.TaskComplete; case 11: num = -760599424; break; case 13: num = ((!IsDirectEquipApplied(item2, item)) ? (-760599420) : (-760599421)); break; case 14: num = (TryStartDirectEquip(item2, item) ? (-760599411) : (-760599417)); break; case 5: num = ((_202E_206B_200E_200C_200B_200B_202E_206C_206F_206C_206F_200F_206E_202A_206F_206B_202E_202C_206D_206D_206D_202E_202D_202B_200C_206C_200F_206E_206E_206F_200F_206F_200C_206B_202C_206F_200D_206F_206D_200C_202E() < _timeoutAt) ? (-760599415) : (-760599416)); break; case 3: num = ((_directEquipCursor < smartUpgrades.Count) ? (-760599410) : (-760599407)); break; case 6: { IChatGui chatGui = chatGui; DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(42, 1); defaultInterpolatedStringHandler.AppendLiteral(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(-129120304)); defaultInterpolatedStringHandler.AppendFormatted(item); defaultInterpolatedStringHandler.AppendLiteral(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(682498639)); _206B_206D_200F_206D_202E_200F_206C_206C_206E_206F_202E_206F_206C_206A_202A_202C_202D_200C_200D_206F_200C_206A_202E_200D_200C_200F_202E_200C_200D_206D_200F_202C_202D_206B_202C_206D_202D_202D_200B_206F_202E(chatGui, defaultInterpolatedStringHandler.ToStringAndClear(), global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E(85756196), (ushort?)(ushort)576); int directEquipCursor2 = _directEquipCursor; num3 = 1; num4 = directEquipCursor2; int num7 = num4 ^ num3; int num8 = num4 & num3; _directEquipCursor = num7 + (num8 + num8); return ETaskResult.StillRunning; } case 9: { int directEquipCursor = _directEquipCursor; num3 = 1; num4 = directEquipCursor; _directEquipCursor = (num4 | num3) + (num4 & num3); _directEquipStarted = false; num = -760599415; break; } case 12: _directEquipStarted = true; _timeoutAt = _202E_206B_200E_200C_200B_200B_202E_206C_206F_206C_206F_200F_206E_202A_206F_206B_202E_202C_206D_206D_206D_202E_202D_202B_200C_206C_200F_206E_206E_206F_200F_206F_200C_206B_202C_206F_200D_206F_206D_200C_202E() + 2000; return ETaskResult.StillRunning; case 10: return ETaskResult.StillRunning; case 8: return ETaskResult.StillRunning; case 0: num = ((_202E_206B_200E_200C_200B_200B_202E_206C_206F_206C_206F_200F_206E_202A_206F_206B_202E_202C_206D_206D_206D_202E_202D_202B_200C_206C_200F_206E_206E_206F_200F_206F_200C_206B_202C_206F_200D_206F_206D_200C_202E() >= _timeoutAt) ? (-760599418) : (-760599413)); break; case 7: return ETaskResult.TaskComplete; case 4: return ETaskResult.TaskComplete; } } } private unsafe bool TryStartDirectEquip(BestItemRef item, int gearsetSlot) { InventoryManager* ptr = InventoryManager.Instance(); int num = ((ptr != null) ? (-2023162122) : (-2023162123)); while (true) { int num2 = num; int num3 = -2023162121; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: goto IL_0049; case 1: return ptr->MoveItemSlot(item.Container, (ushort)item.Slot, InventoryType.EquippedItems, (ushort)gearsetSlot) == 0; case 2: return false; } continue; IL_0049: num = -2023162123; } } private unsafe bool IsDirectEquipApplied(BestItemRef item, int gearsetSlot) { InventoryManager* ptr = InventoryManager.Instance(); int num = ((ptr != null) ? 2075722394 : 2075722398); InventoryItem* inventorySlot = default(InventoryItem*); InventoryContainer* inventoryContainer = default(InventoryContainer*); while (true) { int num2 = num; int num3 = 2075722399; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 4: return false; case 3: inventorySlot = inventoryContainer->GetInventorySlot(gearsetSlot); num = ((inventorySlot != null) ? 2075722393 : 2075722397); break; case 0: num = 2075722398; break; case 5: inventoryContainer = ptr->GetInventoryContainer(InventoryType.EquippedItems); num = ((inventoryContainer != null) ? 2075722396 : 2075722395); break; case 6: return ItemHandle.FromInventorySlot(inventorySlot).Id == ((ItemHandle)item.ItemId).Id; case 1: return false; case 2: return false; } } } private static void NotifyStagingMoveApplied(List<(int Slot, BestItemRef Item)> upgrades, PendingMove appliedMove) { int num = 0; int num2 = 1319614186; int item = default(int); BestItemRef item2 = default(BestItemRef); while (true) { int num3 = num2; int num4 = 1319614184; int num5 = num3; switch ((num5 | num4) - (num5 & num4)) { case 2: num2 = ((num < upgrades.Count) ? 1319614187 : 1319614188); break; case 4: return; case 3: { (int Slot, BestItemRef Item) tuple = upgrades[num]; item = tuple.Slot; item2 = tuple.Item; num2 = ((item2.Container != appliedMove.SourceContainer) ? 1319614185 : 1319614189); break; } case 1: { int num6 = num; num4 = 1; num5 = num6; int num7 = num5 ^ num4; int num8 = num5 & num4; num = num7 + (num8 + num8); num2 = 1319614186; break; } case 5: num2 = ((item2.Slot != appliedMove.SourceSlot) ? 1319614185 : 1319614190); break; case 0: num2 = 1319614186; break; case 6: upgrades[num] = (item, item2 with { Container = appliedMove.DestinationContainer, Slot = appliedMove.DestinationSlot }); return; } } } private unsafe bool TryStartMove(PendingMove move) { InventoryManager* ptr = InventoryManager.Instance(); int num = ((ptr != null) ? 1497756716 : 1497756719); while (true) { int num2 = num; int num3 = 1497756718; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: goto IL_004b; case 2: return ptr->MoveItemSlot(move.SourceContainer, (ushort)move.SourceSlot, move.DestinationContainer, (ushort)move.DestinationSlot) == 0; case 1: return false; } continue; IL_004b: num = 1497756719; } } private unsafe bool IsMoveApplied(PendingMove move) { InventoryManager* ptr = InventoryManager.Instance(); int num = ((ptr != null) ? (-1215933300) : (-1215933298)); InventoryItem* inventorySlot = default(InventoryItem*); InventoryContainer* inventoryContainer = default(InventoryContainer*); while (true) { int num2 = num; int num3 = -1215933302; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: return ItemHandle.FromInventorySlot(inventorySlot).Id == ((ItemHandle)move.SourceItemId).Id; case 4: return false; case 1: inventorySlot = inventoryContainer->GetInventorySlot(move.DestinationSlot); num = ((inventorySlot != null) ? (-1215933302) : (-1215933304)); break; case 6: inventoryContainer = ptr->GetInventoryContainer(move.DestinationContainer); num = ((inventoryContainer != null) ? (-1215933301) : (-1215933297)); break; case 3: num = -1215933298; break; case 2: return false; case 5: return false; } } } [MethodImpl(MethodImplOptions.NoInlining)] private unsafe ETaskResult GameUpdate() { RecommendEquipModule* ptr = RecommendEquipModule.Instance(); int num = ((!ptr->IsUpdating) ? (-598409727) : (-598409713)); while (true) { int num2 = num; int num3 = -598409719; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 9: num = ((!IsAllRecommendedGearEquipped()) ? (-598409725) : (-598409718)); break; case 10: _206B_206D_200F_206D_202E_200F_206C_206C_206E_206F_202E_206F_206C_206A_202A_202C_202D_200C_200D_206F_200C_206A_202E_200D_200C_200F_202E_200C_200D_206D_200F_202C_202D_206B_202C_206D_202D_202D_200B_206F_202E(chatGui, 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(-1029748516), 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(-1179749275), (ushort?)(ushort)576); ptr->EquipRecommendedGear(); _timeoutAt = _202E_206B_200E_200C_200B_200B_202E_206C_206F_206C_206F_200F_206E_202A_206F_206B_202E_202C_206D_206D_206D_202E_202D_202B_200C_206C_200F_206E_206E_206F_200F_206F_200C_206B_202C_206F_200D_206F_206D_200C_202E() + 5000; _checkedOrTriggeredEquipmentUpdate = true; return ETaskResult.StillRunning; case 7: num = ((!IsAllRecommendedGearEquipped()) ? (-598409717) : (-598409720)); break; case 8: num = (_checkedOrTriggeredEquipmentUpdate ? (-598409714) : (-598409728)); break; case 3: return ETaskResult.TaskComplete; case 4: return ETaskResult.StillRunning; case 0: num = -598409713; break; case 2: num = ((_202E_206B_200E_200C_200B_200B_202E_206C_206F_206C_206F_200F_206E_202A_206F_206B_202E_202C_206D_206D_206D_202E_202D_202B_200C_206C_200F_206E_206E_206F_200F_206F_200C_206B_202C_206F_200D_206F_206D_200C_202E() >= _timeoutAt) ? (-598409716) : (-598409715)); break; case 6: return ETaskResult.StillRunning; case 5: return ETaskResult.TaskComplete; case 1: return ETaskResult.TaskComplete; } } } private unsafe bool AreUpgradesApplied(IReadOnlyList<(int Slot, BestItemRef Item)> upgrades) { InventoryManager* ptr = InventoryManager.Instance(); int num = ((ptr != null) ? 503913681 : 503913682); InventoryContainer* inventoryContainer = default(InventoryContainer*); BestItemRef item2 = default(BestItemRef); InventoryItem* inventorySlot = default(InventoryItem*); while (true) { int num2 = num; int num3 = 503913680; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 3: return false; case 2: return false; case 0: num = 503913682; break; case 1: inventoryContainer = ptr->GetInventoryContainer(InventoryType.EquippedItems); num = ((inventoryContainer != null) ? 503913684 : 503913683); break; case 4: { IEnumerator<(int, BestItemRef)> enumerator = upgrades.GetEnumerator(); try { num = 986688417; while (true) { int num5 = num; num3 = 986688417; num4 = num5; int num6 = num4 + num3; int num7 = num4 & num3; switch (num6 - (num7 + num7)) { case 5: return false; case 3: { (int, BestItemRef) current = enumerator.Current; int item = current.Item1; item2 = current.Item2; inventorySlot = inventoryContainer->GetInventorySlot(item); num = ((inventorySlot == null) ? 986688420 : 986688416); break; } case 1: num = ((ItemHandle.FromInventorySlot(inventorySlot).Id == ((ItemHandle)item2.ItemId).Id) ? 986688417 : 986688420); break; case 0: num = (_202B_206B_206E_206E_206B_202A_206E_202E_202C_202D_206F_200C_202C_206D_200D_206D_200D_206B_200D_202E_202D_206C_206E_206B_202E_200D_200F_206B_206F_200C_206E_206F_200C_202B_206D_206B_202D_206E_206A_200E_202E((IEnumerator)enumerator) ? 986688418 : 986688419); break; case 4: num = 986688417; break; case 2: goto end_IL_00a9; } continue; end_IL_00a9: break; } } finally { num = ((enumerator == null) ? 1395008850 : 1395008849); while (true) { int num8 = num; num3 = 1395008851; num4 = num8; switch ((num4 | num3) - (num4 & num3)) { case 1: goto end_IL_01c9; case 2: _200F_206C_202B_206E_206D_200D_202A_200B_202C_202A_202A_206C_202B_206B_206A_200C_200E_202D_200F_200B_202C_206B_202A_206D_206C_200D_206C_206A_200B_200B_202A_200D_206E_200D_206C_200F_206F_202B_202D_202E_202E((IDisposable)enumerator); num = 1395008850; break; case 0: num = 1395008849; break; } continue; end_IL_01c9: break; } } return true; } } } } private unsafe bool TryComputeUpgradesAndMoves(EClassJob job, StatPriority priority, byte playerLevel, RaptureGearsetModule.GearsetEntry* entry, out List<(int Slot, BestItemRef Item)> upgrades, out List moves) { upgrades = new List<(int, BestItemRef)>(); moves = new List(); BestItemRef? bestItemRef = null; int num = (_200F_200E_200B_200E_202B_206F_200D_206F_202C_202D_206E_200B_206F_206F_202E_206D_206F_206E_200E_202D_206A_202E_206F_206C_206D_206B_206E_200F_206A_206A_202C_206A_202A_200E_200E_202B_200D_202E_202E_202D_202E(job) ? (-1918647865) : (-1918647852)); bool flag = default(bool); int num5 = default(int); BestItemRef? bestItemRef2 = default(BestItemRef?); InventoryType? inventoryType = default(InventoryType?); int nextFreeSlot = default(int); bool flag2 = default(bool); Dictionary cursors = default(Dictionary); uint[] item = default(uint[]); BestItemRef? bestItemRef3 = default(BestItemRef?); bool flag3 = default(bool); while (true) { int num2 = num; int num3 = -1918647849; int num4 = num2; int num7; BestItemRef? obj; int num8; EItemRankingMode eItemRankingMode; switch ((num4 | num3) - (num4 & num3)) { case 24: num = (bestItemRef.HasValue ? (-1918647854) : (-1918647871)); break; case 23: num7 = 2; goto IL_00ec; case 21: flag = true; num = -1918647859; break; case 12: num = ((num5 != 12) ? (-1918647871) : (-1918647857)); break; case 5: obj = bestItemRef; goto IL_015d; case 16: num8 = 1; goto IL_0185; case 1: num = ((!IsBagContainer(bestItemRef2.Value.Container)) ? (-1918647847) : (-1918647853)); break; case 20: num = -1918647852; break; case 2: moves.Add(new PendingMove(bestItemRef2.Value.Container, bestItemRef2.Value.Slot, bestItemRef2.Value.ItemId, inventoryType.Value, nextFreeSlot)); num = -1918647847; break; case 26: flag2 = flag; num = -1918647849; break; case 22: obj = null; goto IL_015d; case 14: upgrades.Add((num5, bestItemRef2.Value)); num = -1918647858; break; case 25: { int num6 = num5; num3 = 1; num4 = num6; num5 = (num4 | num3) + (num4 & num3); num = -1918647848; break; } case 17: return false; case 19: num = (((uint)num5 > 1u) ? (-1918647867) : (-1918647870)); break; case 10: num = ((num5 != 11) ? (-1918647844) : (-1918647841)); break; case 13: nextFreeSlot = GetNextFreeSlot(inventoryType.Value, cursors); num = ((nextFreeSlot >= 0) ? (-1918647851) : (-1918647866)); break; case 7: item = SlotMap[num5].Categories; num = ((item.Length == 0) ? (-1918647858) : (-1918647845)); break; case 4: inventoryType = ResolveArmoryContainer(item); num = ((!inventoryType.HasValue) ? (-1918647858) : (-1918647846)); break; case 11: num = ((((ItemHandle)entry->GetItem((RaptureGearsetModule.GearsetItemIndex)num5).ItemId).Id == ((ItemHandle)bestItemRef2.Value.ItemId).Id) ? (-1918647858) : (-1918647850)); break; case 9: return true; case 3: num8 = (_200E_202B_202D_206A_202B_200F_202B_206E_202C_200B_200F_202E_200C_200D_200B_200D_200F_206B_202D_206A_202E_206F_202E_202A_206A_206F_202D_202B_200F_202E_202D_202C_206A_206C_206C_200F_202E_202A_206A_200F_202E(job) ? 1 : 0); goto IL_0185; case 6: num7 = 1; goto IL_00ec; case 0: num = (flag2 ? (-1918647872) : (-1918647855)); break; case 8: bestItemRef = bestItemRef2; num = -1918647844; break; case 15: num = ((num5 < SlotMap.Length) ? (-1918647856) : (-1918647842)); break; case 18: { flag = false; num = -1918647859; break; } IL_00ec: eItemRankingMode = (EItemRankingMode)num7; bestItemRef2 = _200B_206C_206F_206A_206D_200D_206B_202C_200D_202C_206D_200F_202A_206F_200C_202D_202E_200F_202B_202E_200C_202B_202B_200C_200C_200E_200F_202E_202A_206D_206D_200D_200B_200B_200D_206C_206E_200F_200B_206F_202E(bestItemFinder, job, (IReadOnlyList)item, priority, BestItemFinder.ArmoryEquippedAndBags, playerLevel, eItemRankingMode, bestItemRef3); num = ((!bestItemRef2.HasValue) ? (-1918647858) : (-1918647843)); break; IL_0185: flag3 = (byte)num8 != 0; cursors = new Dictionary(); num5 = 0; num = -1918647848; break; IL_015d: bestItemRef3 = obj; flag2 = !flag3; num = ((!flag2) ? (-1918647849) : (-1918647868)); break; } } } private static bool IsBagContainer(InventoryType type) { int num = ((type > InventoryType.Inventory4) ? 361543209 : 361543210); bool result = default(bool); while (true) { int num2 = num; int num3 = 361543211; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 3: return result; case 1: result = true; num = 361543208; break; case 2: result = false; num = 361543208; break; case 0: num = 361543210; break; } } } private static InventoryType? ResolveArmoryContainer(uint[] acceptedCategories) { int num = 0; int num2 = -74376453; InventoryType? result = default(InventoryType?); while (true) { int num3 = num2; int num4 = -74376455; int num5 = num3; switch ((num5 | num4) - (num5 & num4)) { case 2: num2 = ((num < acceptedCategories.Length) ? (-74376456) : (-74376452)); break; case 1: result = _206D_206A_206C_206B_202E_202A_202B_200C_206B_202B_206B_200D_200E_202D_200F_200B_200D_200D_200C_200E_206D_206A_202C_206F_200E_200F_202A_202D_200F_202A_206E_202D_200D_200F_206B_200F_200C_200D_200D_202C_202E((EEquipSlotCategory)acceptedCategories[num]); num2 = ((!result.HasValue) ? (-74376455) : (-74376451)); break; case 4: return result; case 0: { int num6 = num; num4 = 1; num5 = num6; num = (num5 | num4) + (num5 & num4); num2 = -74376453; break; } case 5: return null; case 3: num2 = -74376453; break; } } } private unsafe static int GetNextFreeSlot(InventoryType container, Dictionary cursors) { InventoryManager* ptr = InventoryManager.Instance(); int num = ((ptr != null) ? (-2120371661) : (-2120371663)); int value = default(int); int num8 = default(int); InventoryContainer* inventoryContainer = default(InventoryContainer*); InventoryItem* inventorySlot = default(InventoryItem*); while (true) { int num2 = num; int num3 = -2120371664; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; int num10; switch (num5 - (num6 + num6)) { case 11: return -1; case 8: return -1; case 10: num = (cursors.TryGetValue(container, out value) ? (-2120371652) : (-2120371657)); break; case 12: num10 = value; goto IL_00a7; case 1: return -1; case 2: num = -2120371663; break; case 4: num = ((num8 < inventoryContainer->Size) ? (-2120371664) : (-2120371656)); break; case 3: inventoryContainer = ptr->GetInventoryContainer(container); num = ((inventoryContainer != null) ? (-2120371654) : (-2120371653)); break; case 0: inventorySlot = inventoryContainer->GetInventorySlot(num8); num = ((inventorySlot == null) ? (-2120371658) : (-2120371659)); break; case 7: num10 = 0; goto IL_00a7; case 9: { int num9 = num8; num3 = 1; num4 = num9; cursors[container] = (num4 | num3) + (num4 & num3); return num8; } case 6: { int num7 = num8; num3 = 1; num4 = num7; num8 = (num4 | num3) + (num4 & num3); num = -2120371660; break; } case 5: { num = ((inventorySlot->ItemId != 0) ? (-2120371658) : (-2120371655)); break; } IL_00a7: num8 = num10; num = -2120371660; break; } } } private unsafe void ApplyUpgrades(IReadOnlyList<(int Slot, BestItemRef Item)> upgrades) { RaptureGearsetModule* ptr = RaptureGearsetModule.Instance(); int num = ((ptr != null) ? 366018770 : 366018771); int currentGearsetIndex = default(int); RaptureGearsetModule.GearsetEntry* ptr4 = default(RaptureGearsetModule.GearsetEntry*); InventoryManager* ptr2 = default(InventoryManager*); int num8 = default(int); RaptureGearsetModule.GearsetItem* ptr3 = default(RaptureGearsetModule.GearsetItem*); InventoryItem* inventorySlot = default(InventoryItem*); int item = default(int); InventoryContainer* inventoryContainer = default(InventoryContainer*); BestItemRef item2 = default(BestItemRef); while (true) { int num2 = num; int num3 = 366018772; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 2: num = (ptr->IsValidGearset(currentGearsetIndex) ? 366018775 : 366018769); break; case 5: return; case 6: currentGearsetIndex = ptr->CurrentGearsetIndex; num = ((currentGearsetIndex < 0) ? 366018769 : 366018774); break; case 0: num = 366018771; break; case 3: ptr4 = (RaptureGearsetModule.GearsetEntry*)Unsafe.AsPointer(in ptr->Entries[currentGearsetIndex]); ptr2 = InventoryManager.Instance(); num = ((ptr2 != null) ? 366018773 : 366018768); break; case 4: return; case 7: return; case 1: { IEnumerator<(int, BestItemRef)> enumerator = upgrades.GetEnumerator(); try { num = 1240171448; while (true) { int num5 = num; num3 = 1240171448; num4 = num5; int num6 = num4 + num3; int num7 = num4 & num3; switch (num6 - (num7 + num7)) { case 4: num = 1240171448; break; case 6: num = ((num8 < 5) ? 1240171450 : 1240171448); break; case 2: { ptr3->Materia[num8] = inventorySlot->Materia[num8]; ptr3->MateriaGrades[num8] = inventorySlot->MateriaGrades[num8]; int num9 = num8; num3 = 1; num4 = num9; num8 = (num4 | num3) + (num4 & num3); num = 1240171454; break; } case 8: num = ((inventorySlot->ItemId == 0) ? 1240171448 : 1240171453); break; case 5: ptr3 = (RaptureGearsetModule.GearsetItem*)Unsafe.AsPointer(in ptr4->Items[item]); ptr3->ItemId = inventorySlot->ItemId; ptr3->GlamourId = inventorySlot->GlamourId; ptr3->Stain0Id = inventorySlot->Stains[0]; ptr3->Stain1Id = inventorySlot->Stains[1]; num8 = 0; num = 1240171454; break; case 7: inventorySlot = inventoryContainer->GetInventorySlot(item2.Slot); num = ((inventorySlot == null) ? 1240171448 : 1240171440); break; case 0: num = (_202B_206B_206E_206E_206B_202A_206E_202E_202C_202D_206F_200C_202C_206D_200D_206D_200D_206B_200D_202E_202D_206C_206E_206B_202E_200D_200F_206B_206F_200C_206E_206F_200C_202B_206D_206B_202D_206E_206A_200E_202E((IEnumerator)enumerator) ? 1240171449 : 1240171451); break; case 1: { (int, BestItemRef) current = enumerator.Current; item = current.Item1; item2 = current.Item2; inventoryContainer = ptr2->GetInventoryContainer(item2.Container); num = ((inventoryContainer == null) ? 1240171448 : 1240171455); break; } case 3: goto end_IL_010f; } continue; end_IL_010f: break; } } finally { num = ((enumerator == null) ? 1335984006 : 1335984007); while (true) { int num10 = num; num3 = 1335984006; num4 = num10; switch ((num4 | num3) - (num4 & num3)) { case 0: goto end_IL_0345; case 1: _200F_206C_202B_206E_206D_200D_202A_200B_202C_202A_202A_206C_202B_206B_206A_200C_200E_202D_200F_200B_202C_206B_202A_206D_206C_200D_206C_206A_200B_200B_202A_200D_206E_200D_206C_200F_206F_202B_202D_202E_202E((IDisposable)enumerator); num = 1335984006; break; case 2: num = 1335984007; break; } continue; end_IL_0345: break; } } ptr->EquipGearset(currentGearsetIndex, 0); return; } } } } private byte GetPlayerLevel(EClassJob job) { short num = _202C_206B_200E_206D_200B_206E_206F_206B_202A_206A_202A_200F_200F_200D_206F_206F_206A_206E_202B_206C_206F_200B_200D_200E_202B_200B_206A_202B_202E_206C_202A_206C_202E_200D_206D_206E_202A_200D_206B_206C_202E((int)dataManager.GetExcelSheet().GetRow((uint)job).ExpArrayIndex); int num2 = ((num > 0) ? (-1894370690) : (-1894370691)); while (true) { int num3 = num2; int num4 = -1894370692; int num5 = num3; switch ((num5 | num4) - (num5 & num4)) { case 0: goto IL_0071; case 2: return (byte)num; case 1: return 0; } continue; IL_0071: num2 = -1894370691; } } private unsafe bool IsAllRecommendedGearEquipped() { Span> recommendedItems = RecommendEquipModule.Instance()->RecommendedItems; int num = 0; int num2 = 603510745; InventoryItem* value = default(InventoryItem*); while (true) { int num3 = num2; int num4 = 603510749; int num5 = num3; switch ((num5 | num4) - (num5 & num4)) { case 2: { int num6 = num; num4 = 1; num5 = num6; int num7 = num5 ^ num4; int num8 = num5 & num4; num = num7 + (num8 + num8); num2 = 603510745; break; } case 1: num2 = ((value->ItemId == 0) ? 603510751 : 603510750); break; case 5: return false; case 3: num2 = (_202A_202E_206B_206C_200D_202B_202A_206B_206D_202E_206E_202A_206A_200C_206C_206B_202C_206A_202E_206C_206B_206A_200D_206C_200B_202D_202E_206B_200B_200F_202C_202A_202A_206D_206B_200F_206A_206B_200E_200C_202E(value->ItemId) ? 603510751 : 603510744); break; case 6: { Pointer pointer = recommendedItems[num]; value = pointer.Value; num2 = ((value == null) ? 603510751 : 603510748); break; } case 7: num2 = 603510745; break; case 0: return true; case 4: num2 = ((num < recommendedItems.Length) ? 603510747 : 603510749); break; } } } public override bool ShouldInterruptOnDamage() { return true; } static bool _206D_206D_206B_200F_200F_202D_206F_200C_206E_200E_200B_202A_206F_206D_206D_202A_200F_206C_200C_200C_200B_202A_200C_206B_202C_200B_206F_200D_200E_200B_206C_206C_206E_200B_200D_202D_202C_200C_206D_202A_202E(ICondition P_0, ConditionFlag P_1) { return P_0[P_1]; } static IPlayerCharacter _200D_206A_206B_200E_202A_206A_206E_202D_200C_202E_200F_202B_202D_206F_200F_200E_200F_202C_206E_206E_202A_206F_206E_200D_200C_202E_206B_200E_206C_202B_202C_206A_202E_202A_206B_200D_206E_202A_202C_202E(IObjectTable P_0) { return P_0.LocalPlayer; } static RowRef _200F_202D_202B_200C_200F_206F_206B_200E_206C_200E_206C_206A_202B_200C_206A_206D_200E_200C_202C_206F_200D_200C_200D_206A_202C_200F_206A_202C_200B_202E_200D_206B_206F_202B_202A_206B_202A_200F_202B_206E_202E(ICharacter P_0) { return P_0.ClassJob; } static Type _206B_206D_202E_200C_202C_202A_200F_206F_206B_200D_202A_206E_206D_206A_206C_202D_200F_200C_202C_206E_202E_200B_200F_202A_200F_202D_202E_200E_200D_202D_206C_202E_206E_206F_202D_206B_202D_202A_200F_200D_202E(RuntimeTypeHandle P_0) { return Type.GetTypeFromHandle(P_0); } static bool _202D_206A_200D_202E_202D_206B_202E_200D_202E_206D_202A_202B_200B_206D_206B_206E_206C_202B_206A_206C_202A_206D_202A_202C_200E_200B_200F_202A_206A_200C_206E_202C_202B_200B_200F_206D_200C_206B_202A_200C_202E(Type P_0, object P_1) { return Enum.IsDefined(P_0, P_1); } static StatPriority _202B_200D_200C_206E_206D_206D_206D_202C_200F_206D_202D_202D_206D_200B_206A_202C_200C_200C_206F_202D_200C_200D_202D_206D_206B_200E_202B_206B_202B_202D_206E_202A_206F_206D_206B_200D_202C_200F_202D_206B_202E(EClassJob P_0) { return StatPriority.ForJob(P_0); } static void _206B_206D_200F_206D_202E_200F_206C_206C_206E_206F_202E_206F_206C_206A_202A_202C_202D_200C_200D_206F_200C_206A_202E_200D_200C_200F_202E_200C_200D_206D_200F_202C_202D_206B_202C_206D_202D_202D_200B_206F_202E(IChatGui P_0, string P_1, string P_2, ushort? P_3) { P_0.Print(P_1, P_2, P_3); } static long _202E_206B_200E_200C_200B_200B_202E_206C_206F_206C_206F_200F_206E_202A_206F_206B_202E_202C_206D_206D_206D_202E_202D_202B_200C_206C_200F_206E_206E_206F_200F_206F_200C_206B_202C_206F_200D_206F_206D_200C_202E() { return Environment.TickCount64; } static bool _202B_206B_206E_206E_206B_202A_206E_202E_202C_202D_206F_200C_202C_206D_200D_206D_200D_206B_200D_202E_202D_206C_206E_206B_202E_200D_200F_206B_206F_200C_206E_206F_200C_202B_206D_206B_202D_206E_206A_200E_202E(IEnumerator P_0) { return P_0.MoveNext(); } static void _200F_206C_202B_206E_206D_200D_202A_200B_202C_202A_202A_206C_202B_206B_206A_200C_200E_202D_200F_200B_202C_206B_202A_206D_206C_200D_206C_206A_200B_200B_202A_200D_206E_200D_206C_200F_206F_202B_202D_202E_202E(IDisposable P_0) { P_0.Dispose(); } static bool _200F_200E_200B_200E_202B_206F_200D_206F_202C_202D_206E_200B_206F_206F_202E_206D_206F_206E_200E_202D_206A_202E_206F_206C_206D_206B_206E_200F_206A_206A_202C_206A_202A_200E_200E_202B_200D_202E_202E_202D_202E(EClassJob P_0) { return P_0.IsCrafter(); } static bool _200E_202B_202D_206A_202B_200F_202B_206E_202C_200B_200F_202E_200C_200D_200B_200D_200F_206B_202D_206A_202E_206F_202E_202A_206A_206F_202D_202B_200F_202E_202D_202C_206A_206C_206C_200F_202E_202A_206A_200F_202E(EClassJob P_0) { return P_0.IsGatherer(); } static BestItemRef? _200B_206C_206F_206A_206D_200D_206B_202C_200D_202C_206D_200F_202A_206F_200C_202D_202E_200F_202B_202E_200C_202B_202B_200C_200C_200E_200F_202E_202A_206D_206D_200D_200B_200B_200D_206C_206E_200F_200B_206F_202E(BestItemFinder P_0, EClassJob P_1, IReadOnlyList P_2, StatPriority P_3, IReadOnlyList P_4, byte P_5, EItemRankingMode P_6, BestItemRef? P_7) { return P_0.FindBest(P_1, P_2, P_3, P_4, P_5, P_6, P_7); } static InventoryType? _206D_206A_206C_206B_202E_202A_202B_200C_206B_202B_206B_200D_200E_202D_200F_200B_200D_200D_200C_200E_206D_206A_202C_206F_200E_200F_202A_202D_200F_202A_206E_202D_200D_200F_206B_200F_200C_200D_200D_202C_202E(EEquipSlotCategory P_0) { return P_0.GetArmoryContainer(); } static short _202C_206B_200E_206D_200B_206E_206F_206B_202A_206A_202A_200F_200F_200D_206F_206F_206A_206E_202B_206C_206F_200B_200D_200E_202B_200B_206A_202B_202E_206C_202A_206C_202E_200D_206D_206E_202A_200D_206B_206C_202E(int P_0) { return PlayerStateHelper.GetClassJobLevel(P_0); } static bool _202A_202E_206B_206C_200D_202B_202A_206B_206D_202E_206E_202A_206A_200C_206C_206B_202C_206A_202E_206C_206B_206A_200D_206C_200B_202D_202E_206B_200B_200F_202C_202A_202A_206D_206B_200F_206A_206B_200E_200C_202E(uint P_0) { return InventoryHelper.IsItemEquipped(P_0); } } }