1
0
Fork 0
forked from aly/qstbak

muffin v7.5.11

This commit is contained in:
alydev 2026-08-17 20:29:32 +10:00
parent addf2d530f
commit 3102923ce2
522 changed files with 41082 additions and 211592 deletions

View file

@ -0,0 +1,6 @@
using Questionable.Model;
using Questionable.Model.Questing;
namespace Questionable.Controller.CustomDelivery;
internal sealed record CustomDeliveryNpc(int NpcIndex, ushort NpcRowId, string Name, ushort Level, EExpansionVersion Expansion, QuestId UnlockQuestId);

View file

@ -0,0 +1,31 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using Dalamud.Plugin.Services;
using Lumina.Excel.Sheets;
using Questionable.Model;
using Questionable.Model.Questing;
namespace Questionable.Controller.CustomDelivery;
internal sealed class CustomDeliveryNpcData
{
private readonly List<CustomDeliveryNpc> _npcs;
private readonly Dictionary<ushort, CustomDeliveryNpc> _npcsByRowId;
public IReadOnlyList<CustomDeliveryNpc> AllNpcs => _npcs;
public CustomDeliveryNpcData(IDataManager dataManager)
{
_npcs = (from x in dataManager.GetExcelSheet<SatisfactionNpc>()
where x.RowId != 0 && x.Npc.RowId != 0
select new CustomDeliveryNpc((int)(x.RowId - 1), (ushort)x.RowId, x.Npc.Value.Singular.ToString(), x.LevelUnlock, (EExpansionVersion)x.QuestRequired.Value.Expansion.RowId, QuestId.FromRowId(x.QuestRequired.RowId))).ToList();
_npcsByRowId = _npcs.ToDictionary((CustomDeliveryNpc x) => x.NpcRowId);
}
public bool TryGetByRowId(ushort npcRowId, [NotNullWhen(true)] out CustomDeliveryNpc? npc)
{
return _npcsByRowId.TryGetValue(npcRowId, out npc);
}
}

View file

@ -1,8 +1,6 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Numerics;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
using Dalamud.Game.ClientState.Objects.SubKinds;
@ -34,276 +32,116 @@ internal sealed class DeliveryNpcApproachExecutor(NavmeshIpc navmeshIpc, Movemen
private Vector3 _npcPosition;
[MethodImpl(MethodImplOptions.NoInlining)]
protected override bool Start()
{
_candidates.Clear();
_candidateIndex = 0;
_moving = false;
_pathfindTask = null;
_cancellationTokenSource = _202C_206C_202B_200E_200E_206D_202D_202C_200E_206F_206A_202B_202B_202A_206B_206A_206E_206B_200E_200F_206A_206B_200B_200D_206A_206D_200E_206C_200D_202D_202E_202B_202B_202A_200F_200F_200D_200F_202A_202A_202E(TimeSpan.FromSeconds(30L));
IPlayerCharacter playerCharacter = _206D_202C_200D_202A_206B_202B_206F_202C_206A_200B_206F_200F_200E_202A_200F_202B_202A_206E_200E_206D_202A_200B_206C_202D_206E_206F_206E_206C_206F_202C_206F_202B_202A_200B_200E_202D_206A_206D_202E_206C_202E(objectTable);
_cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(30L));
IPlayerCharacter localPlayer = objectTable.LocalPlayer;
IGameObject gameObject = gameFunctions.FindObjectByDataId(base.Task.NpcDataId, null, warnIfMissing: false);
_npcPosition = ((gameObject != null) ? _200E_200C_200C_200B_202B_202D_206F_200F_202A_206A_206E_206F_206F_206E_202A_206B_206C_202B_206B_202B_206C_202E_206A_206A_206C_202B_206E_202A_206D_206A_202E_200B_200F_202E_200F_206C_200E_202D_200C_202A_202E(gameObject) : base.Task.NpcPosition);
_interactionDistance = 3f + ((gameObject != null) ? _200B_200D_202E_206D_206E_200F_200E_200B_206D_202D_202C_200E_200E_200B_206D_200E_200C_202B_206E_202E_202B_202A_202A_206D_206A_206B_206C_200B_206F_206A_202B_202B_202C_206B_200E_202A_206D_206A_200C_202B_202E(gameObject) : 0f) + ((playerCharacter != null) ? _200B_200D_202E_206D_206E_200F_200E_200B_206D_202D_202C_200E_200E_200B_206D_200E_200C_202B_206E_202E_202B_202A_202A_206D_206A_206B_206C_200B_206F_206A_202B_202B_202C_206B_200E_202A_206D_206A_200C_202B_202E((IGameObject)playerCharacter) : 0f);
int num = ((playerCharacter == null) ? (-965250056) : (-965250059));
int num5 = default(int);
Vector3? pointOnFloor = default(Vector3?);
float num6 = default(float);
float num7 = default(float);
while (true)
_npcPosition = gameObject?.Position ?? base.Task.NpcPosition;
_interactionDistance = 3f + (gameObject?.HitboxRadius ?? 0f) + (localPlayer?.HitboxRadius ?? 0f);
if (localPlayer == null || clientState.TerritoryType != base.Task.TerritoryId)
{
int num2 = num;
int num3 = -965250056;
int num4 = num2;
int num14;
int num15;
float num16;
Vector3 position;
switch ((num4 | num3) - (num4 & num3))
return true;
}
float num = MathF.Atan2(localPlayer.Position.X - _npcPosition.X, localPlayer.Position.Z - _npcPosition.Z);
float num2 = MathF.Max(1f, _interactionDistance - 0.5f);
for (int i = 0; i < 24; i++)
{
int num3 = ((i != 0) ? ((i + 1) / 2 * ((i % 2 == 1) ? 1 : (-1))) : 0);
float x = num + (float)Math.PI * 2f * (float)num3 / 24f;
Vector3 position = new Vector3(_npcPosition.X + MathF.Sin(x) * num2, _npcPosition.Y + 5f, _npcPosition.Z + MathF.Cos(x) * num2);
Vector3? pointOnFloor = navmeshIpc.GetPointOnFloor(position, unlandable: false, 0.75f);
if (pointOnFloor.HasValue && Vector2.Distance(new Vector2(pointOnFloor.Value.X, pointOnFloor.Value.Z), new Vector2(_npcPosition.X, _npcPosition.Z)) <= _interactionDistance && HasLineOfSight(pointOnFloor.Value, _npcPosition) && HasBodyClearance(pointOnFloor.Value, localPlayer.HitboxRadius + 0.5f))
{
case 7:
_202A_200F_206B_200E_200D_206D_206F_206F_200D_206A_206A_202C_206C_206A_202C_206F_206A_202D_200B_206E_206D_202D_202C_206E_202E_200E_200B_206E_202B_206D_202E_200B_200D_206B_206E_206D_206E_200B_206B_202D_202E((ILogger)logger, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(90792700), new object[3]
{
_candidates.Count,
base.Task.NpcDataId,
_interactionDistance
});
StartNextPathfind();
return true;
case 12:
num = ((num5 == 0) ? (-965250052) : (-965250055));
break;
case 4:
num14 = 0;
goto IL_01a9;
case 9:
num = ((!(Vector2.Distance(new Vector2(pointOnFloor.Value.X, pointOnFloor.Value.Z), new Vector2(_npcPosition.X, _npcPosition.Z)) <= _interactionDistance)) ? (-965250064) : (-965250051));
break;
case 13:
num = ((_200C_202B_200C_206A_206D_206A_202E_202B_206A_200F_200F_200F_202A_206F_206D_202B_200B_202C_200F_200D_206B_206D_200B_202E_202A_202A_202C_200C_206F_202E_200C_200F_202B_200D_200D_202C_202E_202E_200D_206A_202E(clientState) == base.Task.TerritoryId) ? (-965250054) : (-965250056));
break;
case 5:
num = ((!HasLineOfSight(pointOnFloor.Value, _npcPosition)) ? (-965250064) : (-965250061));
break;
case 0:
return true;
case 1:
{
int num11 = num5;
num3 = 1;
num4 = num11;
int num12 = num4 ^ num3;
int num13 = num4 & num3;
num14 = (num12 + (num13 + num13)) / 2 * ((num5 % 2 == 1) ? 1 : (-1));
goto IL_01a9;
}
case 10:
num = ((num5 < 24) ? (-965250060) : (-965250049));
break;
case 8:
{
int num8 = num5;
num3 = 1;
num4 = num8;
int num9 = num4 ^ num3;
int num10 = num4 & num3;
num5 = num9 + (num10 + num10);
num = -965250062;
break;
}
case 3:
num = -965250059;
break;
case 2:
num6 = _200E_200F_200D_206C_206A_202C_206B_206F_202B_202C_200E_200D_206A_200E_206D_200B_200B_202A_206E_202A_202D_202E_206B_200C_200B_206A_200B_200C_206E_200B_200D_206D_200C_202B_206F_200F_200B_202B_200C_200E_202E(_200E_200C_200C_200B_202B_202D_206F_200F_202A_206A_206E_206F_206F_206E_202A_206B_206C_202B_206B_202B_206C_202E_206A_206A_206C_202B_206E_202A_206D_206A_202E_200B_200F_202E_200F_206C_200E_202D_200C_202A_202E((IGameObject)playerCharacter).X - _npcPosition.X, _200E_200C_200C_200B_202B_202D_206F_200F_202A_206A_206E_206F_206F_206E_202A_206B_206C_202B_206B_202B_206C_202E_206A_206A_206C_202B_206E_202A_206D_206A_202E_200B_200F_202E_200F_206C_200E_202D_200C_202A_202E((IGameObject)playerCharacter).Z - _npcPosition.Z);
num7 = _202B_200F_200E_206C_200E_206B_202C_202D_200B_200C_202A_206C_200F_200B_200D_200C_200B_206E_206D_202C_202D_200E_200D_202C_202A_206F_200B_200C_202B_206E_200B_202B_200F_206B_206A_200B_206E_202A_206D_206F_202E(1f, _interactionDistance - 0.5f);
num5 = 0;
num = -965250062;
break;
case 11:
num = ((!HasBodyClearance(pointOnFloor.Value, _200B_200D_202E_206D_206E_200F_200E_200B_206D_202D_202C_200E_200E_200B_206D_200E_200C_202B_206E_202E_202B_202A_202A_206D_206A_206B_206C_200B_206F_206A_202B_202B_202C_206B_200E_202A_206D_206A_200C_202B_202E((IGameObject)playerCharacter) + 0.5f)) ? (-965250064) : (-965250050));
break;
case 6:
{
_candidates.Add(pointOnFloor.Value);
num = -965250064;
break;
}
IL_01a9:
num15 = num14;
num16 = num6 + MathF.PI * 2f * (float)num15 / 24f;
position = new Vector3(_npcPosition.X + _202B_202D_206B_200B_200B_200B_202A_206A_202B_206F_202B_206F_206F_206D_206B_200C_206D_202A_206B_202D_200C_206B_206C_206F_206D_206B_202E_202A_202D_206A_206E_206F_200D_202C_200F_202A_206F_200D_206A_202E_202E(num16) * num7, _npcPosition.Y + 5f, _npcPosition.Z + _200B_202E_202E_206A_202B_202B_202A_200E_206A_202E_202D_200B_200C_202D_202D_202E_202C_200C_206C_200E_200F_206D_200D_200B_200C_202A_200B_206E_206E_202C_202D_202A_200B_202C_206C_206C_202C_202E_206D_202E_202E(num16) * num7);
pointOnFloor = navmeshIpc.GetPointOnFloor(position, unlandable: false, 0.75f);
num = ((!pointOnFloor.HasValue) ? (-965250064) : (-965250063));
break;
_candidates.Add(pointOnFloor.Value);
}
}
logger.LogDebug("Searching {CandidateCount} reachable approaches to delivery NPC {DataId} within {Distance:F1}y", _candidates.Count, base.Task.NpcDataId, _interactionDistance);
StartNextPathfind();
return true;
}
[MethodImpl(MethodImplOptions.NoInlining)]
public override ETaskResult Update()
{
int num = ((!_moving) ? (-1907182923) : (-1907182931));
Vector3 vector = default(Vector3);
NavPathfindResult result = default(NavPathfindResult);
IPlayerCharacter playerCharacter = default(IPlayerCharacter);
float num6 = default(float);
IPlayerCharacter playerCharacter2 = default(IPlayerCharacter);
while (true)
if (_moving)
{
int num2 = num;
int num3 = -1907182938;
int num4 = num2;
float num5;
switch ((num4 | num3) - (num4 & num3))
if (movementController.IsPathfinding || movementController.IsPathRunning)
{
case 17:
{
List<Vector3> candidates = _candidates;
int candidateIndex = _candidateIndex;
num3 = 1;
num4 = candidateIndex;
vector = candidates[~(~num4 + num3)];
result = _pathfindTask.Result;
num = (result.HasPartialInfo ? (-1907182936) : (-1907182924));
break;
return ETaskResult.StillRunning;
}
case 16:
num = ((_candidateIndex < _candidates.Count) ? (-1907182927) : (-1907182930));
break;
case 19:
num = ((_pathfindTask != null) ? (-1907182940) : (-1907182922));
break;
case 8:
throw new MovementController.PathfindingFailedException(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<string>(1585195763));
case 6:
num = ((!movementController.IsPathRunning) ? (-1907182925) : (-1907182941));
break;
case 29:
num = ((!_202C_202E_202A_200B_206B_200F_200F_206E_202A_206B_202A_206A_202C_202A_200C_206A_202A_200C_200D_200C_202A_206E_206A_200D_206C_206E_206C_202C_202C_206E_206C_200D_202A_206D_202C_206A_202D_202C_202C_200E_202E((System.Threading.Tasks.Task)_pathfindTask)) ? (-1907182937) : (-1907182928));
break;
case 7:
_202A_200F_206B_200E_200D_206D_206F_206F_200D_206A_206A_202C_206C_206A_202C_206F_206A_202D_200B_206E_206D_202D_202C_206E_202E_200E_200B_206E_202B_206D_202E_200B_200D_206B_206E_206D_206E_200B_206B_202D_202E((ILogger)logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(190605907), new object[1] { vector });
movementController.NavigateTo(EMovementType.Quest, base.Task.NpcDataId, result.Waypoints, fly: false, sprint: true, 0.5f);
_moving = true;
return ETaskResult.StillRunning;
case 24:
num = (result.IsPartial ? (-1907182929) : (-1907182933));
break;
case 20:
throw new MovementController.PathfindingFailedException(global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(-1442579003));
case 2:
num = (_200F_200F_202B_206F_206E_202E_206A_206B_202B_200D_200F_200F_202A_206E_206A_200F_200E_200D_206B_202E_206E_206D_206B_202E_206C_200C_200E_202B_202E_200B_200F_202D_200B_200E_200E_206B_202B_200C_206E_206D_202E((System.Threading.Tasks.Task)_pathfindTask) ? (-1907182917) : (-1907182913));
break;
case 22:
throw new MovementController.PathfindingFailedException(global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(688174064));
case 27:
num = ((playerCharacter == null) ? (-1907182929) : (-1907182942));
break;
case 14:
num5 = result.EndDistance;
goto IL_02ae;
case 23:
StartNextPathfind();
return ETaskResult.StillRunning;
case 11:
num = (movementController.IsPathfinding ? (-1907182941) : (-1907182944));
break;
case 1:
num = ((!_202E_202B_206F_200E_200D_206D_206B_206F_206B_200B_206F_206F_200D_200D_200C_200F_200C_206F_200D_200B_200C_202D_206D_202D_206A_200D_206D_206B_206E_202E_206C_202C_206B_202E_200E_200F_202E_200D_206F_206B_202E((System.Threading.Tasks.Task)_pathfindTask)) ? (-1907182921) : (-1907182939));
break;
case 0:
num = -1907182931;
break;
case 12:
num = ((!result.HasPartialInfo) ? (-1907182933) : (-1907182914));
break;
case 13:
num = ((!(num6 <= 1f)) ? (-1907182929) : (-1907182915));
break;
case 15:
IPlayerCharacter localPlayer = objectTable.LocalPlayer;
if (localPlayer != null && Vector3.Distance(localPlayer.Position, _npcPosition) <= _interactionDistance + 0.5f)
{
return ETaskResult.TaskComplete;
}
throw new MovementController.PathfindingFailedException("Delivery NPC approach ended outside interaction range");
}
if (_pathfindTask == null)
{
if (_candidateIndex >= _candidates.Count)
{
throw new MovementController.PathfindingFailedException("No reachable approach within delivery NPC interaction range");
}
StartNextPathfind();
return ETaskResult.StillRunning;
}
if (!_pathfindTask.IsCompleted)
{
return ETaskResult.StillRunning;
}
if (_pathfindTask.IsCanceled)
{
throw new MovementController.PathfindingFailedException("Delivery NPC approach search timed out");
}
if (_pathfindTask.IsFaulted)
{
logger.LogDebug(_pathfindTask.Exception, "Delivery NPC approach candidate pathfinding failed");
_pathfindTask = null;
return ETaskResult.StillRunning;
}
Vector3 vector = _candidates[_candidateIndex - 1];
NavPathfindResult result = _pathfindTask.Result;
float num;
if (!result.HasPartialInfo)
{
if (result.Waypoints.Count <= 0)
{
num = float.MaxValue;
}
else
{
List<Vector3> waypoints = result.Waypoints;
num5 = Vector3.Distance(waypoints[waypoints.Count - 1], vector);
goto IL_02ae;
}
case 21:
playerCharacter2 = _206D_202C_200D_202A_206B_202B_206F_202C_206A_200B_206F_200F_200E_202A_200F_202B_202A_206E_200E_206D_202A_200B_206C_202D_206E_206F_206E_206C_206F_202C_206F_202B_202A_200B_200E_202D_206A_206D_202E_206C_202E(objectTable);
num = ((playerCharacter2 == null) ? (-1907182926) : (-1907182918));
break;
case 3:
_200E_206D_206E_206A_200C_202B_206B_202D_206B_200C_200D_202C_206A_206B_200F_206C_200D_200F_206B_202B_206E_202E_206B_202A_200C_206F_206A_206D_200E_200F_202D_202E_206E_206B_202D_200B_202C_202D_202B_200E_202E((ILogger)logger, (Exception)_206B_206A_200F_206E_202E_206D_200C_202A_200E_202A_202A_206F_206C_200B_202C_202E_206A_202C_202B_200D_200C_206D_200E_202C_206E_202B_206B_202C_202E_200C_200D_206E_206A_200D_200E_206B_200E_202A_206D_200D_202E((System.Threading.Tasks.Task)_pathfindTask), 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<string>(-1595020908), Array.Empty<object>());
_pathfindTask = null;
return ETaskResult.StillRunning;
case 28:
num = ((!(Vector3.Distance(_200E_200C_200C_200B_202B_202D_206F_200F_202A_206A_206E_206F_206F_206E_202A_206B_206C_202B_206B_202B_206C_202E_206A_206A_206C_202B_206E_202A_206D_206A_202E_200B_200F_202E_200F_206C_200E_202D_200C_202A_202E((IGameObject)playerCharacter2), _npcPosition) <= _interactionDistance + 0.5f)) ? (-1907182926) : (-1907182916));
break;
case 25:
return ETaskResult.StillRunning;
case 26:
return ETaskResult.TaskComplete;
case 18:
num = ((result.Waypoints.Count > 0) ? (-1907182935) : (-1907182932));
break;
case 10:
num5 = float.MaxValue;
goto IL_02ae;
case 9:
_pathfindTask = null;
return ETaskResult.StillRunning;
case 4:
num = ((!HasCollisionFreePath(_200E_200C_200C_200B_202B_202D_206F_200F_202A_206A_206E_206F_206F_206E_202A_206B_206C_202B_206B_202B_206C_202E_206A_206A_206C_202B_206E_202A_206D_206A_202E_200B_200F_202E_200F_206C_200E_202D_200C_202A_202E((IGameObject)playerCharacter), result.Waypoints)) ? (-1907182929) : (-1907182943));
break;
case 5:
{
return ETaskResult.StillRunning;
}
IL_02ae:
num6 = num5;
playerCharacter = _206D_202C_200D_202A_206B_202B_206F_202C_206A_200B_206F_200F_200E_202A_200F_202B_202A_206E_200E_206D_202A_200B_206C_202D_206E_206F_206E_206C_206F_202C_206F_202B_202A_200B_200E_202D_206A_206D_202E_206C_202E(objectTable);
num = ((result.Waypoints.Count <= 0) ? (-1907182929) : (-1907182934));
break;
num = Vector3.Distance(waypoints[waypoints.Count - 1], vector);
}
}
else
{
num = result.EndDistance;
}
float num2 = num;
IPlayerCharacter localPlayer2 = objectTable.LocalPlayer;
if (result.Waypoints.Count > 0 && (!result.HasPartialInfo || !result.IsPartial) && num2 <= 1f && localPlayer2 != null && HasCollisionFreePath(localPlayer2.Position, result.Waypoints))
{
logger.LogDebug("Selected reachable delivery NPC approach {Approach}", vector);
movementController.NavigateTo(EMovementType.Quest, base.Task.NpcDataId, result.Waypoints, fly: false, sprint: true, 0.5f);
_moving = true;
return ETaskResult.StillRunning;
}
_pathfindTask = null;
return ETaskResult.StillRunning;
}
private void StartNextPathfind()
{
IPlayerCharacter playerCharacter = _206D_202C_200D_202A_206B_202B_206F_202C_206A_200B_206F_200F_200E_202A_200F_202B_202A_206E_200E_206D_202A_200B_206C_202D_206E_206F_206E_206C_206F_202C_206F_202B_202A_200B_200E_202D_206A_206D_202E_206C_202E(objectTable);
int num = ((playerCharacter == null) ? 461991521 : 461991527);
while (true)
IPlayerCharacter localPlayer = objectTable.LocalPlayer;
if (localPlayer != null && _candidateIndex < _candidates.Count && _cancellationTokenSource != null)
{
int num2 = num;
int num3 = 461991523;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 1:
num = ((_cancellationTokenSource != null) ? 461991520 : 461991521);
break;
case 4:
num = ((_candidateIndex >= _candidates.Count) ? 461991521 : 461991522);
break;
case 2:
return;
case 0:
num = 461991527;
break;
case 3:
{
List<Vector3> candidates = _candidates;
int candidateIndex = _candidateIndex;
num3 = 1;
num4 = candidateIndex;
int num5 = num4 ^ num3;
int num6 = num4 & num3;
_candidateIndex = num5 + (num6 + num6);
Vector3 targetPosition = candidates[candidateIndex];
_pathfindTask = navmeshIpc.Pathfind(_200E_200C_200C_200B_202B_202D_206F_200F_202A_206A_206E_206F_206F_206E_202A_206B_206C_202B_206B_202B_206C_202E_206A_206A_206C_202B_206E_202A_206D_206A_202E_200B_200F_202E_200F_206C_200E_202D_200C_202A_202E((IGameObject)playerCharacter), targetPosition, fly: false, _202E_206E_200F_206F_200D_200C_206D_202A_200C_200D_202C_200F_202D_206F_206D_206F_206E_200D_206E_202C_200C_206E_200C_206F_206B_206B_200D_200C_200F_200D_202E_206E_202A_206F_202D_202C_206D_200C_206F_200D_202E(_cancellationTokenSource));
return;
}
}
Vector3 targetPosition = _candidates[_candidateIndex++];
_pathfindTask = navmeshIpc.Pathfind(localPlayer.Position, targetPosition, fly: false, _cancellationTokenSource.Token);
}
}
@ -314,114 +152,27 @@ internal sealed class DeliveryNpcApproachExecutor(NavmeshIpc navmeshIpc, Movemen
private static bool HasBodyClearance(Vector3 position, float radius)
{
int num = 0;
int num2 = 883120263;
while (true)
for (int i = 0; i < 8; i++)
{
int num3 = num2;
int num4 = 883120261;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
switch (num6 - (num7 + num7))
float x = (float)Math.PI * 2f * (float)i / 8f;
if (!HasLineOfSightAtHeight(to: new Vector3(position.X + MathF.Sin(x) * radius, position.Y, position.Z + MathF.Cos(x) * radius), from: position, height: 1f))
{
case 4:
num2 = 883120263;
break;
case 0:
return false;
case 1:
return true;
case 2:
num2 = ((num < 8) ? 883120262 : 883120260);
break;
case 5:
{
int num9 = num;
num4 = 1;
num5 = num9;
num = (num5 | num4) + (num5 & num4);
num2 = 883120263;
break;
}
case 3:
{
float num8 = MathF.PI * 2f * (float)num / 8f;
num2 = (HasLineOfSightAtHeight(to: new Vector3(position.X + _202B_202D_206B_200B_200B_200B_202A_206A_202B_206F_202B_206F_206F_206D_206B_200C_206D_202A_206B_202D_200C_206B_206C_206F_206D_206B_202E_202A_202D_206A_206E_206F_200D_202C_200F_202A_206F_200D_206A_202E_202E(num8) * radius, position.Y, position.Z + _200B_202E_202E_206A_202B_202B_202A_200E_206A_202E_202D_200B_200C_202D_202D_202E_202C_200C_206C_200E_200F_206D_200D_200B_200C_202A_200B_206E_206E_202C_202D_202A_200B_202C_206C_206C_202C_202E_206D_202E_202E(num8) * radius), from: position, height: 1f) ? 883120256 : 883120261);
break;
}
}
}
return true;
}
private static bool HasCollisionFreePath(Vector3 start, IReadOnlyList<Vector3> waypoints)
{
Vector3 vector = start;
IEnumerator<Vector3> enumerator = waypoints.GetEnumerator();
try
foreach (Vector3 waypoint in waypoints)
{
int num = -1337017310;
Vector3 current = default(Vector3);
while (true)
if (!HasLineOfSightAtHeight(vector, waypoint, 0.75f) || !HasLineOfSightAtHeight(vector, waypoint, 1.5f))
{
int num2 = num;
int num3 = -1337017311;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 6:
num = -1337017310;
break;
case 4:
return false;
case 1:
current = enumerator.Current;
num = ((!HasLineOfSightAtHeight(vector, current, 0.75f)) ? (-1337017307) : (-1337017309));
break;
case 2:
num = (HasLineOfSightAtHeight(vector, current, 1.5f) ? (-1337017311) : (-1337017307));
break;
case 3:
num = (_206D_202B_202E_200E_202C_206A_200E_200B_206E_202E_206F_206A_200C_206D_200B_206E_200F_202D_202C_206D_200D_206F_202A_200C_206D_200B_202E_200D_206A_206B_202D_202A_202A_206F_202D_200C_202C_206A_200B_200D_202E((IEnumerator)enumerator) ? (-1337017312) : (-1337017308));
break;
case 0:
vector = current;
num = -1337017310;
break;
case 5:
goto end_IL_0015;
}
continue;
end_IL_0015:
break;
}
}
finally
{
int num = ((enumerator == null) ? (-1236481576) : (-1236481575));
while (true)
{
int num5 = num;
int num3 = -1236481576;
int num4 = num5;
int num6 = num4 + num3;
int num7 = num4 & num3;
switch (num6 - (num7 + num7))
{
case 2:
num = -1236481575;
break;
case 0:
goto end_IL_011d;
case 1:
_200F_200B_206B_200E_202D_202A_202C_200F_202B_206E_200D_200B_206D_206C_202C_206F_202D_200C_206F_202D_202A_202D_206F_202E_206B_206F_200B_202D_200B_200D_200E_202A_200F_200E_200E_200E_200F_206F_206E_206E_202E((IDisposable)enumerator);
num = -1236481576;
break;
}
continue;
end_IL_011d:
break;
return false;
}
vector = waypoint;
}
return true;
}
@ -429,175 +180,37 @@ internal sealed class DeliveryNpcApproachExecutor(NavmeshIpc navmeshIpc, Movemen
private unsafe static bool HasLineOfSightAtHeight(Vector3 from, Vector3 to, float height)
{
Framework* ptr = Framework.Instance();
int num = ((ptr == null) ? (-2105382518) : (-2105382517));
Vector3 vector = default(Vector3);
float num7 = default(float);
RaycastHit raycastHit = default(RaycastHit);
while (true)
if (ptr == null || ptr->BGCollisionModule == null)
{
int num2 = num;
int num3 = -2105382513;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 5:
return true;
case 1:
return true;
case 3:
{
Vector3 vector2 = vector / num7;
int* flags = stackalloc int[4] { 16384, 0, 16384, 0 };
return !ptr->BGCollisionModule->RaycastMaterialFilter(&raycastHit, &from, &vector2, num7, 1, flags);
}
case 0:
num = -2105382517;
break;
case 4:
num = ((ptr->BGCollisionModule != null) ? (-2105382515) : (-2105382518));
break;
case 2:
from.Y += height;
to.Y += height;
vector = to - from;
num7 = vector.Length();
num = ((!(num7 < 0.1f)) ? (-2105382516) : (-2105382514));
break;
}
return true;
}
from.Y += height;
to.Y += height;
Vector3 vector = to - from;
float num = vector.Length();
if (num < 0.1f)
{
return true;
}
Vector3 vector2 = vector / num;
int* flags = stackalloc int[4] { 16384, 0, 16384, 0 };
RaycastHit raycastHit = default(RaycastHit);
return !ptr->BGCollisionModule->RaycastMaterialFilter(&raycastHit, &from, &vector2, num, 1, flags);
}
public void StopNow()
{
CancellationTokenSource? cancellationTokenSource = _cancellationTokenSource;
if (cancellationTokenSource != null)
{
_200B_206A_202A_202E_200F_206E_206D_200F_206D_206C_206E_202E_200F_206A_202A_206A_206E_200F_202A_206F_206A_206F_202A_206D_200E_200B_202A_200E_206C_202E_202B_206F_206D_206C_206C_200E_206F_200C_202D_202D_202E(cancellationTokenSource);
}
_cancellationTokenSource?.Cancel();
movementController.Stop();
}
void IStoppableTaskExecutor.StopNow()
{
//ILSpy generated this explicit interface implementation from .override directive in StopNow
this.StopNow();
}
public void Dispose()
{
((DeliveryNpcApproachExecutor)(object)_cancellationTokenSource)?._206B_200B_202D_206F_206A_206E_202D_202A_206A_206E_206B_206B_200B_202B_202E_206C_202E_200B_200C_200C_200F_206A_200F_206C_206B_200C_206C_206C_200B_202D_206C_202C_206E_202A_200C_200F_206A_206F_206B_206F_202E();
}
void IDisposable.Dispose()
{
//ILSpy generated this explicit interface implementation from .override directive in Dispose
this.Dispose();
_cancellationTokenSource?.Dispose();
}
public override bool ShouldInterruptOnDamage()
{
return false;
}
static CancellationTokenSource _202C_206C_202B_200E_200E_206D_202D_202C_200E_206F_206A_202B_202B_202A_206B_206A_206E_206B_200E_200F_206A_206B_200B_200D_206A_206D_200E_206C_200D_202D_202E_202B_202B_202A_200F_200F_200D_200F_202A_202A_202E(TimeSpan P_0)
{
return new CancellationTokenSource(P_0);
}
static IPlayerCharacter _206D_202C_200D_202A_206B_202B_206F_202C_206A_200B_206F_200F_200E_202A_200F_202B_202A_206E_200E_206D_202A_200B_206C_202D_206E_206F_206E_206C_206F_202C_206F_202B_202A_200B_200E_202D_206A_206D_202E_206C_202E(IObjectTable P_0)
{
return P_0.LocalPlayer;
}
static Vector3 _200E_200C_200C_200B_202B_202D_206F_200F_202A_206A_206E_206F_206F_206E_202A_206B_206C_202B_206B_202B_206C_202E_206A_206A_206C_202B_206E_202A_206D_206A_202E_200B_200F_202E_200F_206C_200E_202D_200C_202A_202E(IGameObject P_0)
{
return P_0.Position;
}
static float _200B_200D_202E_206D_206E_200F_200E_200B_206D_202D_202C_200E_200E_200B_206D_200E_200C_202B_206E_202E_202B_202A_202A_206D_206A_206B_206C_200B_206F_206A_202B_202B_202C_206B_200E_202A_206D_206A_200C_202B_202E(IGameObject P_0)
{
return P_0.HitboxRadius;
}
static uint _200C_202B_200C_206A_206D_206A_202E_202B_206A_200F_200F_200F_202A_206F_206D_202B_200B_202C_200F_200D_206B_206D_200B_202E_202A_202A_202C_200C_206F_202E_200C_200F_202B_200D_200D_202C_202E_202E_200D_206A_202E(IClientState P_0)
{
return P_0.TerritoryType;
}
static float _200E_200F_200D_206C_206A_202C_206B_206F_202B_202C_200E_200D_206A_200E_206D_200B_200B_202A_206E_202A_202D_202E_206B_200C_200B_206A_200B_200C_206E_200B_200D_206D_200C_202B_206F_200F_200B_202B_200C_200E_202E(float P_0, float P_1)
{
return MathF.Atan2(P_0, P_1);
}
static float _202B_200F_200E_206C_200E_206B_202C_202D_200B_200C_202A_206C_200F_200B_200D_200C_200B_206E_206D_202C_202D_200E_200D_202C_202A_206F_200B_200C_202B_206E_200B_202B_200F_206B_206A_200B_206E_202A_206D_206F_202E(float P_0, float P_1)
{
return MathF.Max(P_0, P_1);
}
static float _202B_202D_206B_200B_200B_200B_202A_206A_202B_206F_202B_206F_206F_206D_206B_200C_206D_202A_206B_202D_200C_206B_206C_206F_206D_206B_202E_202A_202D_206A_206E_206F_200D_202C_200F_202A_206F_200D_206A_202E_202E(float P_0)
{
return MathF.Sin(P_0);
}
static float _200B_202E_202E_206A_202B_202B_202A_200E_206A_202E_202D_200B_200C_202D_202D_202E_202C_200C_206C_200E_200F_206D_200D_200B_200C_202A_200B_206E_206E_202C_202D_202A_200B_202C_206C_206C_202C_202E_206D_202E_202E(float P_0)
{
return MathF.Cos(P_0);
}
static void _202A_200F_206B_200E_200D_206D_206F_206F_200D_206A_206A_202C_206C_206A_202C_206F_206A_202D_200B_206E_206D_202D_202C_206E_202E_200E_200B_206E_202B_206D_202E_200B_200D_206B_206E_206D_206E_200B_206B_202D_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static bool _200F_200F_202B_206F_206E_202E_206A_206B_202B_200D_200F_200F_202A_206E_206A_200F_200E_200D_206B_202E_206E_206D_206B_202E_206C_200C_200E_202B_202E_200B_200F_202D_200B_200E_200E_206B_202B_200C_206E_206D_202E(System.Threading.Tasks.Task P_0)
{
return P_0.IsCompleted;
}
static bool _202C_202E_202A_200B_206B_200F_200F_206E_202A_206B_202A_206A_202C_202A_200C_206A_202A_200C_200D_200C_202A_206E_206A_200D_206C_206E_206C_202C_202C_206E_206C_200D_202A_206D_202C_206A_202D_202C_202C_200E_202E(System.Threading.Tasks.Task P_0)
{
return P_0.IsCanceled;
}
static bool _202E_202B_206F_200E_200D_206D_206B_206F_206B_200B_206F_206F_200D_200D_200C_200F_200C_206F_200D_200B_200C_202D_206D_202D_206A_200D_206D_206B_206E_202E_206C_202C_206B_202E_200E_200F_202E_200D_206F_206B_202E(System.Threading.Tasks.Task P_0)
{
return P_0.IsFaulted;
}
static AggregateException _206B_206A_200F_206E_202E_206D_200C_202A_200E_202A_202A_206F_206C_200B_202C_202E_206A_202C_202B_200D_200C_206D_200E_202C_206E_202B_206B_202C_202E_200C_200D_206E_206A_200D_200E_206B_200E_202A_206D_200D_202E(System.Threading.Tasks.Task P_0)
{
return P_0.Exception;
}
static void _200E_206D_206E_206A_200C_202B_206B_202D_206B_200C_200D_202C_206A_206B_200F_206C_200D_200F_206B_202B_206E_202E_206B_202A_200C_206F_206A_206D_200E_200F_202D_202E_206E_206B_202D_200B_202C_202D_202B_200E_202E(ILogger P_0, Exception P_1, string P_2, object[] P_3)
{
P_0.LogDebug(P_1, P_2, P_3);
}
static CancellationToken _202E_206E_200F_206F_200D_200C_206D_202A_200C_200D_202C_200F_202D_206F_206D_206F_206E_200D_206E_202C_200C_206E_200C_206F_206B_206B_200D_200C_200F_200D_202E_206E_202A_206F_202D_202C_206D_200C_206F_200D_202E(CancellationTokenSource P_0)
{
return P_0.Token;
}
static bool _206D_202B_202E_200E_202C_206A_200E_200B_206E_202E_206F_206A_200C_206D_200B_206E_200F_202D_202C_206D_200D_206F_202A_200C_206D_200B_202E_200D_206A_206B_202D_202A_202A_206F_202D_200C_202C_206A_200B_200D_202E(IEnumerator P_0)
{
return P_0.MoveNext();
}
static void _200F_200B_206B_200E_202D_202A_202C_200F_202B_206E_200D_200B_206D_206C_202C_206F_202D_200C_206F_202D_202A_202D_206F_202E_206B_206F_200B_202D_200B_200D_200E_202A_200F_200E_200E_200E_200F_206F_206E_206E_202E(IDisposable P_0)
{
P_0.Dispose();
}
static void _200B_206A_202A_202E_200F_206E_206D_200F_206D_206C_206E_202E_200F_206A_202A_206A_206E_200F_202A_206F_206A_206F_202A_206D_200E_200B_202A_200E_206C_202E_202B_206F_206D_206C_206C_200E_206F_200C_202D_202D_202E(CancellationTokenSource P_0)
{
P_0.Cancel();
}
void _206B_200B_202D_206F_206A_206E_202D_202A_206A_206E_206B_206B_200B_202B_202E_206C_202E_200B_200C_200C_200F_206A_200F_206C_206B_200C_206C_206C_200B_202D_206C_202C_206E_202A_200C_200F_206A_206F_206B_206F_202E()
{
((CancellationTokenSource)(object)this).Dispose();
}
}

View file

@ -1,109 +1,12 @@
using System;
using System.Collections.Generic;
using System.Numerics;
using System.Runtime.CompilerServices;
using System.Text;
using Questionable.Controller.Steps;
namespace Questionable.Controller.CustomDelivery;
internal sealed record DeliveryNpcApproachTask(ushort TerritoryId, Vector3 NpcPosition, uint NpcDataId) : ITask
{
[CompilerGenerated]
private Type EqualityContract
{
[CompilerGenerated]
get
{
return _202B_206C_200F_206B_200B_202D_200D_200F_200C_206C_202A_206C_200E_206B_206A_200F_202A_200F_202E_206D_206D_202A_200C_206C_200D_200C_200D_202A_202C_202D_206F_206C_202B_206F_200C_202E_202C_202E_202C_206E_202E(typeof(DeliveryNpcApproachTask).TypeHandle);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
public override string ToString()
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(21, 1);
defaultInterpolatedStringHandler.AppendLiteral(global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(853725271));
defaultInterpolatedStringHandler.AppendFormatted(NpcDataId);
defaultInterpolatedStringHandler.AppendLiteral(global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(424561659));
return defaultInterpolatedStringHandler.ToStringAndClear();
}
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
private bool PrintMembers(StringBuilder builder)
{
_202A_202A_202C_202E_206B_206A_200C_200E_206E_206A_200D_206C_200E_202D_206E_206E_200F_200E_202C_200E_202D_206F_200D_200D_200D_206E_200D_202D_206F_206E_206A_202A_206E_206C_206E_202C_202B_200C_202E_200C_202E();
_202C_206E_200C_200D_202B_206D_206E_206A_200B_206C_202E_206F_202E_200C_206F_200C_206D_202C_206D_206E_206E_206B_202A_202E_206E_202D_200C_202E_202C_206F_200E_202A_206C_202A_206D_206B_202A_206A_200F_200C_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<string>(2145374973));
_202C_206E_200C_200D_202B_206D_206E_206A_200B_206C_202E_206F_202E_200C_206F_200C_206D_202C_206D_206E_206E_206B_202A_202E_206E_202D_200C_202E_202C_206F_200E_202A_206C_202A_206D_206B_202A_206A_200F_200C_202E(builder, TerritoryId.ToString());
_202C_206E_200C_200D_202B_206D_206E_206A_200B_206C_202E_206F_202E_200C_206F_200C_206D_202C_206D_206E_206E_206B_202A_202E_206E_202D_200C_202E_202C_206F_200E_202A_206C_202A_206D_206B_202A_206A_200F_200C_202E(builder, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(-1319777869));
_202C_206E_200C_200D_202B_206D_206E_206A_200B_206C_202E_206F_202E_200C_206F_200C_206D_202C_206D_206E_206E_206B_202A_202E_206E_202D_200C_202E_202C_206F_200E_202A_206C_202A_206D_206B_202A_206A_200F_200C_202E(builder, NpcPosition.ToString());
_202C_206E_200C_200D_202B_206D_206E_206A_200B_206C_202E_206F_202E_200C_206F_200C_206D_202C_206D_206E_206E_206B_202A_202E_206E_202D_200C_202E_202C_206F_200E_202A_206C_202A_206D_206B_202A_206A_200F_200C_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<string>(-323573035));
_202C_206E_200C_200D_202B_206D_206E_206A_200B_206C_202E_206F_202E_200C_206F_200C_206D_202C_206D_206E_206E_206B_202A_202E_206E_202D_200C_202E_202C_206F_200E_202A_206C_202A_206D_206B_202A_206A_200F_200C_202E(builder, NpcDataId.ToString());
return true;
}
[CompilerGenerated]
public bool Equals(DeliveryNpcApproachTask? other)
{
int num = (((object)this == other) ? (-2005585280) : (-2005585273));
while (true)
{
int num2 = num;
int num3 = -2005585274;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 2:
num = -2005585273;
break;
case 7:
num = ((!_200C_202D_202D_202D_200F_200C_200E_202E_200C_200E_206E_200E_200B_202E_206A_206A_202D_202D_200C_202E_200C_202D_206F_200E_202E_206D_200E_206A_202B_200F_200C_202A_206E_202B_206A_206A_200E_206A_200E_202B_202E(EqualityContract, other.EqualityContract)) ? (-2005585274) : (-2005585275));
break;
case 1:
num = (((object)other == null) ? (-2005585274) : (-2005585279));
break;
case 6:
return true;
case 5:
return EqualityComparer<uint>.Default.Equals(NpcDataId, other.NpcDataId);
case 0:
return false;
case 3:
num = ((!EqualityComparer<ushort>.Default.Equals(TerritoryId, other.TerritoryId)) ? (-2005585274) : (-2005585278));
break;
case 4:
num = ((!EqualityComparer<Vector3>.Default.Equals(NpcPosition, other.NpcPosition)) ? (-2005585274) : (-2005585277));
break;
}
}
}
bool IEquatable<DeliveryNpcApproachTask>.Equals(DeliveryNpcApproachTask? other)
{
//ILSpy generated this explicit interface implementation from .override directive in Equals
return this.Equals(other);
}
static Type _202B_206C_200F_206B_200B_202D_200D_200F_200C_206C_202A_206C_200E_206B_206A_200F_202A_200F_202E_206D_206D_202A_200C_206C_200D_200C_200D_202A_202C_202D_206F_206C_202B_206F_200C_202E_202C_202E_202C_206E_202E(RuntimeTypeHandle P_0)
{
return Type.GetTypeFromHandle(P_0);
}
static void _202A_202A_202C_202E_206B_206A_200C_200E_206E_206A_200D_206C_200E_202D_206E_206E_200F_200E_202C_200E_202D_206F_200D_200D_200D_206E_200D_202D_206F_206E_206A_202A_206E_206C_206E_202C_202B_200C_202E_200C_202E()
{
RuntimeHelpers.EnsureSufficientExecutionStack();
}
static StringBuilder _202C_206E_200C_200D_202B_206D_206E_206A_200B_206C_202E_206F_202E_200C_206F_200C_206D_202C_206D_206E_206E_206B_202A_202E_206E_202D_200C_202E_202C_206F_200E_202A_206C_202A_206D_206B_202A_206A_200F_200C_202E(StringBuilder P_0, string P_1)
{
return P_0.Append(P_1);
}
static bool _200C_202D_202D_202D_200F_200C_200E_202E_200C_200E_206E_200E_200B_202E_206A_206A_202D_202D_200C_202E_200C_202D_206F_200E_202E_206D_200E_206A_202B_200F_200C_202A_206E_202B_206A_206A_200E_206A_200E_202B_202E(Type P_0, Type P_1)
{
return P_0 == P_1;
return $"ApproachDeliveryNpc({NpcDataId})";
}
}

View file

@ -1,7 +1,5 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game;
using LLib.GameData;
@ -38,622 +36,233 @@ internal sealed class DeliveryPlannerService
_logger = logger;
}
[MethodImpl(MethodImplOptions.NoInlining)]
public unsafe DeliveryPlan? CreatePlan(int npcIndex, EDeliverySlot slot)
{
int num = (_200D_206E_202C_202A_202A_202E_202E_206C_200D_200C_200E_200C_206B_206C_200D_200B_206B_206D_206C_202E_202A_206C_206E_200D_200B_206C_200D_200F_206B_202A_202C_202D_206A_206B_206F_200B_200F_202E_200F_200D_202E() ? (-1888935827) : (-1888935840));
uint rowId = default(uint);
SatisfactionSupply subrow = default(SatisfactionSupply);
Configuration.CustomDeliveryConfiguration.ECollectabilityTier collectabilityTier = default(Configuration.CustomDeliveryConfiguration.ECollectabilityTier);
int num20 = default(int);
int num21 = default(int);
int num30 = default(int);
SatisfactionSupplyActions.NpcState npcState = default(SatisfactionSupplyActions.NpcState);
uint supplyIndex = default(uint);
SatisfactionNpc row = default(SatisfactionNpc);
uint num28 = default(uint);
uint num29 = default(uint);
Configuration.AchievementGoal value = default(Configuration.AchievementGoal);
int num27 = default(int);
int num9 = default(int);
int num19 = default(int);
VendorResolverService.RecipeInfo? recipe = default(VendorResolverService.RecipeInfo?);
List<IngredientPlan> list = default(List<IngredientPlan>);
ushort num7 = default(ushort);
ushort num18 = default(ushort);
ushort levelUnlock = default(ushort);
int satisfactionRequired = default(int);
int num26 = default(int);
VendorResolverService.IngredientInfo current = default(VendorResolverService.IngredientInfo);
int num15 = default(int);
int count = default(int);
int num14 = default(int);
VendorResolverService.VendorInfo? vendor = default(VendorResolverService.VendorInfo?);
while (true)
if (!InventoryHelper.HasFreeInventorySlot())
{
int num2 = num;
int num3 = -1888935819;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
_logger.LogWarning("No free inventory slots, cannot plan custom delivery");
return null;
}
if (!IsNpcUnlocked(npcIndex))
{
_logger.LogDebug("NPC {NpcIndex} prerequisite quest not complete", npcIndex);
return null;
}
SatisfactionSupplyActions.NpcState npcState = SatisfactionSupplyActions.GetNpcState(npcIndex);
int remainingAllowances = SatisfactionSupplyActions.GetRemainingAllowances();
uint supplySeed = SatisfactionSupplyActions.GetSupplySeed();
if (npcState.Rank <= 0)
{
_logger.LogDebug("NPC {NpcIndex} is locked (rank {Rank})", npcIndex, npcState.Rank);
return null;
}
if (remainingAllowances <= 0)
{
_logger.LogDebug("No remaining weekly allowances");
return null;
}
if (!_dataManager.GetExcelSheet<SatisfactionNpc>().TryGetRow((uint)(npcIndex + 1), out var row))
{
_logger.LogWarning("SatisfactionNpc row not found for index {NpcIndex}", npcIndex);
return null;
}
ushort levelUnlock = row.LevelUnlock;
if (!HasJobAtLevel(slot, levelUnlock))
{
_logger.LogDebug("No job at level {Level} for slot {Slot}, NPC {NpcIndex}", levelUnlock, slot, npcIndex);
return null;
}
uint supplyIndex = (uint)row.SatisfactionNpcParams[npcState.Rank].SupplyIndex;
uint num = _supplyHelper.CalculateRequestedItems(supplyIndex, supplySeed)[(int)slot];
if (num == uint.MaxValue)
{
_logger.LogDebug("No item predicted for NPC {NpcIndex} slot {Slot}", npcIndex, slot);
return null;
}
if (!_dataManager.GetSubrowExcelSheet<SatisfactionSupply>().TryGetSubrow(supplyIndex, (ushort)num, out var subrow))
{
_logger.LogWarning("SatisfactionSupply subrow ({SupplyIndex}, {SubrowIndex}) not found", supplyIndex, num);
return null;
}
uint rowId = subrow.Item.RowId;
ushort num2 = _configuration.CustomDeliveries.CollectabilityTier switch
{
Configuration.CustomDeliveryConfiguration.ECollectabilityTier.Low => subrow.CollectabilityLow,
Configuration.CustomDeliveryConfiguration.ECollectabilityTier.Mid => subrow.CollectabilityMid,
_ => subrow.CollectabilityHigh,
};
if (rowId == 0)
{
_logger.LogWarning("SatisfactionSupply subrow ({SupplyIndex}, {SubrowIndex}) has no item", supplyIndex, num);
return null;
}
int num3 = row.DeliveriesPerWeek - npcState.UsedDeliveries;
int num4 = Math.Min(num3, remainingAllowances);
if (num4 <= 0)
{
_logger.LogDebug("No deliveries available for NPC {NpcIndex} (npc remaining: {NpcRemaining}, global remaining: {GlobalRemaining})", npcIndex, num3, remainingAllowances);
return null;
}
int satisfactionRequired = row.SatisfactionNpcParams[npcState.Rank].SatisfactionRequired;
if (satisfactionRequired > 0)
{
Configuration.CustomDeliveryConfiguration.ECollectabilityTier collectabilityTier = _configuration.CustomDeliveries.CollectabilityTier;
int num5 = _rewardCalculator.CalculateSatisfactionPerDelivery(subrow.Reward.RowId, subrow.IsBonus, collectabilityTier);
if (num5 > 0)
{
default:
continue;
case 14:
rowId = subrow.Item.RowId;
collectabilityTier = _configuration.CustomDeliveries.CollectabilityTier;
num = ((collectabilityTier == Configuration.CustomDeliveryConfiguration.ECollectabilityTier.Mid) ? (-1888935855) : (-1888935835));
continue;
case 23:
_206A_200F_202C_202B_200B_202B_202C_202B_200F_206E_206F_206A_200C_200F_200E_200C_202A_200B_200F_206C_200E_206D_200E_206F_206E_202B_206D_200D_202E_202A_200B_202B_200C_206E_200C_202A_202E_200D_202C_202A_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(-1441943308), new object[3] { npcIndex, num20, num21 });
return null;
case 1:
_206A_200F_202C_202B_200B_202B_202C_202B_200F_206E_206F_206A_200C_200F_200E_200C_202A_200B_200F_206C_200E_206D_200E_206F_206E_202B_206D_200D_202E_202A_200B_202B_200C_206E_200C_202A_202E_200D_202C_202A_202E((ILogger)_logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(-325747451), new object[1] { npcIndex });
return null;
case 30:
{
uint rowId2 = subrow.Reward.RowId;
bool isBonus = subrow.IsBonus;
num30 = _rewardCalculator.MaxDeliveriesBeforeOvercap(rowId2, isBonus, _configuration.CustomDeliveries.CollectabilityTier);
num = ((num30 > 0) ? (-1888935826) : (-1888935820));
continue;
}
case 39:
_206A_200F_202C_202B_200B_202B_202C_202B_200F_206E_206F_206A_200C_200F_200E_200C_202A_200B_200F_206C_200E_206D_200E_206F_206E_202B_206D_200D_202E_202A_200B_202B_200C_206E_200C_202A_202E_200D_202C_202A_202E((ILogger)_logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(72727050), new object[1] { npcIndex });
return null;
case 31:
_206A_200F_202C_202B_200B_202B_202C_202B_200F_206E_206F_206A_200C_200F_200E_200C_202A_200B_200F_206C_200E_206D_200E_206F_206E_202B_206D_200D_202E_202A_200B_202B_200C_206E_200C_202A_202E_200D_202C_202A_202E((ILogger)_logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(350000111), new object[2] { npcIndex, npcState.Rank });
return null;
case 40:
supplyIndex = (uint)row.SatisfactionNpcParams[npcState.Rank].SupplyIndex;
num28 = _202C_206E_206A_202A_206E_206D_206D_206C_200E_200C_206B_200C_202B_202E_200C_200B_206A_200D_202A_202D_202D_206D_206E_206A_206D_206F_200C_206C_206B_206B_202B_202E_206D_206A_206E_202A_202C_206F_200B_200E_202E(_supplyHelper, supplyIndex, num29)[(int)slot];
num = ((num28 != uint.MaxValue) ? (-1888935833) : (-1888935823));
continue;
case 6:
_206A_200F_202C_202B_200B_202B_202C_202B_200F_206E_206F_206A_200C_200F_200E_200C_202A_200B_200F_206C_200E_206D_200E_206F_206E_202B_206D_200D_202E_202A_200B_202B_200C_206E_200C_202A_202E_200D_202C_202A_202E((ILogger)_logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(1592384275), new object[3] { npcIndex, npcState.UsedDeliveries, value.TargetCount });
return null;
case 18:
num = (_dataManager.GetSubrowExcelSheet<SatisfactionSupply>().TryGetSubrow(supplyIndex, (ushort)num28, out subrow) ? (-1888935813) : (-1888935852));
continue;
case 29:
num = ((num27 >= num9) ? (-1888935844) : (-1888935810));
continue;
case 13:
{
ExcelSheet<SatisfactionNpc> excelSheet = _dataManager.GetExcelSheet<SatisfactionNpc>();
num3 = 1;
num4 = npcIndex;
int num22 = num4 ^ num3;
int num23 = num4 & num3;
num = (excelSheet.TryGetRow((uint)(num22 + (num23 + num23)), out row) ? (-1888935842) : (-1888935849));
continue;
}
case 35:
num = ((_configuration.CustomDeliveries.ScripOvercapMode == Configuration.CustomDeliveryConfiguration.EScripOvercapMode.Ignore) ? (-1888935856) : (-1888935829));
continue;
case 2:
num19 = (int)value.TargetCount - npcState.UsedDeliveries;
num = ((num19 <= 0) ? (-1888935821) : (-1888935836));
continue;
case 16:
num = ((collectabilityTier != Configuration.CustomDeliveryConfiguration.ECollectabilityTier.Low) ? (-1888935824) : (-1888935818));
continue;
case 37:
recipe = null;
list = new List<IngredientPlan>();
if (slot == EDeliverySlot.Craft)
int num6 = (satisfactionRequired - npcState.SatisfactionCurrent + num5 - 1) / num5;
if (num6 > 0 && num6 < num4)
{
num = -1888935831;
continue;
_logger.LogDebug("Capping deliveries from {Original} to {Capped} to avoid rank-up mid-batch (sat: {Current}/{Required}, per delivery: {PerDelivery})", num4, num6, npcState.SatisfactionCurrent, satisfactionRequired, num5);
num4 = num6;
}
break;
case 15:
_206A_200F_202C_202B_200B_202B_202C_202B_200F_206E_206F_206A_200C_200F_200E_200C_202A_200B_200F_206C_200E_206D_200E_206F_206E_202B_206D_200D_202E_202A_200B_202B_200C_206E_200C_202A_202E_200D_202C_202A_202E((ILogger)_logger, 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<string>(-349074918), Array.Empty<object>());
return null;
case 33:
_206C_206F_206E_206A_206F_200F_202B_206D_206E_200D_202E_202D_206D_200B_200F_202B_202D_200F_200D_206C_202A_200C_200E_200E_206C_200D_206B_200F_206D_200E_202A_206C_200D_200B_202B_200B_202A_202C_202C_200F_202E((ILogger)_logger, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-583199100), new object[2] { supplyIndex, num28 });
return null;
case 32:
num7 = num18;
num = ((rowId != 0) ? (-1888935837) : (-1888935811));
continue;
case 36:
num18 = subrow.CollectabilityMid;
num = -1888935851;
continue;
case 19:
_206A_200F_202C_202B_200B_202B_202C_202B_200F_206E_206F_206A_200C_200F_200E_200C_202A_200B_200F_206C_200E_206D_200E_206F_206E_202B_206D_200D_202E_202A_200B_202B_200C_206E_200C_202A_202E_200D_202C_202A_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(758096436), new object[3] { levelUnlock, slot, npcIndex });
return null;
case 22:
num20 = row.DeliveriesPerWeek - npcState.UsedDeliveries;
num9 = _202E_200E_200B_202D_200C_200D_206B_202B_206F_202D_206F_200D_200E_200C_206B_202C_206A_202A_200F_206A_202A_200B_200B_202E_206F_202A_200C_200D_200D_200D_200D_206B_202E_202A_200B_206A_200C_206D_206D_200F_202E(num20, num21);
num = ((num9 > 0) ? (-1888935822) : (-1888935838));
continue;
case 17:
num9 = _202E_200E_200B_202D_200C_200D_206B_202B_206F_202D_206F_200D_200E_200C_206B_202C_206A_202A_200F_206A_202A_200B_200B_202E_206F_202A_200C_200D_200D_200D_200D_206B_202E_202A_200B_206A_200C_206D_206D_200F_202E(num9, num19);
num = -1888935850;
continue;
case 27:
num = ((num30 >= num9) ? (-1888935856) : (-1888935812));
continue;
case 9:
_206A_200F_202C_202B_200B_202B_202C_202B_200F_206E_206F_206A_200C_200F_200E_200C_202A_200B_200F_206C_200E_206D_200E_206F_206E_202B_206D_200D_202E_202A_200B_202B_200C_206E_200C_202A_202E_200D_202C_202A_202E((ILogger)_logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(-252217524), new object[3] { num9, num30, npcIndex });
num9 = num30;
num = -1888935856;
continue;
case 43:
levelUnlock = row.LevelUnlock;
num = (HasJobAtLevel(slot, levelUnlock) ? (-1888935843) : (-1888935834));
continue;
case 8:
_206C_206F_206E_206A_206F_200F_202B_206D_206E_200D_202E_202D_206D_200B_200F_202B_202D_200F_200D_206C_202A_200C_200E_200E_206C_200D_206B_200F_206D_200E_202A_206C_200D_200B_202B_200B_202A_202C_202C_200F_202E((ILogger)_logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(-1074922241), new object[2] { supplyIndex, num28 });
return null;
case 12:
npcState = _200F_206F_206A_200F_202C_206F_206E_200E_202B_200C_200B_200D_200B_202C_206D_202B_206E_200B_202C_202D_202D_200D_206D_202E_200B_206E_202A_202D_202A_206E_202D_200B_202E_202E_202A_200B_202B_202D_202E_206C_202E(npcIndex);
num21 = _206F_206A_202D_202B_200F_206F_202E_206D_206F_200D_202D_206C_206C_206D_202C_206C_202B_202E_206D_202B_200D_202B_200D_200E_202E_206D_206B_206D_200E_202A_202A_206A_200C_202A_206F_202B_206C_206D_200E_200D_202E();
num29 = _200C_206C_200F_202B_206A_206F_200B_206C_202A_206F_206F_206C_206B_202B_200F_202A_206D_206A_200D_206E_202A_206A_206D_206C_206D_202C_206F_200D_202E_200D_200E_202D_200E_206F_202C_206E_202C_202E_202A_206F_202E();
num = ((npcState.Rank > 0) ? (-1888935853) : (-1888935830));
continue;
case 10:
num = -1888935840;
continue;
case 38:
num = ((num21 > 0) ? (-1888935816) : (-1888935814));
continue;
case 11:
_206A_200F_202C_202B_200B_202B_202C_202B_200F_206E_206F_206A_200C_200F_200E_200C_202A_200B_200F_206C_200E_206D_200E_206F_206E_202B_206D_200D_202E_202A_200B_202B_200C_206E_200C_202A_202E_200D_202C_202A_202E((ILogger)_logger, 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<string>(1847422502), new object[5] { num9, num27, npcState.SatisfactionCurrent, satisfactionRequired, num26 });
num9 = num27;
num = -1888935844;
continue;
case 0:
num27 = (satisfactionRequired - npcState.SatisfactionCurrent + num26 - 1) / num26;
num = ((num27 <= 0) ? (-1888935844) : (-1888935832));
continue;
case 34:
_206C_206F_206E_206A_206F_200F_202B_206D_206E_200D_202E_202D_206D_200B_200F_202B_202D_200F_200D_206C_202A_200C_200E_200E_206C_200D_206B_200F_206D_200E_202A_206C_200D_200B_202B_200B_202A_202C_202C_200F_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(-1005271434), new object[1] { npcIndex });
return null;
case 28:
recipe = _vendorResolver.ResolveRecipe(rowId);
num = (recipe.HasValue ? (-1888935828) : (-1888935825));
continue;
case 24:
num = (IsNpcUnlocked(npcIndex) ? (-1888935815) : (-1888935854));
continue;
case 42:
{
Configuration.CustomDeliveryConfiguration.ECollectabilityTier collectabilityTier2 = _configuration.CustomDeliveries.CollectabilityTier;
num26 = _rewardCalculator.CalculateSatisfactionPerDelivery(subrow.Reward.RowId, subrow.IsBonus, collectabilityTier2);
num = ((num26 <= 0) ? (-1888935844) : (-1888935819));
continue;
}
case 21:
_206C_206F_206E_206A_206F_200F_202B_206D_206E_200D_202E_202D_206D_200B_200F_202B_202D_200F_200D_206C_202A_200C_200E_200E_206C_200D_206B_200F_206D_200E_202A_206C_200D_200B_202B_200B_202A_202C_202C_200F_202E((ILogger)_logger, 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<string>(929546920), Array.Empty<object>());
return null;
case 41:
}
ushort key = (ushort)(npcIndex + 1);
if (_configuration.CustomDeliveries.AchievementGoals.TryGetValue(key, out Configuration.AchievementGoal value) && value.Active)
{
int num7 = (int)value.TargetCount - npcState.UsedDeliveries;
if (num7 <= 0)
{
num3 = 1;
num4 = npcIndex;
int num24 = num4 ^ num3;
int num25 = num4 & num3;
ushort key = (ushort)(num24 + (num25 + num25));
num = ((!_configuration.CustomDeliveries.AchievementGoals.TryGetValue(key, out value)) ? (-1888935850) : (-1888935839));
continue;
_logger.LogDebug("Achievement goal already met for NPC {NpcIndex} (used: {Used}, target: {Target})", npcIndex, npcState.UsedDeliveries, value.TargetCount);
return null;
}
case 7:
satisfactionRequired = row.SatisfactionNpcParams[npcState.Rank].SatisfactionRequired;
num = ((satisfactionRequired <= 0) ? (-1888935844) : (-1888935841));
continue;
case 26:
_202E_202D_202C_206E_202C_206A_206E_202D_202E_202D_206C_200B_200E_202E_206C_200B_206A_202E_206B_206D_206B_200E_200B_200E_206B_206D_202A_206F_200C_202D_206E_206D_206C_206A_206B_200F_202E_200E_202B_200E_202E((ILogger)_logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(-375018658), new object[1] { rowId });
return null;
case 20:
num = ((!value.Active) ? (-1888935850) : (-1888935817));
continue;
case 3:
num18 = subrow.CollectabilityLow;
num = -1888935851;
continue;
case 5:
num18 = subrow.CollectabilityHigh;
num = -1888935851;
continue;
case 4:
_206A_200F_202C_202B_200B_202B_202C_202B_200F_206E_206F_206A_200C_200F_200E_200C_202A_200B_200F_206C_200E_206D_200E_206F_206E_202B_206D_200D_202E_202A_200B_202B_200C_206E_200C_202A_202E_200D_202C_202A_202E((ILogger)_logger, 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<string>(1585031772), new object[2] { npcIndex, slot });
return null;
case 25:
num4 = Math.Min(num4, num7);
}
if (_configuration.CustomDeliveries.ScripOvercapMode != Configuration.CustomDeliveryConfiguration.EScripOvercapMode.Ignore)
{
uint rowId2 = subrow.Reward.RowId;
bool isBonus = subrow.IsBonus;
int num8 = _rewardCalculator.MaxDeliveriesBeforeOvercap(rowId2, isBonus, _configuration.CustomDeliveries.CollectabilityTier);
if (num8 <= 0)
{
int inventoryItemCount = InventoryManager.Instance()->GetInventoryItemCount(rowId, isHq: false, checkEquipped: true, checkArmory: true, (short)num7);
int num8 = num9;
num3 = inventoryItemCount;
_logger.LogDebug("Scrip overcap: blocking delivery for NPC {NpcIndex}", npcIndex);
return null;
}
if (num8 < num4)
{
_logger.LogDebug("Scrip overcap: capping delivery count from {Original} to {Capped} for NPC {NpcIndex}", num4, num8, npcIndex);
num4 = num8;
int num10 = _200C_206C_200D_202C_202B_202C_206A_206E_200E_200E_202D_202A_202C_206D_206B_206D_206D_200B_202B_206A_206D_202D_206D_200C_206C_200D_200E_200D_200C_202C_206D_206F_206B_206D_202A_200C_202B_200B_200C_206A_202E(0, ~(~num4 + num3));
IEnumerator<VendorResolverService.IngredientInfo> enumerator = recipe.Value.Ingredients.GetEnumerator();
try
{
num = -2147286294;
while (true)
{
int num11 = num;
num3 = -2147286291;
num4 = num11;
int num12 = num4 + num3;
int num13 = num4 & num3;
switch (num12 - (num13 + num13))
{
case 2:
num = -2147286294;
break;
case 1:
{
current = enumerator.Current;
num15 = num10 * current.CountPerCraft;
count = ((ItemHandle)current.ItemId).GetCount();
int num16 = num15;
num3 = count;
num4 = num16;
num14 = _200C_206C_200D_202C_202B_202C_206A_206E_200E_200E_202D_202A_202C_206D_206B_206D_206D_200B_202B_206A_206D_202D_206D_200C_206C_200D_200E_200D_200C_202C_206D_206F_206B_206D_202A_200C_202B_200B_200C_206A_202E(0, ~(~num4 + num3));
vendor = null;
num = ((num14 <= 0) ? (-2147286293) : (-2147286291));
break;
}
case 3:
num = (vendor.HasValue ? (-2147286296) : (-2147286299));
break;
case 6:
num = ((num14 <= 0) ? (-2147286296) : (-2147286290));
break;
case 7:
num = (_202D_202B_206D_202B_202E_200E_200E_206F_202C_200E_200F_200E_200D_206B_202A_202C_206B_202E_202D_200F_200E_206C_200D_200D_202E_206C_202A_206A_200E_200D_202E_200E_206A_202E_206D_206D_206B_206B_202C_202B_202E((IEnumerator)enumerator) ? (-2147286292) : (-2147286295));
break;
case 5:
list.Add(new IngredientPlan
{
ItemId = current.ItemId,
TotalNeeded = num15,
InInventory = count,
ToBuy = num14,
Vendor = vendor
});
num = -2147286294;
break;
case 0:
vendor = _vendorResolver.ResolveVendor(current.ItemId);
num = -2147286293;
break;
case 8:
_206C_206F_206E_206A_206F_200F_202B_206D_206E_200D_202E_202D_206D_200B_200F_202B_202D_200F_200D_206C_202A_200C_200E_200E_206C_200D_206B_200F_206D_200E_202A_206C_200D_200B_202B_200B_202A_202C_202C_200F_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(1168604579), new object[3] { rowId, num14, current.ItemId });
return null;
case 4:
goto end_IL_097f;
}
continue;
end_IL_097f:
break;
}
}
finally
{
num = ((enumerator == null) ? 903605072 : 903605073);
while (true)
{
int num17 = num;
num3 = 903605072;
num4 = num17;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
num = 903605073;
break;
case 1:
_206B_202C_200B_202D_202C_206A_202A_202E_200B_202D_200E_202B_202A_200D_206A_206E_202D_202A_202A_206D_200E_206D_202A_206B_206C_206A_200F_200E_206B_202E_200D_200E_206D_200D_206C_202E_202E_202D_206D_200C_202E((IDisposable)enumerator);
num = 903605072;
break;
case 0:
goto end_IL_0b81;
}
continue;
end_IL_0b81:
break;
}
}
break;
}
}
VendorResolverService.RecipeInfo? recipe = null;
List<IngredientPlan> list = new List<IngredientPlan>();
if (slot == EDeliverySlot.Craft)
{
recipe = _vendorResolver.ResolveRecipe(rowId);
if (!recipe.HasValue)
{
_logger.LogError("Cannot resolve recipe for craft item {ItemId}", rowId);
return null;
}
int inventoryItemCount = InventoryManager.Instance()->GetInventoryItemCount(rowId, isHq: false, checkEquipped: true, checkArmory: true, (short)num2);
int num9 = Math.Max(0, num4 - inventoryItemCount);
foreach (VendorResolverService.IngredientInfo ingredient in recipe.Value.Ingredients)
{
int num10 = num9 * ingredient.CountPerCraft;
int count = ((ItemHandle)ingredient.ItemId).GetCount();
int num11 = Math.Max(0, num10 - count);
VendorResolverService.VendorInfo? vendor = null;
if (num11 > 0)
{
vendor = _vendorResolver.ResolveVendor(ingredient.ItemId);
}
if (num11 > 0 && !vendor.HasValue)
{
_logger.LogWarning("Cannot plan craft delivery for item {ItemId}: missing {ToBuy}x ingredient {IngredientId} with no gil vendor", rowId, num11, ingredient.ItemId);
return null;
}
list.Add(new IngredientPlan
{
ItemId = ingredient.ItemId,
TotalNeeded = num10,
InInventory = count,
ToBuy = num11,
Vendor = vendor
});
}
break;
}
DeliveryPlan result = new DeliveryPlan
{
NpcIndex = npcIndex,
Slot = slot,
ItemId = rowId,
Collectability = num7,
DeliveryCount = num9,
Collectability = num2,
DeliveryCount = num4,
Recipe = recipe,
IngredientPlans = list
};
int num31 = 0;
using (List<IngredientPlan>.Enumerator enumerator2 = list.GetEnumerator())
int num12 = 0;
foreach (IngredientPlan item in list)
{
num = -832133554;
while (true)
{
int num32 = num;
int num3 = -832133554;
int num4 = num32;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
num = (enumerator2.MoveNext() ? (-832133553) : (-832133555));
break;
case 1:
{
IngredientPlan current2 = enumerator2.Current;
num31 += current2.ToBuy;
num = -832133554;
break;
}
case 2:
num = -832133554;
break;
case 3:
goto end_IL_0c22;
}
continue;
end_IL_0c22:
break;
}
num12 += item.ToBuy;
}
_206A_200F_202C_202B_200B_202B_202C_202B_200F_206E_206F_206A_200C_200F_200E_200C_202A_200B_200F_206C_200E_206D_200E_206F_206E_202B_206D_200D_202E_202A_200B_202B_200C_206E_200C_202A_202E_200D_202C_202A_202E((ILogger)_logger, 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<string>(-251047374), new object[5] { npcIndex, slot, rowId, num9, num31 });
_logger.LogDebug("Delivery plan: NPC {NpcIndex} slot {Slot}, item {ItemId} x{Count}, ingredients to buy: {ToBuy}", npcIndex, slot, rowId, num4, num12);
return result;
}
public bool IsNpcUnlocked(int npcIndex)
{
ExcelSheet<SatisfactionNpc> excelSheet = _dataManager.GetExcelSheet<SatisfactionNpc>();
int num = 1;
int num2 = npcIndex;
int num3 = num2 ^ num;
int num4 = num2 & num;
SatisfactionNpc row;
int num5 = (excelSheet.TryGetRow((uint)(num3 + (num4 + num4)), out row) ? (-1323628219) : (-1323628220));
uint rowId = default(uint);
while (true)
if (!_dataManager.GetExcelSheet<SatisfactionNpc>().TryGetRow((uint)(npcIndex + 1), out var row))
{
int num6 = num5;
num = -1323628219;
num2 = num6;
int num7 = num2 + num;
int num8 = num2 & num;
switch (num7 - (num8 + num8))
{
case 3:
num5 = -1323628220;
break;
case 2:
return true;
case 0:
rowId = row.QuestRequired.RowId;
num5 = ((rowId != 0) ? (-1323628223) : (-1323628217));
break;
case 1:
return false;
case 4:
return QuestManager.IsQuestComplete((ushort)rowId);
}
return false;
}
uint rowId = row.QuestRequired.RowId;
if (rowId == 0)
{
return true;
}
return QuestManager.IsQuestComplete((ushort)rowId);
}
private bool HasJobAtLevel(EDeliverySlot slot, ushort requiredLevel)
{
ExcelSheet<ClassJob> excelSheet = _dataManager.GetExcelSheet<ClassJob>();
int num;
EClassJob[] array = default(EClassJob[]);
int num8 = default(int);
ClassJob row = default(ClassJob);
EClassJob[] array2;
switch (slot)
EClassJob[] array = slot switch
{
default:
num = 208972121;
goto IL_0034;
case EDeliverySlot.Fish:
array = new EClassJob[1] { EClassJob.Fisher };
num = 208972119;
goto IL_0034;
case EDeliverySlot.Gather:
goto IL_00fb;
case EDeliverySlot.Craft:
goto IL_0192;
IL_0034:
while (true)
EDeliverySlot.Craft => new EClassJob[8]
{
int num2 = num;
int num3 = 208972117;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 4:
goto IL_008a;
case 12:
num = 208972112;
break;
case 10:
goto IL_00c2;
case 7:
goto end_IL_0034;
case 6:
goto IL_00fb;
case 2:
array = array;
num8 = 0;
num = 208972127;
break;
case 3:
num = 208972121;
break;
case 1:
{
int num7 = num8;
num3 = 1;
num4 = num7;
num8 = (num4 | num3) + (num4 & num3);
num = 208972127;
break;
}
case 11:
return false;
case 8:
return true;
case 5:
array = Array.Empty<EClassJob>();
num = 208972119;
break;
case 0:
goto IL_0168;
case 9:
goto IL_0192;
}
continue;
IL_0168:
num = ((_202D_206B_206F_200C_200E_200F_202A_206D_202D_202D_202C_202D_206F_206F_202D_202E_202A_206B_202A_202D_206E_202D_200D_200D_202D_202A_200C_200B_200E_202E_200D_206A_206D_202B_206F_202D_200B_200E_206F_202A_202E((int)row.ExpArrayIndex) < requiredLevel) ? 208972116 : 208972125);
continue;
IL_00c2:
num = ((num8 < array.Length) ? 208972113 : 208972126);
continue;
IL_008a:
EClassJob rowId = array[num8];
num = ((!excelSheet.TryGetRow((uint)rowId, out row)) ? 208972116 : 208972117);
continue;
end_IL_0034:
break;
}
goto case EDeliverySlot.Fish;
IL_0192:
array2 = new EClassJob[8];
_202A_200D_202C_202B_202D_202B_202B_202C_200F_202A_206F_200B_200D_202E_206E_202A_200B_200B_202D_206E_206B_202C_206C_200D_202A_206A_206F_200B_202E_202E_200E_200B_206A_200C_206F_206D_202B_202B_206C_206C_202E((Array)array2, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
array = array2;
num = 208972119;
goto IL_0034;
IL_00fb:
array = new EClassJob[2]
EClassJob.Carpenter,
EClassJob.Blacksmith,
EClassJob.Armorer,
EClassJob.Goldsmith,
EClassJob.Leatherworker,
EClassJob.Weaver,
EClassJob.Alchemist,
EClassJob.Culinarian
},
EDeliverySlot.Gather => new EClassJob[2]
{
EClassJob.Miner,
EClassJob.Botanist
};
num = 208972119;
goto IL_0034;
},
EDeliverySlot.Fish => new EClassJob[1] { EClassJob.Fisher },
_ => Array.Empty<EClassJob>(),
};
foreach (EClassJob rowId in array)
{
if (excelSheet.TryGetRow((uint)rowId, out var row) && PlayerStateHelper.GetClassJobLevel(row.ExpArrayIndex) >= requiredLevel)
{
return true;
}
}
return false;
}
public EDeliverySlot? AutoSelectSlot(int npcIndex, ArtisanIpc artisanIpc, AutoHookIpc autoHookIpc)
{
int num = ((!artisanIpc.IsAvailable()) ? 1675924989 : 1675924988);
while (true)
if (artisanIpc.IsAvailable() && CreatePlan(npcIndex, EDeliverySlot.Craft) != null)
{
int num2 = num;
int num3 = 1675924986;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
num = ((!autoHookIpc.IsAvailable()) ? 1675924990 : 1675924985);
break;
case 4:
return null;
case 1:
return EDeliverySlot.Gather;
case 2:
num = 1675924988;
break;
case 8:
return EDeliverySlot.Fish;
case 3:
num = ((CreatePlan(npcIndex, EDeliverySlot.Fish) == null) ? 1675924990 : 1675924978);
break;
case 7:
num = ((CreatePlan(npcIndex, EDeliverySlot.Gather) == null) ? 1675924986 : 1675924987);
break;
case 5:
return EDeliverySlot.Craft;
case 6:
num = ((CreatePlan(npcIndex, EDeliverySlot.Craft) == null) ? 1675924989 : 1675924991);
break;
}
return EDeliverySlot.Craft;
}
}
static bool _200D_206E_202C_202A_202A_202E_202E_206C_200D_200C_200E_200C_206B_206C_200D_200B_206B_206D_206C_202E_202A_206C_206E_200D_200B_206C_200D_200F_206B_202A_202C_202D_206A_206B_206F_200B_200F_202E_200F_200D_202E()
{
return InventoryHelper.HasFreeInventorySlot();
}
static void _206C_206F_206E_206A_206F_200F_202B_206D_206E_200D_202E_202D_206D_200B_200F_202B_202D_200F_200D_206C_202A_200C_200E_200E_206C_200D_206B_200F_206D_200E_202A_206C_200D_200B_202B_200B_202A_202C_202C_200F_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogWarning(P_1, P_2);
}
static void _206A_200F_202C_202B_200B_202B_202C_202B_200F_206E_206F_206A_200C_200F_200E_200C_202A_200B_200F_206C_200E_206D_200E_206F_206E_202B_206D_200D_202E_202A_200B_202B_200C_206E_200C_202A_202E_200D_202C_202A_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static SatisfactionSupplyActions.NpcState _200F_206F_206A_200F_202C_206F_206E_200E_202B_200C_200B_200D_200B_202C_206D_202B_206E_200B_202C_202D_202D_200D_206D_202E_200B_206E_202A_202D_202A_206E_202D_200B_202E_202E_202A_200B_202B_202D_202E_206C_202E(int P_0)
{
return SatisfactionSupplyActions.GetNpcState(P_0);
}
static int _206F_206A_202D_202B_200F_206F_202E_206D_206F_200D_202D_206C_206C_206D_202C_206C_202B_202E_206D_202B_200D_202B_200D_200E_202E_206D_206B_206D_200E_202A_202A_206A_200C_202A_206F_202B_206C_206D_200E_200D_202E()
{
return SatisfactionSupplyActions.GetRemainingAllowances();
}
static uint _200C_206C_200F_202B_206A_206F_200B_206C_202A_206F_206F_206C_206B_202B_200F_202A_206D_206A_200D_206E_202A_206A_206D_206C_206D_202C_206F_200D_202E_200D_200E_202D_200E_206F_202C_206E_202C_202E_202A_206F_202E()
{
return SatisfactionSupplyActions.GetSupplySeed();
}
static uint[] _202C_206E_206A_202A_206E_206D_206D_206C_200E_200C_206B_200C_202B_202E_200C_200B_206A_200D_202A_202D_202D_206D_206E_206A_206D_206F_200C_206C_206B_206B_202B_202E_206D_206A_206E_202A_202C_206F_200B_200E_202E(SatisfactionSupplyHelper P_0, uint P_1, uint P_2)
{
return P_0.CalculateRequestedItems(P_1, P_2);
}
static int _202E_200E_200B_202D_200C_200D_206B_202B_206F_202D_206F_200D_200E_200C_206B_202C_206A_202A_200F_206A_202A_200B_200B_202E_206F_202A_200C_200D_200D_200D_200D_206B_202E_202A_200B_206A_200C_206D_206D_200F_202E(int P_0, int P_1)
{
return Math.Min(P_0, P_1);
}
static void _202E_202D_202C_206E_202C_206A_206E_202D_202E_202D_206C_200B_200E_202E_206C_200B_206A_202E_206B_206D_206B_200E_200B_200E_206B_206D_202A_206F_200C_202D_206E_206D_206C_206A_206B_200F_202E_200E_202B_200E_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogError(P_1, P_2);
}
static int _200C_206C_200D_202C_202B_202C_206A_206E_200E_200E_202D_202A_202C_206D_206B_206D_206D_200B_202B_206A_206D_202D_206D_200C_206C_200D_200E_200D_200C_202C_206D_206F_206B_206D_202A_200C_202B_200B_200C_206A_202E(int P_0, int P_1)
{
return Math.Max(P_0, P_1);
}
static bool _202D_202B_206D_202B_202E_200E_200E_206F_202C_200E_200F_200E_200D_206B_202A_202C_206B_202E_202D_200F_200E_206C_200D_200D_202E_206C_202A_206A_200E_200D_202E_200E_206A_202E_206D_206D_206B_206B_202C_202B_202E(IEnumerator P_0)
{
return P_0.MoveNext();
}
static void _206B_202C_200B_202D_202C_206A_202A_202E_200B_202D_200E_202B_202A_200D_206A_206E_202D_202A_202A_206D_200E_206D_202A_206B_206C_206A_200F_200E_206B_202E_200D_200E_206D_200D_206C_202E_202E_202D_206D_200C_202E(IDisposable P_0)
{
P_0.Dispose();
}
static void _202A_200D_202C_202B_202D_202B_202B_202C_200F_202A_206F_200B_200D_202E_206E_202A_200B_200B_202D_206E_206B_202C_206C_200D_202A_206A_206F_200B_202E_202E_200E_200B_206A_200C_206F_206D_202B_202B_206C_206C_202E(Array P_0, RuntimeFieldHandle P_1)
{
RuntimeHelpers.InitializeArray(P_0, P_1);
}
static short _202D_206B_206F_200C_200E_200F_202A_206D_202D_202D_202C_202D_206F_206F_202D_202E_202A_206B_202A_202D_206E_202D_200D_200D_202D_202A_200C_200B_200E_202E_200D_206A_206D_202B_206F_202D_200B_200E_206F_202A_202E(int P_0)
{
return PlayerStateHelper.GetClassJobLevel(P_0);
if (CreatePlan(npcIndex, EDeliverySlot.Gather) != null)
{
return EDeliverySlot.Gather;
}
if (autoHookIpc.IsAvailable() && CreatePlan(npcIndex, EDeliverySlot.Fish) != null)
{
return EDeliverySlot.Fish;
}
return null;
}
}

View file

@ -1,118 +1,14 @@
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Text;
using Dalamud.Plugin.Services;
using LLib.Inventory;
using Lumina.Excel;
using Lumina.Excel.Sheets;
namespace Questionable.Controller.CustomDelivery;
internal sealed class DeliveryRewardCalculator(IDataManager dataManager)
{
internal record struct CurrencyReward(uint CurrencyItemId, string CurrencyName, int AmountPerDelivery)
{
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
public override readonly string ToString()
{
StringBuilder stringBuilder = _206A_200C_202B_206F_202E_202C_202C_200D_200D_206E_200C_206C_202C_200F_206F_206E_202C_200D_200C_202E_206A_206A_206C_202A_206C_206A_200E_200D_202E_200B_206A_202D_202A_206A_206B_206F_206C_200B_206B_202B_202E();
_200C_200E_206E_206A_206D_202A_206B_202A_206A_202D_206F_200F_202E_200B_200B_206E_200F_202C_206E_206F_200D_200B_206E_202C_200B_202A_200B_200F_202A_200F_206E_200C_206B_200F_202A_200F_200E_206A_202C_202B_202E(stringBuilder, 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<string>(175214569));
_200C_200E_206E_206A_206D_202A_206B_202A_206A_202D_206F_200F_202E_200B_200B_206E_200F_202C_206E_206F_200D_200B_206E_202C_200B_202A_200B_200F_202A_200F_206E_200C_206B_200F_202A_200F_200E_206A_202C_202B_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<string>(1664411125));
int num = ((!PrintMembers(stringBuilder)) ? 851670769 : 851670770);
while (true)
{
int num2 = num;
int num3 = 851670771;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
num = 851670770;
break;
case 2:
_206E_200E_200B_200B_200F_206E_202C_206A_200B_200B_206C_206C_202C_200E_206A_202A_206D_202E_202C_206C_200F_206B_202C_206A_206C_202B_200B_200E_202B_200B_200E_202C_202B_206F_202E_200D_202D_202C_206B_206D_202E(stringBuilder, '}');
return _200C_200D_200C_200E_206A_202A_206A_202A_202B_200B_200D_200E_200C_200F_200B_200D_206B_206D_200F_200D_206B_206B_206C_202E_206F_202E_200E_200C_200E_206F_200B_206B_202A_206A_206D_206C_200C_206C_206A_206E_202E((object)stringBuilder);
case 1:
_206E_200E_200B_200B_200F_206E_202C_206A_200B_200B_206C_206C_202C_200E_206A_202A_206D_202E_202C_206C_200F_206B_202C_206A_206C_202B_200B_200E_202B_200B_200E_202C_202B_206F_202E_200D_202D_202C_206B_206D_202E(stringBuilder, ' ');
num = 851670769;
break;
}
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
private readonly bool PrintMembers(StringBuilder builder)
{
_200C_200E_206E_206A_206D_202A_206B_202A_206A_202D_206F_200F_202E_200B_200B_206E_200F_202C_206E_206F_200D_200B_206E_202C_200B_202A_200B_200F_202A_200F_206E_200C_206B_200F_202A_200F_200E_206A_202C_202B_202E(builder, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(557355409));
_200C_200E_206E_206A_206D_202A_206B_202A_206A_202D_206F_200F_202E_200B_200B_206E_200F_202C_206E_206F_200D_200B_206E_202C_200B_202A_200B_200F_202A_200F_206E_200C_206B_200F_202A_200F_200E_206A_202C_202B_202E(builder, CurrencyItemId.ToString());
_200C_200E_206E_206A_206D_202A_206B_202A_206A_202D_206F_200F_202E_200B_200B_206E_200F_202C_206E_206F_200D_200B_206E_202C_200B_202A_200B_200F_202A_200F_206E_200C_206B_200F_202A_200F_200E_206A_202C_202B_202E(builder, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-1370044589));
_200B_206F_200D_202B_202B_200C_206C_206F_202B_202C_206D_200F_206F_200D_206D_206C_200F_206B_206A_206A_200F_202E_206B_202B_206B_200D_206E_202B_206A_200E_206F_202E_206B_206C_202B_200F_200F_202D_200E_206C_202E(builder, (object)CurrencyName);
_200C_200E_206E_206A_206D_202A_206B_202A_206A_202D_206F_200F_202E_200B_200B_206E_200F_202C_206E_206F_200D_200B_206E_202C_200B_202A_200B_200F_202A_200F_206E_200C_206B_200F_202A_200F_200E_206A_202C_202B_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<string>(1289637212));
_200C_200E_206E_206A_206D_202A_206B_202A_206A_202D_206F_200F_202E_200B_200B_206E_200F_202C_206E_206F_200D_200B_206E_202C_200B_202A_200B_200F_202A_200F_206E_200C_206B_200F_202A_200F_200E_206A_202C_202B_202E(builder, AmountPerDelivery.ToString());
return true;
}
[CompilerGenerated]
public readonly bool Equals(CurrencyReward other)
{
int num = ((!EqualityComparer<uint>.Default.Equals(CurrencyItemId, other.CurrencyItemId)) ? (-1286878871) : (-1286878870));
while (true)
{
int num2 = num;
int num3 = -1286878869;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
return false;
case 1:
num = ((!EqualityComparer<string>.Default.Equals(CurrencyName, other.CurrencyName)) ? (-1286878871) : (-1286878869));
break;
case 0:
return EqualityComparer<int>.Default.Equals(AmountPerDelivery, other.AmountPerDelivery);
case 3:
num = -1286878870;
break;
}
}
}
bool IEquatable<CurrencyReward>.Equals(CurrencyReward other)
{
//ILSpy generated this explicit interface implementation from .override directive in Equals
return this.Equals(other);
}
static StringBuilder _206A_200C_202B_206F_202E_202C_202C_200D_200D_206E_200C_206C_202C_200F_206F_206E_202C_200D_200C_202E_206A_206A_206C_202A_206C_206A_200E_200D_202E_200B_206A_202D_202A_206A_206B_206F_206C_200B_206B_202B_202E()
{
return new StringBuilder();
}
static StringBuilder _200C_200E_206E_206A_206D_202A_206B_202A_206A_202D_206F_200F_202E_200B_200B_206E_200F_202C_206E_206F_200D_200B_206E_202C_200B_202A_200B_200F_202A_200F_206E_200C_206B_200F_202A_200F_200E_206A_202C_202B_202E(StringBuilder P_0, string P_1)
{
return P_0.Append(P_1);
}
static StringBuilder _206E_200E_200B_200B_200F_206E_202C_206A_200B_200B_206C_206C_202C_200E_206A_202A_206D_202E_202C_206C_200F_206B_202C_206A_206C_202B_200B_200E_202B_200B_200E_202C_202B_206F_202E_200D_202D_202C_206B_206D_202E(StringBuilder P_0, char P_1)
{
return P_0.Append(P_1);
}
static string _200C_200D_200C_200E_206A_202A_206A_202A_202B_200B_200D_200E_200C_200F_200B_200D_206B_206D_200F_200D_206B_206B_206C_202E_206F_202E_200E_200C_200E_206F_200B_206B_202A_206A_206D_206C_200C_206C_206A_206E_202E(object P_0)
{
return P_0.ToString();
}
static StringBuilder _200B_206F_200D_202B_202B_200C_206C_206F_202B_202C_206D_200F_206F_200D_206D_206C_200F_206B_206A_206A_200F_202E_206B_202B_206B_200D_206E_202B_206A_200E_206F_202E_206B_206C_202B_200F_200F_202D_200E_206C_202E(StringBuilder P_0, object P_1)
{
return P_0.Append(P_1);
}
}
internal record struct CurrencyReward(uint CurrencyItemId, string CurrencyName, int AmountPerDelivery);
private static readonly Dictionary<uint, int> ScripCaps = new Dictionary<uint, int>
{
@ -123,289 +19,87 @@ internal sealed class DeliveryRewardCalculator(IDataManager dataManager)
internal List<CurrencyReward> CalculateRewards(uint rewardRowId, bool hasBonus, Configuration.CustomDeliveryConfiguration.ECollectabilityTier tier = Configuration.CustomDeliveryConfiguration.ECollectabilityTier.High)
{
List<CurrencyReward> list = new List<CurrencyReward>();
int num = (dataManager.GetExcelSheet<SatisfactionSupplyReward>().TryGetRow(rewardRowId, out var row) ? 1083172624 : 1083172627);
uint rewardCurrency = default(uint);
int num8 = default(int);
ushort num9 = default(ushort);
SatisfactionSupplyReward.SatisfactionSupplyRewardDataStruct current = default(SatisfactionSupplyReward.SatisfactionSupplyRewardDataStruct);
while (true)
if (!dataManager.GetExcelSheet<SatisfactionSupplyReward>().TryGetRow(rewardRowId, out var row))
{
int num2 = num;
int num3 = 1083172625;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
goto IL_006c;
case 2:
return list;
case 1:
{
using Collection<SatisfactionSupplyReward.SatisfactionSupplyRewardDataStruct>.Enumerator enumerator = row.SatisfactionSupplyRewardData.GetEnumerator();
num = 328961127;
while (true)
{
int num5 = num;
num3 = 328961135;
num4 = num5;
int num6 = num4 + num3;
int num7 = num4 & num3;
switch (num6 - (num7 + num7))
{
case 6:
{
string currencyName = GetCurrencyName(rewardCurrency);
list.Add(new CurrencyReward(rewardCurrency, currencyName, num8));
num = 328961127;
break;
}
case 9:
num = ((tier != Configuration.CustomDeliveryConfiguration.ECollectabilityTier.Low) ? 328961125 : 328961132);
break;
case 4:
num = ((tier == Configuration.CustomDeliveryConfiguration.ECollectabilityTier.Mid) ? 328961128 : 328961126);
break;
case 1:
num8 = num9;
num = ((!hasBonus) ? 328961129 : 328961135);
break;
case 11:
num = 328961127;
break;
case 10:
num9 = current.QuantityHigh;
num = 328961134;
break;
case 3:
num9 = current.QuantityLow;
num = 328961134;
break;
case 8:
num = (enumerator.MoveNext() ? 328961130 : 328961133);
break;
case 5:
current = enumerator.Current;
rewardCurrency = current.RewardCurrency;
num = ((rewardCurrency == 0) ? 328961127 : 328961131);
break;
case 7:
num9 = current.QuantityMid;
num = 328961134;
break;
case 0:
num8 = num8 * row.BonusMultiplier / 100;
num = 328961129;
break;
case 2:
return list;
}
}
}
}
continue;
IL_006c:
num = 1083172627;
return list;
}
foreach (SatisfactionSupplyReward.SatisfactionSupplyRewardDataStruct satisfactionSupplyRewardDatum in row.SatisfactionSupplyRewardData)
{
uint rewardCurrency = satisfactionSupplyRewardDatum.RewardCurrency;
if (rewardCurrency != 0)
{
int num = tier switch
{
Configuration.CustomDeliveryConfiguration.ECollectabilityTier.Low => satisfactionSupplyRewardDatum.QuantityLow,
Configuration.CustomDeliveryConfiguration.ECollectabilityTier.Mid => satisfactionSupplyRewardDatum.QuantityMid,
_ => satisfactionSupplyRewardDatum.QuantityHigh,
};
if (hasBonus)
{
num = num * row.BonusMultiplier / 100;
}
string currencyName = GetCurrencyName(rewardCurrency);
list.Add(new CurrencyReward(rewardCurrency, currencyName, num));
}
}
return list;
}
internal static bool WouldOvercap(uint currencyItemId, int amountPerDelivery, int deliveryCount)
{
int value;
int num = (ScripCaps.TryGetValue(currencyItemId, out value) ? (-1863089792) : (-1863089789));
while (true)
if (!ScripCaps.TryGetValue(currencyItemId, out var value))
{
int num2 = num;
int num3 = -1863089790;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
goto IL_004d;
case 1:
return false;
case 2:
return _202B_200E_206D_200C_206E_200D_202B_206E_206A_200C_200B_206E_202A_206F_202B_200F_206C_202C_200F_200C_202B_206A_202D_206D_202C_202E_206B_202D_206D_202A_206A_200B_206C_206F_206C_202B_200D_202E_206A_202A_202E(currencyItemId, false, false) + amountPerDelivery * deliveryCount > value;
}
continue;
IL_004d:
num = -1863089789;
return false;
}
return InventoryHelper.GetItemCount(currencyItemId) + amountPerDelivery * deliveryCount > value;
}
internal int MaxDeliveriesBeforeOvercap(uint rewardRowId, bool hasBonus, Configuration.CustomDeliveryConfiguration.ECollectabilityTier tier = Configuration.CustomDeliveryConfiguration.ECollectabilityTier.High)
{
List<CurrencyReward> list = CalculateRewards(rewardRowId, hasBonus, tier);
int num = int.MaxValue;
int num2;
using (List<CurrencyReward>.Enumerator enumerator = list.GetEnumerator())
foreach (CurrencyReward item in list)
{
num2 = -1256353988;
int num10 = default(int);
CurrencyReward current = default(CurrencyReward);
int value = default(int);
while (true)
if (ScripCaps.TryGetValue(item.CurrencyItemId, out var value) && item.AmountPerDelivery > 0)
{
int num3 = num2;
int num4 = -1256353985;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
int num12;
int num11;
switch (num6 - (num7 + num7))
{
case 4:
num12 = num10 / current.AmountPerDelivery;
goto IL_006d;
case 1:
current = enumerator.Current;
num2 = ((!ScripCaps.TryGetValue(current.CurrencyItemId, out value)) ? (-1256353988) : (-1256353985));
break;
case 2:
num2 = -1256353988;
break;
case 5:
num12 = 0;
goto IL_006d;
case 3:
num2 = (enumerator.MoveNext() ? (-1256353986) : (-1256353992));
break;
case 0:
num2 = ((current.AmountPerDelivery <= 0) ? (-1256353988) : (-1256353991));
break;
case 6:
{
int num8 = _202B_200E_206D_200C_206E_200D_202B_206E_206A_200C_200B_206E_202A_206F_202B_200F_206C_202C_200F_200C_202B_206A_202D_206D_202C_202E_206B_202D_206D_202A_206A_200B_206C_206F_206C_202B_200D_202E_206A_202A_202E(current.CurrencyItemId, false, false);
int num9 = value;
num4 = num8;
num5 = num9;
num10 = ~(~num5 + num4);
num2 = ((num10 > 0) ? (-1256353989) : (-1256353990));
break;
}
case 7:
goto end_IL_0021;
IL_006d:
num11 = num12;
num = _200E_202E_200C_200F_206B_206C_200E_200B_202A_206A_200D_200D_200D_202A_200D_200C_206B_202A_200B_206C_206C_202A_200E_200F_206E_206E_200D_206B_206B_206F_202E_206C_200B_202B_206B_206A_202B_200E_206A_200D_202E(num, num11);
num2 = -1256353988;
break;
}
continue;
end_IL_0021:
break;
int itemCount = InventoryHelper.GetItemCount(item.CurrencyItemId);
int num2 = value - itemCount;
int val = ((num2 > 0) ? (num2 / item.AmountPerDelivery) : 0);
num = Math.Min(num, val);
}
}
num2 = ((num == int.MaxValue) ? 1414795502 : 1414795503);
while (true)
if (num != int.MaxValue)
{
int num13 = num2;
int num4 = 1414795502;
int num5 = num13;
switch ((num5 | num4) - (num5 & num4))
{
case 2:
goto IL_01c5;
case 1:
return num;
case 0:
return int.MaxValue;
}
continue;
IL_01c5:
num2 = 1414795503;
return num;
}
return int.MaxValue;
}
internal int CalculateSatisfactionPerDelivery(uint rewardRowId, bool hasBonus, Configuration.CustomDeliveryConfiguration.ECollectabilityTier tier = Configuration.CustomDeliveryConfiguration.ECollectabilityTier.High)
{
SatisfactionSupplyReward row;
int num = (dataManager.GetExcelSheet<SatisfactionSupplyReward>().TryGetRow(rewardRowId, out row) ? 284816978 : 284816979);
ushort num8 = default(ushort);
int num7 = default(int);
while (true)
if (!dataManager.GetExcelSheet<SatisfactionSupplyReward>().TryGetRow(rewardRowId, out var row))
{
int num2 = num;
int num3 = 284816978;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 5:
num8 = row.SatisfactionHigh;
num = 284816981;
break;
case 4:
num = ((tier != Configuration.CustomDeliveryConfiguration.ECollectabilityTier.Low) ? 284816983 : 284816977);
break;
case 0:
num = ((tier == Configuration.CustomDeliveryConfiguration.ECollectabilityTier.Mid) ? 284816980 : 284816982);
break;
case 6:
num8 = row.SatisfactionMid;
num = 284816981;
break;
case 9:
return num7;
case 7:
num7 = num8;
num = ((!hasBonus) ? 284816987 : 284816986);
break;
case 2:
num = 284816979;
break;
case 3:
num8 = row.SatisfactionLow;
num = 284816981;
break;
case 8:
num7 = num7 * row.BonusMultiplier / 100;
num = 284816987;
break;
case 1:
return 0;
}
return 0;
}
int num = tier switch
{
Configuration.CustomDeliveryConfiguration.ECollectabilityTier.Low => row.SatisfactionLow,
Configuration.CustomDeliveryConfiguration.ECollectabilityTier.Mid => row.SatisfactionMid,
_ => row.SatisfactionHigh,
};
if (hasBonus)
{
num = num * row.BonusMultiplier / 100;
}
return num;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private string GetCurrencyName(uint currencyItemId)
{
Item row;
int num = ((!dataManager.GetExcelSheet<Item>().TryGetRow(currencyItemId, out row)) ? (-1217003400) : (-1217003397));
while (true)
if (dataManager.GetExcelSheet<Item>().TryGetRow(currencyItemId, out var row))
{
int num2 = num;
int num3 = -1217003399;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 1:
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(9, 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<string>(1297490435));
defaultInterpolatedStringHandler.AppendFormatted(currencyItemId);
return defaultInterpolatedStringHandler.ToStringAndClear();
}
case 2:
return row.Name.ToString();
case 0:
goto IL_00a7;
}
continue;
IL_00a7:
num = -1217003397;
return row.Name.ToString();
}
}
static int _202B_200E_206D_200C_206E_200D_202B_206E_206A_200C_200B_206E_202A_206F_202B_200F_206C_202C_200F_200C_202B_206A_202D_206D_202C_202E_206B_202D_206D_202A_206A_200B_206C_206F_206C_202B_200D_202E_206A_202A_202E(uint P_0, bool P_1, bool P_2)
{
return InventoryHelper.GetItemCount(P_0, P_1, P_2);
}
static int _200E_202E_200C_200F_206B_206C_200E_200B_202A_206A_200D_200D_200D_202A_200D_200C_206B_202A_200B_206C_206C_202A_200E_200F_206E_206E_200D_206B_206B_206F_202E_206C_200B_202B_206B_206A_202B_200E_206A_200D_202E(int P_0, int P_1)
{
return Math.Min(P_0, P_1);
return $"Currency#{currencyItemId}";
}
}

View file

@ -1,5 +1,4 @@
using System;
using System.Runtime.CompilerServices;
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Plugin.Services;
using LLib;
@ -38,391 +37,163 @@ internal sealed class SatisfactionSupplyTurnInExecutor(GameFunctions gameFunctio
private long _phaseStartMs;
[MethodImpl(MethodImplOptions.NoInlining)]
protected override bool Start()
{
_phase = EPhase.InteractWithNpc;
_remaining = base.Task.DeliveryCount;
_lastUsedDeliveries = _206D_206D_202E_206B_206B_206F_206D_206E_206A_200C_206F_206F_200C_206C_206C_206E_206B_206D_202D_202D_202E_206D_200D_200C_202D_202E_206B_206E_202E_202B_206C_206E_200E_206F_200F_202D_200C_202E_202B_200E_202E(base.Task.NpcIndex).UsedDeliveries;
_lastUsedDeliveries = SatisfactionSupplyActions.GetNpcState(base.Task.NpcIndex).UsedDeliveries;
_throttle.Clear();
_phaseStartMs = _202D_206E_200C_202C_206E_206A_202D_206D_200C_202B_206E_206A_200E_200E_202C_202B_202B_200D_206E_200E_202D_206A_206B_202C_202E_202C_200C_200C_202E_200D_200F_200E_200B_200C_200F_202B_202A_206F_206A_200C_202E();
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(1474000530), new object[3]
{
base.Task.NpcIndex,
base.Task.Slot,
base.Task.DeliveryCount
});
_phaseStartMs = Environment.TickCount64;
logger.LogDebug("Starting satisfaction supply turn-in: npc={NpcIndex}, slot={Slot}, count={Count}", base.Task.NpcIndex, base.Task.Slot, base.Task.DeliveryCount);
return true;
}
[MethodImpl(MethodImplOptions.NoInlining)]
public override ETaskResult Update()
{
long num = _202D_206E_200C_202C_206E_206A_202D_206D_200C_202B_206E_206A_200E_200E_202C_202B_202B_200D_206E_200E_202D_206A_206B_202C_202E_202C_200C_200C_202E_200D_200F_200E_200B_200C_200F_202B_202A_206F_206A_200C_202E() - _phaseStartMs;
int num2 = ((_phase != EPhase.WaitForCutsceneEnd) ? 427799827 : 427799864);
int usedDeliveries = default(int);
int num6 = default(int);
bool flag = default(bool);
while (true)
long num = Environment.TickCount64 - _phaseStartMs;
if ((_phase != EPhase.WaitForCutsceneEnd) ? (num > 15000) : (num > 60000))
{
int num3 = num2;
int num4 = 427799834;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
{
default:
continue;
case 2:
num2 = ((!_throttle.TryReset(0.5)) ? 427799816 : 427799857);
continue;
case 44:
SetPhase(EPhase.Closing);
num2 = 427799816;
continue;
case 20:
num2 = 427799864;
continue;
case 31:
goto IL_015d;
case 19:
num2 = 427799816;
continue;
case 11:
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(350961385), Array.Empty<object>());
SetPhase(EPhase.CheckCompletion);
num2 = 427799816;
continue;
case 3:
goto IL_01c7;
case 25:
{
int remaining = _remaining;
int num7 = usedDeliveries;
num4 = _lastUsedDeliveries;
num5 = num7;
num4 = ~(~num5 + num4);
num5 = remaining;
_remaining = _206F_200D_200C_202C_200F_202A_206B_200B_206D_202A_206D_202B_200E_202D_200D_200C_202B_206D_202A_206F_200B_202E_206F_202E_206A_206A_200D_200E_200E_200E_206B_202A_200E_206A_202C_206B_206A_200B_202D_202E_202E(0, ~(~num5 + num4));
_lastUsedDeliveries = usedDeliveries;
num6 = _202D_200F_202C_202A_206D_206A_200C_206F_206E_206E_202C_206E_202D_206A_200B_206F_202E_202A_200C_202A_202C_200D_202E_200D_202C_206D_200D_206B_206F_200C_202A_200F_200B_202E_200D_206F_206C_200D_202D_200F_202E();
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(-306504982), new object[2] { _remaining, num6 });
num2 = ((_remaining <= 0) ? 427799862 : 427799860);
continue;
}
case 34:
flag = num > 60000;
num2 = 427799835;
continue;
case 32:
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(1631440184), new object[1] { base.Task.Slot });
SetPhase(EPhase.WaitForCutsceneStart);
num2 = 427799816;
continue;
case 33:
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(1374604529), Array.Empty<object>());
return ETaskResult.TaskComplete;
case 40:
goto IL_02fd;
case 4:
num2 = ((!_206B_206A_202A_202D_206C_202C_202C_202A_206D_202C_200E_200D_202E_200C_202A_202A_206A_200E_206A_206C_200D_202A_202A_200E_200B_202C_206A_206F_206B_202D_206D_202B_200C_200E_206B_202B_200C_206D_202A_200D_202E(gameGui)) ? 427799836 : 427799815);
continue;
case 28:
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(-1574397942), Array.Empty<object>());
return ETaskResult.TaskComplete;
case 24:
num2 = ((!_206B_206A_202A_202D_206C_202C_202C_202A_206D_202C_200E_200D_202E_200C_202A_202A_206A_200E_206A_206C_200D_202A_202A_200E_200B_202C_206A_206F_206B_202D_206D_202B_200C_200E_206B_202B_200C_206D_202A_200D_202E(gameGui)) ? 427799816 : 427799826);
continue;
case 5:
num2 = (TryDismissResultAddon() ? 427799816 : 427799856);
continue;
case 42:
num2 = ((!_200C_206C_200D_202C_206C_202E_202E_202E_200B_200F_200D_202A_206E_200C_200F_202C_206E_206E_200B_202C_202D_202E_200E_200E_206D_202E_202C_206C_200B_206F_202C_200F_200E_206D_200F_202B_206B_206F_206D_206B_202E(gameGui)) ? 427799828 : 427799867);
continue;
case 22:
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(1456862888), Array.Empty<object>());
SetPhase(EPhase.ConfirmTrade);
num2 = 427799816;
continue;
case 18:
return ETaskResult.StillRunning;
case 0:
num2 = ((!_200B_200E_206A_200F_206F_206A_206F_200C_206B_202E_206D_200C_200C_200B_202D_200F_202B_206D_202A_202B_202B_202A_206A_202E_202B_206E_200D_206C_202D_202E_206C_206F_202A_206E_200E_200F_206A_200D_200B_200E_202E(condition, ConditionFlag.OccupiedInCutSceneEvent)) ? 427799816 : 427799829);
continue;
case 26:
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(1394771024), Array.Empty<object>());
num2 = 427799816;
continue;
case 21:
goto IL_0464;
case 37:
SetPhase(EPhase.InteractWithNpc);
num2 = 427799816;
continue;
case 12:
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, 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<string>(-251211365), new object[1] { base.Task.NpcDataId });
SetPhase(EPhase.WaitForAddon);
num2 = 427799816;
continue;
case 10:
SetPhase(EPhase.WaitForAddon);
num2 = 427799816;
continue;
case 38:
goto IL_0509;
case 9:
flag = num > 15000;
num2 = 427799835;
continue;
case 17:
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(1397355813), Array.Empty<object>());
SetPhase(EPhase.CheckCompletion);
num2 = 427799816;
continue;
case 29:
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(-1083762627), Array.Empty<object>());
SetPhase(EPhase.SelectSlot);
num2 = 427799816;
continue;
case 13:
num2 = ((!TryDismissResultAddon()) ? 427799810 : 427799871);
continue;
case 27:
num2 = ((!gameFunctions.InteractWith(base.Task.NpcDataId)) ? 427799816 : 427799830);
continue;
case 43:
num2 = ((base.Task.NpcDataId == 0) ? 427799816 : 427799809);
continue;
case 1:
num2 = ((!flag) ? 427799818 : 427799863);
continue;
case 16:
switch (_phase)
{
case EPhase.InteractWithNpc:
break;
case EPhase.SelectSlot:
goto IL_015d;
case EPhase.WaitForAddon:
goto IL_01c7;
case EPhase.ConfirmTrade:
goto IL_02fd;
case EPhase.CheckCompletion:
goto IL_0464;
case EPhase.WaitForCutsceneEnd:
goto IL_0509;
default:
goto IL_0678;
case EPhase.WaitForCutsceneStart:
goto IL_06e7;
case EPhase.Closing:
goto end_IL_0047;
}
goto case 2;
case 46:
num2 = ((num6 <= 0) ? 427799862 : 427799824);
continue;
case 23:
num2 = ((!_202E_200B_202B_202C_202B_202D_206D_206A_202B_206F_200D_200B_206B_206D_206C_206C_206A_202C_206E_206D_202E_206B_200F_200B_202D_200B_206D_202D_200B_202E_200F_202D_206F_206D_202A_202D_202E_202E_206E_206C_202E()) ? 427799816 : 427799866);
continue;
case 7:
num2 = ((!_200E_200F_206E_206C_200E_200F_206D_202C_202E_200E_202A_200D_202E_202D_206E_200B_206C_206A_200C_200E_202A_206E_202B_206C_206E_200C_200E_202E_200F_200C_206D_202B_206C_206E_200F_206B_206C_202A_202B_202B_202E()) ? 427799831 : 427799820);
continue;
case 30:
goto IL_06e7;
case 45:
_206C_202A_206F_200F_206C_202A_200B_200D_206D_206D_202E_206C_202D_206D_206D_202E_200D_202C_200B_200E_202D_200B_200E_202B_200B_202D_202A_206A_200E_206B_202B_202D_206E_206F_206D_200C_202E_202E_206E_206F_202E((ILogger)logger, 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<string>(-1661028568), new object[2] { _phase, num });
TryDismissResultAddon();
_200C_206C_200D_202C_206C_202E_202E_202E_200B_200F_200D_202A_206E_200C_200F_202C_206E_206E_200B_202C_202D_202E_200E_200E_206D_202E_202C_206C_200B_206F_202C_200F_200E_206D_200F_202B_206B_206F_206D_206B_202E(gameGui);
return ETaskResult.RetryStep;
case 15:
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-285034380), Array.Empty<object>());
SetPhase(EPhase.WaitForCutsceneEnd);
num2 = 427799816;
continue;
case 36:
num2 = (TryDismissResultAddon() ? 427799816 : 427799838);
continue;
case 6:
num2 = ((!_200F_206A_200F_200E_206A_202E_206C_202E_202A_206D_202D_202B_202D_206B_206B_206F_202D_200E_202A_202C_206A_202C_200C_206A_202C_200B_202C_206A_200E_206F_206E_200C_206F_206A_206E_202B_200C_200B_206A_202E_202E(gameGui)) ? 427799859 : 427799865);
continue;
case 14:
num2 = (_202E_200B_202E_200D_206C_206F_206E_200D_202B_206B_202D_200B_200D_202A_206D_202E_200D_202A_200E_200F_206F_206C_202E_206E_206E_206D_200F_202A_206D_206B_202A_200D_206B_200E_200E_206B_202C_206D_200B_202D_202E(gameGui) ? 427799816 : 427799814);
continue;
case 41:
num2 = ((!_200C_206A_206B_200D_200C_202C_206D_206A_206D_206C_202E_200C_202E_202A_206C_206E_202E_206D_202D_200B_200F_202B_200D_206E_200E_200D_206A_206B_206A_206B_206F_206E_200C_202A_202E_206E_202D_206F_200B_200F_202E(gameGui)) ? 427799816 : 427799808);
continue;
case 8:
_202C_200D_206E_206E_200B_202C_206A_206D_206C_202E_200F_206C_206A_200F_202C_206B_206C_202B_202A_206D_206E_202C_206C_200B_206A_202A_200C_202C_200F_202E_200F_206E_206A_206A_202D_200C_206C_202A_206A_206F_202E(gameGui, (int)base.Task.Slot);
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(-1693755949), new object[1] { base.Task.Slot });
num2 = 427799816;
continue;
case 35:
_202A_206D_206A_200C_202B_200C_206F_200F_200E_200D_206C_202C_200D_202A_202C_206E_206F_200C_202B_206F_206A_202E_206D_206E_202E_206D_202B_206E_202C_202D_206C_206D_200E_206F_200F_206C_200C_200B_200D_206A_202E(gameGui, 0);
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(-2145457438), Array.Empty<object>());
num2 = 427799816;
continue;
case 39:
break;
IL_0464:
usedDeliveries = _206D_206D_202E_206B_206B_206F_206D_206E_206A_200C_206F_206F_200C_206C_206C_206E_206B_206D_202D_202D_202E_206D_200D_200C_202D_202E_206B_206E_202E_202B_206C_206E_200E_206F_200F_202D_200C_202E_202B_200E_202E(base.Task.NpcIndex).UsedDeliveries;
num2 = ((usedDeliveries <= _lastUsedDeliveries) ? 427799816 : 427799811);
continue;
IL_02fd:
num2 = ((!_throttle.TryReset(0.5)) ? 427799816 : 427799821);
continue;
IL_06e7:
num2 = ((!HasDeliveryRegistered()) ? 427799834 : 427799819);
continue;
IL_0678:
num2 = 427799817;
continue;
IL_015d:
num2 = ((!_throttle.TryReset(0.5)) ? 427799816 : 427799837);
continue;
IL_01c7:
num2 = ((!_throttle.TryReset(0.5)) ? 427799816 : 427799870);
continue;
IL_0509:
num2 = (_200B_200E_206A_200F_206F_206A_206F_200C_206B_202E_206D_200C_200C_200B_202D_200F_202B_206D_202A_202B_202B_202A_206A_202E_202B_206E_200D_206C_202D_202E_206C_206F_202A_206E_200E_200F_206A_200D_200B_200E_202E(condition, ConditionFlag.OccupiedInCutSceneEvent) ? 427799816 : 427799825);
continue;
end_IL_0047:
break;
}
num2 = ((!_throttle.TryReset(0.5)) ? 427799816 : 427799839);
logger.LogWarning("Turn-in timed out in phase {Phase} after {Elapsed}ms, retrying", _phase, num);
TryDismissResultAddon();
SatisfactionSupplyActions.TryCloseSatisfactionSupply(gameGui);
return ETaskResult.RetryStep;
}
switch (_phase)
{
case EPhase.InteractWithNpc:
if (_throttle.TryReset(0.5) && base.Task.NpcDataId != 0 && gameFunctions.InteractWith(base.Task.NpcDataId))
{
logger.LogDebug("Interacted with delivery NPC {DataId}", base.Task.NpcDataId);
SetPhase(EPhase.WaitForAddon);
}
break;
case EPhase.WaitForAddon:
if (_throttle.TryReset(0.5) && !TryDismissResultAddon())
{
if (SatisfactionSupplyActions.IsSatisfactionSupplyFullyReady(gameGui))
{
logger.LogDebug("SatisfactionSupply addon fully ready");
SetPhase(EPhase.SelectSlot);
}
else if (VendorPurchaseActions.IsDialogReady(gameGui))
{
VendorPurchaseActions.TrySelectDialogOption(gameGui, 0);
logger.LogDebug("Dismissed NPC dialog to reach SatisfactionSupply");
}
else if (SatisfactionSupplyActions.TryProgressTalk(gameGui))
{
logger.LogDebug("Progressed NPC dialog to reach SatisfactionSupply");
}
}
break;
case EPhase.SelectSlot:
if (_throttle.TryReset(0.5))
{
if (SatisfactionSupplyActions.IsNpcTradeReady())
{
logger.LogDebug("NpcTrade agent ready");
SetPhase(EPhase.ConfirmTrade);
}
else if (TryDismissResultAddon())
{
SetPhase(EPhase.InteractWithNpc);
}
else if (SatisfactionSupplyActions.IsSatisfactionSupplyFullyReady(gameGui))
{
SatisfactionSupplyActions.TrySelectDeliverySlot(gameGui, (int)base.Task.Slot);
logger.LogDebug("Fired delivery slot {Slot} selection", base.Task.Slot);
}
}
break;
case EPhase.ConfirmTrade:
if (_throttle.TryReset(0.5) && SatisfactionSupplyActions.TryConfirmTrade())
{
logger.LogDebug("Confirmed trade for slot {Slot}", base.Task.Slot);
SetPhase(EPhase.WaitForCutsceneStart);
}
break;
case EPhase.WaitForCutsceneStart:
if (HasDeliveryRegistered())
{
logger.LogDebug("Delivery registered before cutscene state was observed");
SetPhase(EPhase.CheckCompletion);
}
else if (condition[ConditionFlag.OccupiedInCutSceneEvent])
{
logger.LogDebug("Cutscene started");
SetPhase(EPhase.WaitForCutsceneEnd);
}
break;
case EPhase.WaitForCutsceneEnd:
if (!condition[ConditionFlag.OccupiedInCutSceneEvent])
{
logger.LogDebug("Cutscene ended");
SetPhase(EPhase.CheckCompletion);
}
break;
case EPhase.CheckCompletion:
{
int usedDeliveries = SatisfactionSupplyActions.GetNpcState(base.Task.NpcIndex).UsedDeliveries;
if (usedDeliveries > _lastUsedDeliveries)
{
_remaining = Math.Max(0, _remaining - (usedDeliveries - _lastUsedDeliveries));
_lastUsedDeliveries = usedDeliveries;
int remainingAllowances = SatisfactionSupplyActions.GetRemainingAllowances();
logger.LogDebug("Delivery complete, remaining={Remaining}, allowances={Allowances}", _remaining, remainingAllowances);
if (_remaining > 0 && remainingAllowances > 0)
{
SetPhase(EPhase.WaitForAddon);
}
else
{
SetPhase(EPhase.Closing);
}
}
break;
}
case EPhase.Closing:
if (_throttle.TryReset(0.5) && !TryDismissResultAddon())
{
if (SatisfactionSupplyActions.TryCloseSatisfactionSupply(gameGui))
{
logger.LogDebug("Closed SatisfactionSupply addon");
return ETaskResult.TaskComplete;
}
if (!SatisfactionSupplyActions.IsSatisfactionSupplyReady(gameGui))
{
logger.LogDebug("SatisfactionSupply addon already closed");
return ETaskResult.TaskComplete;
}
}
break;
}
return ETaskResult.StillRunning;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private bool TryDismissResultAddon()
{
int num = (_200D_206D_202C_206F_200E_200D_206D_206A_206D_206F_202C_200C_200D_202E_200F_202C_206D_200C_202D_202E_202A_206A_206F_200F_206A_200D_200C_200E_206B_206A_202E_200D_200B_202C_202B_206C_206D_206C_206C_200F_202E(gameGui) ? 1612697595 : 1612697592);
while (true)
if (!SatisfactionSupplyActions.IsSatisfactionSupplyResultVisible(gameGui))
{
int num2 = num;
int num3 = 1612697593;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
goto IL_004d;
case 2:
_206D_200B_200E_202D_206C_202D_202A_206C_206A_206B_202A_206F_202D_200B_200D_202D_202C_202C_202D_206C_202A_200B_206B_202A_200D_206F_202B_202C_206B_202D_200F_202B_200C_200B_202C_202D_206C_200B_206C_206B_202E(gameGui);
_206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E((ILogger)logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(-1119009587), Array.Empty<object>());
return true;
case 1:
return false;
}
continue;
IL_004d:
num = 1612697592;
return false;
}
SatisfactionSupplyActions.TryCloseSatisfactionSupplyResult(gameGui);
logger.LogDebug("Closed rank-up result addon");
return true;
}
private void SetPhase(EPhase phase)
{
_phase = phase;
_phaseStartMs = _202D_206E_200C_202C_206E_206A_202D_206D_200C_202B_206E_206A_200E_200E_202C_202B_202B_200D_206E_200E_202D_206A_206B_202C_202E_202C_200C_200C_202E_200D_200F_200E_200B_200C_200F_202B_202A_206F_206A_200C_202E();
_phaseStartMs = Environment.TickCount64;
}
private bool HasDeliveryRegistered()
{
return _206D_206D_202E_206B_206B_206F_206D_206E_206A_200C_206F_206F_200C_206C_206C_206E_206B_206D_202D_202D_202E_206D_200D_200C_202D_202E_206B_206E_202E_202B_206C_206E_200E_206F_200F_202D_200C_202E_202B_200E_202E(base.Task.NpcIndex).UsedDeliveries > _lastUsedDeliveries;
return SatisfactionSupplyActions.GetNpcState(base.Task.NpcIndex).UsedDeliveries > _lastUsedDeliveries;
}
public override bool ShouldInterruptOnDamage()
{
return false;
}
static SatisfactionSupplyActions.NpcState _206D_206D_202E_206B_206B_206F_206D_206E_206A_200C_206F_206F_200C_206C_206C_206E_206B_206D_202D_202D_202E_206D_200D_200C_202D_202E_206B_206E_202E_202B_206C_206E_200E_206F_200F_202D_200C_202E_202B_200E_202E(int P_0)
{
return SatisfactionSupplyActions.GetNpcState(P_0);
}
static long _202D_206E_200C_202C_206E_206A_202D_206D_200C_202B_206E_206A_200E_200E_202C_202B_202B_200D_206E_200E_202D_206A_206B_202C_202E_202C_200C_200C_202E_200D_200F_200E_200B_200C_200F_202B_202A_206F_206A_200C_202E()
{
return Environment.TickCount64;
}
static void _206B_206F_200B_206D_202B_202D_200E_200F_206F_200F_206B_206D_200E_200C_206F_202A_202C_206B_202E_206C_206A_206A_202C_200F_200F_200D_200C_200B_202B_206C_202E_206C_206A_202D_206D_206E_206B_200B_202A_202A_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static void _206C_202A_206F_200F_206C_202A_200B_200D_206D_206D_202E_206C_202D_206D_206D_202E_200D_202C_200B_200E_202D_200B_200E_202B_200B_202D_202A_206A_200E_206B_202B_202D_206E_206F_206D_200C_202E_202E_206E_206F_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogWarning(P_1, P_2);
}
static bool _200C_206C_200D_202C_206C_202E_202E_202E_200B_200F_200D_202A_206E_200C_200F_202C_206E_206E_200B_202C_202D_202E_200E_200E_206D_202E_202C_206C_200B_206F_202C_200F_200E_206D_200F_202B_206B_206F_206D_206B_202E(IGameGui P_0)
{
return SatisfactionSupplyActions.TryCloseSatisfactionSupply(P_0);
}
static bool _206B_206A_202A_202D_206C_202C_202C_202A_206D_202C_200E_200D_202E_200C_202A_202A_206A_200E_206A_206C_200D_202A_202A_200E_200B_202C_206A_206F_206B_202D_206D_202B_200C_200E_206B_202B_200C_206D_202A_200D_202E(IGameGui P_0)
{
return SatisfactionSupplyActions.IsSatisfactionSupplyFullyReady(P_0);
}
static bool _200F_206A_200F_200E_206A_202E_206C_202E_202A_206D_202D_202B_202D_206B_206B_206F_202D_200E_202A_202C_206A_202C_200C_206A_202C_200B_202C_206A_200E_206F_206E_200C_206F_206A_206E_202B_200C_200B_206A_202E_202E(IGameGui P_0)
{
return VendorPurchaseActions.IsDialogReady(P_0);
}
static bool _202A_206D_206A_200C_202B_200C_206F_200F_200E_200D_206C_202C_200D_202A_202C_206E_206F_200C_202B_206F_206A_202E_206D_206E_202E_206D_202B_206E_202C_202D_206C_206D_200E_206F_200F_206C_200C_200B_200D_206A_202E(IGameGui P_0, int P_1)
{
return VendorPurchaseActions.TrySelectDialogOption(P_0, P_1);
}
static bool _200C_206A_206B_200D_200C_202C_206D_206A_206D_206C_202E_200C_202E_202A_206C_206E_202E_206D_202D_200B_200F_202B_200D_206E_200E_200D_206A_206B_206A_206B_206F_206E_200C_202A_202E_206E_202D_206F_200B_200F_202E(IGameGui P_0)
{
return SatisfactionSupplyActions.TryProgressTalk(P_0);
}
static bool _200E_200F_206E_206C_200E_200F_206D_202C_202E_200E_202A_200D_202E_202D_206E_200B_206C_206A_200C_200E_202A_206E_202B_206C_206E_200C_200E_202E_200F_200C_206D_202B_206C_206E_200F_206B_206C_202A_202B_202B_202E()
{
return SatisfactionSupplyActions.IsNpcTradeReady();
}
static bool _202C_200D_206E_206E_200B_202C_206A_206D_206C_202E_200F_206C_206A_200F_202C_206B_206C_202B_202A_206D_206E_202C_206C_200B_206A_202A_200C_202C_200F_202E_200F_206E_206A_206A_202D_200C_206C_202A_206A_206F_202E(IGameGui P_0, int P_1)
{
return SatisfactionSupplyActions.TrySelectDeliverySlot(P_0, P_1);
}
static bool _202E_200B_202B_202C_202B_202D_206D_206A_202B_206F_200D_200B_206B_206D_206C_206C_206A_202C_206E_206D_202E_206B_200F_200B_202D_200B_206D_202D_200B_202E_200F_202D_206F_206D_202A_202D_202E_202E_206E_206C_202E()
{
return SatisfactionSupplyActions.TryConfirmTrade();
}
static bool _200B_200E_206A_200F_206F_206A_206F_200C_206B_202E_206D_200C_200C_200B_202D_200F_202B_206D_202A_202B_202B_202A_206A_202E_202B_206E_200D_206C_202D_202E_206C_206F_202A_206E_200E_200F_206A_200D_200B_200E_202E(ICondition P_0, ConditionFlag P_1)
{
return P_0[P_1];
}
static int _206F_200D_200C_202C_200F_202A_206B_200B_206D_202A_206D_202B_200E_202D_200D_200C_202B_206D_202A_206F_200B_202E_206F_202E_206A_206A_200D_200E_200E_200E_206B_202A_200E_206A_202C_206B_206A_200B_202D_202E_202E(int P_0, int P_1)
{
return Math.Max(P_0, P_1);
}
static int _202D_200F_202C_202A_206D_206A_200C_206F_206E_206E_202C_206E_202D_206A_200B_206F_202E_202A_200C_202A_202C_200D_202E_200D_202C_206D_200D_206B_206F_200C_202A_200F_200B_202E_200D_206F_206C_200D_202D_200F_202E()
{
return SatisfactionSupplyActions.GetRemainingAllowances();
}
static bool _202E_200B_202E_200D_206C_206F_206E_200D_202B_206B_202D_200B_200D_202A_206D_202E_200D_202A_200E_200F_206F_206C_202E_206E_206E_206D_200F_202A_206D_206B_202A_200D_206B_200E_200E_206B_202C_206D_200B_202D_202E(IGameGui P_0)
{
return SatisfactionSupplyActions.IsSatisfactionSupplyReady(P_0);
}
static bool _200D_206D_202C_206F_200E_200D_206D_206A_206D_206F_202C_200C_200D_202E_200F_202C_206D_200C_202D_202E_202A_206A_206F_200F_206A_200D_200C_200E_206B_206A_202E_200D_200B_202C_202B_206C_206D_206C_206C_200F_202E(IGameGui P_0)
{
return SatisfactionSupplyActions.IsSatisfactionSupplyResultVisible(P_0);
}
static bool _206D_200B_200E_202D_206C_202D_202A_206C_206A_206B_202A_206F_202D_200B_200D_202D_202C_202C_202D_206C_202A_200B_206B_202A_200D_206F_202B_202C_206B_202D_200F_202B_200C_200B_202C_202D_206C_200B_206C_206B_202E(IGameGui P_0)
{
return SatisfactionSupplyActions.TryCloseSatisfactionSupplyResult(P_0);
}
}

View file

@ -1,117 +1,11 @@
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Text;
using Questionable.Controller.Steps;
namespace Questionable.Controller.CustomDelivery;
internal sealed record SatisfactionSupplyTurnInTask(int NpcIndex, EDeliverySlot Slot, int DeliveryCount, uint NpcDataId) : ITask
{
[CompilerGenerated]
private Type EqualityContract
{
[CompilerGenerated]
get
{
return _200F_206E_202C_200D_206E_200F_200F_202C_200C_206B_206A_202A_206C_202E_202B_206D_200C_206F_206B_206E_200F_200E_200F_202E_206B_200D_206A_202A_206D_200D_202D_206A_202A_202C_206B_206F_202B_202E_202D_206C_202E(typeof(SatisfactionSupplyTurnInTask).TypeHandle);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
public override string ToString()
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(27, 3);
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<string>(-1300446303));
defaultInterpolatedStringHandler.AppendFormatted(NpcIndex);
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<string>(1337890915));
defaultInterpolatedStringHandler.AppendFormatted(Slot);
defaultInterpolatedStringHandler.AppendLiteral(global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(1866089119));
defaultInterpolatedStringHandler.AppendFormatted(DeliveryCount);
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<string>(444206578));
return defaultInterpolatedStringHandler.ToStringAndClear();
}
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
private bool PrintMembers(StringBuilder builder)
{
_206C_206B_206E_200D_200C_200F_200C_206F_202C_202E_206D_200C_202D_202C_202C_200F_202B_202E_200F_202B_202E_206D_200E_200F_206E_206E_200F_202E_202D_206B_206D_206A_200C_206E_202C_200F_200D_202B_206D_200C_202E();
_200B_202B_206D_202C_200D_200B_200D_202A_206F_202B_206E_202C_202D_206D_206D_200B_206D_206B_206B_202C_202C_206C_202C_200C_206D_202C_200F_202A_202D_200F_200D_200D_206C_206C_202A_202E_200E_206A_206A_206F_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<string>(-1595512881));
_200B_202B_206D_202C_200D_200B_200D_202A_206F_202B_206E_202C_202D_206D_206D_200B_206D_206B_206B_202C_202C_206C_202C_200C_206D_202C_200F_202A_202D_200F_200D_200D_206C_206C_202A_202E_200E_206A_206A_206F_202E(builder, NpcIndex.ToString());
_200B_202B_206D_202C_200D_200B_200D_202A_206F_202B_206E_202C_202D_206D_206D_200B_206D_206B_206B_202C_202C_206C_202C_200C_206D_202C_200F_202A_202D_200F_200D_200D_206C_206C_202A_202E_200E_206A_206A_206F_202E(builder, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(1002596104));
_200B_202B_206D_202C_200D_200B_200D_202A_206F_202B_206E_202C_202D_206D_206D_200B_206D_206B_206B_202C_202C_206C_202C_200C_206D_202C_200F_202A_202D_200F_200D_200D_206C_206C_202A_202E_200E_206A_206A_206F_202E(builder, Slot.ToString());
_200B_202B_206D_202C_200D_200B_200D_202A_206F_202B_206E_202C_202D_206D_206D_200B_206D_206B_206B_202C_202C_206C_202C_200C_206D_202C_200F_202A_202D_200F_200D_200D_206C_206C_202A_202E_200E_206A_206A_206F_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<string>(1495805969));
_200B_202B_206D_202C_200D_200B_200D_202A_206F_202B_206E_202C_202D_206D_206D_200B_206D_206B_206B_202C_202C_206C_202C_200C_206D_202C_200F_202A_202D_200F_200D_200D_206C_206C_202A_202E_200E_206A_206A_206F_202E(builder, DeliveryCount.ToString());
_200B_202B_206D_202C_200D_200B_200D_202A_206F_202B_206E_202C_202D_206D_206D_200B_206D_206B_206B_202C_202C_206C_202C_200C_206D_202C_200F_202A_202D_200F_200D_200D_206C_206C_202A_202E_200E_206A_206A_206F_202E(builder, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(1084145586));
_200B_202B_206D_202C_200D_200B_200D_202A_206F_202B_206E_202C_202D_206D_206D_200B_206D_206B_206B_202C_202C_206C_202C_200C_206D_202C_200F_202A_202D_200F_200D_200D_206C_206C_202A_202E_200E_206A_206A_206F_202E(builder, NpcDataId.ToString());
return true;
}
[CompilerGenerated]
public bool Equals(SatisfactionSupplyTurnInTask? other)
{
int num = (((object)this == other) ? 887679026 : 887679031);
while (true)
{
int num2 = num;
int num3 = 887679025;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 8:
return EqualityComparer<uint>.Default.Equals(NpcDataId, other.NpcDataId);
case 1:
num = ((!EqualityComparer<int>.Default.Equals(DeliveryCount, other.DeliveryCount)) ? 887679029 : 887679033);
break;
case 5:
num = ((!EqualityComparer<int>.Default.Equals(NpcIndex, other.NpcIndex)) ? 887679029 : 887679027);
break;
case 6:
num = (((object)other == null) ? 887679029 : 887679030);
break;
case 2:
num = ((!EqualityComparer<EDeliverySlot>.Default.Equals(Slot, other.Slot)) ? 887679029 : 887679024);
break;
case 3:
return true;
case 4:
return false;
case 0:
num = 887679031;
break;
case 7:
num = ((!_200F_206E_202C_200B_206A_200D_206E_202C_206E_202D_202D_200D_202B_200B_202E_206E_200F_200D_200C_200C_206F_206C_200B_200E_202E_200F_200E_206F_200D_200C_202A_200F_202C_206C_202E_200D_206B_206F_202A_200F_202E(EqualityContract, other.EqualityContract)) ? 887679029 : 887679028);
break;
}
}
}
bool IEquatable<SatisfactionSupplyTurnInTask>.Equals(SatisfactionSupplyTurnInTask? other)
{
//ILSpy generated this explicit interface implementation from .override directive in Equals
return this.Equals(other);
}
static Type _200F_206E_202C_200D_206E_200F_200F_202C_200C_206B_206A_202A_206C_202E_202B_206D_200C_206F_206B_206E_200F_200E_200F_202E_206B_200D_206A_202A_206D_200D_202D_206A_202A_202C_206B_206F_202B_202E_202D_206C_202E(RuntimeTypeHandle P_0)
{
return Type.GetTypeFromHandle(P_0);
}
static void _206C_206B_206E_200D_200C_200F_200C_206F_202C_202E_206D_200C_202D_202C_202C_200F_202B_202E_200F_202B_202E_206D_200E_200F_206E_206E_200F_202E_202D_206B_206D_206A_200C_206E_202C_200F_200D_202B_206D_200C_202E()
{
RuntimeHelpers.EnsureSufficientExecutionStack();
}
static StringBuilder _200B_202B_206D_202C_200D_200B_200D_202A_206F_202B_206E_202C_202D_206D_206D_200B_206D_206B_206B_202C_202C_206C_202C_200C_206D_202C_200F_202A_202D_200F_200D_200D_206C_206C_202A_202E_200E_206A_206A_206F_202E(StringBuilder P_0, string P_1)
{
return P_0.Append(P_1);
}
static bool _200F_206E_202C_200B_206A_200D_206E_202C_206E_202D_202D_200D_202B_200B_202E_206E_200F_200D_200C_200C_206F_206C_200B_200E_202E_200F_200E_206F_200D_200C_202A_200F_202C_206C_202E_200D_206B_206F_202A_200F_202E(Type P_0, Type P_1)
{
return P_0 == P_1;
return $"TurnIn(npc={NpcIndex}, slot={Slot}, count={DeliveryCount})";
}
}

View file

@ -1,5 +1,4 @@
using System;
using System.Runtime.CompilerServices;
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game;
@ -50,7 +49,7 @@ internal sealed class VendorPurchaseExecutor(GameFunctions gameFunctions, IGameG
_state = EState.InteractWithNpc;
_throttle.Clear();
_purchaseIndex = 0;
_stateStartMs = _206E_206E_200E_202B_202A_206A_200C_206D_206A_202D_202B_206E_206D_206E_200C_200D_202A_200D_200C_202D_202E_200F_206D_206E_206C_202C_206C_206A_200E_206D_200F_206C_206E_202B_206A_206B_200E_200F_206E_206B_202E();
_stateStartMs = Environment.TickCount64;
_failed = false;
_countBeforeBuy = 0;
_buyAttempts = 0;
@ -58,362 +57,167 @@ internal sealed class VendorPurchaseExecutor(GameFunctions gameFunctions, IGameG
return true;
}
[MethodImpl(MethodImplOptions.NoInlining)]
public unsafe override ETaskResult Update()
{
long num = _206E_206E_200E_202B_202A_206A_200C_206D_206A_202D_202B_206E_206D_206E_200C_200D_202A_200D_200C_202D_202E_200F_206D_206E_206C_202C_206C_206A_200E_206D_200F_206C_206E_202B_206A_206B_200E_200F_206E_206B_202E() - _stateStartMs;
int num2 = ((_state == EState.WaitForBuy) ? 839409606 : 839409644);
int inventoryItemCount = default(int);
VendorPurchaseTask.PurchaseItem purchaseItem = default(VendorPurchaseTask.PurchaseItem);
VendorPurchaseTask.PurchaseItem purchaseItem2 = default(VendorPurchaseTask.PurchaseItem);
int num16 = default(int);
while (true)
long num = Environment.TickCount64 - _stateStartMs;
if (_state != EState.WaitForBuy && num > 15000)
{
int num3 = num2;
int num4 = 839409609;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
switch (num6 - (num7 + num7))
logger.LogWarning("Vendor purchase timed out in state {State} after {Elapsed}ms, retrying", _state, num);
return ETaskResult.RetryStep;
}
switch (_state)
{
case EState.InteractWithNpc:
if (!_throttle.TryReset(1.0))
{
case 11:
num2 = 839409644;
break;
case 26:
return ETaskResult.StillRunning;
case 10:
return ETaskResult.StillRunning;
case 7:
return ETaskResult.StillRunning;
case 34:
num2 = ((!_206F_200E_200B_206B_202C_206A_206B_200E_206B_202E_206A_206D_202C_200D_200F_200B_200B_206B_202D_200C_200D_202C_202A_200E_206D_200E_200B_202A_206A_206F_206F_202C_202B_200F_202D_206C_200F_202C_202A_206B_202E(gameGui)) ? 839409635 : 839409631);
break;
case 37:
num2 = ((num <= 15000) ? 839409606 : 839409622);
break;
case 6:
goto IL_0195;
case 23:
return ETaskResult.StillRunning;
case 21:
inventoryItemCount = InventoryManager.Instance()->GetInventoryItemCount(purchaseItem.ItemId, isHq: false, checkEquipped: true, checkArmory: true, 0);
num2 = ((inventoryItemCount > _countBeforeBuy) ? 839409605 : 839409604);
break;
case 51:
return ETaskResult.StillRunning;
case 32:
return ETaskResult.StillRunning;
case 35:
num2 = (_202D_202E_202D_206E_202A_202A_206B_206B_202C_202E_200B_200D_202B_202C_202E_200B_202B_200E_200D_206E_202B_206B_206C_206C_202A_202D_202B_202E_200C_200C_206C_202A_200D_200C_200F_202C_202C_200F_206B_202D_202E(condition, ConditionFlag.OccupiedInEvent) ? 839409603 : 839409656);
break;
case 30:
_206E_206D_206F_202B_206D_206E_202E_200B_202A_202E_200C_202C_202C_202C_206F_202E_206E_200C_202D_202A_202A_200D_206A_202A_206C_206A_206E_200E_206F_206B_202B_202B_206B_200E_200F_206F_206E_200E_202B_206B_202E((ILogger)logger, 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<string>(-1366453963), Array.Empty<object>());
SetState(EState.WaitForClose);
num2 = 839409637;
break;
case 44:
return ETaskResult.StillRunning;
case 46:
num2 = (_throttle.TryReset(0.5) ? 839409607 : 839409614);
break;
case 56:
goto IL_0292;
case 52:
{
int buyAttempts2 = _buyAttempts;
num4 = 1;
num5 = buyAttempts2;
int num14 = num5 ^ num4;
int num15 = num5 & num4;
_buyAttempts = num14 + (num15 + num15);
_confirmationClicked = false;
ILogger<VendorPurchaseExecutor> logger3 = logger;
string text3 = global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(1763985144);
object[] obj2 = new object[7] { purchaseItem2.ItemId, num16, purchaseItem2.Quantity, _buyAttempts, 3, null, null };
int purchaseIndex3 = _purchaseIndex;
num4 = 1;
num5 = purchaseIndex3;
int num17 = num5 ^ num4;
int num18 = num5 & num4;
obj2[5] = num17 + (num18 + num18);
obj2[6] = base.Task.Purchases.Count;
_206E_206D_206F_202B_206D_206E_202E_200B_202A_202E_200C_202C_202C_202C_206F_202E_206E_200C_202D_202A_202A_200D_206A_202A_206C_206A_206E_200E_206F_206B_202B_202B_206B_200E_200F_206F_206E_200E_202B_206B_202E((ILogger)logger3, text3, obj2);
SetState(EState.WaitForBuy);
num2 = 839409636;
break;
}
case 33:
_206E_206D_206F_202B_206D_206E_202E_200B_202A_202E_200C_202C_202C_202C_206F_202E_206E_200C_202D_202A_202A_200D_206A_202A_206C_206A_206E_200E_206F_206B_202B_202B_206B_200E_200F_206F_206E_200E_202B_206B_202E((ILogger)logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(519166747), Array.Empty<object>());
if (gameFunctions.InteractWith(base.Task.VendorNpcId))
{
logger.LogDebug("Interacted with vendor NPC {NpcId}", base.Task.VendorNpcId);
SetState(EState.WaitForShopOrDialog);
}
return ETaskResult.StillRunning;
case EState.WaitForShopOrDialog:
if (VendorPurchaseActions.IsShopReady(gameGui))
{
logger.LogDebug("Shop is ready, moving to BuyItem");
SetState(EState.BuyItem);
num2 = 839409658;
break;
case 14:
num2 = ((!_200D_206B_206A_200C_200F_206A_202A_200E_200F_206D_202E_200D_200B_206A_200D_202B_200D_206C_202E_206A_202C_206B_202E_206F_206A_202B_202B_206B_202A_200C_202B_200B_202B_202C_206A_200C_202D_206B_206D_202B_202E(gameGui, base.Task.DialogOptionIndex)) ? 839409658 : 839409638);
break;
case 17:
num2 = ((!gameFunctions.InteractWith(base.Task.VendorNpcId)) ? 839409618 : 839409616);
break;
case 55:
return ETaskResult.StillRunning;
case 47:
_206E_206D_206F_202B_206D_206E_202E_200B_202A_202E_200C_202C_202C_202C_206F_202E_206E_200C_202D_202A_202A_200D_206A_202A_206C_206A_206E_200E_206F_206B_202B_202B_206B_200E_200F_206F_206E_200E_202B_206B_202E((ILogger)logger, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(457605072), new object[1] { base.Task.DialogOptionIndex });
num2 = 839409658;
break;
case 53:
num2 = ((_buyAttempts >= 3) ? 839409659 : 839409633);
break;
case 9:
return ETaskResult.StillRunning;
case 41:
{
_206E_206D_206F_202B_206D_206E_202E_200B_202A_202E_200C_202C_202C_202C_206F_202E_206E_200C_202D_202A_202A_200D_206A_202A_206C_206A_206E_200E_206F_206B_202B_202B_206B_200E_200F_206F_206E_200E_202B_206B_202E((ILogger)logger, 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<string>(-87832125), new object[3] { purchaseItem.ItemId, _countBeforeBuy, inventoryItemCount });
int purchaseIndex = _purchaseIndex;
num4 = 1;
num5 = purchaseIndex;
int num8 = num5 ^ num4;
int num9 = num5 & num4;
_purchaseIndex = num8 + (num9 + num9);
num2 = ((_purchaseIndex >= base.Task.Purchases.Count) ? 839409629 : 839409601);
break;
}
case 36:
purchaseItem2 = base.Task.Purchases[_purchaseIndex];
num16 = _200B_206D_202D_202A_202A_202E_206A_206E_206A_200C_202A_206C_206D_200E_206D_200D_206B_202D_202D_206A_206C_202C_202D_200F_206E_202D_206F_206F_206C_202C_202B_202A_200E_200E_200D_202B_200E_200C_206C_200D_202E(gameGui, purchaseItem2.ItemId);
num2 = ((num16 >= 0) ? 839409611 : 839409617);
break;
case 1:
goto IL_055e;
case 2:
_countBeforeBuy = InventoryManager.Instance()->GetInventoryItemCount(purchaseItem2.ItemId, isHq: false, checkEquipped: true, checkArmory: true, 0);
num2 = ((!_206F_200D_206B_206C_202C_202D_206A_200F_200B_206E_206A_206B_200C_206D_200D_200E_206B_202E_200F_206B_200C_200E_206F_206D_202A_202C_200B_206D_202A_206D_200E_202D_202A_200E_202A_200F_200C_202E_202B_202A_202E(gameGui, num16, purchaseItem2.Quantity)) ? 839409636 : 839409661);
break;
case 50:
_200E_202B_200C_200C_206A_200E_206D_202D_200C_200F_200F_202C_200C_206F_206A_206D_202A_202A_202A_200F_206B_200C_200E_206C_206B_206F_202E_200E_206B_206F_206C_202E_206B_206B_202B_200C_202B_200C_206E_200D_202E((ILogger)logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(-968313219), new object[2] { purchaseItem.ItemId, _buyAttempts });
else if (VendorPurchaseActions.IsDialogReady(gameGui))
{
if (!_throttle.TryReset(0.5))
{
return ETaskResult.StillRunning;
}
if (VendorPurchaseActions.TrySelectDialogOption(gameGui, base.Task.DialogOptionIndex))
{
logger.LogDebug("Selected dialog option {Index} to open shop", base.Task.DialogOptionIndex);
}
}
return ETaskResult.StillRunning;
case EState.BuyItem:
{
if (!_throttle.TryReset(0.5))
{
return ETaskResult.StillRunning;
}
VendorPurchaseTask.PurchaseItem purchaseItem2 = base.Task.Purchases[_purchaseIndex];
int num2 = VendorPurchaseActions.FindItemDisplayIndex(gameGui, purchaseItem2.ItemId);
if (num2 < 0)
{
logger.LogError("Item {ItemId} not found in shop display list", purchaseItem2.ItemId);
_failed = true;
SetState(EState.CloseShop);
return ETaskResult.StillRunning;
case 24:
_200E_202B_200C_200C_206A_200E_206D_202D_200C_200F_200F_202C_200C_206F_206A_206D_202A_202A_202A_200F_206B_200C_200E_206C_206B_206F_202E_200E_206B_206F_206C_202E_206B_206B_202B_200C_202B_200C_206E_200D_202E((ILogger)logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(326113005), new object[1] { purchaseItem2.ItemId });
_failed = true;
SetState(EState.CloseShop);
return ETaskResult.StillRunning;
case 18:
}
_countBeforeBuy = InventoryManager.Instance()->GetInventoryItemCount(purchaseItem2.ItemId, isHq: false, checkEquipped: true, checkArmory: true, 0);
if (VendorPurchaseActions.TryBuyItem(gameGui, num2, purchaseItem2.Quantity))
{
_buyAttempts++;
_confirmationClicked = false;
logger.LogDebug("Submitted purchase for item {ItemId} (display index {DisplayIndex}) x{Quantity}, attempt {Attempt}/{MaxAttempts} ({Current}/{Total})", purchaseItem2.ItemId, num2, purchaseItem2.Quantity, _buyAttempts, 3, _purchaseIndex + 1, base.Task.Purchases.Count);
SetState(EState.WaitForBuy);
}
return ETaskResult.StillRunning;
}
case EState.WaitForBuy:
{
VendorPurchaseTask.PurchaseItem purchaseItem = base.Task.Purchases[_purchaseIndex];
if (!_confirmationClicked && VendorPurchaseActions.TryConfirmPurchase(gameGui))
{
_confirmationClicked = true;
_206E_206D_206F_202B_206D_206E_202E_200B_202A_202E_200C_202C_202C_202C_206F_202E_206E_200C_202D_202A_202A_200D_206A_202A_206C_206A_206E_200E_206F_206B_202B_202B_206B_200E_200F_206F_206E_200E_202B_206B_202E((ILogger)logger, 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<string>(-1038383555), new object[1] { purchaseItem.ItemId });
logger.LogDebug("Confirmed purchase of item {ItemId}", purchaseItem.ItemId);
SetState(EState.WaitForBuy);
return ETaskResult.StillRunning;
case 13:
num2 = ((num >= 2000) ? 839409660 : 839409641);
break;
case 31:
_206D_202B_206F_206B_200B_206E_202B_206A_200B_206C_206C_202C_206A_206B_206F_206B_200D_200B_206A_206A_202A_202B_200F_202E_202B_200B_200E_200B_206D_200B_202E_202D_202B_206A_206D_202D_202A_200B_200B_200C_202E((ILogger)logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(-208232877), new object[2] { _state, num });
return ETaskResult.RetryStep;
case 19:
num2 = (_throttle.TryReset(0.5) ? 839409657 : 839409600);
break;
case 54:
}
int inventoryItemCount = InventoryManager.Instance()->GetInventoryItemCount(purchaseItem.ItemId, isHq: false, checkEquipped: true, checkArmory: true, 0);
if (inventoryItemCount <= _countBeforeBuy)
{
if (num < 2000)
{
return ETaskResult.StillRunning;
}
if (_buyAttempts < 3)
{
logger.LogWarning("Purchase of item {ItemId} was not reflected in inventory; retrying ({Attempt}/{MaxAttempts})", purchaseItem.ItemId, _buyAttempts + 1, 3);
SetState(EState.BuyItem);
return ETaskResult.StillRunning;
}
logger.LogError("Purchase of item {ItemId} failed after {Attempts} attempts", purchaseItem.ItemId, _buyAttempts);
_failed = true;
SetState(EState.CloseShop);
return ETaskResult.StillRunning;
case 38:
}
if (!_throttle.TryReset(0.5))
{
return ETaskResult.StillRunning;
case 8:
}
logger.LogDebug("Verified purchase of item {ItemId}: inventory {Before} -> {After}", purchaseItem.ItemId, _countBeforeBuy, inventoryItemCount);
_purchaseIndex++;
if (_purchaseIndex < base.Task.Purchases.Count)
{
_buyAttempts = 0;
ILogger<VendorPurchaseExecutor> logger2 = logger;
string text2 = global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-274284666);
object[] array = new object[2];
int purchaseIndex2 = _purchaseIndex;
num4 = 1;
num5 = purchaseIndex2;
int num12 = num5 ^ num4;
int num13 = num5 & num4;
array[0] = num12 + (num13 + num13);
array[1] = base.Task.Purchases.Count;
_206E_206D_206F_202B_206D_206E_202E_200B_202A_202E_200C_202C_202C_202C_206F_202E_206E_200C_202D_202A_202A_200D_206A_202A_206C_206A_206E_200E_206F_206B_202B_202B_206B_200E_200F_206F_206E_200E_202B_206B_202E((ILogger)logger2, text2, array);
logger.LogDebug("Buying next item ({Index}/{Total})", _purchaseIndex + 1, base.Task.Purchases.Count);
SetState(EState.BuyItem);
num2 = 839409663;
break;
}
case 20:
_206E_206D_206F_202B_206D_206E_202E_200B_202A_202E_200C_202C_202C_202C_206F_202E_206E_200C_202D_202A_202A_200D_206A_202A_206C_206A_206E_200E_206F_206B_202B_202B_206B_200E_200F_206F_206E_200E_202B_206B_202E((ILogger)logger, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(1561512200), Array.Empty<object>());
SetState(EState.CloseShop);
num2 = 839409663;
break;
case 27:
return ETaskResult.StillRunning;
case 49:
num2 = ((!_failed) ? 839409610 : 839409625);
break;
case 25:
_206E_206D_206F_202B_206D_206E_202E_200B_202A_202E_200C_202C_202C_202C_206F_202E_206E_200C_202D_202A_202A_200D_206A_202A_206C_206A_206E_200E_206F_206B_202B_202B_206B_200E_200F_206F_206E_200E_202B_206B_202E((ILogger)logger, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(816270239), new object[1] { base.Task.VendorNpcId });
SetState(EState.WaitForShopOrDialog);
num2 = 839409618;
break;
case 22:
return ETaskResult.StillRunning;
case 39:
num2 = 839409662;
break;
case 43:
goto IL_0831;
case 15:
switch (_state)
{
case EState.WaitForClose:
break;
case EState.BuyItem:
goto IL_0195;
case EState.WaitForShopOrDialog:
goto IL_0292;
case EState.CloseShop:
goto IL_055e;
case EState.WaitForBuy:
goto IL_0831;
default:
goto IL_0892;
case EState.InteractWithNpc:
goto IL_0a14;
}
goto case 34;
case 40:
else
{
logger.LogDebug("All purchases complete, closing shop");
SetState(EState.CloseShop);
}
return ETaskResult.StillRunning;
}
case EState.CloseShop:
if (!_throttle.TryReset(0.5))
{
ILogger<VendorPurchaseExecutor> logger = logger;
string text = global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(-366147931);
object[] obj = new object[3] { purchaseItem.ItemId, null, null };
int buyAttempts = _buyAttempts;
num4 = 1;
num5 = buyAttempts;
int num10 = num5 ^ num4;
int num11 = num5 & num4;
obj[1] = num10 + (num11 + num11);
obj[2] = 3;
_206D_202B_206F_206B_200B_206E_202B_206A_200B_206C_206C_202C_206A_206B_206F_206B_200D_200B_206A_206A_202A_202B_200F_202E_202B_200B_200E_200B_206D_200B_202E_202D_202B_206A_206D_202D_202A_200B_200B_200C_202E((ILogger)logger, text, obj);
SetState(EState.BuyItem);
return ETaskResult.StillRunning;
}
case 42:
num2 = ((!_206F_200D_202E_206A_206F_200C_206A_200C_202B_206F_206A_200D_200E_206B_200E_200D_200B_200D_202A_206A_200F_206E_206A_206A_200D_206E_202C_206F_202D_206A_206B_206F_200D_206A_206B_206E_206C_206A_206A_206A_202E(gameGui)) ? 839409642 : 839409626);
break;
case 45:
if (VendorPurchaseActions.TryCloseShop(gameGui))
{
logger.LogDebug("Closing shop");
SetState(EState.WaitForClose);
}
return ETaskResult.StillRunning;
case EState.WaitForClose:
if (VendorPurchaseActions.IsShopReady(gameGui))
{
return ETaskResult.StillRunning;
case 0:
num2 = ((!_206B_200B_206C_202D_206B_206C_202E_202E_202C_206E_206E_200C_206F_202D_200B_200C_206A_200B_202B_202C_206C_206D_206A_202A_200F_200C_206C_200F_202A_200D_206A_206C_200E_202A_206B_206B_202C_200D_200C_200D_202E(gameGui)) ? 839409628 : 839409627);
break;
case 12:
num2 = (_throttle.TryReset(0.5) ? 839409632 : 839409647);
break;
case 29:
num2 = ((!_206F_200D_202E_206A_206F_200C_206A_200C_202B_206F_206A_200D_200E_206B_200E_200D_200B_200D_202A_206A_200F_206E_206A_206A_200D_206E_202C_206F_202D_206A_206B_206F_200D_206A_206B_206E_206C_206A_206A_206A_202E(gameGui)) ? 839409658 : 839409639);
break;
case 3:
_206E_206D_206F_202B_206D_206E_202E_200B_202A_202E_200C_202C_202C_202C_206F_202E_206E_200C_202D_202A_202A_200D_206A_202A_206C_206A_206E_200E_206F_206B_202B_202B_206B_200E_200F_206F_206E_200E_202B_206B_202E((ILogger)logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(-1460452754), Array.Empty<object>());
return ETaskResult.TaskComplete;
case 4:
return ETaskResult.StillRunning;
case 28:
num2 = ((!_206D_202A_202D_200F_206C_202A_200D_206A_202E_206A_206B_200C_206F_206B_202C_206D_200C_206C_202D_200F_202D_200F_206C_206C_200C_200D_202D_200C_202A_200D_202D_206D_200B_200D_202C_206D_206F_206A_202A_202C_202E(gameGui)) ? 839409637 : 839409623);
break;
case 48:
_200D_206B_206A_200C_200F_206A_202A_200E_200F_206D_202E_200D_200B_206A_200D_202B_200D_206C_202E_206A_202C_206B_202E_206F_206A_202B_202B_206B_202A_200C_202B_200B_202B_202C_206A_200C_202D_206B_206D_202B_202E(gameGui, -1);
_206E_206D_206F_202B_206D_206E_202E_200B_202A_202E_200C_202C_202C_202C_206F_202E_206E_200C_202D_202A_202A_200D_206A_202A_206C_206A_206E_200E_206F_206B_202B_202B_206B_200E_200F_206F_206E_200E_202B_206B_202E((ILogger)logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(408167584), Array.Empty<object>());
return ETaskResult.StillRunning;
case 5:
goto IL_0a14;
case 16:
}
if (VendorPurchaseActions.IsDialogReady(gameGui))
{
if (!_throttle.TryReset(0.5))
{
_206D_202B_206F_206B_200B_206E_202B_206A_200B_206C_206C_202C_206A_206B_206F_206B_200D_200B_206A_206A_202A_202B_200F_202E_202B_200B_200E_200B_206D_200B_202E_202D_202B_206A_206D_202D_202A_200B_200B_200C_202E((ILogger)logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(1743816671), Array.Empty<object>());
return ETaskResult.StillRunning;
}
VendorPurchaseActions.TrySelectDialogOption(gameGui, -1);
logger.LogDebug("Dismissing post-shop dialog");
return ETaskResult.StillRunning;
}
if (!condition[ConditionFlag.OccupiedInEvent])
{
if (_failed)
{
logger.LogWarning("Shop closed after failed purchase, retrying");
return ETaskResult.RetryStep;
}
IL_0a14:
num2 = (_throttle.TryReset(1.0) ? 839409624 : 839409619);
break;
IL_0892:
num2 = 839409646;
break;
IL_0831:
purchaseItem = base.Task.Purchases[_purchaseIndex];
num2 = (_confirmationClicked ? 839409628 : 839409609);
break;
IL_0292:
num2 = ((!_206F_200E_200B_206B_202C_206A_206B_200E_206B_202E_206A_206D_202C_200D_200F_200B_200B_206B_202D_200C_200D_202C_202A_200E_206D_200E_200B_202A_206A_206F_206F_202C_202B_200F_202D_206C_200F_202C_202A_206B_202E(gameGui)) ? 839409620 : 839409640);
break;
IL_0195:
num2 = (_throttle.TryReset(0.5) ? 839409645 : 839409613);
break;
IL_055e:
num2 = (_throttle.TryReset(0.5) ? 839409621 : 839409630);
break;
logger.LogDebug("Shop closed, vendor purchase complete");
return ETaskResult.TaskComplete;
}
return ETaskResult.StillRunning;
default:
return ETaskResult.StillRunning;
}
}
private void SetState(EState state)
{
_state = state;
_stateStartMs = _206E_206E_200E_202B_202A_206A_200C_206D_206A_202D_202B_206E_206D_206E_200C_200D_202A_200D_200C_202D_202E_200F_206D_206E_206C_202C_206C_206A_200E_206D_200F_206C_206E_202B_206A_206B_200E_200F_206E_206B_202E();
_stateStartMs = Environment.TickCount64;
}
public override bool ShouldInterruptOnDamage()
{
return false;
}
static long _206E_206E_200E_202B_202A_206A_200C_206D_206A_202D_202B_206E_206D_206E_200C_200D_202A_200D_200C_202D_202E_200F_206D_206E_206C_202C_206C_206A_200E_206D_200F_206C_206E_202B_206A_206B_200E_200F_206E_206B_202E()
{
return Environment.TickCount64;
}
static void _206D_202B_206F_206B_200B_206E_202B_206A_200B_206C_206C_202C_206A_206B_206F_206B_200D_200B_206A_206A_202A_202B_200F_202E_202B_200B_200E_200B_206D_200B_202E_202D_202B_206A_206D_202D_202A_200B_200B_200C_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogWarning(P_1, P_2);
}
static void _206E_206D_206F_202B_206D_206E_202E_200B_202A_202E_200C_202C_202C_202C_206F_202E_206E_200C_202D_202A_202A_200D_206A_202A_206C_206A_206E_200E_206F_206B_202B_202B_206B_200E_200F_206F_206E_200E_202B_206B_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static bool _206F_200E_200B_206B_202C_206A_206B_200E_206B_202E_206A_206D_202C_200D_200F_200B_200B_206B_202D_200C_200D_202C_202A_200E_206D_200E_200B_202A_206A_206F_206F_202C_202B_200F_202D_206C_200F_202C_202A_206B_202E(IGameGui P_0)
{
return VendorPurchaseActions.IsShopReady(P_0);
}
static bool _206F_200D_202E_206A_206F_200C_206A_200C_202B_206F_206A_200D_200E_206B_200E_200D_200B_200D_202A_206A_200F_206E_206A_206A_200D_206E_202C_206F_202D_206A_206B_206F_200D_206A_206B_206E_206C_206A_206A_206A_202E(IGameGui P_0)
{
return VendorPurchaseActions.IsDialogReady(P_0);
}
static bool _200D_206B_206A_200C_200F_206A_202A_200E_200F_206D_202E_200D_200B_206A_200D_202B_200D_206C_202E_206A_202C_206B_202E_206F_206A_202B_202B_206B_202A_200C_202B_200B_202B_202C_206A_200C_202D_206B_206D_202B_202E(IGameGui P_0, int P_1)
{
return VendorPurchaseActions.TrySelectDialogOption(P_0, P_1);
}
static int _200B_206D_202D_202A_202A_202E_206A_206E_206A_200C_202A_206C_206D_200E_206D_200D_206B_202D_202D_206A_206C_202C_202D_200F_206E_202D_206F_206F_206C_202C_202B_202A_200E_200E_200D_202B_200E_200C_206C_200D_202E(IGameGui P_0, uint P_1)
{
return VendorPurchaseActions.FindItemDisplayIndex(P_0, P_1);
}
static void _200E_202B_200C_200C_206A_200E_206D_202D_200C_200F_200F_202C_200C_206F_206A_206D_202A_202A_202A_200F_206B_200C_200E_206C_206B_206F_202E_200E_206B_206F_206C_202E_206B_206B_202B_200C_202B_200C_206E_200D_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogError(P_1, P_2);
}
static bool _206F_200D_206B_206C_202C_202D_206A_200F_200B_206E_206A_206B_200C_206D_200D_200E_206B_202E_200F_206B_200C_200E_206F_206D_202A_202C_200B_206D_202A_206D_200E_202D_202A_200E_202A_200F_200C_202E_202B_202A_202E(IGameGui P_0, int P_1, int P_2)
{
return VendorPurchaseActions.TryBuyItem(P_0, P_1, P_2);
}
static bool _206B_200B_206C_202D_206B_206C_202E_202E_202C_206E_206E_200C_206F_202D_200B_200C_206A_200B_202B_202C_206C_206D_206A_202A_200F_200C_206C_200F_202A_200D_206A_206C_200E_202A_206B_206B_202C_200D_200C_200D_202E(IGameGui P_0)
{
return VendorPurchaseActions.TryConfirmPurchase(P_0);
}
static bool _206D_202A_202D_200F_206C_202A_200D_206A_202E_206A_206B_200C_206F_206B_202C_206D_200C_206C_202D_200F_202D_200F_206C_206C_200C_200D_202D_200C_202A_200D_202D_206D_200B_200D_202C_206D_206F_206A_202A_202C_202E(IGameGui P_0)
{
return VendorPurchaseActions.TryCloseShop(P_0);
}
static bool _202D_202E_202D_206E_202A_202A_206B_206B_202C_202E_200B_200D_202B_202C_202E_200B_202B_200E_200D_206E_202B_206B_206C_206C_202A_202D_202B_202E_200C_200C_206C_202A_200D_200C_200F_202C_202C_200F_206B_202D_202E(ICondition P_0, ConditionFlag P_1)
{
return P_0[P_1];
}
}

View file

@ -1,244 +1,18 @@
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Text;
using Questionable.Controller.Steps;
namespace Questionable.Controller.CustomDelivery;
internal sealed record VendorPurchaseTask(uint VendorNpcId, IReadOnlyList<PurchaseItem> Purchases, int DialogOptionIndex = 0) : ITask
{
internal readonly record struct PurchaseItem(uint ItemId, int Quantity)
{
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
public override string ToString()
{
StringBuilder stringBuilder = _206F_200F_200F_206B_200C_206F_200D_202E_206F_202D_200D_200E_202C_202E_206F_206C_200D_206D_206F_206D_206E_206A_206B_206F_206E_200D_200C_206B_200F_200D_200C_202A_202B_200F_206D_200E_202C_202D_206A_202C_202E();
_202E_200B_206F_206D_202A_200F_206B_200D_200F_202C_202E_200B_206B_206D_202D_206B_202B_206F_206A_200E_202C_202C_202A_206B_206A_206B_202B_206A_202B_206A_206D_202D_206F_206C_206C_206A_206D_206C_202B_202E_202E(stringBuilder, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(1504160608));
_202E_200B_206F_206D_202A_200F_206B_200D_200F_202C_202E_200B_206B_206D_202D_206B_202B_206F_206A_200E_202C_202C_202A_206B_206A_206B_202B_206A_202B_206A_206D_202D_206F_206C_206C_206A_206D_206C_202B_202E_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<string>(1664411125));
int num = ((!PrintMembers(stringBuilder)) ? 1320909858 : 1320909859);
while (true)
{
int num2 = num;
int num3 = 1320909858;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 2:
num = 1320909859;
break;
case 1:
_202A_202A_206F_206C_206B_200F_202A_200F_200C_200D_206B_200E_206B_200E_200E_202D_206F_202E_206A_202E_206B_202B_200E_200F_200B_202E_200F_200B_202C_200D_200B_202A_206E_206D_200C_202C_202E_206A_200B_200F_202E(stringBuilder, ' ');
num = 1320909858;
break;
case 0:
_202A_202A_206F_206C_206B_200F_202A_200F_200C_200D_206B_200E_206B_200E_200E_202D_206F_202E_206A_202E_206B_202B_200E_200F_200B_202E_200F_200B_202C_200D_200B_202A_206E_206D_200C_202C_202E_206A_200B_200F_202E(stringBuilder, '}');
return _206C_202D_206D_200E_200B_200F_200E_200C_202C_206D_206A_202E_202E_200C_206D_202E_200B_202C_206B_200F_206A_200D_202E_206D_200B_206A_202B_202C_200F_200F_200B_202E_202C_202B_200E_202B_206C_206E_200E_200C_202E((object)stringBuilder);
}
}
}
internal readonly record struct PurchaseItem(uint ItemId, int Quantity);
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
private bool PrintMembers(StringBuilder builder)
{
_202E_200B_206F_206D_202A_200F_206B_200D_200F_202C_202E_200B_206B_206D_202D_206B_202B_206F_206A_200E_202C_202C_202A_206B_206A_206B_202B_206A_202B_206A_206D_202D_206F_206C_206C_206A_206D_206C_202B_202E_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<string>(-1176260912));
_202E_200B_206F_206D_202A_200F_206B_200D_200F_202C_202E_200B_206B_206D_202D_206B_202B_206F_206A_200E_202C_202C_202A_206B_206A_206B_202B_206A_202B_206A_206D_202D_206F_206C_206C_206A_206D_206C_202B_202E_202E(builder, ItemId.ToString());
_202E_200B_206F_206D_202A_200F_206B_200D_200F_202C_202E_200B_206B_206D_202D_206B_202B_206F_206A_200E_202C_202C_202A_206B_206A_206B_202B_206A_202B_206A_206D_202D_206F_206C_206C_206A_206D_206C_202B_202E_202E(builder, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-640041388));
_202E_200B_206F_206D_202A_200F_206B_200D_200F_202C_202E_200B_206B_206D_202D_206B_202B_206F_206A_200E_202C_202C_202A_206B_206A_206B_202B_206A_202B_206A_206D_202D_206F_206C_206C_206A_206D_206C_202B_202E_202E(builder, Quantity.ToString());
return true;
}
[CompilerGenerated]
public bool Equals(PurchaseItem other)
{
int num = ((!EqualityComparer<uint>.Default.Equals(ItemId, other.ItemId)) ? (-997799700) : (-997799699));
while (true)
{
int num2 = num;
int num3 = -997799700;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 2:
goto IL_0058;
case 1:
return EqualityComparer<int>.Default.Equals(Quantity, other.Quantity);
case 0:
return false;
}
continue;
IL_0058:
num = -997799699;
}
}
bool IEquatable<PurchaseItem>.Equals(PurchaseItem other)
{
//ILSpy generated this explicit interface implementation from .override directive in Equals
return this.Equals(other);
}
static StringBuilder _206F_200F_200F_206B_200C_206F_200D_202E_206F_202D_200D_200E_202C_202E_206F_206C_200D_206D_206F_206D_206E_206A_206B_206F_206E_200D_200C_206B_200F_200D_200C_202A_202B_200F_206D_200E_202C_202D_206A_202C_202E()
{
return new StringBuilder();
}
static StringBuilder _202E_200B_206F_206D_202A_200F_206B_200D_200F_202C_202E_200B_206B_206D_202D_206B_202B_206F_206A_200E_202C_202C_202A_206B_206A_206B_202B_206A_202B_206A_206D_202D_206F_206C_206C_206A_206D_206C_202B_202E_202E(StringBuilder P_0, string P_1)
{
return P_0.Append(P_1);
}
static StringBuilder _202A_202A_206F_206C_206B_200F_202A_200F_200C_200D_206B_200E_206B_200E_200E_202D_206F_202E_206A_202E_206B_202B_200E_200F_200B_202E_200F_200B_202C_200D_200B_202A_206E_206D_200C_202C_202E_206A_200B_200F_202E(StringBuilder P_0, char P_1)
{
return P_0.Append(P_1);
}
static string _206C_202D_206D_200E_200B_200F_200E_200C_202C_206D_206A_202E_202E_200C_206D_202E_200B_202C_206B_200F_206A_200D_202E_206D_200B_206A_202B_202C_200F_200F_200B_202E_202C_202B_200E_202B_206C_206E_200E_200C_202E(object P_0)
{
return P_0.ToString();
}
}
[CompilerGenerated]
private Type EqualityContract
{
[CompilerGenerated]
get
{
return _206B_206B_206F_200C_206F_202C_206A_200C_206B_206C_200C_200B_200F_200B_202E_202A_200E_200C_206E_206B_202D_202E_202D_206A_200F_202B_202E_202B_206A_206F_206A_200B_200C_200D_200B_206A_206D_200B_206B_202E(typeof(VendorPurchaseTask).TypeHandle);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
public override string ToString()
{
int num = ((Purchases.Count == 1) ? 681809870 : 681809871);
while (true)
if (Purchases.Count == 1)
{
int num2 = num;
int num3 = 681809870;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
goto IL_0052;
case 0:
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler2 = new DefaultInterpolatedStringHandler(34, 4);
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<string>(-426748651));
defaultInterpolatedStringHandler2.AppendFormatted(VendorNpcId);
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<string>(-1317325121));
defaultInterpolatedStringHandler2.AppendFormatted(Purchases[0].ItemId);
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<string>(-1725354679));
defaultInterpolatedStringHandler2.AppendFormatted(Purchases[0].Quantity);
defaultInterpolatedStringHandler2.AppendLiteral(global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(1203794399));
defaultInterpolatedStringHandler2.AppendFormatted(DialogOptionIndex);
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<string>(1618480346));
return defaultInterpolatedStringHandler2.ToStringAndClear();
}
case 1:
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(33, 3);
defaultInterpolatedStringHandler.AppendLiteral(global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-1531781508));
defaultInterpolatedStringHandler.AppendFormatted(VendorNpcId);
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<string>(1467939024));
defaultInterpolatedStringHandler.AppendFormatted(Purchases.Count);
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<string>(1987907938));
defaultInterpolatedStringHandler.AppendFormatted(DialogOptionIndex);
defaultInterpolatedStringHandler.AppendLiteral(global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(1735737295));
return defaultInterpolatedStringHandler.ToStringAndClear();
}
}
continue;
IL_0052:
num = 681809871;
return $"VendorPurchase({VendorNpcId}, item {Purchases[0].ItemId} x{Purchases[0].Quantity}, dialog {DialogOptionIndex})";
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
private bool PrintMembers(StringBuilder builder)
{
_200C_200B_202C_202A_206A_206D_206B_200C_202A_202C_202A_202A_202E_206E_206B_206B_200B_206B_200B_200E_206A_200C_206A_206C_206E_200F_202E_200E_202D_206E_202D_202C_202E_202A_206A_206C_206D_200D_200E_200E_202E();
_206A_206F_206E_206E_202A_202A_206A_200C_200F_200B_206F_206A_202A_200C_206A_202E_206F_200E_206C_206B_200F_206A_200E_200E_206F_200D_202B_202B_200D_206F_206D_200C_200B_206F_206E_200C_206E_200B_200D_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<string>(206754998));
_206A_206F_206E_206E_202A_202A_206A_200C_200F_200B_206F_206A_202A_200C_206A_202E_206F_200E_206C_206B_200F_206A_200E_200E_206F_200D_202B_202B_200D_206F_206D_200C_200B_206F_206E_200C_206E_200B_200D_202E(builder, VendorNpcId.ToString());
_206A_206F_206E_206E_202A_202A_206A_200C_200F_200B_206F_206A_202A_200C_206A_202E_206F_200E_206C_206B_200F_206A_200E_200E_206F_200D_202B_202B_200D_206F_206D_200C_200B_206F_206E_200C_206E_200B_200D_202E(builder, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(166759684));
_202E_206F_200B_202B_202B_202E_200F_206C_200B_200B_202A_206F_200E_200E_206B_202E_202B_206E_206C_202B_200F_200E_202B_206F_202D_202A_206A_200E_200E_206F_206A_200B_206E_206D_206F_206F_202C_202D_206A_202A_202E(builder, (object)Purchases);
_206A_206F_206E_206E_202A_202A_206A_200C_200F_200B_206F_206A_202A_200C_206A_202E_206F_200E_206C_206B_200F_206A_200E_200E_206F_200D_202B_202B_200D_206F_206D_200C_200B_206F_206E_200C_206E_200B_200D_202E(builder, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(474766985));
_206A_206F_206E_206E_202A_202A_206A_200C_200F_200B_206F_206A_202A_200C_206A_202E_206F_200E_206C_206B_200F_206A_200E_200E_206F_200D_202B_202B_200D_206F_206D_200C_200B_206F_206E_200C_206E_200B_200D_202E(builder, DialogOptionIndex.ToString());
return true;
}
[CompilerGenerated]
public bool Equals(VendorPurchaseTask? other)
{
int num = (((object)this == other) ? (-1933996366) : (-1933996367));
while (true)
{
int num2 = num;
int num3 = -1933996361;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
num = -1933996367;
break;
case 5:
return true;
case 6:
num = (((object)other == null) ? (-1933996364) : (-1933996362));
break;
case 2:
return EqualityComparer<int>.Default.Equals(DialogOptionIndex, other.DialogOptionIndex);
case 7:
num = ((!EqualityComparer<uint>.Default.Equals(VendorNpcId, other.VendorNpcId)) ? (-1933996364) : (-1933996365));
break;
case 4:
num = ((!EqualityComparer<IReadOnlyList<PurchaseItem>>.Default.Equals(Purchases, other.Purchases)) ? (-1933996364) : (-1933996363));
break;
case 1:
num = ((!_202C_202E_200C_202E_202C_200D_200B_200F_206C_202E_202A_200D_200C_200D_202E_206F_202A_202C_202A_200F_200D_202D_206F_206D_206B_206F_206A_202E_200F_202D_202A_202A_200E_200B_202D_206D_206B_200B_202A_202B_202E(EqualityContract, other.EqualityContract)) ? (-1933996364) : (-1933996368));
break;
case 3:
return false;
}
}
}
bool IEquatable<VendorPurchaseTask>.Equals(VendorPurchaseTask? other)
{
//ILSpy generated this explicit interface implementation from .override directive in Equals
return this.Equals(other);
}
static Type _206B_206B_206F_200C_206F_202C_206A_200C_206B_206C_200C_200B_200F_200B_202E_202A_200E_200C_206E_206B_202D_202E_202D_206A_200F_202B_202E_202B_206A_206F_206A_200B_200C_200D_200B_206A_206D_200B_206B_202E(RuntimeTypeHandle P_0)
{
return Type.GetTypeFromHandle(P_0);
}
static void _200C_200B_202C_202A_206A_206D_206B_200C_202A_202C_202A_202A_202E_206E_206B_206B_200B_206B_200B_200E_206A_200C_206A_206C_206E_200F_202E_200E_202D_206E_202D_202C_202E_202A_206A_206C_206D_200D_200E_200E_202E()
{
RuntimeHelpers.EnsureSufficientExecutionStack();
}
static StringBuilder _206A_206F_206E_206E_202A_202A_206A_200C_200F_200B_206F_206A_202A_200C_206A_202E_206F_200E_206C_206B_200F_206A_200E_200E_206F_200D_202B_202B_200D_206F_206D_200C_200B_206F_206E_200C_206E_200B_200D_202E(StringBuilder P_0, string P_1)
{
return P_0.Append(P_1);
}
static StringBuilder _202E_206F_200B_202B_202B_202E_200F_206C_200B_200B_202A_206F_200E_200E_206B_202E_202B_206E_206C_202B_200F_200E_202B_206F_202D_202A_206A_200E_200E_206F_206A_200B_206E_206D_206F_206F_202C_202D_206A_202A_202E(StringBuilder P_0, object P_1)
{
return P_0.Append(P_1);
}
static bool _202C_202E_200C_202E_202C_200D_200B_200F_206C_202E_202A_200D_200C_200D_202E_206F_202A_202C_202A_200F_200D_202D_206F_206D_206B_206F_206A_202E_200F_202D_202A_202A_200E_200B_202D_206D_206B_200B_202A_202B_202E(Type P_0, Type P_1)
{
return P_0 == P_1;
return $"VendorPurchase({VendorNpcId}, {Purchases.Count} items, dialog {DialogOptionIndex})";
}
}

View file

@ -1,8 +1,5 @@
using System;
using System.Collections.Generic;
using System.Numerics;
using System.Runtime.CompilerServices;
using System.Text;
using Dalamud.Plugin.Services;
using LLib.GameData;
using LLib.Shop;
@ -14,579 +11,100 @@ namespace Questionable.Controller.CustomDelivery;
internal sealed class VendorResolverService(IDataManager dataManager, VendorResolver vendorResolver, NpcPositionCache npcPositionCache, ILogger<VendorResolverService> logger)
{
internal readonly record struct IngredientInfo(uint ItemId, int CountPerCraft)
{
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
public override string ToString()
{
StringBuilder stringBuilder = _200E_206E_200E_206F_200D_200E_202C_206A_200C_202A_206B_200E_200E_202E_202C_200D_202A_206E_206D_200C_200F_202A_206C_200E_202D_200B_200C_206D_206A_206B_202D_206B_200C_206C_206F_206B_202D_202E_206C_200D_202E();
_202C_206A_206F_206A_200F_206C_200E_200B_202E_200F_202E_200C_206F_202B_206C_206E_202C_200C_206A_202B_206E_202E_200F_200E_206E_202E_200B_206C_200D_206F_200E_202B_202D_206D_202A_200B_206C_206A_206F_206C_202E(stringBuilder, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(1900362320));
_202C_206A_206F_206A_200F_206C_200E_200B_202E_200F_202E_200C_206F_202B_206C_206E_202C_200C_206A_202B_206E_202E_200F_200E_206E_202E_200B_206C_200D_206F_200E_202B_202D_206D_202A_200B_206C_206A_206F_206C_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<string>(556540328));
int num = ((!PrintMembers(stringBuilder)) ? 985551290 : 985551291);
while (true)
{
int num2 = num;
int num3 = 985551290;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
num = 985551291;
break;
case 0:
_202D_206F_206D_200C_206E_206F_200C_200D_202C_200B_202D_202B_206E_202A_206F_200F_200C_200B_206C_202B_206F_200C_202E_202D_200E_202D_202B_200F_200D_202D_200B_202C_202E_200E_206A_202E_206A_206E_202B_206C_202E(stringBuilder, '}');
return _200C_206D_202E_202B_202E_202D_206B_200C_206B_202B_206D_200B_206F_206F_200C_200E_206F_202B_200B_200C_202D_206A_202C_206A_206D_200F_206E_200F_200E_206C_202B_200B_202E_202E_200B_202C_202D_202D_200E_206E_202E((object)stringBuilder);
case 1:
_202D_206F_206D_200C_206E_206F_200C_200D_202C_200B_202D_202B_206E_202A_206F_200F_200C_200B_206C_202B_206F_200C_202E_202D_200E_202D_202B_200F_200D_202D_200B_202C_202E_200E_206A_202E_206A_206E_202B_206C_202E(stringBuilder, ' ');
num = 985551290;
break;
}
}
}
internal readonly record struct IngredientInfo(uint ItemId, int CountPerCraft);
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
private bool PrintMembers(StringBuilder builder)
{
_202C_206A_206F_206A_200F_206C_200E_200B_202E_200F_202E_200C_206F_202B_206C_206E_202C_200C_206A_202B_206E_202E_200F_200E_206E_202E_200B_206C_200D_206F_200E_202B_202D_206D_202A_200B_206C_206A_206F_206C_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<string>(-1176260912));
_202C_206A_206F_206A_200F_206C_200E_200B_202E_200F_202E_200C_206F_202B_206C_206E_202C_200C_206A_202B_206E_202E_200F_200E_206E_202E_200B_206C_200D_206F_200E_202B_202D_206D_202A_200B_206C_206A_206F_206C_202E(builder, ItemId.ToString());
_202C_206A_206F_206A_200F_206C_200E_200B_202E_200F_202E_200C_206F_202B_206C_206E_202C_200C_206A_202B_206E_202E_200F_200E_206E_202E_200B_206C_200D_206F_200E_202B_202D_206D_202A_200B_206C_206A_206F_206C_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<string>(-710805120));
_202C_206A_206F_206A_200F_206C_200E_200B_202E_200F_202E_200C_206F_202B_206C_206E_202C_200C_206A_202B_206E_202E_200F_200E_206E_202E_200B_206C_200D_206F_200E_202B_202D_206D_202A_200B_206C_206A_206F_206C_202E(builder, CountPerCraft.ToString());
return true;
}
internal readonly record struct RecipeInfo(uint RecipeId, uint CraftedItemId, IReadOnlyList<IngredientInfo> Ingredients, EClassJob CraftingClass);
[CompilerGenerated]
public bool Equals(IngredientInfo other)
{
int num = ((!EqualityComparer<uint>.Default.Equals(ItemId, other.ItemId)) ? (-577386697) : (-577386700));
while (true)
{
int num2 = num;
int num3 = -577386698;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 1:
return false;
case 2:
return EqualityComparer<int>.Default.Equals(CountPerCraft, other.CountPerCraft);
case 0:
goto IL_0071;
}
continue;
IL_0071:
num = -577386700;
}
}
internal readonly record struct VendorInfo(uint ShopId, uint VendorNpcId, ushort TerritoryId, Vector3 Position, int DialogOptionIndex);
bool IEquatable<IngredientInfo>.Equals(IngredientInfo other)
{
//ILSpy generated this explicit interface implementation from .override directive in Equals
return this.Equals(other);
}
static StringBuilder _200E_206E_200E_206F_200D_200E_202C_206A_200C_202A_206B_200E_200E_202E_202C_200D_202A_206E_206D_200C_200F_202A_206C_200E_202D_200B_200C_206D_206A_206B_202D_206B_200C_206C_206F_206B_202D_202E_206C_200D_202E()
{
return new StringBuilder();
}
static StringBuilder _202C_206A_206F_206A_200F_206C_200E_200B_202E_200F_202E_200C_206F_202B_206C_206E_202C_200C_206A_202B_206E_202E_200F_200E_206E_202E_200B_206C_200D_206F_200E_202B_202D_206D_202A_200B_206C_206A_206F_206C_202E(StringBuilder P_0, string P_1)
{
return P_0.Append(P_1);
}
static StringBuilder _202D_206F_206D_200C_206E_206F_200C_200D_202C_200B_202D_202B_206E_202A_206F_200F_200C_200B_206C_202B_206F_200C_202E_202D_200E_202D_202B_200F_200D_202D_200B_202C_202E_200E_206A_202E_206A_206E_202B_206C_202E(StringBuilder P_0, char P_1)
{
return P_0.Append(P_1);
}
static string _200C_206D_202E_202B_202E_202D_206B_200C_206B_202B_206D_200B_206F_206F_200C_200E_206F_202B_200B_200C_202D_206A_202C_206A_206D_200F_206E_200F_200E_206C_202B_200B_202E_202E_200B_202C_202D_202D_200E_206E_202E(object P_0)
{
return P_0.ToString();
}
}
internal readonly record struct RecipeInfo(uint RecipeId, uint CraftedItemId, IReadOnlyList<IngredientInfo> Ingredients, EClassJob CraftingClass)
{
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
public override string ToString()
{
StringBuilder stringBuilder = _206C_206D_202C_206A_206C_206D_206A_200C_202C_206A_206A_202B_206F_200E_206C_206F_206F_200D_200F_200C_206E_202C_206E_206F_202D_202B_200F_206F_202A_206E_202E_202E_206F_202C_202C_206F_202E_200E_202A_206F_202E();
_200E_202B_200F_200B_200F_206A_200E_206C_206C_206E_200C_206F_206B_202E_206F_202A_200E_202D_202C_206E_202A_202A_206D_200F_202D_206E_202A_202E_206E_200F_206D_200F_200C_206E_200B_202C_206D_200D_202C_200E_202E(stringBuilder, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(1038169593));
_200E_202B_200F_200B_200F_206A_200E_206C_206C_206E_200C_206F_206B_202E_206F_202A_200E_202D_202C_206E_202A_202A_206D_200F_202D_206E_202A_202E_206E_200F_206D_200F_200C_206E_200B_202C_206D_200D_202C_200E_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<string>(1664411125));
int num = ((!PrintMembers(stringBuilder)) ? 935744891 : 935744888);
while (true)
{
int num2 = num;
int num3 = 935744890;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
num = 935744888;
break;
case 1:
_202A_202B_202D_206F_206C_206D_202E_202A_206D_200F_200D_202A_202A_200E_206E_206E_206B_200D_206A_202C_200B_206A_202A_202C_206D_200F_200F_200C_200E_206E_200D_206B_202E_200F_202D_200B_202B_202C_202B_202C_202E(stringBuilder, '}');
return _206C_202A_202D_202C_206F_206A_200C_202B_200C_200E_206B_200C_200E_206D_206E_202C_206F_206E_200E_200C_202C_206E_206A_202D_206B_202B_200D_200E_202E_206D_206C_202C_200C_206F_200B_202C_200F_202B_200F_206D_202E((object)stringBuilder);
case 2:
_202A_202B_202D_206F_206C_206D_202E_202A_206D_200F_200D_202A_202A_200E_206E_206E_206B_200D_206A_202C_200B_206A_202A_202C_206D_200F_200F_200C_200E_206E_200D_206B_202E_200F_202D_200B_202B_202C_202B_202C_202E(stringBuilder, ' ');
num = 935744891;
break;
}
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
private bool PrintMembers(StringBuilder builder)
{
_200E_202B_200F_200B_200F_206A_200E_206C_206C_206E_200C_206F_206B_202E_206F_202A_200E_202D_202C_206E_202A_202A_206D_200F_202D_206E_202A_202E_206E_200F_206D_200F_200C_206E_200B_202C_206D_200D_202C_200E_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<string>(-1168472186));
_200E_202B_200F_200B_200F_206A_200E_206C_206C_206E_200C_206F_206B_202E_206F_202A_200E_202D_202C_206E_202A_202A_206D_200F_202D_206E_202A_202E_206E_200F_206D_200F_200C_206E_200B_202C_206D_200D_202C_200E_202E(builder, RecipeId.ToString());
_200E_202B_200F_200B_200F_206A_200E_206C_206C_206E_200C_206F_206B_202E_206F_202A_200E_202D_202C_206E_202A_202A_206D_200F_202D_206E_202A_202E_206E_200F_206D_200F_200C_206E_200B_202C_206D_200D_202C_200E_202E(builder, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(-229385593));
_200E_202B_200F_200B_200F_206A_200E_206C_206C_206E_200C_206F_206B_202E_206F_202A_200E_202D_202C_206E_202A_202A_206D_200F_202D_206E_202A_202E_206E_200F_206D_200F_200C_206E_200B_202C_206D_200D_202C_200E_202E(builder, CraftedItemId.ToString());
_200E_202B_200F_200B_200F_206A_200E_206C_206C_206E_200C_206F_206B_202E_206F_202A_200E_202D_202C_206E_202A_202A_206D_200F_202D_206E_202A_202E_206E_200F_206D_200F_200C_206E_200B_202C_206D_200D_202C_200E_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<string>(-1346587480));
_200D_202A_202C_206A_206F_202D_206A_202C_206D_206F_206D_202A_202B_200E_200E_206B_200F_206C_206D_206D_206E_202B_200C_200D_200D_202D_202C_200C_200F_206F_202D_206A_202E_206A_200F_202B_206C_206A_200D_206B_202E(builder, (object)Ingredients);
_200E_202B_200F_200B_200F_206A_200E_206C_206C_206E_200C_206F_206B_202E_206F_202A_200E_202D_202C_206E_202A_202A_206D_200F_202D_206E_202A_202E_206E_200F_206D_200F_200C_206E_200B_202C_206D_200D_202C_200E_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<string>(-356853243));
_200E_202B_200F_200B_200F_206A_200E_206C_206C_206E_200C_206F_206B_202E_206F_202A_200E_202D_202C_206E_202A_202A_206D_200F_202D_206E_202A_202E_206E_200F_206D_200F_200C_206E_200B_202C_206D_200D_202C_200E_202E(builder, CraftingClass.ToString());
return true;
}
[CompilerGenerated]
public bool Equals(RecipeInfo other)
{
int num = ((!EqualityComparer<uint>.Default.Equals(RecipeId, other.RecipeId)) ? 1163014536 : 1163014541);
while (true)
{
int num2 = num;
int num3 = 1163014537;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 3:
num = 1163014541;
break;
case 1:
return false;
case 0:
num = ((!EqualityComparer<IReadOnlyList<IngredientInfo>>.Default.Equals(Ingredients, other.Ingredients)) ? 1163014536 : 1163014539);
break;
case 2:
return EqualityComparer<EClassJob>.Default.Equals(CraftingClass, other.CraftingClass);
case 4:
num = ((!EqualityComparer<uint>.Default.Equals(CraftedItemId, other.CraftedItemId)) ? 1163014536 : 1163014537);
break;
}
}
}
bool IEquatable<RecipeInfo>.Equals(RecipeInfo other)
{
//ILSpy generated this explicit interface implementation from .override directive in Equals
return this.Equals(other);
}
static StringBuilder _206C_206D_202C_206A_206C_206D_206A_200C_202C_206A_206A_202B_206F_200E_206C_206F_206F_200D_200F_200C_206E_202C_206E_206F_202D_202B_200F_206F_202A_206E_202E_202E_206F_202C_202C_206F_202E_200E_202A_206F_202E()
{
return new StringBuilder();
}
static StringBuilder _200E_202B_200F_200B_200F_206A_200E_206C_206C_206E_200C_206F_206B_202E_206F_202A_200E_202D_202C_206E_202A_202A_206D_200F_202D_206E_202A_202E_206E_200F_206D_200F_200C_206E_200B_202C_206D_200D_202C_200E_202E(StringBuilder P_0, string P_1)
{
return P_0.Append(P_1);
}
static StringBuilder _202A_202B_202D_206F_206C_206D_202E_202A_206D_200F_200D_202A_202A_200E_206E_206E_206B_200D_206A_202C_200B_206A_202A_202C_206D_200F_200F_200C_200E_206E_200D_206B_202E_200F_202D_200B_202B_202C_202B_202C_202E(StringBuilder P_0, char P_1)
{
return P_0.Append(P_1);
}
static string _206C_202A_202D_202C_206F_206A_200C_202B_200C_200E_206B_200C_200E_206D_206E_202C_206F_206E_200E_200C_202C_206E_206A_202D_206B_202B_200D_200E_202E_206D_206C_202C_200C_206F_200B_202C_200F_202B_200F_206D_202E(object P_0)
{
return P_0.ToString();
}
static StringBuilder _200D_202A_202C_206A_206F_202D_206A_202C_206D_206F_206D_202A_202B_200E_200E_206B_200F_206C_206D_206D_206E_202B_200C_200D_200D_202D_202C_200C_200F_206F_202D_206A_202E_206A_200F_202B_206C_206A_200D_206B_202E(StringBuilder P_0, object P_1)
{
return P_0.Append(P_1);
}
}
internal readonly record struct VendorInfo(uint ShopId, uint VendorNpcId, ushort TerritoryId, Vector3 Position, int DialogOptionIndex)
{
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
public override string ToString()
{
StringBuilder stringBuilder = _206E_200F_206A_202A_206C_202A_202A_200B_202D_206E_202E_202B_206C_206D_206D_202A_202A_206F_202A_202B_206B_200C_200E_206F_206F_200F_202D_206F_206F_206C_206C_202A_206B_202D_200C_200B_200E_202A_206E_200D_202E();
_206E_206F_202A_206F_200E_202E_200B_200E_206D_206F_206E_206F_200C_206C_206D_200F_200B_206C_200C_202B_206D_202D_206D_202C_200C_202A_206F_200C_202B_202C_206A_200D_202C_206D_206D_200C_202A_200F_206E_206B_202E(stringBuilder, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(-1730025500));
_206E_206F_202A_206F_200E_202E_200B_200E_206D_206F_206E_206F_200C_206C_206D_200F_200B_206C_200C_202B_206D_202D_206D_202C_200C_202A_206F_200C_202B_202C_206A_200D_202C_206D_206D_200C_202A_200F_206E_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<string>(1664411125));
int num = ((!PrintMembers(stringBuilder)) ? (-1077906353) : (-1077906356));
while (true)
{
int num2 = num;
int num3 = -1077906354;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
num = -1077906356;
break;
case 2:
_206B_206D_202D_200B_202A_200B_206D_200E_206A_200F_202E_202D_200E_202B_200F_206A_200C_206B_206B_206A_200F_206B_206E_202B_200B_206A_206D_200B_206E_200C_200B_202E_202D_202D_200C_202E_202B_200C_202A_200D_202E(stringBuilder, ' ');
num = -1077906353;
break;
case 1:
_206B_206D_202D_200B_202A_200B_206D_200E_206A_200F_202E_202D_200E_202B_200F_206A_200C_206B_206B_206A_200F_206B_206E_202B_200B_206A_206D_200B_206E_200C_200B_202E_202D_202D_200C_202E_202B_200C_202A_200D_202E(stringBuilder, '}');
return _206D_200E_200B_202D_202E_206B_200F_202B_206D_206A_202E_206C_202B_200C_202B_206D_200D_202C_202E_202A_202D_200E_206B_202B_206B_202E_202D_206C_202E_200D_202A_206B_206F_200D_200E_200F_206D_202B_206A_206F_202E((object)stringBuilder);
}
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
private bool PrintMembers(StringBuilder builder)
{
_206E_206F_202A_206F_200E_202E_200B_200E_206D_206F_206E_206F_200C_206C_206D_200F_200B_206C_200C_202B_206D_202D_206D_202C_200C_202A_206F_200C_202B_202C_206A_200D_202C_206D_206D_200C_202A_200F_206E_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<string>(317359128));
_206E_206F_202A_206F_200E_202E_200B_200E_206D_206F_206E_206F_200C_206C_206D_200F_200B_206C_200C_202B_206D_202D_206D_202C_200C_202A_206F_200C_202B_202C_206A_200D_202C_206D_206D_200C_202A_200F_206E_206B_202E(builder, ShopId.ToString());
_206E_206F_202A_206F_200E_202E_200B_200E_206D_206F_206E_206F_200C_206C_206D_200F_200B_206C_200C_202B_206D_202D_206D_202C_200C_202A_206F_200C_202B_202C_206A_200D_202C_206D_206D_200C_202A_200F_206E_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<string>(-88160107));
_206E_206F_202A_206F_200E_202E_200B_200E_206D_206F_206E_206F_200C_206C_206D_200F_200B_206C_200C_202B_206D_202D_206D_202C_200C_202A_206F_200C_202B_202C_206A_200D_202C_206D_206D_200C_202A_200F_206E_206B_202E(builder, VendorNpcId.ToString());
_206E_206F_202A_206F_200E_202E_200B_200E_206D_206F_206E_206F_200C_206C_206D_200F_200B_206C_200C_202B_206D_202D_206D_202C_200C_202A_206F_200C_202B_202C_206A_200D_202C_206D_206D_200C_202A_200F_206E_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<string>(-1428648191));
_206E_206F_202A_206F_200E_202E_200B_200E_206D_206F_206E_206F_200C_206C_206D_200F_200B_206C_200C_202B_206D_202D_206D_202C_200C_202A_206F_200C_202B_202C_206A_200D_202C_206D_206D_200C_202A_200F_206E_206B_202E(builder, TerritoryId.ToString());
_206E_206F_202A_206F_200E_202E_200B_200E_206D_206F_206E_206F_200C_206C_206D_200F_200B_206C_200C_202B_206D_202D_206D_202C_200C_202A_206F_200C_202B_202C_206A_200D_202C_206D_206D_200C_202A_200F_206E_206B_202E(builder, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(-1993330002));
_206E_206F_202A_206F_200E_202E_200B_200E_206D_206F_206E_206F_200C_206C_206D_200F_200B_206C_200C_202B_206D_202D_206D_202C_200C_202A_206F_200C_202B_202C_206A_200D_202C_206D_206D_200C_202A_200F_206E_206B_202E(builder, Position.ToString());
_206E_206F_202A_206F_200E_202E_200B_200E_206D_206F_206E_206F_200C_206C_206D_200F_200B_206C_200C_202B_206D_202D_206D_202C_200C_202A_206F_200C_202B_202C_206A_200D_202C_206D_206D_200C_202A_200F_206E_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<string>(2076481420));
_206E_206F_202A_206F_200E_202E_200B_200E_206D_206F_206E_206F_200C_206C_206D_200F_200B_206C_200C_202B_206D_202D_206D_202C_200C_202A_206F_200C_202B_202C_206A_200D_202C_206D_206D_200C_202A_200F_206E_206B_202E(builder, DialogOptionIndex.ToString());
return true;
}
[CompilerGenerated]
public bool Equals(VendorInfo other)
{
int num = ((!EqualityComparer<uint>.Default.Equals(ShopId, other.ShopId)) ? 756999807 : 756999806);
while (true)
{
int num2 = num;
int num3 = 756999804;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
num = ((!EqualityComparer<Vector3>.Default.Equals(Position, other.Position)) ? 756999807 : 756999800);
break;
case 2:
num = ((!EqualityComparer<uint>.Default.Equals(VendorNpcId, other.VendorNpcId)) ? 756999807 : 756999805);
break;
case 3:
return false;
case 1:
num = ((!EqualityComparer<ushort>.Default.Equals(TerritoryId, other.TerritoryId)) ? 756999807 : 756999804);
break;
case 5:
num = 756999806;
break;
case 4:
return EqualityComparer<int>.Default.Equals(DialogOptionIndex, other.DialogOptionIndex);
}
}
}
bool IEquatable<VendorInfo>.Equals(VendorInfo other)
{
//ILSpy generated this explicit interface implementation from .override directive in Equals
return this.Equals(other);
}
static StringBuilder _206E_200F_206A_202A_206C_202A_202A_200B_202D_206E_202E_202B_206C_206D_206D_202A_202A_206F_202A_202B_206B_200C_200E_206F_206F_200F_202D_206F_206F_206C_206C_202A_206B_202D_200C_200B_200E_202A_206E_200D_202E()
{
return new StringBuilder();
}
static StringBuilder _206E_206F_202A_206F_200E_202E_200B_200E_206D_206F_206E_206F_200C_206C_206D_200F_200B_206C_200C_202B_206D_202D_206D_202C_200C_202A_206F_200C_202B_202C_206A_200D_202C_206D_206D_200C_202A_200F_206E_206B_202E(StringBuilder P_0, string P_1)
{
return P_0.Append(P_1);
}
static StringBuilder _206B_206D_202D_200B_202A_200B_206D_200E_206A_200F_202E_202D_200E_202B_200F_206A_200C_206B_206B_206A_200F_206B_206E_202B_200B_206A_206D_200B_206E_200C_200B_202E_202D_202D_200C_202E_202B_200C_202A_200D_202E(StringBuilder P_0, char P_1)
{
return P_0.Append(P_1);
}
static string _206D_200E_200B_202D_202E_206B_200F_202B_206D_206A_202E_206C_202B_200C_202B_206D_200D_202C_202E_202A_202D_200E_206B_202B_206B_202E_202D_206C_202E_200D_202A_206B_206F_200D_200E_200F_206D_202B_206A_206F_202E(object P_0)
{
return P_0.ToString();
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
public RecipeInfo? ResolveRecipe(uint craftedItemId, EClassJob? preferredJob = null)
{
RecipeLookup row;
int num = (dataManager.GetExcelSheet<RecipeLookup>().TryGetRow(craftedItemId, out row) ? (-1604445138) : (-1604445150));
List<IngredientInfo> list = default(List<IngredientInfo>);
Recipe row3 = default(Recipe);
List<IngredientInfo> list2 = default(List<IngredientInfo>);
Recipe row2 = default(Recipe);
uint item = default(uint);
(EClassJob, uint)[] array2 = default((EClassJob, uint)[]);
int num5 = default(int);
EClassJob item2 = default(EClassJob);
(EClassJob, uint)[] array = default((EClassJob, uint)[]);
EClassJob item4 = default(EClassJob);
uint item3 = default(uint);
while (true)
if (!dataManager.GetExcelSheet<RecipeLookup>().TryGetRow(craftedItemId, out var row))
{
int num2 = num;
int num3 = -1604445143;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
logger.LogDebug("No RecipeLookup row for item {ItemId}", craftedItemId);
return null;
}
(EClassJob, uint)[] array = new(EClassJob, uint)[8]
{
(EClassJob.Carpenter, row.CRP.RowId),
(EClassJob.Blacksmith, row.BSM.RowId),
(EClassJob.Armorer, row.ARM.RowId),
(EClassJob.Goldsmith, row.GSM.RowId),
(EClassJob.Leatherworker, row.LTW.RowId),
(EClassJob.Weaver, row.WVR.RowId),
(EClassJob.Alchemist, row.ALC.RowId),
(EClassJob.Culinarian, row.CUL.RowId)
};
(EClassJob, uint)[] array2;
if (preferredJob.HasValue)
{
array2 = array;
for (int i = 0; i < array2.Length; i++)
{
case 9:
list = CollectIngredients(row3);
num = ((list.Count == 0) ? (-1604445141) : (-1604445146));
break;
case 4:
list2 = CollectIngredients(row2);
num = ((list2.Count == 0) ? (-1604445143) : (-1604445128));
break;
case 8:
num = ((item == 0) ? (-1604445148) : (-1604445145));
break;
case 3:
{
(EClassJob, uint) tuple = array2[num5];
item2 = tuple.Item1;
item = tuple.Item2;
num = ((item2 != preferredJob.Value) ? (-1604445148) : (-1604445151));
break;
}
case 2:
array2 = array;
num5 = 0;
num = -1604445125;
break;
case 5:
{
(EClassJob, uint) tuple2 = array2[num5];
item4 = tuple2.Item1;
item3 = tuple2.Item2;
num = ((item3 == 0) ? (-1604445143) : (-1604445147));
break;
}
case 6:
num = -1604445150;
break;
case 12:
num = ((!dataManager.GetExcelSheet<Recipe>().TryGetRow(item3, out row2)) ? (-1604445143) : (-1604445139));
break;
case 14:
num = ((!dataManager.GetExcelSheet<Recipe>().TryGetRow(item, out row3)) ? (-1604445141) : (-1604445152));
break;
case 0:
{
int num7 = num5;
num3 = 1;
num4 = num7;
int num8 = num4 ^ num3;
int num9 = num4 & num3;
num5 = num8 + (num9 + num9);
num = -1604445125;
break;
}
case 11:
_202D_202B_202B_200D_202A_202B_206C_202D_200F_206F_206C_202D_200C_202D_206B_202C_200D_206B_206F_206F_200B_202A_200B_200B_206C_202A_200E_202D_206B_206F_202A_200B_206E_200C_202B_202A_206A_200F_202D_202B_202E((ILogger)logger, 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<string>(-1431969650), new object[1] { craftedItemId });
return null;
case 16:
num = ((num5 < array2.Length) ? (-1604445142) : (-1604445141));
break;
case 10:
array2 = array;
num5 = 0;
num = -1604445127;
break;
case 18:
num = ((num5 < array2.Length) ? (-1604445140) : (-1604445144));
break;
case 13:
{
int num6 = num5;
num3 = 1;
num4 = num6;
num5 = (num4 | num3) + (num4 & num3);
num = -1604445127;
break;
}
case 7:
array = new(EClassJob, uint)[8]
var (eClassJob, num) = array2[i];
if (eClassJob == preferredJob.Value && num != 0)
{
(EClassJob.Carpenter, row.CRP.RowId),
(EClassJob.Blacksmith, row.BSM.RowId),
(EClassJob.Armorer, row.ARM.RowId),
(EClassJob.Goldsmith, row.GSM.RowId),
(EClassJob.Leatherworker, row.LTW.RowId),
(EClassJob.Weaver, row.WVR.RowId),
(EClassJob.Alchemist, row.ALC.RowId),
(EClassJob.Culinarian, row.CUL.RowId)
};
num = ((!preferredJob.HasValue) ? (-1604445141) : (-1604445149));
break;
case 17:
_202D_202B_202B_200D_202A_202B_206C_202D_200F_206F_206C_202D_200C_202D_206B_202C_200D_206B_206F_206F_200B_202A_200B_200B_206C_202A_200E_202D_206B_206F_202A_200B_206E_200C_202B_202A_206A_200F_202D_202B_202E((ILogger)logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(1407786323), new object[4] { item3, item4, craftedItemId, list2.Count });
return new RecipeInfo(item3, craftedItemId, list2, item4);
case 1:
_202D_202B_202B_200D_202A_202B_206C_202D_200F_206F_206C_202D_200C_202D_206B_202C_200D_206B_206F_206F_200B_202A_200B_200B_206C_202A_200E_202D_206B_206F_202A_200B_206E_200C_202B_202A_206A_200F_202D_202B_202E((ILogger)logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(1806969075), new object[1] { craftedItemId });
return null;
case 15:
_202D_202B_202B_200D_202A_202B_206C_202D_200F_206F_206C_202D_200C_202D_206B_202C_200D_206B_206F_206F_200B_202A_200B_200B_206C_202A_200E_202D_206B_206F_202A_200B_206E_200C_202B_202A_206A_200F_202D_202B_202E((ILogger)logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(1664800932), new object[4] { item, item2, craftedItemId, list.Count });
return new RecipeInfo(item, craftedItemId, list, item2);
if (!dataManager.GetExcelSheet<Recipe>().TryGetRow(num, out var row2))
{
break;
}
List<IngredientInfo> list = CollectIngredients(row2);
if (list.Count == 0)
{
break;
}
logger.LogDebug("Resolved recipe {RecipeId} ({ClassJob}) for item {ItemId} via preferred job: {Count} ingredient(s)", num, eClassJob, craftedItemId, list.Count);
return new RecipeInfo(num, craftedItemId, list, eClassJob);
}
}
}
array2 = array;
for (int i = 0; i < array2.Length; i++)
{
var (eClassJob2, num2) = array2[i];
if (num2 != 0 && dataManager.GetExcelSheet<Recipe>().TryGetRow(num2, out var row3))
{
List<IngredientInfo> list2 = CollectIngredients(row3);
if (list2.Count != 0)
{
logger.LogDebug("Resolved recipe {RecipeId} ({ClassJob}) for item {ItemId}: {Count} ingredient(s)", num2, eClassJob2, craftedItemId, list2.Count);
return new RecipeInfo(num2, craftedItemId, list2, eClassJob2);
}
}
}
logger.LogDebug("No valid recipe found for item {ItemId}", craftedItemId);
return null;
}
[MethodImpl(MethodImplOptions.NoInlining)]
public VendorInfo? ResolveVendor(uint ingredientId)
{
int num = (_200B_202E_200F_200C_206F_202B_206F_200E_206B_200E_200E_206E_206D_202D_200E_206C_206A_200F_200C_206F_202D_202E_206C_206B_202D_206E_206C_200E_206B_206B_202E_202E_200C_200F_206B_206D_202B_200C_200E_202B_202E(npcPositionCache) ? 1075940384 : 1075940385);
ShopSearchResult shopSearchResult = default(ShopSearchResult);
while (true)
if (!npcPositionCache.IsBuilt)
{
int num2 = num;
int num3 = 1075940386;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 1:
_202D_202B_202B_200D_202A_202B_206C_202D_200F_206F_206C_202D_200C_202D_206B_202C_200D_206B_206F_206F_200B_202A_200B_200B_206C_202A_200E_202D_206B_206F_202A_200B_206E_200C_202B_202A_206A_200F_202D_202B_202E((ILogger)logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(-563414727), new object[1] { ingredientId });
return null;
case 3:
_200D_202E_206C_202D_200B_202A_202E_202B_202D_200D_200F_206E_206B_200E_200C_200C_200D_206F_206C_202D_200E_206D_202C_202A_200C_200E_200C_200C_206F_202A_202C_200D_202B_202D_200C_206B_200B_206E_200E_202D_202E((ILogger)logger, 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<string>(1813598717), new object[1] { ingredientId });
return null;
case 4:
num = 1075940385;
break;
case 0:
_202D_202B_202B_200D_202A_202B_206C_202D_200F_206F_206C_202D_200C_202D_206B_202C_200D_206B_206F_206F_200B_202A_200B_200B_206C_202A_200E_202D_206B_206F_202A_200B_206E_200C_202B_202A_206A_200F_202D_202B_202E((ILogger)logger, 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<string>(1256305400), new object[5]
{
_202D_202E_206F_206C_206F_202E_200B_200E_202B_202B_200F_200F_206A_200F_200E_206A_202C_202D_206B_206E_200D_206C_206E_206E_200D_200E_200F_200B_202A_202B_206B_202D_206B_200B_202D_200E_202A_206B_200B_202E_202E(shopSearchResult),
ingredientId,
_200D_200D_206C_202A_200D_206A_206E_202E_206D_206F_206E_200B_206D_202E_206D_200C_200F_206C_202C_206E_206E_206E_202B_206F_200C_206B_206F_206D_202E_206C_206C_200B_206B_206E_202D_206B_206D_202E_206F_206A_202E(shopSearchResult),
_206D_202B_200C_206D_206F_200E_202E_202C_200C_202A_206B_202D_202E_200F_202A_202A_200C_200F_202B_206F_206D_206B_206F_202A_206E_206F_200D_206E_202B_206C_206E_206C_200B_206A_202E_200C_206B_202A_206B_206C_202E(shopSearchResult),
_206B_200C_200C_202B_202B_200F_202C_206F_200E_200B_200D_200C_202D_202A_200E_200C_206A_200C_206F_202A_206C_202E_206B_202B_206D_202C_200B_200B_200B_200D_206D_200B_202B_202E_202B_202D_200E_200C_202A_200C_202E(shopSearchResult)
});
return new VendorInfo(_200D_200D_206C_202A_200D_206A_206E_202E_206D_206F_206E_200B_206D_202E_206D_200C_200F_206C_202C_206E_206E_206E_202B_206F_200C_206B_206F_206D_202E_206C_206C_200B_206B_206E_202D_206B_206D_202E_206F_206A_202E(shopSearchResult), _202D_202E_206F_206C_206F_202E_200B_200E_202B_202B_200F_200F_206A_200F_200E_206A_202C_202D_206B_206E_200D_206C_206E_206E_200D_200E_200F_200B_202A_202B_206B_202D_206B_200B_202D_200E_202A_206B_200B_202E_202E(shopSearchResult), _206D_202B_200C_206D_206F_200E_202E_202C_200C_202A_206B_202D_202E_200F_202A_202A_200C_200F_202B_206F_206D_206B_206F_202A_206E_206F_200D_206E_202B_206C_206E_206C_200B_206A_202E_200C_206B_202A_206B_206C_202E(shopSearchResult), _202A_200E_206F_206C_202B_202E_200F_206F_202C_202A_206E_200C_200B_202B_200D_206C_206F_206F_200F_206E_206C_200D_202B_202D_200F_206D_206B_200C_206D_206A_206C_206F_200C_206C_200C_206A_200B_202A_200B_202A_202E(shopSearchResult), _206B_200C_200C_202B_202B_200F_202C_206F_200E_200B_200D_200C_202D_202A_200E_200C_206A_200C_206F_202A_206C_202E_206B_202B_206D_202C_200B_200B_200B_200D_206D_200B_202B_202E_202B_202D_200E_200C_202A_200C_202E(shopSearchResult));
case 2:
shopSearchResult = _206A_202E_202A_200E_202C_202E_202A_200D_200B_200C_200F_200B_202A_206F_202A_200F_202E_202E_206B_202A_200C_200F_206F_200B_200B_200B_202B_206B_202D_202B_206C_202B_206B_200C_206F_200C_206F_206A_206C_206E_202E(vendorResolver, ingredientId);
num = ((!_206D_200F_206D_202D_202D_200E_206B_206A_200E_200F_200C_202D_202C_202E_206D_206F_202C_200F_206A_200B_202A_206A_202B_206C_200D_202B_202C_202A_200B_206E_202E_206D_200E_200D_200C_206C_200D_200D_206B_206A_202E(shopSearchResult, (ShopSearchResult)null)) ? 1075940386 : 1075940387);
break;
}
logger.LogWarning("NPC position cache not built yet, cannot resolve a vendor for ingredient {IngredientId}", ingredientId);
return null;
}
ShopSearchResult shopSearchResult = vendorResolver.FindGilVendor(ingredientId);
if (shopSearchResult == null)
{
logger.LogDebug("No vendor with known position found for ingredient {IngredientId}", ingredientId);
return null;
}
logger.LogDebug("Found vendor NPC {NpcId} selling ingredient {IngredientId} at shop {ShopId} in territory {TerritoryId} (dialog option {DialogOption})", shopSearchResult.NpcId, ingredientId, shopSearchResult.ShopId, shopSearchResult.TerritoryId, shopSearchResult.DialogOptionIndex);
return new VendorInfo(shopSearchResult.ShopId, shopSearchResult.NpcId, shopSearchResult.TerritoryId, shopSearchResult.NpcPosition, shopSearchResult.DialogOptionIndex);
}
private static List<IngredientInfo> CollectIngredients(Recipe recipe)
{
List<IngredientInfo> list = new List<IngredientInfo>();
int num = 0;
int num2 = 1773501195;
uint rowId = default(uint);
int num6 = default(int);
while (true)
for (int i = 0; i < recipe.Ingredient.Count; i++)
{
int num3 = num2;
int num4 = 1773501198;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
uint rowId = recipe.Ingredient[i].RowId;
int num = recipe.AmountIngredient[i];
if (rowId != 0 && num > 0)
{
case 5:
num2 = ((num < recipe.Ingredient.Count) ? 1773501197 : 1773501196);
break;
case 1:
list.Add(new IngredientInfo(rowId, num6));
num2 = 1773501192;
break;
case 2:
return list;
case 0:
num2 = ((num6 <= 0) ? 1773501192 : 1773501199);
break;
case 4:
num2 = 1773501195;
break;
case 6:
{
int num7 = num;
num4 = 1;
num5 = num7;
num = (num5 | num4) + (num5 & num4);
num2 = 1773501195;
break;
}
case 3:
rowId = recipe.Ingredient[num].RowId;
num6 = recipe.AmountIngredient[num];
num2 = ((rowId == 0) ? 1773501192 : 1773501198);
break;
list.Add(new IngredientInfo(rowId, num));
}
}
}
static void _202D_202B_202B_200D_202A_202B_206C_202D_200F_206F_206C_202D_200C_202D_206B_202C_200D_206B_206F_206F_200B_202A_200B_200B_206C_202A_200E_202D_206B_206F_202A_200B_206E_200C_202B_202A_206A_200F_202D_202B_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static bool _200B_202E_200F_200C_206F_202B_206F_200E_206B_200E_200E_206E_206D_202D_200E_206C_206A_200F_200C_206F_202D_202E_206C_206B_202D_206E_206C_200E_206B_206B_202E_202E_200C_200F_206B_206D_202B_200C_200E_202B_202E(NpcPositionCache P_0)
{
return P_0.IsBuilt;
}
static void _200D_202E_206C_202D_200B_202A_202E_202B_202D_200D_200F_206E_206B_200E_200C_200C_200D_206F_206C_202D_200E_206D_202C_202A_200C_200E_200C_200C_206F_202A_202C_200D_202B_202D_200C_206B_200B_206E_200E_202D_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogWarning(P_1, P_2);
}
static ShopSearchResult _206A_202E_202A_200E_202C_202E_202A_200D_200B_200C_200F_200B_202A_206F_202A_200F_202E_202E_206B_202A_200C_200F_206F_200B_200B_200B_202B_206B_202D_202B_206C_202B_206B_200C_206F_200C_206F_206A_206C_206E_202E(VendorResolver P_0, uint P_1)
{
return P_0.FindGilVendor(P_1);
}
static bool _206D_200F_206D_202D_202D_200E_206B_206A_200E_200F_200C_202D_202C_202E_206D_206F_202C_200F_206A_200B_202A_206A_202B_206C_200D_202B_202C_202A_200B_206E_202E_206D_200E_200D_200C_206C_200D_200D_206B_206A_202E(ShopSearchResult P_0, ShopSearchResult P_1)
{
return P_0 == P_1;
}
static uint _202D_202E_206F_206C_206F_202E_200B_200E_202B_202B_200F_200F_206A_200F_200E_206A_202C_202D_206B_206E_200D_206C_206E_206E_200D_200E_200F_200B_202A_202B_206B_202D_206B_200B_202D_200E_202A_206B_200B_202E_202E(ShopSearchResult P_0)
{
return P_0.NpcId;
}
static uint _200D_200D_206C_202A_200D_206A_206E_202E_206D_206F_206E_200B_206D_202E_206D_200C_200F_206C_202C_206E_206E_206E_202B_206F_200C_206B_206F_206D_202E_206C_206C_200B_206B_206E_202D_206B_206D_202E_206F_206A_202E(ShopSearchResult P_0)
{
return P_0.ShopId;
}
static ushort _206D_202B_200C_206D_206F_200E_202E_202C_200C_202A_206B_202D_202E_200F_202A_202A_200C_200F_202B_206F_206D_206B_206F_202A_206E_206F_200D_206E_202B_206C_206E_206C_200B_206A_202E_200C_206B_202A_206B_206C_202E(ShopSearchResult P_0)
{
return P_0.TerritoryId;
}
static int _206B_200C_200C_202B_202B_200F_202C_206F_200E_200B_200D_200C_202D_202A_200E_200C_206A_200C_206F_202A_206C_202E_206B_202B_206D_202C_200B_200B_200B_200D_206D_200B_202B_202E_202B_202D_200E_200C_202A_200C_202E(ShopSearchResult P_0)
{
return P_0.DialogOptionIndex;
}
static Vector3 _202A_200E_206F_206C_202B_202E_200F_206F_202C_202A_206E_200C_200B_202B_200D_206C_206F_206F_200F_206E_206C_200D_202B_202D_200F_206D_206B_200C_206D_206A_206C_206F_200C_206C_200C_206A_200B_202A_200B_202A_202E(ShopSearchResult P_0)
{
return P_0.NpcPosition;
return list;
}
}