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

@ -1,5 +1,4 @@
using System;
using System.Runtime.CompilerServices;
using Dalamud.Hooking;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game.Event;
@ -20,7 +19,6 @@ internal sealed class AutoSnipeHandler : IDisposable
private readonly Hook<EnqueueSnipeTaskDelegate>? _enqueueSnipeTaskHook;
[MethodImpl(MethodImplOptions.NoInlining)]
public unsafe AutoSnipeHandler(QuestController questController, Configuration configuration, IGameInteropProvider gameInteropProvider, ILogger<AutoSnipeHandler> logger)
{
_questController = questController;
@ -28,90 +26,38 @@ internal sealed class AutoSnipeHandler : IDisposable
_logger = logger;
try
{
_enqueueSnipeTaskHook = gameInteropProvider.HookFromSignature<EnqueueSnipeTaskDelegate>(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>(-116900171), EnqueueSnipeTask);
_enqueueSnipeTaskHook = gameInteropProvider.HookFromSignature<EnqueueSnipeTaskDelegate>("48 89 5C 24 ?? 48 89 6C 24 ?? 48 89 74 24 ?? 57 48 83 EC 50 48 8B F9 48 8D 4C 24 ??", EnqueueSnipeTask);
_enqueueSnipeTaskHook.Enable();
_200C_200C_200F_202D_200B_202A_206A_206A_200C_206E_206E_206A_206E_206A_206B_206F_200B_206C_202B_206B_206A_206A_200B_202E_200F_200F_206F_202A_206D_202B_200E_206E_200E_200B_202B_202D_202D_206F_200D_206E_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>(-2135730328), Array.Empty<object>());
_logger.LogDebug("AutoSnipeHandler enabled");
}
catch (Exception ex)
catch (Exception exception)
{
_202C_200E_206A_200D_206C_206C_200F_206F_200D_206A_206E_200D_202B_202E_202D_206C_206B_202C_202A_206F_206D_200B_200C_200C_206D_202C_206F_206A_202A_206E_200C_200E_200C_202D_206D_202A_206C_200E_202B_202D_202E((ILogger)_logger, ex, 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>(309361772), Array.Empty<object>());
_logger.LogError(exception, "Failed to initialize AutoSnipeHandler");
_enqueueSnipeTaskHook = null;
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe ulong EnqueueSnipeTask(EventSceneModuleImplBase* scene, lua_State* state)
{
int num = ((!_configuration.General.AutoSnipe) ? 905347558 : 905347556);
while (true)
if (_configuration.General.AutoSnipe && _questController.IsRunning)
{
int num2 = num;
int num3 = 905347557;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
num = 905347556;
break;
case 3:
return _enqueueSnipeTaskHook.Original(scene, state);
case 1:
num = ((!_questController.IsRunning) ? 905347558 : 905347557);
break;
case 0:
{
_200C_200C_200F_202D_200B_202A_206A_206A_200C_206E_206E_206A_206E_206A_206B_206F_200B_206C_202B_206B_206A_206A_200B_202E_200F_200F_206F_202A_206D_202B_200E_206E_200E_200B_202B_202D_202D_206F_200D_206E_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>(486539700), Array.Empty<object>());
TValue* top = state->top;
top->tt = 3;
top->value.n = 1.0;
state->top++;
return 1uL;
}
}
_logger.LogDebug("Auto-completing snipe task");
TValue* top = state->top;
top->tt = 3;
top->value.n = 1.0;
state->top++;
return 1uL;
}
return _enqueueSnipeTaskHook.Original(scene, state);
}
[MethodImpl(MethodImplOptions.NoInlining)]
public void Dispose()
{
int num = ((_enqueueSnipeTaskHook == null) ? 1906347675 : 1906347672);
while (true)
if (_enqueueSnipeTaskHook != null)
{
int num2 = num;
int num3 = 1906347673;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 2:
return;
case 1:
_enqueueSnipeTaskHook.Disable();
_enqueueSnipeTaskHook.Dispose();
_200C_200C_200F_202D_200B_202A_206A_206A_200C_206E_206E_206A_206E_206A_206B_206F_200B_206C_202B_206B_206A_206A_200B_202E_200F_200F_206F_202A_206D_202B_200E_206E_200E_200B_202B_202D_202D_206F_200D_206E_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>(135526562), Array.Empty<object>());
num = 1906347675;
break;
case 0:
num = 1906347672;
break;
}
_enqueueSnipeTaskHook.Disable();
_enqueueSnipeTaskHook.Dispose();
_logger.LogDebug("AutoSnipeHandler disabled");
}
}
void IDisposable.Dispose()
{
//ILSpy generated this explicit interface implementation from .override directive in Dispose
this.Dispose();
}
static void _200C_200C_200F_202D_200B_202A_206A_206A_200C_206E_206E_206A_206E_206A_206B_206F_200B_206C_202B_206B_206A_206A_200B_202E_200F_200F_206F_202A_206D_202B_200E_206E_200E_200B_202B_202D_202D_206F_200D_206E_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static void _202C_200E_206A_200D_206C_206C_200F_206F_200D_206A_206E_200D_202B_202E_202D_206C_206B_202C_202A_206F_206D_200B_200C_200C_206D_202C_206F_206A_202A_206E_200C_200E_200C_202D_206D_202A_206C_200E_202B_202D_202E(ILogger P_0, Exception P_1, string P_2, object[] P_3)
{
P_0.LogError(P_1, P_2, P_3);
}
}

View file

@ -1,11 +1,9 @@
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
using Dalamud.Game.Addon.Lifecycle;
using Dalamud.Game.Addon.Lifecycle.AddonArgTypes;
using Dalamud.Game.NativeWrapper;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Component.GUI;
using LLib.GameUI;
@ -18,9 +16,9 @@ internal sealed class ChocoboNameHandler : IDisposable
{
private static readonly HashSet<ElementId> ChocoboQuestIds = new HashSet<ElementId>
{
_206C_206C_202C_202A_202B_202C_202C_202C_202D_200C_200D_206D_202E_200E_202E_206D_206A_202C_206E_206E_202C_200B_206D_200C_202B_206E_202D_206B_206F_206B_200F_206B_202D_206C_202C_200B_206F_206E_206E_202C_202E((ushort)700),
_206C_206C_202C_202A_202B_202C_202C_202C_202D_200C_200D_206D_202E_200E_202E_206D_206A_202C_206E_206E_202C_200B_206D_200C_202B_206E_202D_206B_206F_206B_200F_206B_202D_206C_202C_200B_206F_206E_206E_202C_202E((ushort)701),
_206C_206C_202C_202A_202B_202C_202C_202C_202D_200C_200D_206D_202E_200E_202E_206D_206A_202C_206E_206E_202C_200B_206D_200C_202B_206E_202D_206B_206F_206B_200F_206B_202D_206C_202C_200B_206F_206E_206E_202C_202E((ushort)702)
new QuestId(700),
new QuestId(701),
new QuestId(702)
};
private readonly QuestController _questController;
@ -33,328 +31,108 @@ internal sealed class ChocoboNameHandler : IDisposable
private bool _awaitingConfirmation;
[MethodImpl(MethodImplOptions.NoInlining)]
public ChocoboNameHandler(QuestController questController, Configuration configuration, IAddonLifecycle addonLifecycle, ILogger<ChocoboNameHandler> logger)
{
_questController = questController;
_configuration = configuration;
_addonLifecycle = addonLifecycle;
_logger = logger;
_206F_206A_206D_206E_202D_202B_202A_202D_206A_202B_200C_206F_200B_200E_202C_200F_202D_202A_206E_202D_206B_206A_202E_206A_202A_206F_206B_202C_206D_200C_206D_202D_200C_202E_200D_202D_202D_206C_202E_202B_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(86143620), (IAddonLifecycle.AddonEventDelegate)OnInputStringSetup);
_206F_206A_206D_206E_202D_202B_202A_202D_206A_202B_200C_206F_200B_200E_202C_200F_202D_202A_206E_202D_206B_206A_202E_206A_202A_206F_206B_202C_206D_200C_206D_202D_200C_202E_200D_202D_202D_206C_202E_202B_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(559979746), (IAddonLifecycle.AddonEventDelegate)OnSelectYesNoSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "InputString", OnInputStringSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectYesno", OnSelectYesNoSetup);
}
[MethodImpl(MethodImplOptions.NoInlining)]
public void Dispose()
{
_200D_200C_206E_202B_200C_200D_202C_200D_202A_200D_202D_200D_206D_200C_206D_202A_200B_206E_202A_206F_200B_202D_200B_200B_206B_200B_202D_206A_206E_200F_206C_200F_202C_200F_200F_206A_206F_206C_202B_202A_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(1652110159), (IAddonLifecycle.AddonEventDelegate)OnSelectYesNoSetup);
_200D_200C_206E_202B_200C_200D_202C_200D_202A_200D_202D_200D_206D_200C_206D_202A_200B_206E_202A_206F_200B_202D_200B_200B_206B_200B_202D_206A_206E_200F_206C_200F_202C_200F_200F_206A_206F_206C_202B_202A_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(1424112397), (IAddonLifecycle.AddonEventDelegate)OnInputStringSetup);
}
void IDisposable.Dispose()
{
//ILSpy generated this explicit interface implementation from .override directive in Dispose
this.Dispose();
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "SelectYesno", OnSelectYesNoSetup);
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "InputString", OnInputStringSetup);
}
private bool IsChocoboQuestActive()
{
QuestController.QuestProgress currentQuest = _questController.CurrentQuest;
int num = ((currentQuest == null) ? (-1870798202) : (-1870798201));
while (true)
if (currentQuest != null)
{
int num2 = num;
int num3 = -1870798202;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
goto IL_004d;
case 0:
return false;
case 1:
return ChocoboQuestIds.Contains(currentQuest.Quest.Id);
}
continue;
IL_004d:
num = -1870798201;
return ChocoboQuestIds.Contains(currentQuest.Quest.Id);
}
return false;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void OnInputStringSetup(AddonEvent type, AddonArgs args)
{
int num = (_questController.IsRunning ? 1822557266 : 1822557269);
AtkUnitBase* address = default(AtkUnitBase*);
while (true)
if (_questController.IsRunning && IsChocoboQuestActive())
{
int num2 = num;
int num3 = 1822557265;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 5:
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
if (LAddon.IsAddonReady(address))
{
string validatedChocoboName = GetValidatedChocoboName(_configuration.Advanced.ChocoboName);
_202B_202A_200B_200B_202A_202A_206C_202D_200F_206E_200D_200B_206B_200B_202A_200C_202E_206D_206A_206E_200C_200E_206A_206E_206C_206A_202A_206C_206C_200B_206B_206C_206B_206A_202B_202C_200C_200D_206F_206C_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>(1006446610), new object[1] { validatedChocoboName });
_logger.LogDebug("Entering chocobo name: {Name}", validatedChocoboName);
FireInputStringCallback(address, validatedChocoboName);
_awaitingConfirmation = true;
return;
}
case 6:
return;
case 2:
num = 1822557269;
break;
case 4:
return;
case 1:
address = (AtkUnitBase*)_200E_202E_206D_200B_206C_202B_200E_200C_200C_200D_200E_206F_200D_206A_200D_202A_202D_200E_206B_202A_206C_202D_200E_202A_202E_206D_202C_202E_206D_206D_202C_200F_206D_206D_200F_202B_202E_202B_206E_206E_202E(args).Address;
num = (_200F_206F_206E_206B_202C_202E_200F_206A_202D_206D_206A_200F_206A_202B_200E_202A_206E_200B_202D_206B_206E_206B_206F_206D_206C_202D_202C_202A_206D_202C_200C_202A_202A_206F_206D_206E_202E_202B_200D_200E_202E(address) ? 1822557268 : 1822557271);
break;
case 0:
return;
case 3:
num = (IsChocoboQuestActive() ? 1822557264 : 1822557265);
break;
}
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void OnSelectYesNoSetup(AddonEvent type, AddonArgs args)
{
int num = (_questController.IsRunning ? (-693008591) : (-693008586));
AtkUnitBase* address = default(AtkUnitBase*);
while (true)
if (_questController.IsRunning && _awaitingConfirmation)
{
int num2 = num;
int num3 = -693008590;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
if (LAddon.IsAddonReady(address))
{
case 2:
return;
case 4:
return;
case 1:
return;
case 6:
_202B_202A_200B_200B_202A_202A_206C_202D_200F_206E_200D_200B_206B_200B_202A_200C_202E_206D_206A_206E_200C_200E_206A_206E_206C_206A_202A_206C_206C_200B_206B_206C_206B_206A_202B_202C_200C_200D_206F_206C_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>(-410002708), Array.Empty<object>());
_logger.LogDebug("Confirming chocobo name");
ClickYes(address);
_awaitingConfirmation = false;
return;
case 5:
address = (AtkUnitBase*)_200E_202E_206D_200B_206C_202B_200E_200C_200C_200D_200E_206F_200D_206A_200D_202A_202D_200E_206B_202A_206C_202D_200E_202A_202E_206D_202C_202E_206D_206D_202C_200F_206D_206D_200F_202B_202E_202B_206E_206E_202E(args).Address;
num = (_200F_206F_206E_206B_202C_202E_200F_206A_202D_206D_206A_200F_206A_202B_200E_202A_206E_200B_202D_206B_206E_206B_206F_206D_206C_202D_202C_202A_206D_202C_200C_202A_202A_206F_206D_206E_202E_202B_200D_200E_202E(address) ? (-693008588) : (-693008589));
break;
case 0:
num = -693008586;
break;
case 3:
num = (_awaitingConfirmation ? (-693008585) : (-693008592));
break;
}
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private static string GetValidatedChocoboName(string? configuredName)
{
int num = ((!_206D_202E_200E_202A_202E_200B_202B_200F_206E_200F_202C_202E_206C_200C_206E_202A_202D_200B_202B_206E_206B_206A_202D_202C_206B_200B_202D_206C_206A_202C_206C_206D_206B_206C_200C_200B_202B_206D_206E_200C_202E(configuredName)) ? 807668921 : 807668920);
string text = default(string);
while (true)
if (string.IsNullOrWhiteSpace(configuredName))
{
int num2 = num;
int num3 = 807668921;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
num = ((_200B_202B_206F_202D_202C_206F_200B_202E_202E_206D_200E_202B_202B_200F_202A_200E_206B_202C_206C_206D_206F_202B_202C_202C_200B_200C_200D_200D_206A_206F_202A_202E_202C_202D_202B_206C_200C_206D_200D_200F_202E(text) <= 20) ? 807668925 : 807668924);
break;
case 1:
return global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(-1639602730);
case 0:
text = _206B_202B_206E_206B_206F_202D_202D_200F_202A_200C_200B_202E_206B_206E_206B_200C_206B_206E_200D_200E_200E_202E_206E_202A_206C_206A_202E_206F_206B_202C_206E_206C_206D_200F_206A_202C_206E_200C_200E_200C_202E(configuredName);
num = ((_200B_202B_206F_202D_202C_206F_200B_202E_202E_206D_200E_202B_202B_200F_202A_200E_206B_202C_206C_206D_206F_202B_202C_202C_200B_200C_200D_200D_206A_206F_202A_202E_202C_202D_202B_206C_200C_206D_200D_200F_202E(text) < 2) ? 807668924 : 807668923);
break;
case 5:
return 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>(-1096463492);
case 4:
return _202B_202B_206C_200C_202D_206C_200F_202B_200B_200B_206E_206D_206B_202A_206E_206F_202B_202A_200C_206F_206E_200E_200D_202C_206D_200C_206E_202D_206A_206C_206D_200C_206D_200D_206E_206B_206E_206C_206B_202E(_202A_206E_202A_202B_202A_206F_202B_202E_200B_206D_202D_202D_202C_202B_200B_202E_206A_200B_206E_200D_202C_206D_202A_200E_206C_206E_200E_202B_206E_200C_200D_200B_206A_200D_202B_206D_206B_206D_202C_202E(_200F_206E_206F_206A_206B_206F_206C_206E_206C_202A_200E_206D_206B_202D_206D_206E_200D_202A_202C_206A_206D_200C_206A_200D_202B_202D_206C_206B_202B_206A_202D_206E_200E_206E_200B_206D_202C_206A_202A_202E_202E(text, 0, 1)), (_200B_202B_206F_202D_202C_206F_200B_202E_202E_206D_200E_202B_202B_200F_202A_200E_206B_202C_206C_206D_206F_202B_202C_202C_200B_200C_200D_200D_206A_206F_202A_202E_202C_202D_202B_206C_200C_206D_200D_200F_202E(text) > 1) ? _200F_200E_206B_202E_206E_206A_206B_200E_200B_206A_202B_200D_202B_206F_206F_206F_202D_206F_200F_200F_206B_200D_206B_206E_200D_206E_206E_202B_202C_206E_206E_200E_202E_206D_206C_206C_206C_206E_202A_206E_202E(_202D_206D_200B_206E_202B_200F_206B_200B_206D_200F_202E_200D_206A_206F_200D_202E_200C_202D_206E_202A_206F_206B_206B_202A_200C_206C_206A_200B_206A_206C_202B_202B_202B_206A_202C_206B_206E_200D_206C_202C_202E(text, 1)) : string.Empty);
case 3:
num = 807668920;
break;
}
return "Kweh";
}
string text = configuredName.Trim();
if (text.Length < 2 || text.Length > 20)
{
return "Kweh";
}
return text.Substring(0, 1).ToUpperInvariant() + ((text.Length > 1) ? text.Substring(1).ToLowerInvariant() : string.Empty);
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void FireInputStringCallback(AtkUnitBase* addon, string text)
{
AtkComponentNode* componentNodeById = addon->GetComponentNodeById(9u);
int num = ((componentNodeById != null) ? 1161429663 : 1161429658);
AtkComponentTextInput* asAtkComponentTextInput = default(AtkComponentTextInput*);
while (true)
if (componentNodeById == null)
{
int num2 = num;
int num3 = 1161429659;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 4:
asAtkComponentTextInput = componentNodeById->GetAsAtkComponentTextInput();
num = ((asAtkComponentTextInput != null) ? 1161429659 : 1161429656);
break;
case 3:
_202B_206C_200C_202C_200F_200C_202A_200D_202D_206D_202B_202C_200E_206C_206C_206D_206C_200B_206C_206A_202A_206A_202D_200E_202A_202A_202D_206B_206F_202E_202C_200F_202E_206A_202B_206F_200B_202B_206A_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>(-1465025434), Array.Empty<object>());
return;
case 0:
{
asAtkComponentTextInput->SetText(text);
AtkValue* ptr = stackalloc AtkValue[2];
ptr->Type = FFXIVClientStructs.FFXIV.Component.GUI.AtkValueType.Int;
ptr->Int = 0;
byte[] array = _202A_202B_202A_200E_206F_200F_200F_206C_200B_206A_202A_200B_200F_202B_202B_206B_206F_202A_202E_200F_200E_206A_202D_206F_200C_202E_206B_200B_202D_206C_206E_202D_202D_200B_206A_200D_200B_200C_202A_202C_202E(_200F_200C_202C_206C_200C_206D_202C_206D_202C_200B_206B_206D_206D_202D_200B_206D_202B_206D_206C_206C_206D_206B_206F_206C_206A_202E_206A_200D_200F_202A_200E_202B_200D_206A_200B_206E_206E_206D_200C_200C_202E(), text);
int num7 = array.Length;
num3 = 1;
num4 = num7;
int num8 = num4 ^ num3;
int num9 = num4 & num3;
nint num10 = _202B_202E_202A_200F_200E_202A_206A_202A_206C_202D_206A_202D_202B_200E_200F_206F_206E_200E_202B_200B_206E_206F_202B_200B_206A_200B_202B_200E_200C_200D_202D_206D_200C_202C_200F_202B_206D_206D_206A_202E_202E(num8 + (num9 + num9));
_202D_200F_200B_206D_202E_206C_200C_206A_202B_200E_202B_202C_206E_206E_206C_200D_206B_202A_206B_206F_200F_206C_206E_200E_200C_206E_202A_202D_202C_202A_202B_200E_202D_200E_200C_202A_202D_200F_200D_200E_202E(array, 0, num10, array.Length);
_200D_206D_200B_202C_202C_200B_206E_206C_206C_200B_206E_206A_206E_200F_202B_202B_202E_200D_202A_206A_202E_202D_200B_202E_206C_206F_200C_206A_200B_200F_200B_206D_202E_200F_202D_200E_202A_206B_200D_206C_202E(num10 + array.Length, (byte)0);
ptr[1].Type = FFXIVClientStructs.FFXIV.Component.GUI.AtkValueType.String;
ptr[1].String = (byte*)num10;
addon->FireCallback(2u, ptr);
_206E_200B_200B_200E_200E_202B_202D_202E_206E_206B_206B_202D_206D_202D_200B_206D_202D_206E_206D_206C_202C_206F_206E_206A_206E_200E_206D_202D_206B_202A_202B_202A_206C_206A_200B_206D_202C_202A_200F_200E_202E(num10);
return;
}
case 1:
_202B_206C_200C_202C_200F_200C_202A_200D_202D_206D_202B_202C_200E_206C_206C_206D_206C_200B_206C_206A_202A_206A_202D_200E_202A_202A_202D_206B_206F_202E_202C_200F_202E_206A_202B_206F_200B_202B_206A_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>(-740037157), Array.Empty<object>());
return;
case 2:
num = 1161429658;
break;
}
_logger.LogWarning("Could not find text input node in InputString addon");
return;
}
AtkComponentTextInput* asAtkComponentTextInput = componentNodeById->GetAsAtkComponentTextInput();
if (asAtkComponentTextInput == null)
{
_logger.LogWarning("Node is not a text input component");
return;
}
asAtkComponentTextInput->SetText(text);
AtkValue* ptr = stackalloc AtkValue[2];
ptr->Type = AtkValueType.Int;
ptr->Int = 0;
byte[] bytes = Encoding.UTF8.GetBytes(text);
nint num = Marshal.AllocHGlobal(bytes.Length + 1);
Marshal.Copy(bytes, 0, num, bytes.Length);
Marshal.WriteByte(num + bytes.Length, 0);
ptr[1].Type = AtkValueType.String;
ptr[1].String = (byte*)num;
addon->FireCallback(2u, ptr);
Marshal.FreeHGlobal(num);
}
private unsafe static void ClickYes(AtkUnitBase* addon)
{
AtkValue* ptr = stackalloc AtkValue[1];
ptr->Type = FFXIVClientStructs.FFXIV.Component.GUI.AtkValueType.Int;
ptr->Type = AtkValueType.Int;
ptr->Int = 0;
addon->FireCallback(1u, ptr);
}
static void _206F_206A_206D_206E_202D_202B_202A_202D_206A_202B_200C_206F_200B_200E_202C_200F_202D_202A_206E_202D_206B_206A_202E_206A_202A_206F_206B_202C_206D_200C_206D_202D_200C_202E_200D_202D_202D_206C_202E_202B_202E(IAddonLifecycle P_0, AddonEvent P_1, string P_2, IAddonLifecycle.AddonEventDelegate P_3)
{
P_0.RegisterListener(P_1, P_2, P_3);
}
static void _200D_200C_206E_202B_200C_200D_202C_200D_202A_200D_202D_200D_206D_200C_206D_202A_200B_206E_202A_206F_200B_202D_200B_200B_206B_200B_202D_206A_206E_200F_206C_200F_202C_200F_200F_206A_206F_206C_202B_202A_202E(IAddonLifecycle P_0, AddonEvent P_1, string P_2, IAddonLifecycle.AddonEventDelegate P_3)
{
P_0.UnregisterListener(P_1, P_2, P_3);
}
static AtkUnitBasePtr _200E_202E_206D_200B_206C_202B_200E_200C_200C_200D_200E_206F_200D_206A_200D_202A_202D_200E_206B_202A_206C_202D_200E_202A_202E_206D_202C_202E_206D_206D_202C_200F_206D_206D_200F_202B_202E_202B_206E_206E_202E(AddonArgs P_0)
{
return P_0.Addon;
}
unsafe static bool _200F_206F_206E_206B_202C_202E_200F_206A_202D_206D_206A_200F_206A_202B_200E_202A_206E_200B_202D_206B_206E_206B_206F_206D_206C_202D_202C_202A_206D_202C_200C_202A_202A_206F_206D_206E_202E_202B_200D_200E_202E(AtkUnitBase* P_0)
{
return LAddon.IsAddonReady(P_0);
}
static void _202B_202A_200B_200B_202A_202A_206C_202D_200F_206E_200D_200B_206B_200B_202A_200C_202E_206D_206A_206E_200C_200E_206A_206E_206C_206A_202A_206C_206C_200B_206B_206C_206B_206A_202B_202C_200C_200D_206F_206C_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static bool _206D_202E_200E_202A_202E_200B_202B_200F_206E_200F_202C_202E_206C_200C_206E_202A_202D_200B_202B_206E_206B_206A_202D_202C_206B_200B_202D_206C_206A_202C_206C_206D_206B_206C_200C_200B_202B_206D_206E_200C_202E(string P_0)
{
return string.IsNullOrWhiteSpace(P_0);
}
static string _206B_202B_206E_206B_206F_202D_202D_200F_202A_200C_200B_202E_206B_206E_206B_200C_206B_206E_200D_200E_200E_202E_206E_202A_206C_206A_202E_206F_206B_202C_206E_206C_206D_200F_206A_202C_206E_200C_200E_200C_202E(string P_0)
{
return P_0.Trim();
}
static int _200B_202B_206F_202D_202C_206F_200B_202E_202E_206D_200E_202B_202B_200F_202A_200E_206B_202C_206C_206D_206F_202B_202C_202C_200B_200C_200D_200D_206A_206F_202A_202E_202C_202D_202B_206C_200C_206D_200D_200F_202E(string P_0)
{
return P_0.Length;
}
static string _200F_206E_206F_206A_206B_206F_206C_206E_206C_202A_200E_206D_206B_202D_206D_206E_200D_202A_202C_206A_206D_200C_206A_200D_202B_202D_206C_206B_202B_206A_202D_206E_200E_206E_200B_206D_202C_206A_202A_202E_202E(string P_0, int P_1, int P_2)
{
return P_0.Substring(P_1, P_2);
}
static string _202A_206E_202A_202B_202A_206F_202B_202E_200B_206D_202D_202D_202C_202B_200B_202E_206A_200B_206E_200D_202C_206D_202A_200E_206C_206E_200E_202B_206E_200C_200D_200B_206A_200D_202B_206D_206B_206D_202C_202E(string P_0)
{
return P_0.ToUpperInvariant();
}
static string _202D_206D_200B_206E_202B_200F_206B_200B_206D_200F_202E_200D_206A_206F_200D_202E_200C_202D_206E_202A_206F_206B_206B_202A_200C_206C_206A_200B_206A_206C_202B_202B_202B_206A_202C_206B_206E_200D_206C_202C_202E(string P_0, int P_1)
{
return P_0.Substring(P_1);
}
static string _200F_200E_206B_202E_206E_206A_206B_200E_200B_206A_202B_200D_202B_206F_206F_206F_202D_206F_200F_200F_206B_200D_206B_206E_200D_206E_206E_202B_202C_206E_206E_200E_202E_206D_206C_206C_206C_206E_202A_206E_202E(string P_0)
{
return P_0.ToLowerInvariant();
}
static string _202B_202B_206C_200C_202D_206C_200F_202B_200B_200B_206E_206D_206B_202A_206E_206F_202B_202A_200C_206F_206E_200E_200D_202C_206D_200C_206E_202D_206A_206C_206D_200C_206D_200D_206E_206B_206E_206C_206B_202E(string P_0, string P_1)
{
return P_0 + P_1;
}
static void _202B_206C_200C_202C_200F_200C_202A_200D_202D_206D_202B_202C_200E_206C_206C_206D_206C_200B_206C_206A_202A_206A_202D_200E_202A_202A_202D_206B_206F_202E_202C_200F_202E_206A_202B_206F_200B_202B_206A_202D_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogWarning(P_1, P_2);
}
static Encoding _200F_200C_202C_206C_200C_206D_202C_206D_202C_200B_206B_206D_206D_202D_200B_206D_202B_206D_206C_206C_206D_206B_206F_206C_206A_202E_206A_200D_200F_202A_200E_202B_200D_206A_200B_206E_206E_206D_200C_200C_202E()
{
return Encoding.UTF8;
}
static byte[] _202A_202B_202A_200E_206F_200F_200F_206C_200B_206A_202A_200B_200F_202B_202B_206B_206F_202A_202E_200F_200E_206A_202D_206F_200C_202E_206B_200B_202D_206C_206E_202D_202D_200B_206A_200D_200B_200C_202A_202C_202E(Encoding P_0, string P_1)
{
return P_0.GetBytes(P_1);
}
static nint _202B_202E_202A_200F_200E_202A_206A_202A_206C_202D_206A_202D_202B_200E_200F_206F_206E_200E_202B_200B_206E_206F_202B_200B_206A_200B_202B_200E_200C_200D_202D_206D_200C_202C_200F_202B_206D_206D_206A_202E_202E(int P_0)
{
return Marshal.AllocHGlobal(P_0);
}
static void _202D_200F_200B_206D_202E_206C_200C_206A_202B_200E_202B_202C_206E_206E_206C_200D_206B_202A_206B_206F_200F_206C_206E_200E_200C_206E_202A_202D_202C_202A_202B_200E_202D_200E_200C_202A_202D_200F_200D_200E_202E(byte[] P_0, int P_1, nint P_2, int P_3)
{
Marshal.Copy(P_0, P_1, P_2, P_3);
}
static void _200D_206D_200B_202C_202C_200B_206E_206C_206C_200B_206E_206A_206E_200F_202B_202B_202E_200D_202A_206A_202E_202D_200B_202E_206C_206F_200C_206A_200B_200F_200B_206D_202E_200F_202D_200E_202A_206B_200D_206C_202E(nint P_0, byte P_1)
{
Marshal.WriteByte(P_0, P_1);
}
static void _206E_200B_200B_200E_200E_202B_202D_202E_206E_206B_206B_202D_206D_202D_200B_206D_202D_206E_206D_206C_202C_206F_206E_206A_206E_200E_206D_202D_206B_202A_202B_202A_206C_206A_200B_206D_202C_202A_200F_200E_202E(nint P_0)
{
Marshal.FreeHGlobal(P_0);
}
static QuestId _206C_206C_202C_202A_202B_202C_202C_202C_202D_200C_200D_206D_202E_200E_202E_206D_206A_202C_206E_206E_202C_200B_206D_200C_202B_206E_202D_206B_206F_206B_200F_206B_202D_206C_202C_200B_206F_206E_206E_202C_202E(ushort P_0)
{
return new QuestId(P_0);
}
}

View file

@ -1,10 +1,7 @@
using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
using Dalamud.Game.Addon.Lifecycle;
using Dalamud.Game.Addon.Lifecycle.AddonArgTypes;
using Dalamud.Game.NativeWrapper;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.UI;
using FFXIVClientStructs.FFXIV.Component.GUI;
@ -27,7 +24,6 @@ internal sealed class CraftworksSupplyController : IDisposable
private bool ShouldHandleUiInteractions => _questController.IsRunning;
[MethodImpl(MethodImplOptions.NoInlining)]
public CraftworksSupplyController(QuestController questController, IAddonLifecycle addonLifecycle, IGameGui gameGui, IFramework framework, ILogger<CraftworksSupplyController> logger)
{
_questController = questController;
@ -35,273 +31,125 @@ internal sealed class CraftworksSupplyController : IDisposable
_gameGui = gameGui;
_framework = framework;
_logger = logger;
_206A_206B_206F_200B_200D_206D_200F_200D_202D_206B_200E_206B_200F_206D_200F_206F_206C_206A_206B_206F_202D_206B_206D_206B_206F_206F_202B_202C_200B_206C_206D_200F_200F_206E_206F_206A_202E_206B_200B_206D_202E(_addonLifecycle, AddonEvent.PostReceiveEvent, 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>(-1810521484), (IAddonLifecycle.AddonEventDelegate)ContextIconMenuPostReceiveEvent);
_206A_206B_206F_200B_200D_206D_200F_200D_202D_206B_200E_206B_200F_206D_200F_206F_206C_206A_206B_206F_202D_206B_206D_206B_206F_206F_202B_202C_200B_206C_206D_200F_200F_206E_206F_206A_202E_206B_200B_206D_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(-145476245), (IAddonLifecycle.AddonEventDelegate)BankaCraftworksSupplyPostUpdate);
_addonLifecycle.RegisterListener(AddonEvent.PostReceiveEvent, "ContextIconMenu", ContextIconMenuPostReceiveEvent);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "BankaCraftworksSupply", BankaCraftworksSupplyPostUpdate);
}
private unsafe void BankaCraftworksSupplyPostUpdate(AddonEvent type, AddonArgs args)
{
int num = (ShouldHandleUiInteractions ? (-1071885415) : (-1071885414));
while (true)
if (ShouldHandleUiInteractions)
{
int num2 = num;
int num3 = -1071885413;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
{
AtkUnitBase* address = (AtkUnitBase*)_202D_202C_206E_200E_200F_200C_200B_200E_202B_206B_200D_200F_200F_206A_202E_202A_200B_202B_206E_200C_206D_202B_200C_202C_200B_202E_200D_200E_206D_206C_202B_206A_200D_206C_206C_200D_200C_200C_202E(args).Address;
InteractWithBankaCraftworksSupply(address);
return;
}
case 1:
return;
case 0:
goto IL_005b;
}
continue;
IL_005b:
num = -1071885414;
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
InteractWithBankaCraftworksSupply(address);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void InteractWithBankaCraftworksSupply()
{
AtkUnitBase* addonPtr;
int num = ((!_gameGui.TryGetAddonByName<AtkUnitBase>(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>(473068994), out addonPtr)) ? 1997830523 : 1997830520);
while (true)
if (_gameGui.TryGetAddonByName<AtkUnitBase>("BankaCraftworksSupply", out var addonPtr))
{
int num2 = num;
int num3 = 1997830522;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 1:
return;
case 2:
InteractWithBankaCraftworksSupply(addonPtr);
num = 1997830523;
break;
case 0:
num = 1997830520;
break;
}
InteractWithBankaCraftworksSupply(addonPtr);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void InteractWithBankaCraftworksSupply(AtkUnitBase* addon)
{
AtkValue* atkValues = addon->AtkValues;
uint uInt = atkValues[7].UInt;
int num = (int)uInt;
int num2 = 6;
uint num3 = (uint)(~(~num2 + num));
int num4 = 0;
int num5 = 571288913;
while (true)
uint num = 6 - uInt;
for (int i = 0; i < num; i++)
{
int num6 = num5;
num = 571288917;
num2 = num6;
int num7 = num2 + num;
int num8 = num2 & num;
switch (num7 - (num8 + num8))
if (atkValues[31 + i].UInt == 0)
{
case 7:
_200F_200E_206D_202E_206A_206E_202E_202E_200E_206F_200E_206A_202E_200E_202C_200E_200D_202C_206B_200C_202A_202C_206E_200B_200D_206A_202C_200E_200F_206E_206C_200C_202B_200D_200B_202B_202E_200E_202A_206C_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>(-1814180026), Array.Empty<object>());
addon->FireCallbackInt(0);
num5 = 571288916;
break;
case 2:
{
int num11 = num4;
num = 1;
num2 = num11;
int num12 = num2 ^ num;
int num13 = num2 & num;
num4 = num12 + (num13 + num13);
num5 = 571288913;
break;
}
case 3:
num5 = 571288913;
break;
case 1:
return;
case 5:
{
_200F_200E_206D_202E_206A_206E_202E_202E_200E_206F_200E_206A_202E_200E_202C_200E_200D_202C_206B_200C_202A_202C_206E_200B_200D_206A_202C_200E_200F_206E_206C_200C_202B_200D_200B_202B_202E_200E_202A_206C_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>(2009382844), new object[1] { num4 });
_logger.LogDebug("Selecting an item for slot {Slot}", i);
AtkValue* values = stackalloc AtkValue[2]
{
new AtkValue
{
Type = FFXIVClientStructs.FFXIV.Component.GUI.AtkValueType.Int,
Type = AtkValueType.Int,
Int = 2
},
new AtkValue
{
Type = FFXIVClientStructs.FFXIV.Component.GUI.AtkValueType.Int,
Int = num4
Type = AtkValueType.Int,
Int = i
}
};
addon->FireCallback(2u, values);
return;
}
case 4:
num5 = ((num4 < num3) ? 571288915 : 571288917);
break;
case 0:
num5 = ((atkValues[31].UInt == 0) ? 571288916 : 571288914);
break;
case 6:
{
num = num4;
num2 = 31;
int num9 = num2 ^ num;
int num10 = num2 & num;
num5 = ((atkValues[num9 + (num10 + num10)].UInt != 0) ? 571288919 : 571288912);
break;
}
}
}
if (atkValues[31].UInt != 0)
{
_logger.LogDebug("Confirming turn-in");
addon->FireCallbackInt(0);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void ContextIconMenuPostReceiveEvent(AddonEvent type, AddonArgs args)
{
int num = (ShouldHandleUiInteractions ? 127250467 : 127250479);
AtkUnitBase* addonById = default(AtkUnitBase*);
ushort blockedParentId = default(ushort);
AddonContextIconMenu* address = default(AddonContextIconMenu*);
while (true)
if (!ShouldHandleUiInteractions)
{
int num2 = num;
int num3 = 127250475;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
return;
}
AddonContextIconMenu* address = (AddonContextIconMenu*)args.Addon.Address;
if (!address->IsVisible)
{
return;
}
ushort blockedParentId = address->BlockedParentId;
if (blockedParentId == 0)
{
return;
}
AtkUnitBase* addonById = AtkStage.Instance()->RaptureAtkUnitManager->GetAddonById(blockedParentId);
if (addonById->NameString == "BankaCraftworksSupply")
{
_logger.LogDebug("Picking item for {AddonName}", addonById->NameString);
AtkValue* values = stackalloc AtkValue[5]
{
case 7:
return;
case 10:
addonById = AtkStage.Instance()->RaptureAtkUnitManager->GetAddonById(blockedParentId);
num = ((!_206B_200E_202C_202E_200F_200E_206C_202E_206F_200E_202D_200F_200D_202E_200E_200E_206F_206E_200E_206F_200B_202D_200B_206D_202B_206A_200D_206A_202E_200B_202A_206E_202B_206F_202B_200B_200E_206B_200B_202B_202E(addonById->NameString, 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>(-145476245))) ? 127250475 : 127250473);
break;
case 4:
return;
case 5:
return;
case 9:
num = 127250479;
break;
case 2:
{
_200F_200E_206D_202E_206A_206E_202E_202E_200E_206F_200E_206A_202E_200E_202C_200E_200D_202C_206B_200C_202A_202C_206E_200B_200D_206A_202C_200E_200F_206E_206C_200C_202B_200D_200B_202B_202E_200E_202A_206C_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>(1861072248), new object[1] { addonById->NameString });
AtkValue* values = stackalloc AtkValue[5]
new AtkValue
{
new AtkValue
{
Type = FFXIVClientStructs.FFXIV.Component.GUI.AtkValueType.Int,
Int = 0
},
new AtkValue
{
Type = FFXIVClientStructs.FFXIV.Component.GUI.AtkValueType.Int,
Int = 0
},
new AtkValue
{
Type = FFXIVClientStructs.FFXIV.Component.GUI.AtkValueType.UInt,
UInt = 20802u
},
new AtkValue
{
Type = FFXIVClientStructs.FFXIV.Component.GUI.AtkValueType.UInt,
UInt = 0u
},
new AtkValue
{
Type = FFXIVClientStructs.FFXIV.Component.GUI.AtkValueType.Undefined,
Int = 0
}
};
address->FireCallback(5u, values);
address->Close(fireCallback: true);
num = ((!_206B_200E_202C_202E_200F_200E_206C_202E_206F_200E_202D_200F_200D_202E_200E_200E_206F_206E_200E_206F_200B_202D_200B_206D_202B_206A_200D_206A_202E_200B_202A_206E_202B_206F_202B_200B_200E_206B_200B_202B_202E(addonById->NameString, 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>(473068994))) ? 127250476 : 127250477);
break;
}
case 8:
address = (AddonContextIconMenu*)_202D_202C_206E_200E_200F_200C_200B_200E_202B_206B_200D_200F_200F_206A_202E_202A_200B_202B_206E_200C_206D_202B_200C_202C_200B_202E_200D_200E_206D_206C_202B_206A_200D_206C_206C_200D_200C_200C_202E(args).Address;
num = (address->IsVisible ? 127250472 : 127250474);
break;
case 1:
return;
case 3:
blockedParentId = address->BlockedParentId;
num = ((blockedParentId != 0) ? 127250465 : 127250478);
break;
case 6:
_206E_202E_200E_200E_200D_206B_200E_200F_206E_202B_202E_202C_202C_206D_202B_202B_206D_206C_206A_206B_206D_202E_206D_202A_206B_202A_200F_206B_200B_202A_202D_200E_206C_200D_200E_206A_202A_200F_200F_200D_202E(_framework, (Action)InteractWithBankaCraftworksSupply, TimeSpan.FromMilliseconds(50L), 0, default(CancellationToken));
return;
case 0:
_200D_200B_202D_200D_200D_202D_200F_206A_202C_206A_200F_206F_202E_206A_206C_206D_200B_206F_206D_206F_206F_200E_202B_202D_202E_202E_200F_206A_200E_200B_206B_202B_206E_200F_200C_202A_206E_206E_200E_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>(599931769), new object[1] { addonById->NameString });
num = 127250476;
break;
Type = AtkValueType.Int,
Int = 0
},
new AtkValue
{
Type = AtkValueType.Int,
Int = 0
},
new AtkValue
{
Type = AtkValueType.UInt,
UInt = 20802u
},
new AtkValue
{
Type = AtkValueType.UInt,
UInt = 0u
},
new AtkValue
{
Type = AtkValueType.Undefined,
Int = 0
}
};
address->FireCallback(5u, values);
address->Close(fireCallback: true);
if (addonById->NameString == "BankaCraftworksSupply")
{
_framework.RunOnTick((Action)InteractWithBankaCraftworksSupply, TimeSpan.FromMilliseconds(50L), 0, default(CancellationToken));
}
}
else
{
_logger.LogTrace("Ignoring contextmenu event for {AddonName}", addonById->NameString);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
public void Dispose()
{
_202C_202A_200D_206E_206B_206E_202E_206F_200C_202D_200E_202A_202D_202A_206E_202D_200E_202C_206E_202B_206F_206F_200F_206D_200D_200E_202B_206D_202C_202C_206F_202C_200C_206F_200F_206B_202E_200F_202C_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(-145476245), (IAddonLifecycle.AddonEventDelegate)BankaCraftworksSupplyPostUpdate);
_202C_202A_200D_206E_206B_206E_202E_206F_200C_202D_200E_202A_202D_202A_206E_202D_200E_202C_206E_202B_206F_206F_200F_206D_200D_200E_202B_206D_202C_202C_206F_202C_200C_206F_200F_206B_202E_200F_202C_202E(_addonLifecycle, AddonEvent.PostReceiveEvent, 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>(-1517352896), (IAddonLifecycle.AddonEventDelegate)ContextIconMenuPostReceiveEvent);
}
void IDisposable.Dispose()
{
//ILSpy generated this explicit interface implementation from .override directive in Dispose
this.Dispose();
}
static void _206A_206B_206F_200B_200D_206D_200F_200D_202D_206B_200E_206B_200F_206D_200F_206F_206C_206A_206B_206F_202D_206B_206D_206B_206F_206F_202B_202C_200B_206C_206D_200F_200F_206E_206F_206A_202E_206B_200B_206D_202E(IAddonLifecycle P_0, AddonEvent P_1, string P_2, IAddonLifecycle.AddonEventDelegate P_3)
{
P_0.RegisterListener(P_1, P_2, P_3);
}
static AtkUnitBasePtr _202D_202C_206E_200E_200F_200C_200B_200E_202B_206B_200D_200F_200F_206A_202E_202A_200B_202B_206E_200C_206D_202B_200C_202C_200B_202E_200D_200E_206D_206C_202B_206A_200D_206C_206C_200D_200C_200C_202E(AddonArgs P_0)
{
return P_0.Addon;
}
static void _200F_200E_206D_202E_206A_206E_202E_202E_200E_206F_200E_206A_202E_200E_202C_200E_200D_202C_206B_200C_202A_202C_206E_200B_200D_206A_202C_200E_200F_206E_206C_200C_202B_200D_200B_202B_202E_200E_202A_206C_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static bool _206B_200E_202C_202E_200F_200E_206C_202E_206F_200E_202D_200F_200D_202E_200E_200E_206F_206E_200E_206F_200B_202D_200B_206D_202B_206A_200D_206A_202E_200B_202A_206E_202B_206F_202B_200B_200E_206B_200B_202B_202E(string P_0, string P_1)
{
return P_0 == P_1;
}
static Task _206E_202E_200E_200E_200D_206B_200E_200F_206E_202B_202E_202C_202C_206D_202B_202B_206D_206C_206A_206B_206D_202E_206D_202A_206B_202A_200F_206B_200B_202A_202D_200E_206C_200D_200E_206A_202A_200F_200F_200D_202E(IFramework P_0, Action P_1, TimeSpan P_2, int P_3, CancellationToken P_4)
{
return P_0.RunOnTick(P_1, P_2, P_3, P_4);
}
static void _200D_200B_202D_200D_200D_202D_200F_206A_202C_206A_200F_206F_202E_206A_206C_206D_200B_206F_206D_206F_206F_200E_202B_202D_202E_202E_200F_206A_200E_200B_206B_202B_206E_200F_200C_202A_206E_206E_200E_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogTrace(P_1, P_2);
}
static void _202C_202A_200D_206E_206B_206E_202E_206F_200C_202D_200E_202A_202D_202A_206E_202D_200E_202C_206E_202B_206F_206F_200F_206D_200D_200E_202B_206D_202C_202C_206F_202C_200C_206F_200F_206B_202E_200F_202C_202E(IAddonLifecycle P_0, AddonEvent P_1, string P_2, IAddonLifecycle.AddonEventDelegate P_3)
{
P_0.UnregisterListener(P_1, P_2, P_3);
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "BankaCraftworksSupply", BankaCraftworksSupplyPostUpdate);
_addonLifecycle.UnregisterListener(AddonEvent.PostReceiveEvent, "ContextIconMenu", ContextIconMenuPostReceiveEvent);
}
}

View file

@ -1,11 +1,7 @@
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Threading;
using Dalamud.Game.Addon.Lifecycle;
using Dalamud.Game.Addon.Lifecycle.AddonArgTypes;
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Game.NativeWrapper;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Component.GUI;
using Microsoft.Extensions.Logging;
@ -14,84 +10,6 @@ namespace Questionable.Controller.GameUi;
internal sealed class CreditsController : IDisposable
{
[CompilerGenerated]
private sealed class _003C_003Ec__DisplayClass23_0
{
public CreditsController _003C_003E4__this;
public AddonArgs args;
[MethodImpl(MethodImplOptions.NoInlining)]
internal unsafe void _003CCreditScrollPostSetup_003Eb__0()
{
_202C_202D_202B_206B_200E_200F_200E_206B_206A_206D_206B_200B_200F_202E_206C_206F_202C_206C_206E_200D_202B_206A_206D_202B_202D_206D_206C_202E_202C_200E_200F_202D_206B_202C_202B_206B_202E_200F_206F_202E((ILogger)_003C_003E4__this._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>(-1595844089), Array.Empty<object>());
AtkUnitBase* address = (AtkUnitBase*)_202C_200E_200E_202A_206A_200C_202B_206F_206C_206F_200C_206F_206E_200C_200D_202C_202C_206F_202A_206C_202C_202A_202B_200E_206E_200F_202C_206E_202B_206B_202A_200C_200D_200C_206C_202A_200D_202E_200D_206B_202E(args).Address;
address->FireCallbackInt(-2);
}
static void _202C_202D_202B_206B_200E_200F_200E_206B_206A_206D_206B_200B_200F_202E_206C_206F_202C_206C_206E_200D_202B_206A_206D_202B_202D_206D_206C_202E_202C_200E_200F_202D_206B_202C_202B_206B_202E_200F_206F_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static AtkUnitBasePtr _202C_200E_200E_202A_206A_200C_202B_206F_206C_206F_200C_206F_206E_200C_200D_202C_202C_206F_202A_206C_202C_202A_202B_200E_206E_200F_202C_206E_202B_206B_202A_200C_200D_200C_206C_202A_200D_202E_200D_206B_202E(AddonArgs P_0)
{
return P_0.Addon;
}
}
[CompilerGenerated]
private sealed class _003C_003Ec__DisplayClass24_0
{
public CreditsController _003C_003E4__this;
public AddonArgs args;
[MethodImpl(MethodImplOptions.NoInlining)]
internal unsafe void _003CCreditPostSetup_003Eb__0()
{
_206F_202B_200E_206B_200F_206B_206D_202E_200B_202C_202C_206E_200C_202D_202D_200B_202B_200E_202C_206B_206D_200D_200D_202C_200F_200C_200E_202C_206F_206B_200B_202D_200E_202B_206E_202A_200F_200D_200C_202E((ILogger)_003C_003E4__this._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>(-1464866894), Array.Empty<object>());
AtkUnitBase* address = (AtkUnitBase*)_202E_206A_206F_206F_200D_200D_202B_206B_206F_200D_202E_202E_202C_202A_202C_202E_206A_206D_206D_206D_206D_200E_202B_200D_200B_200F_206F_202D_202B_206E_200F_206E_206A_206A_200E_200B_202D_206A_202C_202C_202E(args).Address;
address->FireCallbackInt(-2);
}
static void _206F_202B_200E_206B_200F_206B_206D_202E_200B_202C_202C_206E_200C_202D_202D_200B_202B_200E_202C_206B_206D_200D_200D_202C_200F_200C_200E_202C_206F_206B_200B_202D_200E_202B_206E_202A_200F_200D_200C_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static AtkUnitBasePtr _202E_206A_206F_206F_200D_200D_202B_206B_206F_200D_202E_202E_202C_202A_202C_202E_206A_206D_206D_206D_206D_200E_202B_200D_200B_200F_206F_202D_202B_206E_200F_206E_206A_206A_200E_200B_202D_206A_202C_202C_202E(AddonArgs P_0)
{
return P_0.Addon;
}
}
[CompilerGenerated]
private sealed class _003C_003Ec__DisplayClass25_0
{
public CreditsController _003C_003E4__this;
public AddonArgs args;
[MethodImpl(MethodImplOptions.NoInlining)]
internal unsafe void _003CCreditPlayerPostSetup_003Eb__0()
{
_200C_206E_200C_200D_202D_202C_206C_200B_200C_206B_202B_200B_202A_206B_202C_206B_202A_206F_206E_206B_200E_202A_200E_200E_200C_202D_202A_202B_200E_202A_200C_200C_206D_200C_202D_200F_200F_202D_206B_202A_202E((ILogger)_003C_003E4__this._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>(586600745), Array.Empty<object>());
AtkUnitBase* address = (AtkUnitBase*)_200D_200B_202D_202A_200B_200F_200B_206F_206C_202C_202C_206E_206D_206E_200D_200D_200F_206A_202C_206B_206A_202A_200F_202A_206C_206E_206E_202D_202B_206B_202A_202B_200B_200D_206A_202D_200D_206B_202E_202E(args).Address;
address->Close(fireCallback: true);
}
static void _200C_206E_200C_200D_202D_202C_206C_200B_200C_206B_202B_200B_202A_206B_202C_206B_202A_206F_206E_206B_200E_202A_200E_200E_200C_202D_202A_202B_200E_202A_200C_200C_206D_200C_202D_200F_200F_202D_206B_202A_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static AtkUnitBasePtr _200D_200B_202D_202A_200B_200F_200B_206F_206C_202C_202C_206E_206D_206E_200D_200D_200F_206A_202C_206B_206A_202A_200F_202A_206C_206E_206E_202D_202B_206B_202A_202B_200B_200D_206A_202D_200D_206B_202E_202E(AddonArgs P_0)
{
return P_0.Addon;
}
}
private static CreditsController? _instance;
private static IAddonLifecycle? _registeredLifecycle;
@ -111,11 +29,11 @@ internal sealed class CreditsController : IDisposable
_instance?.CreditPlayerPostSetup(t, a);
};
private static readonly string[] CreditScrollArray = new string[1] { 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>(-1480537905) };
private static readonly string[] CreditScrollArray = new string[1] { "CreditScroll" };
private static readonly string[] CreditArray = new string[1] { 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>(-1278080404) };
private static readonly string[] CreditArray = new string[1] { "Credit" };
private static readonly string[] CreditPlayerArray = new string[1] { 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>(1133859703) };
private static readonly string[] CreditPlayerArray = new string[1] { "CreditPlayer" };
private static bool _deferDisposeUntilCutsceneEnds;
@ -141,558 +59,191 @@ internal sealed class CreditsController : IDisposable
private readonly ILogger<CreditsController> _logger;
private static readonly object _lock = _202A_206C_206F_202E_200B_206A_206D_202C_202B_200E_200E_206E_206B_202D_206B_206E_200D_202A_202C_206B_206A_202D_200C_206D_202E_200F_202A_206B_200E_206E_202C_200F_200D_202C_206A_200E_206C_206B_202A_206D_202E();
private static readonly object _lock = new object();
[MethodImpl(MethodImplOptions.NoInlining)]
public CreditsController(IAddonLifecycle addonLifecycle, Configuration configuration, ICondition condition, ILogger<CreditsController> logger)
{
_addonLifecycle = addonLifecycle;
_configuration = configuration;
_condition = condition;
_logger = logger;
object obj = _lock;
bool flag = false;
try
lock (_lock)
{
_200B_200F_202B_200E_200D_206E_200E_206D_206F_202D_206C_200B_206E_200D_202B_206E_202C_200E_202D_200E_202D_202D_206C_202B_200D_202B_206C_202B_202C_206B_202E_202A_202E_202C_206A_206A_206E_206A_206D_202E_202E(obj, ref flag);
if (_instance == null)
{
_instance = this;
_registeredLifecycle = _addonLifecycle;
_200C_202A_202A_202B_202A_200F_200F_206A_206C_200F_200F_202B_206A_206F_202B_200B_200B_202C_206D_206A_202B_200F_200F_202D_202D_200B_206A_200D_200D_202C_202B_200E_200F_200F_200D_206C_206D_202D_206B_200F_202E(_addonLifecycle, AddonEvent.PostSetup, (IEnumerable<string>)CreditScrollArray, _creditScrollHandler);
_200C_202A_202A_202B_202A_200F_200F_206A_206C_200F_200F_202B_206A_206F_202B_200B_200B_202C_206D_206A_202B_200F_200F_202D_202D_200B_206A_200D_200D_202C_202B_200E_200F_200F_200D_206C_206D_202D_206B_200F_202E(_addonLifecycle, AddonEvent.PostSetup, (IEnumerable<string>)CreditArray, _creditHandler);
_200C_202A_202A_202B_202A_200F_200F_206A_206C_200F_200F_202B_206A_206F_202B_200B_200B_202C_206D_206A_202B_200F_200F_202D_202D_200B_206A_200D_200D_202C_202B_200E_200F_200F_200D_206C_206D_202D_206B_200F_202E(_addonLifecycle, AddonEvent.PostSetup, (IEnumerable<string>)CreditPlayerArray, _creditPlayerHandler);
_202D_200E_206B_200C_206D_200C_202C_206E_200E_206C_206C_200F_206D_206C_206B_202E_202B_206F_200F_206D_206B_206F_200B_200D_206E_200F_200C_202A_202B_200F_202D_200E_202E_206B_202C_206C_206F_200B_206B_202C_202E(_condition, (ICondition.ConditionChangeDelegate)OnConditionChange);
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_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>(-1181221171), new object[1] { _maxConsecutiveSkips });
}
}
finally
{
if (flag)
{
_200C_206A_200D_200F_202D_200B_206C_206B_202A_202C_202A_200B_202A_202E_206E_202B_206D_200F_206A_200C_202B_200F_200D_206F_206F_200F_200B_200C_202D_202D_206B_200C_206A_206E_200B_206D_200C_200E_206E_202E(obj);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, CreditScrollArray, _creditScrollHandler);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, CreditArray, _creditHandler);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, CreditPlayerArray, _creditPlayerHandler);
_condition.ConditionChange += OnConditionChange;
_logger.LogDebug("CreditsController: registered listeners and ready to skip up to {MaxSkips} successive cutscenes.", _maxConsecutiveSkips);
}
}
}
private void OnConditionChange(ConditionFlag flag, bool value)
{
int num = ((flag == ConditionFlag.OccupiedInCutSceneEvent) ? 186472363 : 186472362);
bool flag2 = default(bool);
while (true)
if ((flag == ConditionFlag.OccupiedInCutSceneEvent || flag == ConditionFlag.WatchingCutscene || flag == ConditionFlag.WatchingCutscene78) ? true : false)
{
int num2 = num;
int num3 = 186472361;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
if (value)
{
case 10:
num = 186472362;
break;
case 0:
num = ((!value) ? 186472366 : 186472352);
break;
case 4:
num = ((flag != ConditionFlag.WatchingCutscene78) ? 186472367 : 186472363);
break;
case 11:
NotifyCutsceneEnded();
num = 186472360;
break;
case 9:
DeferDisposeUntilCutsceneEnds();
return;
case 12:
num = (flag2 ? 186472361 : 186472364);
break;
case 6:
flag2 = false;
num = 186472357;
break;
case 2:
flag2 = true;
num = 186472357;
break;
case 5:
return;
case 13:
num = (_206F_200E_202C_206A_200D_202D_206A_202A_202A_202B_200B_202D_200B_200F_200C_206E_206E_202B_206E_200E_206E_206A_202B_206A_200E_202D_200C_206C_200E_200D_206B_206E_202A_200B_200B_200D_202E_202C_206F_202B_202E(_condition, ConditionFlag.WatchingCutscene78) ? 186472360 : 186472354);
break;
case 8:
num = (_206F_200E_202C_206A_200D_202D_206A_202A_202A_202B_200B_202D_200B_200F_200C_206E_206E_202B_206E_200E_206E_206A_202B_206A_200E_202D_200C_206C_200E_200D_206B_206E_202A_200B_200B_200D_202E_202C_206F_202B_202E(_condition, ConditionFlag.WatchingCutscene) ? 186472360 : 186472356);
break;
case 1:
return;
case 7:
num = (_206F_200E_202C_206A_200D_202D_206A_202A_202A_202B_200B_202D_200B_200F_200C_206E_206E_202B_206E_200E_206E_206A_202B_206A_200E_202D_200C_206C_200E_200D_206B_206E_202A_200B_200B_200D_202E_202C_206F_202B_202E(_condition, ConditionFlag.OccupiedInCutSceneEvent) ? 186472360 : 186472353);
break;
case 3:
num = ((flag == ConditionFlag.WatchingCutscene) ? 186472363 : 186472365);
break;
}
else if (!_condition[ConditionFlag.OccupiedInCutSceneEvent] && !_condition[ConditionFlag.WatchingCutscene] && !_condition[ConditionFlag.WatchingCutscene78])
{
NotifyCutsceneEnded();
}
}
}
private unsafe void CreditScrollPostSetup(AddonEvent type, AddonArgs args)
{
HandleCutscene([MethodImpl(MethodImplOptions.NoInlining)] () =>
HandleCutscene(delegate
{
_003C_003Ec__DisplayClass23_0._202C_202D_202B_206B_200E_200F_200E_206B_206A_206D_206B_200B_200F_202E_206C_206F_202C_206C_206E_200D_202B_206A_206D_202B_202D_206D_206C_202E_202C_200E_200F_202D_206B_202C_202B_206B_202E_200F_206F_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>(-1595844089), Array.Empty<object>());
AtkUnitBase* address = (AtkUnitBase*)_003C_003Ec__DisplayClass23_0._202C_200E_200E_202A_206A_200C_202B_206F_206C_206F_200C_206F_206E_200C_200D_202C_202C_206F_202A_206C_202C_202A_202B_200E_206E_200F_202C_206E_202B_206B_202A_200C_200D_200C_206C_202A_200D_202E_200D_206B_202E(args).Address;
_logger.LogDebug("CreditScrollPostSetup: attempting to close credits sequence (scroll).");
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
address->FireCallbackInt(-2);
}, args);
}
private unsafe void CreditPostSetup(AddonEvent type, AddonArgs args)
{
HandleCutscene([MethodImpl(MethodImplOptions.NoInlining)] () =>
HandleCutscene(delegate
{
_003C_003Ec__DisplayClass24_0._206F_202B_200E_206B_200F_206B_206D_202E_200B_202C_202C_206E_200C_202D_202D_200B_202B_200E_202C_206B_206D_200D_200D_202C_200F_200C_200E_202C_206F_206B_200B_202D_200E_202B_206E_202A_200F_200D_200C_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>(-1464866894), Array.Empty<object>());
AtkUnitBase* address = (AtkUnitBase*)_003C_003Ec__DisplayClass24_0._202E_206A_206F_206F_200D_200D_202B_206B_206F_200D_202E_202E_202C_202A_202C_202E_206A_206D_206D_206D_206D_200E_202B_200D_200B_200F_206F_202D_202B_206E_200F_206E_206A_206A_200E_200B_202D_206A_202C_202C_202E(args).Address;
_logger.LogDebug("CreditPostSetup: attempting to close credits sequence.");
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
address->FireCallbackInt(-2);
}, args);
}
private unsafe void CreditPlayerPostSetup(AddonEvent type, AddonArgs args)
{
HandleCutscene([MethodImpl(MethodImplOptions.NoInlining)] () =>
HandleCutscene(delegate
{
_003C_003Ec__DisplayClass25_0._200C_206E_200C_200D_202D_202C_206C_200B_200C_206B_202B_200B_202A_206B_202C_206B_202A_206F_206E_206B_200E_202A_200E_200E_200C_202D_202A_202B_200E_202A_200C_200C_206D_200C_202D_200F_200F_202D_206B_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>(586600745), Array.Empty<object>());
AtkUnitBase* address = (AtkUnitBase*)_003C_003Ec__DisplayClass25_0._200D_200B_202D_202A_200B_200F_200B_206F_206C_202C_202C_206E_206D_206E_200D_200D_200F_206A_202C_206B_206A_202A_200F_202A_206C_206E_206E_202D_202B_206B_202A_202B_200B_200D_206A_202D_200D_206B_202E_202E(args).Address;
_logger.LogDebug("CreditPlayerPostSetup: attempting to close CreditPlayer.");
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
address->Close(fireCallback: true);
}, args);
}
[MethodImpl(MethodImplOptions.NoInlining)]
private void HandleCutscene(Action nativeAction, AddonArgs args)
{
int num = ((!_configuration.General.CinemaMode) ? 1928788595 : 1928788597);
long valueOrDefault = default(long);
long num8 = default(long);
while (true)
if (_configuration.General.CinemaMode)
{
int num2 = num;
int num3 = 1928788595;
int num4 = num2;
long num10;
switch ((num4 | num3) - (num4 & num3))
_logger.LogDebug("HandleCutscene: Cinema Mode enabled, not skipping cutscene.");
return;
}
long num = ((args.Addon.Address == IntPtr.Zero) ? 0 : ((IntPtr)args.Addon.Address).ToInt64());
if (num == 0L)
{
_logger.LogDebug("HandleCutscene: Addon address is zero, skipping.");
return;
}
lock (_lock)
{
long? lastHandledAt = _lastHandledAt;
if (lastHandledAt.HasValue)
{
case 3:
num = 1928788597;
break;
case 5:
num10 = 0L;
goto IL_0077;
case 2:
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_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>(-2015596937), Array.Empty<object>());
return;
case 0:
num = ((_206A_206F_200B_206C_200C_200C_206D_200D_206D_206D_202A_206E_200F_206E_206A_206A_200F_202D_206E_202D_202D_200C_206A_206A_200F_206F_202B_200D_206B_200B_200B_206C_202C_206F_200F_206D_200B_200B_206D_202A_202E(args).Address == IntPtr.Zero) ? 1928788598 : 1928788599);
break;
case 4:
num10 = ((IntPtr)_206A_206F_200B_206C_200C_200C_206D_200D_206D_206D_202A_206E_200F_206E_206A_206A_200F_202D_206E_202D_202D_200C_206A_206A_200F_206F_202B_200D_206B_200B_200B_206C_202C_206F_200F_206D_200B_200B_206D_202A_202E(args).Address).ToInt64();
goto IL_0077;
case 6:
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_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>(643918301), Array.Empty<object>());
return;
case 1:
long valueOrDefault = lastHandledAt.GetValueOrDefault();
if (Environment.TickCount64 - valueOrDefault > 10000)
{
object obj = _lock;
bool flag = false;
try
if (_handledConsecutiveCutscenes != 0)
{
_200B_200F_202B_200E_200D_206E_200E_206D_206F_202D_206C_200B_206E_200D_202B_206E_202C_200E_202D_200E_202D_202D_206C_202B_200D_202B_206C_202B_202C_206B_202E_202A_202E_202C_206A_206A_206E_206A_206D_202E_202E(obj, ref flag);
long? lastHandledAt = _lastHandledAt;
num = ((!lastHandledAt.HasValue) ? (-333719538) : (-333719537));
while (true)
{
int num5 = num;
num3 = -333719546;
num4 = num5;
int num6 = num4 + num3;
int num7 = num4 & num3;
switch (num6 - (num7 + num7))
{
case 5:
_handledConsecutiveCutscenes = 0;
num = -333719538;
break;
case 4:
num = ((_handledConsecutiveCutscenes < _maxConsecutiveSkips) ? (-333719551) : (-333719539));
break;
case 9:
valueOrDefault = lastHandledAt.GetValueOrDefault();
num = ((_206B_200C_206C_202E_200C_200F_200E_206E_202E_206C_206B_200F_202C_202E_200F_200B_206C_202A_200E_202C_206C_206E_206A_202D_202B_206B_202B_206E_200B_202A_206E_200B_206B_200F_202B_206A_200B_200F_206D_206F_202E() - valueOrDefault <= 10000) ? (-333719538) : (-333719548));
break;
case 2:
num = ((_handledConsecutiveCutscenes == 0) ? (-333719549) : (-333719547));
break;
case 10:
num = ((num8 != _lastHandledAddr) ? (-333719550) : (-333719552));
break;
case 1:
{
long valueOrDefault2 = lastHandledAt.GetValueOrDefault();
num = ((_206B_200C_206C_202E_200C_200F_200E_206E_202E_206C_206B_200F_202C_202E_200F_200B_206C_202A_200E_202C_206C_206E_206A_202D_202B_206B_202B_206E_200B_202A_206E_200B_206B_200F_202B_206A_200B_200F_206D_206F_202E() - valueOrDefault2 >= 500) ? (-333719550) : (-333719540));
break;
}
case 3:
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_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>(1948237893), new object[2]
{
_206B_200C_206C_202E_200C_200F_200E_206E_202E_206C_206B_200F_202C_202E_200F_200B_206C_202A_200E_202C_206C_206E_206A_202D_202B_206B_202B_206E_200B_202A_206E_200B_206B_200F_202B_206A_200B_200F_206D_206F_202E() - valueOrDefault,
_handledConsecutiveCutscenes
});
num = -333719549;
break;
case 11:
_202E_202C_200F_200D_206C_200F_206B_200D_200C_200F_202D_206E_200E_202E_206E_206C_206B_202D_206B_200E_200B_200C_200B_200B_206E_202E_202C_202C_206E_200E_200F_206B_200B_206A_200B_200B_202D_206B_202D_200D_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>(767914834), new object[1] { _maxConsecutiveSkips });
return;
case 0:
num = -333719537;
break;
case 8:
lastHandledAt = _lastHandledAt;
num = ((!lastHandledAt.HasValue) ? (-333719550) : (-333719545));
break;
case 6:
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_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>(-915129815), new object[1] { num8 });
return;
case 7:
{
_lastHandledAt = _206B_200C_206C_202E_200C_200F_200E_206E_202E_206C_206B_200F_202C_202E_200F_200B_206C_202A_200E_202C_206C_206E_206A_202D_202B_206B_202B_206E_200B_202A_206E_200B_206B_200F_202B_206A_200B_200F_206D_206F_202E();
_lastHandledAddr = num8;
int handledConsecutiveCutscenes = _handledConsecutiveCutscenes;
num3 = 1;
num4 = handledConsecutiveCutscenes;
_handledConsecutiveCutscenes = (num4 | num3) + (num4 & num3);
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_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>(-84388314), new object[2] { _handledConsecutiveCutscenes, num8 });
goto end_IL_0158;
}
}
continue;
end_IL_0158:
break;
}
_logger.LogDebug("HandleCutscene: long pause detected ({ElapsedMs}ms), resetting consecutive counter (was {Was}).", Environment.TickCount64 - valueOrDefault, _handledConsecutiveCutscenes);
}
finally
{
num = ((!flag) ? 1553266183 : 1553266182);
while (true)
{
int num9 = num;
num3 = 1553266183;
num4 = num9;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
num = 1553266182;
break;
case 0:
goto end_IL_03fc;
case 1:
_200C_206A_200D_200F_202D_200B_206C_206B_202A_202C_202A_200B_202A_202E_206E_202B_206D_200F_206A_200C_202B_200F_200D_206F_206F_200F_200B_200C_202D_202D_206B_200C_206A_206E_200B_206D_200C_200E_206E_202E(obj);
num = 1553266183;
break;
}
continue;
end_IL_03fc:
break;
}
}
try
{
nativeAction();
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_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>(1887133010), new object[1] { num8 });
}
catch (Exception ex)
{
_206C_206C_202C_200C_202C_206E_206E_206A_202E_200F_202D_200B_202B_200C_206D_200B_202E_206A_200E_200F_206C_206D_206F_200E_206D_206F_202C_202B_206C_202D_200B_206E_200B_202A_206A_200D_202A_202A_200D_202A_202E((ILogger)_logger, ex, 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>(873524230), new object[1] { num8 });
}
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_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>(2081767975), new object[2] { _handledConsecutiveCutscenes, _maxConsecutiveSkips });
_handledConsecutiveCutscenes = 0;
}
}
lastHandledAt = _lastHandledAt;
if (lastHandledAt.HasValue)
{
long valueOrDefault2 = lastHandledAt.GetValueOrDefault();
if (Environment.TickCount64 - valueOrDefault2 < 500 && num == _lastHandledAddr)
{
_logger.LogDebug("HandleCutscene: suppressed re-entrant invocation for same addon (addr=0x{Address:X}).", num);
return;
}
IL_0077:
num8 = num10;
num = ((num8 != 0L) ? 1928788594 : 1928788593);
break;
}
if (_handledConsecutiveCutscenes >= _maxConsecutiveSkips)
{
_logger.LogInformation("HandleCutscene: reached max consecutive skips ({MaxSkips}), pausing until cutscenes stop for a while.", _maxConsecutiveSkips);
return;
}
_lastHandledAt = Environment.TickCount64;
_lastHandledAddr = num;
_handledConsecutiveCutscenes++;
_logger.LogDebug("HandleCutscene: handling cutscene #{Count} (addr=0x{Address:X}).", _handledConsecutiveCutscenes, num);
}
try
{
nativeAction();
_logger.LogDebug("HandleCutscene: native action executed for addon at 0x{Address:X}.", num);
}
catch (Exception exception)
{
_logger.LogError(exception, "HandleCutscene: exception while executing native action for addon at 0x{Address:X}.", num);
}
_logger.LogDebug("HandleCutscene: handled {Count}/{Max} consecutive cutscenes.", _handledConsecutiveCutscenes, _maxConsecutiveSkips);
}
[MethodImpl(MethodImplOptions.NoInlining)]
public static void DeferDisposeUntilCutsceneEnds()
{
object obj = _lock;
bool flag = false;
try
lock (_lock)
{
_200B_200F_202B_200E_200D_206E_200E_206D_206F_202D_206C_200B_206E_200D_202B_206E_202C_200E_202D_200E_202D_202D_206C_202B_200D_202B_206C_202B_202C_206B_202E_202A_202E_202C_206A_206A_206E_206A_206D_202E_202E(obj, ref flag);
_deferDisposeUntilCutsceneEnds = true;
int num = ((_instance == null) ? 1593867446 : 1593867445);
while (true)
if (_instance != null)
{
int num2 = num;
int num3 = 1593867444;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
num = 1593867445;
break;
case 1:
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_instance._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>(-1723920399), Array.Empty<object>());
num = 1593867446;
break;
case 2:
return;
}
}
}
finally
{
int num = ((!flag) ? (-821324345) : (-821324348));
while (true)
{
int num7 = num;
int num3 = -821324347;
int num4 = num7;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
goto end_IL_00b5;
case 1:
_200C_206A_200D_200F_202D_200B_206C_206B_202A_202C_202A_200B_202A_202E_206E_202B_206D_200F_206A_200C_202B_200F_200D_206F_206F_200F_200B_200C_202D_202D_206B_200C_206A_206E_200B_206D_200C_200E_206E_202E(obj);
num = -821324345;
break;
case 0:
num = -821324348;
break;
}
continue;
end_IL_00b5:
break;
_instance._logger.LogDebug("CreditsController: deferring dispose until cutscene ends.");
}
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
public static void NotifyCutsceneEnded()
{
object obj = _lock;
bool flag = false;
try
lock (_lock)
{
_200B_200F_202B_200E_200D_206E_200E_206D_206F_202D_206C_200B_206E_200D_202B_206E_202C_200E_202D_200E_202D_202D_206C_202B_200D_202B_206C_202B_202C_206B_202E_202A_202E_202C_206A_206A_206E_206A_206D_202E_202E(obj, ref flag);
_deferDisposeUntilCutsceneEnds = false;
int num = ((_instance == null) ? 1205296441 : 1205296446);
while (true)
if (_instance != null)
{
int num2 = num;
int num3 = 1205296442;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 1:
num = ((_instance == null) ? 1205296442 : 1205296440);
break;
case 3:
num = ((!_pendingDispose) ? 1205296442 : 1205296443);
break;
case 4:
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_instance._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>(1784202689), Array.Empty<object>());
num = 1205296441;
break;
case 2:
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_instance._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>(1095714007), Array.Empty<object>());
_instance.Dispose();
num = 1205296442;
break;
case 5:
num = 1205296446;
break;
case 0:
return;
}
_instance._logger.LogDebug("CreditsController: cutscene ended, processing pending dispose state.");
}
}
finally
{
int num = ((!flag) ? (-15651437) : (-15651440));
while (true)
if (_pendingDispose && _instance != null)
{
int num5 = num;
int num3 = -15651439;
int num4 = num5;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
goto end_IL_0132;
case 1:
_200C_206A_200D_200F_202D_200B_206C_206B_202A_202C_202A_200B_202A_202E_206E_202B_206D_200F_206A_200C_202B_200F_200D_206F_206F_200F_200B_200C_202D_202D_206B_200C_206A_206E_200B_206D_200C_200E_206E_202E(obj);
num = -15651437;
break;
case 0:
num = -15651440;
break;
}
continue;
end_IL_0132:
break;
_instance._logger.LogDebug("CreditsController: pending dispose detected, performing unregister now.");
_instance.Dispose();
}
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
public void Dispose()
{
object obj = _lock;
bool flag = false;
try
lock (_lock)
{
_200B_200F_202B_200E_200D_206E_200E_206D_206F_202D_206C_200B_206E_200D_202B_206E_202C_200E_202D_200E_202D_202D_206C_202B_200D_202B_206C_202B_202C_206B_202E_202A_202E_202C_206A_206A_206E_206A_206D_202E_202E(obj, ref flag);
int num = ((_instance == this) ? (-273121773) : (-273121772));
while (true)
if (_instance != this)
{
int num2 = num;
int num3 = -273121774;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 1:
num = ((!_deferDisposeUntilCutsceneEnds) ? (-273121776) : (-273121775));
break;
case 6:
return;
case 2:
num = ((_registeredLifecycle == null) ? (-273121770) : (-273121774));
break;
case 0:
_206B_200C_202E_206C_200F_206D_206F_206C_202B_206F_206A_200B_202C_206B_206D_206E_206A_202B_206F_200D_202A_206F_200B_202E_206D_202C_202E_202C_202E_202B_200D_202A_202B_202E_206C_206C_200F_202E_206B_206D_202E(_registeredLifecycle, AddonEvent.PostSetup, (IEnumerable<string>)CreditPlayerArray, _creditPlayerHandler);
_206B_200C_202E_206C_200F_206D_206F_206C_202B_206F_206A_200B_202C_206B_206D_206E_206A_202B_206F_200D_202A_206F_200B_202E_206D_202C_202E_202C_202E_202B_200D_202A_202B_202E_206C_206C_200F_202E_206B_206D_202E(_registeredLifecycle, AddonEvent.PostSetup, (IEnumerable<string>)CreditArray, _creditHandler);
_206B_200C_202E_206C_200F_206D_206F_206C_202B_206F_206A_200B_202C_206B_206D_206E_206A_202B_206F_200D_202A_206F_200B_202E_206D_202C_202E_202C_202E_202B_200D_202A_202B_202E_206C_206C_200F_202E_206B_206D_202E(_registeredLifecycle, AddonEvent.PostSetup, (IEnumerable<string>)CreditScrollArray, _creditScrollHandler);
num = -273121770;
break;
case 3:
_pendingDispose = true;
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_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>(-1915726020), Array.Empty<object>());
return;
case 5:
num = -273121772;
break;
case 4:
_200D_200B_206D_200E_206C_200B_206C_206D_200E_200C_200E_206E_200E_206D_206C_202C_200E_206A_206A_202E_202B_202B_202C_202C_206B_202B_206A_200B_206D_200B_200F_200D_202C_202D_202E_202B_206F_200C_206F_202B_202E(_condition, (ICondition.ConditionChangeDelegate)OnConditionChange);
_registeredLifecycle = null;
_instance = null;
_pendingDispose = false;
_handledConsecutiveCutscenes = 0;
_lastHandledAddr = 0L;
_lastHandledAt = null;
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_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>(-677486284), Array.Empty<object>());
return;
}
return;
}
}
finally
{
int num = ((!flag) ? 1603499567 : 1603499564);
while (true)
if (_deferDisposeUntilCutsceneEnds)
{
int num7 = num;
int num3 = 1603499566;
int num4 = num7;
int num8 = num4 + num3;
int num9 = num4 & num3;
switch (num8 - (num9 + num9))
{
case 0:
num = 1603499564;
break;
case 1:
goto end_IL_01bc;
case 2:
_200C_206A_200D_200F_202D_200B_206C_206B_202A_202C_202A_200B_202A_202E_206E_202B_206D_200F_206A_200C_202B_200F_200D_206F_206F_200F_200B_200C_202D_202D_206B_200C_206A_206E_200B_206D_200C_200E_206E_202E(obj);
num = 1603499567;
break;
}
continue;
end_IL_01bc:
break;
_pendingDispose = true;
_logger.LogDebug("CreditsController.Dispose deferred until cutscene end.");
return;
}
if (_registeredLifecycle != null)
{
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditPlayerArray, _creditPlayerHandler);
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditArray, _creditHandler);
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditScrollArray, _creditScrollHandler);
}
_condition.ConditionChange -= OnConditionChange;
_registeredLifecycle = null;
_instance = null;
_pendingDispose = false;
_handledConsecutiveCutscenes = 0;
_lastHandledAddr = 0L;
_lastHandledAt = null;
_logger.LogDebug("CreditsController listeners unregistered and disposed (primary instance).");
}
}
void IDisposable.Dispose()
{
//ILSpy generated this explicit interface implementation from .override directive in Dispose
this.Dispose();
}
static void _200B_200F_202B_200E_200D_206E_200E_206D_206F_202D_206C_200B_206E_200D_202B_206E_202C_200E_202D_200E_202D_202D_206C_202B_200D_202B_206C_202B_202C_206B_202E_202A_202E_202C_206A_206A_206E_206A_206D_202E_202E(object P_0, ref bool P_1)
{
Monitor.Enter(P_0, ref P_1);
}
static void _200C_202A_202A_202B_202A_200F_200F_206A_206C_200F_200F_202B_206A_206F_202B_200B_200B_202C_206D_206A_202B_200F_200F_202D_202D_200B_206A_200D_200D_202C_202B_200E_200F_200F_200D_206C_206D_202D_206B_200F_202E(IAddonLifecycle P_0, AddonEvent P_1, IEnumerable<string> P_2, IAddonLifecycle.AddonEventDelegate P_3)
{
P_0.RegisterListener(P_1, P_2, P_3);
}
static void _202D_200E_206B_200C_206D_200C_202C_206E_200E_206C_206C_200F_206D_206C_206B_202E_202B_206F_200F_206D_206B_206F_200B_200D_206E_200F_200C_202A_202B_200F_202D_200E_202E_206B_202C_206C_206F_200B_206B_202C_202E(ICondition P_0, ICondition.ConditionChangeDelegate P_1)
{
P_0.ConditionChange += P_1;
}
static void _200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static void _200C_206A_200D_200F_202D_200B_206C_206B_202A_202C_202A_200B_202A_202E_206E_202B_206D_200F_206A_200C_202B_200F_200D_206F_206F_200F_200B_200C_202D_202D_206B_200C_206A_206E_200B_206D_200C_200E_206E_202E(object P_0)
{
Monitor.Exit(P_0);
}
static bool _206F_200E_202C_206A_200D_202D_206A_202A_202A_202B_200B_202D_200B_200F_200C_206E_206E_202B_206E_200E_206E_206A_202B_206A_200E_202D_200C_206C_200E_200D_206B_206E_202A_200B_200B_200D_202E_202C_206F_202B_202E(ICondition P_0, ConditionFlag P_1)
{
return P_0[P_1];
}
static AtkUnitBasePtr _206A_206F_200B_206C_200C_200C_206D_200D_206D_206D_202A_206E_200F_206E_206A_206A_200F_202D_206E_202D_202D_200C_206A_206A_200F_206F_202B_200D_206B_200B_200B_206C_202C_206F_200F_206D_200B_200B_206D_202A_202E(AddonArgs P_0)
{
return P_0.Addon;
}
static long _206B_200C_206C_202E_200C_200F_200E_206E_202E_206C_206B_200F_202C_202E_200F_200B_206C_202A_200E_202C_206C_206E_206A_202D_202B_206B_202B_206E_200B_202A_206E_200B_206B_200F_202B_206A_200B_200F_206D_206F_202E()
{
return Environment.TickCount64;
}
static void _202E_202C_200F_200D_206C_200F_206B_200D_200C_200F_202D_206E_200E_202E_206E_206C_206B_202D_206B_200E_200B_200C_200B_200B_206E_202E_202C_202C_206E_200E_200F_206B_200B_206A_200B_200B_202D_206B_202D_200D_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogInformation(P_1, P_2);
}
static void _206C_206C_202C_200C_202C_206E_206E_206A_202E_200F_202D_200B_202B_200C_206D_200B_202E_206A_200E_200F_206C_206D_206F_200E_206D_206F_202C_202B_206C_202D_200B_206E_200B_202A_206A_200D_202A_202A_200D_202A_202E(ILogger P_0, Exception P_1, string P_2, object[] P_3)
{
P_0.LogError(P_1, P_2, P_3);
}
static void _206B_200C_202E_206C_200F_206D_206F_206C_202B_206F_206A_200B_202C_206B_206D_206E_206A_202B_206F_200D_202A_206F_200B_202E_206D_202C_202E_202C_202E_202B_200D_202A_202B_202E_206C_206C_200F_202E_206B_206D_202E(IAddonLifecycle P_0, AddonEvent P_1, IEnumerable<string> P_2, IAddonLifecycle.AddonEventDelegate P_3)
{
P_0.UnregisterListener(P_1, P_2, P_3);
}
static void _200D_200B_206D_200E_206C_200B_206C_206D_200E_200C_200E_206E_200E_206D_206C_202C_200E_206A_206A_202E_202B_202B_202C_202C_206B_202B_206A_200B_206D_200B_200F_200D_202C_202D_202E_202B_206F_200C_206F_202B_202E(ICondition P_0, ICondition.ConditionChangeDelegate P_1)
{
P_0.ConditionChange -= P_1;
}
static object _202A_206C_206F_202E_200B_206A_206D_202C_202B_200E_200E_206E_206B_202D_206B_206E_200D_202A_202C_206B_206A_202D_200C_206D_202E_200F_202A_206B_200E_206E_202C_200F_200D_202C_206A_200E_206C_206B_202A_206D_202E()
{
return new object();
}
}

View file

@ -1,6 +1,4 @@
using System;
using System.Runtime.CompilerServices;
using Dalamud.Game.ClientState.Objects.SubKinds;
using Dalamud.Plugin.Services;
using LLib.Shop;
using Microsoft.Extensions.Logging;
@ -44,371 +42,115 @@ internal sealed class GCShopHandler : IDisposable
_objectTable = objectTable;
_framework = framework;
_logger = logger;
_206A_200B_200C_200F_202A_206F_202C_202A_200D_200D_200E_202A_206C_206C_206D_200F_206A_206A_206B_202A_206E_202C_200F_202B_206E_200C_202A_200D_202D_202C_206D_200C_206F_200D_206E_202B_200E_200B_206B_202A_202E(_gcShop, (EventHandler<PurchaseCompletedEventArgs>)OnPurchaseCompleted);
_202E_200B_202E_200B_200B_202A_206D_206F_202D_200F_200C_206D_206E_200D_200F_206E_202D_206F_206A_206D_206B_206E_200E_200B_200D_200D_202E_206E_206F_202A_206E_200C_206A_200B_200D_200F_200D_206F_202D_206B_202E(_framework, (IFramework.OnUpdateDelegate)OnFrameworkUpdate);
_gcShop.PurchaseCompleted += OnPurchaseCompleted;
_framework.Update += OnFrameworkUpdate;
}
public void Dispose()
{
_202E_206A_206E_206C_200F_202E_206C_200B_206B_206B_202A_206F_202B_206A_200D_202E_200D_200E_202B_206F_202C_200C_206E_206D_202B_206E_200B_206B_206C_200B_200B_202B_200C_206A_202E_206D_206A_206D_200B_206C_202E(_framework, (IFramework.OnUpdateDelegate)OnFrameworkUpdate);
_202B_200D_200C_206D_206B_202B_200F_206C_200F_206A_202E_206E_206B_206A_200F_200E_202B_206B_206D_206E_206A_202B_200F_202D_202B_200D_202C_206F_200D_202C_202A_200F_202C_200B_202A_202B_202C_206A_206F_202B_202E(_gcShop, (EventHandler<PurchaseCompletedEventArgs>)OnPurchaseCompleted);
_framework.Update -= OnFrameworkUpdate;
_gcShop.PurchaseCompleted -= OnPurchaseCompleted;
}
void IDisposable.Dispose()
{
//ILSpy generated this explicit interface implementation from .override directive in Dispose
this.Dispose();
}
[MethodImpl(MethodImplOptions.NoInlining)]
private void OnFrameworkUpdate(IFramework framework)
{
int num = ((_206F_202D_200C_206C_206A_202C_202E_202E_200E_202D_202B_206C_202C_202A_200E_206A_200F_200B_206A_200D_200C_202E_206A_206C_200D_206C_206E_200C_202E_200B_200B_202B_202B_200E_202A_206D_206F_206A_206E_206C_202E(_objectTable) != null) ? (-1672254239) : (-1672254236));
while (true)
if (_objectTable.LocalPlayer == null)
{
int num2 = num;
int num3 = -1672254240;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
return;
}
if (!_questController.IsRunning)
{
if (_state != GCShopState.Inactive)
{
case 0:
HandlePurchasing();
return;
case 1:
num = (_questController.IsRunning ? (-1672254233) : (-1672254232));
break;
case 4:
return;
case 2:
return;
case 7:
CheckForGCPurchase();
num = ((_state != GCShopState.Purchasing) ? (-1672254234) : (-1672254240));
break;
case 10:
Reset();
num = -1672254238;
break;
case 8:
num = ((_state == GCShopState.Inactive) ? (-1672254238) : (-1672254230));
break;
case 5:
return;
case 9:
num = -1672254236;
break;
case 6:
num = ((_state != GCShopState.Completed) ? (-1672254235) : (-1672254237));
break;
case 3:
_200B_206A_206D_206D_206F_200E_200E_202E_200B_200E_206A_200E_206D_202A_206C_202E_206C_206D_200D_206F_200B_206C_200C_200E_200E_206A_200B_202B_202A_200B_206A_200D_206D_200F_202B_200B_200B_200E_202A_206D_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>(-314267187), Array.Empty<object>());
_state = GCShopState.Inactive;
_lastActionMs = 0L;
num = -1672254235;
break;
}
return;
}
CheckForGCPurchase();
if (_state == GCShopState.Purchasing)
{
HandlePurchasing();
}
else if (_state == GCShopState.Completed)
{
_logger.LogDebug("GC shop purchase completed!");
_state = GCShopState.Inactive;
_lastActionMs = 0L;
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private void CheckForGCPurchase()
{
QuestController.QuestProgress currentQuest = _questController.CurrentQuest;
int num = ((currentQuest != null) ? (-837261037) : (-837261044));
GCPurchaseInfo gCPurchaseInfo = default(GCPurchaseInfo);
while (true)
if (currentQuest == null)
{
int num2 = num;
int num3 = -837261053;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
if (_currentPurchase != null)
{
case 13:
_currentPurchase = gCPurchaseInfo;
_purchaseCompletedThisStep = false;
num = -837261041;
break;
case 15:
num = ((_currentPurchase == null) ? (-837261054) : (-837261055));
break;
case 8:
return;
case 2:
Reset();
num = -837261054;
break;
case 6:
num = ((_currentPurchase == gCPurchaseInfo) ? (-837261041) : (-837261042));
break;
case 10:
num = (_purchaseCompletedThisStep ? (-837261046) : (-837261048));
break;
case 3:
num = ((!_200C_200C_202E_200F_202A_206B_206B_206F_202B_206A_202D_206F_200D_206B_202E_202A_200D_206C_206E_206B_206C_200D_206C_200B_206F_202B_200B_202A_206C_202B_200F_206B_202C_200F_206D_200F_206B_200D_200E_200F_202E(_gcShop)) ? (-837261045) : (-837261043));
break;
case 0:
num = -837261044;
break;
case 7:
}
return;
}
GCPurchaseInfo gCPurchaseInfo = (currentQuest.Quest.FindSequence(currentQuest.Sequence)?.FindStep(currentQuest.Step))?.GCPurchase;
if (gCPurchaseInfo == null)
{
if (_currentPurchase != null)
{
_currentPurchase = null;
_purchaseCompletedThisStep = false;
num = -837261056;
break;
case 14:
_200B_206A_206D_206D_206F_200E_200E_202E_200B_200E_206A_200E_206D_202A_206C_202E_206C_206D_200D_206F_200B_206C_200C_200E_200E_206A_200B_202B_202A_200B_206A_200D_206D_200F_202B_200B_200B_200E_202A_206D_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>(-1787866068), new object[3]
{
currentQuest.Quest.Id,
currentQuest.Sequence,
currentQuest.Step
});
num = -837261045;
break;
case 1:
return;
case 12:
num = ((!_200C_200C_202E_200F_202A_206B_206B_206F_202B_206A_202D_206F_200D_206B_202E_202A_200D_206C_206E_206B_206C_200D_206C_200B_206F_202B_200B_202A_206C_202B_200F_206B_202C_200F_206D_200F_206B_200D_200E_200F_202E(_gcShop)) ? (-837261046) : (-837261049));
break;
case 16:
{
QuestSequence? questSequence = currentQuest.Quest.FindSequence(currentQuest.Sequence);
QuestStep obj = ((questSequence != null) ? _206D_202A_200B_206B_206A_202E_202D_200B_206B_206A_200C_200B_200E_206C_202B_202B_200B_206F_200B_202A_202D_202B_206E_206A_202B_202C_200C_202B_200B_200B_202C_202E_202C_202E_202A_200C_206D_202E_200B_200C_202E(questSequence, currentQuest.Step) : null);
gCPurchaseInfo = ((obj != null) ? _202E_206F_206D_202E_206B_206F_206B_202A_200E_206D_202B_202A_206C_206B_206E_206A_200B_206F_202B_200B_200B_202A_202B_200E_200F_206A_206C_206D_200E_202C_202B_202E_200E_200C_206D_206E_206B_200B_200B_200F_202E(obj) : null);
num = ((gCPurchaseInfo != null) ? (-837261051) : (-837261050));
break;
}
case 11:
_200F_202B_206A_200C_200B_200E_200B_202E_202D_200E_202A_200C_200C_200D_202E_200C_200C_200F_206F_200B_200C_206F_206A_202E_202E_200D_200D_206F_202C_200D_206C_202B_206A_206C_206A_200D_202C_200E_206A_206A_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>(-478138400), new object[1] { _206D_206B_200F_206B_200B_200D_202B_206D_202B_200C_202A_206F_206F_200D_202A_206E_202E_206C_206F_202A_200E_200E_202E_200F_200C_206E_202C_206A_206B_202C_206D_200B_202B_206B_202C_206F_206C_202D_206A_206F_202E(gCPurchaseInfo) });
if (_gcShop.IsOpen)
{
_logger.LogDebug("GC shop is open but current step has no GCPurchase. Quest={QuestId}, Seq={Sequence}, Step={Step}", currentQuest.Quest.Id, currentQuest.Sequence, currentQuest.Step);
}
}
else
{
if (_currentPurchase != gCPurchaseInfo)
{
_currentPurchase = gCPurchaseInfo;
_purchaseCompletedThisStep = false;
}
if (_gcShop.IsOpen && _state == GCShopState.Inactive && !_purchaseCompletedThisStep)
{
_logger.LogInformation("GC shop is open. Starting purchase of item {ItemId}.", gCPurchaseInfo.ItemId);
_state = GCShopState.Purchasing;
num = -837261046;
break;
case 4:
num = ((_state != GCShopState.Inactive) ? (-837261046) : (-837261047));
break;
case 5:
num = ((_currentPurchase == null) ? (-837261056) : (-837261052));
break;
case 9:
return;
}
}
}
private void HandlePurchasing()
{
int num = ((!_200C_200C_202E_200F_202A_206B_206B_206F_202B_206A_202D_206F_200D_206B_202E_202A_200D_206C_206E_206B_206C_200D_206C_200B_206F_202B_200B_202A_206C_202B_200F_206B_202C_200F_206D_200F_206B_200D_200E_200F_202E(_gcShop)) ? 252931591 : 252931585);
while (true)
if (_gcShop.IsOpen && _currentPurchase != null && Environment.TickCount64 - _lastActionMs >= 500)
{
int num2 = num;
int num3 = 252931587;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
if (!_gcShop.IsPurchaseInProgress)
{
case 0:
_200C_206B_202A_202C_206B_202C_200B_202B_200B_200E_206E_206F_206F_202D_200F_202B_206F_206C_200F_200F_200D_200D_202A_202A_206A_202E_200D_200B_202E_206C_206D_200D_202D_202C_202A_206E_206A_202B_206D_206C_202E(_gcShop, _206D_206B_200F_206B_200B_200D_202B_206D_202B_200C_202A_206F_206F_200D_202A_206E_202E_206C_206F_202A_200E_200E_202E_200F_200C_206E_202C_206A_206B_202C_206D_200B_202B_206B_202C_206F_206C_202D_206A_206F_202E(_currentPurchase), _200C_206E_202B_206A_202E_206F_202D_202A_206C_200D_202A_206C_200C_200C_206A_200B_202E_200C_206A_206D_206C_200B_200F_200B_202A_200B_202D_202A_200D_202B_202D_206A_202C_206E_206D_202D_202D_200C_206C_206D_202E(_currentPurchase), _202C_202A_200D_202D_202B_200E_202C_200D_200C_202D_206B_206F_200C_200E_200B_202B_206F_206E_206B_206E_202C_202D_202C_200D_206A_200E_202B_202C_202E_200C_206C_202B_206C_200F_200B_200B_206D_202D_202E_202E_202E(_currentPurchase), 1);
_lastActionMs = _206A_200B_202B_202A_206F_206B_206E_200E_206C_200C_202C_200E_206C_206B_206E_202B_200B_200B_206C_206B_206A_202B_206A_202B_202D_206B_200E_206E_202D_206B_200E_206B_200C_202C_200F_200F_206B_202C_206A_200C_202E();
num = 252931586;
break;
case 5:
num = ((_206A_200B_202B_202A_206F_206B_206E_200E_206C_200C_202C_200E_206C_206B_206E_202B_200B_200B_206C_206B_206A_202B_206A_202B_202D_206B_200E_206E_202D_206B_200E_206B_200C_202C_200F_200F_206B_202C_206A_200C_202E() - _lastActionMs >= 500) ? 252931588 : 252931584);
break;
case 3:
return;
case 7:
num = (_200E_206B_200F_206C_202A_202C_200B_202E_202B_202A_202D_206F_200B_206C_202C_206F_206E_206A_206F_202B_200B_206B_200D_202B_202E_200C_200D_202A_202A_206E_206C_202B_206D_206A_200F_200D_202D_200C_200F_206C_202E(_gcShop) ? 252931586 : 252931587);
break;
case 6:
num = 252931585;
break;
case 2:
num = ((_currentPurchase != null) ? 252931590 : 252931591);
break;
case 1:
_202D_206C_206A_200E_206C_202E_202D_202C_200D_200D_202C_206E_202E_200B_200E_206A_206F_206E_202C_206C_202C_202A_200C_202A_200C_206E_200B_206F_206F_206A_206B_206A_206E_200F_202D_206E_202E_206F_200F_206F_202E(_gcShop);
return;
case 4:
return;
_gcShop.StartPurchase(_currentPurchase.ItemId, _currentPurchase.RankTab, _currentPurchase.CategoryTab, 1);
_lastActionMs = Environment.TickCount64;
}
_gcShop.ProcessPurchase();
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private void OnPurchaseCompleted(object? sender, PurchaseCompletedEventArgs e)
{
int num = ((_state != GCShopState.Purchasing) ? 191751636 : 191751642);
while (true)
if (_state == GCShopState.Purchasing && _currentPurchase != null && _questController.IsRunning && e.Success && e.ItemId == _currentPurchase.ItemId)
{
int num2 = num;
int num3 = 191751644;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 8:
return;
case 6:
num = ((_currentPurchase != null) ? 191751641 : 191751636);
break;
case 1:
num = ((!_202E_200D_202E_206C_206C_202B_206D_202C_206F_202E_206A_206B_200F_206F_206C_206C_206C_206A_200E_206B_206E_206D_206C_202A_202D_202A_202A_206D_202B_200B_206A_206F_200F_206D_200B_206C_202E_202B_200D_202E_202E(e)) ? 191751646 : 191751640);
break;
case 4:
num = ((_200E_202D_206A_200B_206C_206A_206A_202A_200B_202E_200B_206D_200F_200E_202A_202B_206D_202A_202A_200F_206A_206B_206B_206F_206A_206D_202C_206E_200D_202B_200F_206A_200B_202C_202C_206D_202D_200D_200D_202D_202E(e) != _206D_206B_200F_206B_200B_200D_202B_206D_202B_200C_202A_206F_206F_200D_202A_206E_202E_206C_206F_202A_200E_200E_202E_200F_200C_206E_202C_206A_206B_202C_206D_200B_202B_206B_202C_206F_206C_202D_206A_206F_202E(_currentPurchase)) ? 191751646 : 191751643);
break;
case 7:
_200F_202B_206A_200C_200B_200E_200B_202E_202D_200E_202A_200C_200C_200D_202E_200C_200C_200F_206F_200B_200C_206F_206A_202E_202E_200D_200D_206F_202C_200D_206C_202B_206A_206C_206A_200D_202C_200E_206A_206A_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>(134659059), new object[1] { _200E_202D_206A_200B_206C_206A_206A_202A_200B_202E_200B_206D_200F_200E_202A_202B_206D_202A_202A_200F_206A_206B_206B_206F_206A_206D_202C_206E_200D_202B_200F_206A_200B_202C_202C_206D_202D_200D_200D_202D_202E(e) });
_200B_200B_202C_206F_202E_206C_206F_206C_206C_202A_200E_202B_206D_200F_200D_202D_200D_200F_202C_200B_202D_206B_200C_200F_206B_206A_206C_206A_206E_202C_202D_206C_206A_206A_206C_206B_202D_206B_200F_202B_202E(_gcShop);
_purchaseCompletedThisStep = true;
_state = GCShopState.Completed;
num = 191751646;
break;
case 2:
return;
case 5:
num = (_questController.IsRunning ? 191751645 : 191751647);
break;
case 0:
num = 191751642;
break;
case 3:
return;
}
_logger.LogInformation("GC purchase of item {ItemId} completed successfully", e.ItemId);
_gcShop.CloseShop();
_purchaseCompletedThisStep = true;
_state = GCShopState.Completed;
}
}
private void Reset()
{
int num = ((!_200E_206B_200F_206C_202A_202C_200B_202E_202B_202A_202D_206F_200B_206C_202C_206F_206E_206A_206F_202B_200B_206B_200D_202B_202E_200C_200D_202A_202A_206E_206C_202B_206D_206A_200F_200D_202D_200C_200F_206C_202E(_gcShop)) ? (-1390147797) : (-1390147798));
while (true)
if (_gcShop.IsPurchaseInProgress)
{
int num2 = num;
int num3 = -1390147797;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 2:
num = -1390147798;
break;
case 1:
_200C_206B_206A_202D_206D_206F_206A_202B_202D_200D_202C_202A_200C_206A_200E_202C_206F_206B_206E_202E_200F_200F_202C_206F_206F_202E_202B_202C_206B_200C_202B_206A_206E_202B_200D_202B_202E_206E_200E_202E_202E(_gcShop);
num = -1390147797;
break;
case 0:
_state = GCShopState.Inactive;
_currentPurchase = null;
_lastActionMs = 0L;
_purchaseCompletedThisStep = false;
return;
}
_gcShop.CancelPurchase();
}
}
static void _206A_200B_200C_200F_202A_206F_202C_202A_200D_200D_200E_202A_206C_206C_206D_200F_206A_206A_206B_202A_206E_202C_200F_202B_206E_200C_202A_200D_202D_202C_206D_200C_206F_200D_206E_202B_200E_200B_206B_202A_202E(GrandCompanyShop P_0, EventHandler<PurchaseCompletedEventArgs> P_1)
{
P_0.PurchaseCompleted += P_1;
}
static void _202E_200B_202E_200B_200B_202A_206D_206F_202D_200F_200C_206D_206E_200D_200F_206E_202D_206F_206A_206D_206B_206E_200E_200B_200D_200D_202E_206E_206F_202A_206E_200C_206A_200B_200D_200F_200D_206F_202D_206B_202E(IFramework P_0, IFramework.OnUpdateDelegate P_1)
{
P_0.Update += P_1;
}
static void _202E_206A_206E_206C_200F_202E_206C_200B_206B_206B_202A_206F_202B_206A_200D_202E_200D_200E_202B_206F_202C_200C_206E_206D_202B_206E_200B_206B_206C_200B_200B_202B_200C_206A_202E_206D_206A_206D_200B_206C_202E(IFramework P_0, IFramework.OnUpdateDelegate P_1)
{
P_0.Update -= P_1;
}
static void _202B_200D_200C_206D_206B_202B_200F_206C_200F_206A_202E_206E_206B_206A_200F_200E_202B_206B_206D_206E_206A_202B_200F_202D_202B_200D_202C_206F_200D_202C_202A_200F_202C_200B_202A_202B_202C_206A_206F_202B_202E(GrandCompanyShop P_0, EventHandler<PurchaseCompletedEventArgs> P_1)
{
P_0.PurchaseCompleted -= P_1;
}
static IPlayerCharacter _206F_202D_200C_206C_206A_202C_202E_202E_200E_202D_202B_206C_202C_202A_200E_206A_200F_200B_206A_200D_200C_202E_206A_206C_200D_206C_206E_200C_202E_200B_200B_202B_202B_200E_202A_206D_206F_206A_206E_206C_202E(IObjectTable P_0)
{
return P_0.LocalPlayer;
}
static void _200B_206A_206D_206D_206F_200E_200E_202E_200B_200E_206A_200E_206D_202A_206C_202E_206C_206D_200D_206F_200B_206C_200C_200E_200E_206A_200B_202B_202A_200B_206A_200D_206D_200F_202B_200B_200B_200E_202A_206D_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static QuestStep _206D_202A_200B_206B_206A_202E_202D_200B_206B_206A_200C_200B_200E_206C_202B_202B_200B_206F_200B_202A_202D_202B_206E_206A_202B_202C_200C_202B_200B_200B_202C_202E_202C_202E_202A_200C_206D_202E_200B_200C_202E(QuestSequence P_0, int P_1)
{
return P_0.FindStep(P_1);
}
static GCPurchaseInfo _202E_206F_206D_202E_206B_206F_206B_202A_200E_206D_202B_202A_206C_206B_206E_206A_200B_206F_202B_200B_200B_202A_202B_200E_200F_206A_206C_206D_200E_202C_202B_202E_200E_200C_206D_206E_206B_200B_200B_200F_202E(QuestStep P_0)
{
return P_0.GCPurchase;
}
static bool _200C_200C_202E_200F_202A_206B_206B_206F_202B_206A_202D_206F_200D_206B_202E_202A_200D_206C_206E_206B_206C_200D_206C_200B_206F_202B_200B_202A_206C_202B_200F_206B_202C_200F_206D_200F_206B_200D_200E_200F_202E(GrandCompanyShop P_0)
{
return P_0.IsOpen;
}
static uint _206D_206B_200F_206B_200B_200D_202B_206D_202B_200C_202A_206F_206F_200D_202A_206E_202E_206C_206F_202A_200E_200E_202E_200F_200C_206E_202C_206A_206B_202C_206D_200B_202B_206B_202C_206F_206C_202D_206A_206F_202E(GCPurchaseInfo P_0)
{
return P_0.ItemId;
}
static void _200F_202B_206A_200C_200B_200E_200B_202E_202D_200E_202A_200C_200C_200D_202E_200C_200C_200F_206F_200B_200C_206F_206A_202E_202E_200D_200D_206F_202C_200D_206C_202B_206A_206C_206A_200D_202C_200E_206A_206A_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogInformation(P_1, P_2);
}
static long _206A_200B_202B_202A_206F_206B_206E_200E_206C_200C_202C_200E_206C_206B_206E_202B_200B_200B_206C_206B_206A_202B_206A_202B_202D_206B_200E_206E_202D_206B_200E_206B_200C_202C_200F_200F_206B_202C_206A_200C_202E()
{
return Environment.TickCount64;
}
static bool _200E_206B_200F_206C_202A_202C_200B_202E_202B_202A_202D_206F_200B_206C_202C_206F_206E_206A_206F_202B_200B_206B_200D_202B_202E_200C_200D_202A_202A_206E_206C_202B_206D_206A_200F_200D_202D_200C_200F_206C_202E(GrandCompanyShop P_0)
{
return P_0.IsPurchaseInProgress;
}
static int _200C_206E_202B_206A_202E_206F_202D_202A_206C_200D_202A_206C_200C_200C_206A_200B_202E_200C_206A_206D_206C_200B_200F_200B_202A_200B_202D_202A_200D_202B_202D_206A_202C_206E_206D_202D_202D_200C_206C_206D_202E(GCPurchaseInfo P_0)
{
return P_0.RankTab;
}
static int _202C_202A_200D_202D_202B_200E_202C_200D_200C_202D_206B_206F_200C_200E_200B_202B_206F_206E_206B_206E_202C_202D_202C_200D_206A_200E_202B_202C_202E_200C_206C_202B_206C_200F_200B_200B_206D_202D_202E_202E_202E(GCPurchaseInfo P_0)
{
return P_0.CategoryTab;
}
static bool _200C_206B_202A_202C_206B_202C_200B_202B_200B_200E_206E_206F_206F_202D_200F_202B_206F_206C_200F_200F_200D_200D_202A_202A_206A_202E_200D_200B_202E_206C_206D_200D_202D_202C_202A_206E_206A_202B_206D_206C_202E(GrandCompanyShop P_0, uint P_1, int P_2, int P_3, int P_4)
{
return P_0.StartPurchase(P_1, P_2, P_3, P_4);
}
static bool _202D_206C_206A_200E_206C_202E_202D_202C_200D_200D_202C_206E_202E_200B_200E_206A_206F_206E_202C_206C_202C_202A_200C_202A_200C_206E_200B_206F_206F_206A_206B_206A_206E_200F_202D_206E_202E_206F_200F_206F_202E(GrandCompanyShop P_0)
{
return P_0.ProcessPurchase();
}
static bool _202E_200D_202E_206C_206C_202B_206D_202C_206F_202E_206A_206B_200F_206F_206C_206C_206C_206A_200E_206B_206E_206D_206C_202A_202D_202A_202A_206D_202B_200B_206A_206F_200F_206D_200B_206C_202E_202B_200D_202E_202E(PurchaseCompletedEventArgs P_0)
{
return P_0.Success;
}
static uint _200E_202D_206A_200B_206C_206A_206A_202A_200B_202E_200B_206D_200F_200E_202A_202B_206D_202A_202A_200F_206A_206B_206B_206F_206A_206D_202C_206E_200D_202B_200F_206A_200B_202C_202C_206D_202D_200D_200D_202D_202E(PurchaseCompletedEventArgs P_0)
{
return P_0.ItemId;
}
static void _200B_200B_202C_206F_202E_206C_206F_206C_206C_202A_200E_202B_206D_200F_200D_202D_200D_200F_202C_200B_202D_206B_200C_200F_206B_206A_206C_206A_206E_202C_202D_206C_206A_206A_206C_206B_202D_206B_200F_202B_202E(GrandCompanyShop P_0)
{
P_0.CloseShop();
}
static void _200C_206B_206A_202D_206D_206F_206A_202B_202D_200D_202C_202A_200C_206A_200E_202C_206F_206B_206E_202E_200F_200F_202C_206F_206F_202E_202B_202C_206B_200C_202B_206A_206E_202B_200D_202B_202E_206E_200E_202E_202E(GrandCompanyShop P_0)
{
P_0.CancelPurchase();
_state = GCShopState.Inactive;
_currentPurchase = null;
_lastActionMs = 0L;
_purchaseCompletedThisStep = false;
}
}

View file

@ -1,15 +1,10 @@
using System;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
using Dalamud.Game.Addon.Lifecycle;
using Dalamud.Game.Addon.Lifecycle.AddonArgTypes;
using Dalamud.Game.NativeWrapper;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Component.GUI;
using LLib.GameUI;
using Microsoft.Extensions.Logging;
using Questionable.Model.Questing;
namespace Questionable.Controller.GameUi;
@ -25,7 +20,6 @@ internal sealed class HelpUiController : IDisposable
private readonly ILogger<HelpUiController> _logger;
[MethodImpl(MethodImplOptions.NoInlining)]
public HelpUiController(QuestController questController, IAddonLifecycle addonLifecycle, IGameGui gameGui, IFramework framework, ILogger<HelpUiController> logger)
{
_questController = questController;
@ -34,419 +28,157 @@ internal sealed class HelpUiController : IDisposable
_framework = framework;
_logger = logger;
_questController.AutomationTypeChanged += CloseHelpWindowsWhenStartingQuests;
_206B_206F_206A_206D_206D_206D_200D_202C_202B_200E_206F_202E_206C_200F_206D_202E_206C_206F_202A_206E_206A_202E_200F_200F_206B_200B_206C_206B_200E_206A_200E_206A_202D_200D_200B_206D_202A_206E_202B_200E_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(475712939), (IAddonLifecycle.AddonEventDelegate)UnendingCodexPostSetup);
_206B_206F_206A_206D_206D_206D_200D_202C_202B_200E_206F_202E_206C_200F_206D_202E_206C_206F_202A_206E_206A_202E_200F_200F_206B_200B_206C_206B_200E_206A_200E_206A_202D_200D_200B_206D_202A_206E_202B_200E_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(-1875325540), (IAddonLifecycle.AddonEventDelegate)ContentsTutorialPostSetup);
_206B_206F_206A_206D_206D_206D_200D_202C_202B_200E_206F_202E_206C_200F_206D_202E_206C_206F_202A_206E_206A_202E_200F_200F_206B_200B_206C_206B_200E_206A_200E_206A_202D_200D_200B_206D_202A_206E_202B_200E_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(539331049), (IAddonLifecycle.AddonEventDelegate)MultipleHelpWindowPostSetup);
_206B_206F_206A_206D_206D_206D_200D_202C_202B_200E_206F_202E_206C_200F_206D_202E_206C_206F_202A_206E_206A_202E_200F_200F_206B_200B_206C_206B_200E_206A_200E_206A_202D_200D_200B_206D_202A_206E_202B_200E_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(-923307026), (IAddonLifecycle.AddonEventDelegate)JobHudNoticePostSetup);
_206B_206F_206A_206D_206D_206D_200D_202C_202B_200E_206F_202E_206C_200F_206D_202E_206C_206F_202A_206E_206A_202E_200F_200F_206B_200B_206C_206B_200E_206A_200E_206A_202D_200D_200B_206D_202A_206E_202B_200E_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(891874771), (IAddonLifecycle.AddonEventDelegate)GuidePostSetup);
_206B_206F_206A_206D_206D_206D_200D_202C_202B_200E_206F_202E_206C_200F_206D_202E_206C_206F_202A_206E_206A_202E_200F_200F_206B_200B_206C_206B_200E_206A_200E_206A_202D_200D_200B_206D_202A_206E_202B_200E_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(2059724302), (IAddonLifecycle.AddonEventDelegate)EventTutorialPostSetup);
_206B_206F_206A_206D_206D_206D_200D_202C_202B_200E_206F_202E_206C_200F_206D_202E_206C_206F_202A_206E_206A_202E_200F_200F_206B_200B_206C_206B_200E_206A_200E_206A_202D_200D_200B_206D_202A_206E_202B_200E_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(1877366658), (IAddonLifecycle.AddonEventDelegate)DescriptionPostSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "AkatsukiNote", UnendingCodexPostSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "ContentsTutorial", ContentsTutorialPostSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "MultipleHelpWindow", MultipleHelpWindowPostSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "JobHudNotice", JobHudNoticePostSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "Guide", GuidePostSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "EventTutorial", EventTutorialPostSetup);
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "Description", DescriptionPostSetup);
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void CloseHelpWindowsWhenStartingQuests(object sender, QuestController.EAutomationType e)
{
int num = ((e != QuestController.EAutomationType.Manual) ? 153660423 : 153660419);
AtkUnitBase* addonPtr4 = default(AtkUnitBase*);
AtkUnitBase* addonPtr2 = default(AtkUnitBase*);
AtkUnitBase* addonPtr3 = default(AtkUnitBase*);
AtkUnitBase* addonPtr = default(AtkUnitBase*);
while (true)
if (e != QuestController.EAutomationType.Manual)
{
int num2 = num;
int num3 = 153660420;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
if (_gameGui.TryGetAddonByName<AtkUnitBase>("Guide", out var addonPtr))
{
case 3:
num = ((!_gameGui.TryGetAddonByName<AtkUnitBase>(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>(-696336610), out addonPtr4)) ? 153660418 : 153660417);
break;
case 5:
_206E_202E_206B_206E_202A_206A_206F_200E_202E_200B_202C_200F_200D_200E_206D_200C_202A_202E_202A_202D_200D_202C_202D_200E_200D_202A_200C_202C_206B_200B_206E_202B_200E_200E_202C_202E_206A_202A_206E_206A_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>(-889278169), Array.Empty<object>());
GuidePostSetup(addonPtr4);
num = 153660418;
break;
case 8:
num = ((!_gameGui.TryGetAddonByName<AtkUnitBase>(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>(535644183), out addonPtr2)) ? 153660422 : 153660429);
break;
case 7:
return;
case 2:
return;
case 4:
_206E_202E_206B_206E_202A_206A_206F_200E_202E_200B_202C_200F_200D_200E_206D_200C_202A_202E_202A_202D_200D_202C_202D_200E_200D_202A_200C_202C_206B_200B_206E_202B_200E_200E_202C_202E_206A_202A_206E_206A_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>(2009840112), Array.Empty<object>());
EventTutorialPostSetup(addonPtr3);
num = 153660421;
break;
case 6:
num = ((!_gameGui.TryGetAddonByName<AtkUnitBase>(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>(1259257238), out addonPtr3)) ? 153660421 : 153660416);
break;
case 1:
num = ((!_gameGui.TryGetAddonByName<AtkUnitBase>(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>(-1889051347), out addonPtr)) ? 153660428 : 153660430);
break;
case 9:
_206E_202E_206B_206E_202A_206A_206F_200E_202E_200B_202C_200F_200D_200E_206D_200C_202A_202E_202A_202D_200D_202C_202D_200E_200D_202A_200C_202C_206B_200B_206E_202B_200E_200E_202C_202E_206A_202A_206E_206A_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>(-829695307), Array.Empty<object>());
JobHudNoticePostSetup(addonPtr2);
num = 153660422;
break;
case 10:
_206E_202E_206B_206E_202A_206A_206F_200E_202E_200B_202C_200F_200D_200E_206D_200C_202A_202E_202A_202D_200D_202C_202D_200E_200D_202A_200C_202C_206B_200B_206E_202B_200E_200E_202C_202E_206A_202A_206E_206A_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>(-574086776), Array.Empty<object>());
ContentsTutorialPostSetup(addonPtr);
num = 153660428;
break;
case 0:
num = 153660419;
break;
_logger.LogDebug("Guide window is open");
GuidePostSetup(addonPtr);
}
if (_gameGui.TryGetAddonByName<AtkUnitBase>("EventTutorial", out var addonPtr2))
{
_logger.LogDebug("EventTutorial window is open");
EventTutorialPostSetup(addonPtr2);
}
if (_gameGui.TryGetAddonByName<AtkUnitBase>("ContentsTutorial", out var addonPtr3))
{
_logger.LogDebug("ContentsTutorial window is open");
ContentsTutorialPostSetup(addonPtr3);
}
if (_gameGui.TryGetAddonByName<AtkUnitBase>("JobHudNotice", out var addonPtr4))
{
_logger.LogDebug("JobHudNotice window is open");
JobHudNoticePostSetup(addonPtr4);
}
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void UnendingCodexPostSetup(AddonEvent type, AddonArgs args)
{
QuestController.QuestProgress? startedQuest = _questController.StartedQuest;
ushort? num = ((startedQuest != null) ? new ushort?(_202E_200F_206D_200E_202D_202E_200F_200B_200F_206E_202E_202D_206F_202D_206C_202B_202D_200F_206A_202B_200B_206B_202A_206C_200C_200D_202C_200B_202E_200D_202C_206A_206E_200D_202D_202D_206C_202E_202C_206F_202E(startedQuest.Quest.Id)) : ((ushort?)null));
int num2 = (num.HasValue ? (-1404777382) : (-1404777383));
while (true)
if (_questController.StartedQuest?.Quest.Id.Value == 4526)
{
int num3 = num2;
int num4 = -1404777381;
int num5 = num3;
int? obj;
switch ((num5 | num4) - (num5 & num4))
{
case 1:
obj = num.GetValueOrDefault();
goto IL_0099;
case 3:
return;
case 0:
num2 = -1404777383;
break;
case 4:
{
_206E_202E_206B_206E_202A_206A_206F_200E_202E_200B_202C_200F_200D_200E_206D_200C_202A_202E_202A_202D_200D_202C_202D_200E_200D_202A_200C_202C_206B_200B_206E_202B_200E_200E_202C_202E_206A_202A_206E_206A_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>(24407879), Array.Empty<object>());
AtkUnitBase* address = (AtkUnitBase*)_206E_206A_206A_206F_202B_202B_202B_206B_206B_206A_200B_202A_206E_206B_206F_200E_200E_206E_206C_202A_206A_200D_202C_206A_206B_200F_206F_202B_206E_200F_202C_200E_202B_206C_206A_202C_202B_200B_202B_206E_202E(args).Address;
address->FireCallbackInt(-2);
num2 = -1404777384;
break;
}
case 2:
{
obj = null;
goto IL_0099;
}
IL_0099:
num2 = ((obj != 4526) ? (-1404777384) : (-1404777377));
break;
}
_logger.LogDebug("Closing Unending Codex");
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
address->FireCallbackInt(-2);
}
}
private unsafe void ContentsTutorialPostSetup(AddonEvent type, AddonArgs args)
{
QuestController.QuestProgress? startedQuest = _questController.StartedQuest;
ushort? num = ((startedQuest != null) ? new ushort?(_202E_200F_206D_200E_202D_202E_200F_200B_200F_206E_202E_202D_206F_202D_206C_202B_202D_200F_206A_202B_200B_206B_202A_206C_200C_200D_202C_200B_202E_200D_202C_206A_206E_200D_202D_202D_206C_202E_202C_206F_202E(startedQuest.Quest.Id)) : ((ushort?)null));
int num2 = ((!num.HasValue) ? (-763031592) : (-763031600));
bool flag = default(bool);
ushort valueOrDefault = default(ushort);
while (true)
bool flag;
switch (_questController.StartedQuest?.Quest.Id.Value)
{
int num3 = num2;
int num4 = -763031592;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
switch (num6 - (num7 + num7))
{
case 4:
num2 = -763031600;
break;
case 5:
flag = true;
num2 = -763031589;
break;
case 1:
num2 = ((valueOrDefault == 3872) ? (-763031587) : (-763031586));
break;
case 8:
valueOrDefault = num.GetValueOrDefault();
num2 = ((valueOrDefault == 245) ? (-763031587) : (-763031591));
break;
case 3:
num2 = ((!flag) ? (-763031585) : (-763031590));
break;
case 7:
return;
case 0:
flag = false;
num2 = -763031589;
break;
case 2:
ContentsTutorialPostSetup((AtkUnitBase*)_206E_206A_206A_206F_202B_202B_202B_206B_206B_206A_200B_202A_206E_206B_206F_200E_200E_206E_206C_202A_206A_200D_202C_206A_206B_200F_206F_202B_206E_200F_202C_200E_202B_206C_206A_202C_202B_200B_202B_206E_202E(args).Address);
num2 = -763031585;
break;
case 6:
num2 = ((valueOrDefault != 5253) ? (-763031592) : (-763031587));
break;
}
case 245:
case 3872:
case 5253:
flag = true;
break;
default:
flag = false;
break;
}
if (flag)
{
ContentsTutorialPostSetup((AtkUnitBase*)args.Addon.Address);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void ContentsTutorialPostSetup(AtkUnitBase* addon)
{
_206E_202E_206B_206E_202A_206A_206F_200E_202E_200B_202C_200F_200D_200E_206D_200C_202A_202E_202A_202D_200D_202C_202D_200E_200D_202A_200C_202C_206B_200B_206E_202B_200E_200E_202C_202E_206A_202A_206E_206A_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>(997030499), Array.Empty<object>());
_logger.LogDebug("Closing ContentsTutorial");
addon->FireCallbackInt(13);
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void MultipleHelpWindowPostSetup(AddonEvent type, AddonArgs args)
{
QuestController.QuestProgress? startedQuest = _questController.StartedQuest;
ushort? num = ((startedQuest != null) ? new ushort?(_202E_200F_206D_200E_202D_202E_200F_200B_200F_206E_202E_202D_206F_202D_206C_202B_202D_200F_206A_202B_200B_206B_202A_206C_200C_200D_202C_200B_202E_200D_202C_206A_206E_200D_202D_202D_206C_202E_202C_206F_202E(startedQuest.Quest.Id)) : ((ushort?)null));
int num2 = (num.HasValue ? 841439404 : 841439402);
while (true)
if (_questController.StartedQuest?.Quest.Id.Value == 245)
{
int num3 = num2;
int num4 = 841439400;
int num5 = num3;
int? obj;
switch ((num5 | num4) - (num5 & num4))
{
case 4:
obj = num.GetValueOrDefault();
goto IL_0099;
case 2:
obj = null;
goto IL_0099;
case 0:
{
_206E_202E_206B_206E_202A_206A_206F_200E_202E_200B_202C_200F_200D_200E_206D_200C_202A_202E_202A_202D_200D_202C_202D_200E_200D_202A_200C_202C_206B_200B_206E_202B_200E_200E_202C_202E_206A_202A_206E_206A_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>(-1717636655), Array.Empty<object>());
AtkUnitBase* address = (AtkUnitBase*)_206E_206A_206A_206F_202B_202B_202B_206B_206B_206A_200B_202A_206E_206B_206F_200E_200E_206E_206C_202A_206A_200D_202C_206A_206B_200F_206F_202B_206E_200F_202C_200E_202B_206C_206A_202C_202B_200B_202B_206E_202E(args).Address;
address->FireCallbackInt(-2);
address->FireCallbackInt(-1);
num2 = 841439401;
break;
}
case 1:
return;
case 3:
{
num2 = 841439402;
break;
}
IL_0099:
num2 = ((obj != 245) ? 841439401 : 841439400);
break;
}
_logger.LogDebug("Closing MultipleHelpWindow");
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
address->FireCallbackInt(-2);
address->FireCallbackInt(-1);
}
}
private unsafe void JobHudNoticePostSetup(AddonEvent type, AddonArgs args)
{
int num = (_questController.IsRunning ? (-1467614893) : (-1467614895));
while (true)
if (_questController.IsRunning || _questController.AutomationType != QuestController.EAutomationType.Manual)
{
int num2 = num;
int num3 = -1467614894;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
num = -1467614895;
break;
case 3:
num = ((_questController.AutomationType == QuestController.EAutomationType.Manual) ? (-1467614896) : (-1467614893));
break;
case 1:
JobHudNoticePostSetup((AtkUnitBase*)_206E_206A_206A_206F_202B_202B_202B_206B_206B_206A_200B_202A_206E_206B_206F_200E_200E_206E_206C_202A_206A_200D_202C_206A_206B_200F_206F_202B_206E_200F_202C_200E_202B_206C_206A_202C_202B_200B_202B_206E_202E(args).Address);
num = -1467614896;
break;
case 2:
return;
}
JobHudNoticePostSetup((AtkUnitBase*)args.Addon.Address);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void JobHudNoticePostSetup(AtkUnitBase* addon)
{
_206E_202E_206B_206E_202A_206A_206F_200E_202E_200B_202C_200F_200D_200E_206D_200C_202A_202E_202A_202D_200D_202C_202D_200E_200D_202A_200C_202C_206B_200B_206E_202B_200E_200E_202C_202E_206A_202A_206E_206A_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>(365911133), Array.Empty<object>());
_logger.LogDebug("Clicking the JobHudNotice window to open the relevant Guide page");
addon->FireCallbackInt(0);
}
private unsafe void GuidePostSetup(AddonEvent type, AddonArgs args)
{
int num = (_questController.IsRunning ? 373369011 : 373369010);
while (true)
if (_questController.IsRunning || _questController.AutomationType != QuestController.EAutomationType.Manual)
{
int num2 = num;
int num3 = 373369009;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
num = 373369010;
break;
case 1:
return;
case 3:
num = ((_questController.AutomationType == QuestController.EAutomationType.Manual) ? 373369008 : 373369011);
break;
case 2:
GuidePostSetup((AtkUnitBase*)_206E_206A_206A_206F_202B_202B_202B_206B_206B_206A_200B_202A_206E_206B_206F_200E_200E_206E_206C_202A_206A_200D_202C_206A_206B_200F_206F_202B_206E_200F_202C_200E_202B_206C_206A_202C_202B_200B_202B_206E_202E(args).Address);
num = 373369008;
break;
}
GuidePostSetup((AtkUnitBase*)args.Addon.Address);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void GuidePostSetup(AtkUnitBase* addon)
{
_206E_202E_206B_206E_202A_206A_206F_200E_202E_200B_202C_200F_200D_200E_206D_200C_202A_202E_202A_202D_200D_202C_202D_200E_200D_202A_200C_202C_206B_200B_206E_202B_200E_200E_202C_202E_206A_202A_206E_206A_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>(-1393090876), Array.Empty<object>());
_logger.LogDebug("Closing Guide window");
addon->FireCallbackInt(-1);
}
private unsafe void EventTutorialPostSetup(AddonEvent type, AddonArgs args)
{
int num = (_questController.IsRunning ? (-1567711917) : (-1567711920));
while (true)
if (!_questController.IsRunning && _questController.AutomationType == QuestController.EAutomationType.Manual)
{
int num2 = num;
int num3 = -1567711918;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
return;
case 2:
num = ((_questController.AutomationType == QuestController.EAutomationType.Manual) ? (-1567711918) : (-1567711917));
break;
case 1:
_200D_206E_202D_200C_202D_206E_206C_202B_202A_206B_206E_202B_202D_206D_202E_206D_200D_206C_206A_200E_206E_200C_200D_206F_202C_200E_206F_200B_206F_200D_200E_200E_202D_206A_200B_202A_200E_200D_200D_206B_202E(_framework, (Action)([MethodImpl(MethodImplOptions.NoInlining)] () =>
{
AtkUnitBase* addonPtr;
int num5 = ((!_gameGui.TryGetAddonByName<AtkUnitBase>(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>(-1630487467), out addonPtr)) ? 912686340 : 912686341);
while (true)
{
int num6 = num5;
int num7 = 912686340;
int num8 = num6;
switch ((num8 | num7) - (num8 & num7))
{
case 0:
return;
case 1:
EventTutorialPostSetup(addonPtr);
num5 = 912686340;
break;
case 2:
num5 = 912686341;
break;
}
}
}), default(TimeSpan), 0, default(CancellationToken));
num = -1567711918;
break;
case 3:
num = -1567711920;
break;
}
return;
}
_framework.RunOnTick(delegate
{
if (_gameGui.TryGetAddonByName<AtkUnitBase>("EventTutorial", out var addonPtr))
{
EventTutorialPostSetup(addonPtr);
}
});
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void EventTutorialPostSetup(AtkUnitBase* addon)
{
_206E_202E_206B_206E_202A_206A_206F_200E_202E_200B_202C_200F_200D_200E_206D_200C_202A_202E_202A_202D_200D_202C_202D_200E_200D_202A_200C_202C_206B_200B_206E_202B_200E_200E_202C_202E_206A_202A_206E_206A_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>(1936999602), Array.Empty<object>());
_logger.LogDebug("Closing EventTutorial window");
addon->FireCallbackInt(-1);
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void DescriptionPostSetup(AddonEvent type, AddonArgs args)
{
int num = (_questController.IsRunning ? (-1356307906) : (-1356307905));
while (true)
if (_questController.IsRunning || _questController.AutomationType != QuestController.EAutomationType.Manual)
{
int num2 = num;
int num3 = -1356307907;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 3:
{
_206E_202E_206B_206E_202A_206A_206F_200E_202E_200B_202C_200F_200D_200E_206D_200C_202A_202E_202A_202D_200D_202C_202D_200E_200D_202A_200C_202C_206B_200B_206E_202B_200E_200E_202C_202E_206A_202A_206E_206A_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>(-1957969933), Array.Empty<object>());
AtkUnitBase* address = (AtkUnitBase*)_206E_206A_206A_206F_202B_202B_202B_206B_206B_206A_200B_202A_206E_206B_206F_200E_200E_206E_206C_202A_206A_200D_202C_206A_206B_200F_206F_202B_206E_200F_202C_200E_202B_206C_206A_202C_202B_200B_202B_206E_202E(args).Address;
address->FireCallbackInt(-1);
num = -1356307908;
break;
}
case 1:
return;
case 0:
num = -1356307905;
break;
case 2:
num = ((_questController.AutomationType == QuestController.EAutomationType.Manual) ? (-1356307908) : (-1356307906));
break;
}
_logger.LogDebug("Closing Description window");
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
address->FireCallbackInt(-1);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
public void Dispose()
{
_200B_200B_200F_202B_202B_206B_202E_200D_202C_206F_206C_202D_202B_206D_206D_200E_202A_202C_206C_206A_202D_200D_206C_202D_206E_202B_206B_206A_202D_200E_202C_206E_200E_206E_200E_200D_206D_200B_200C_206B_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(1877366658), (IAddonLifecycle.AddonEventDelegate)DescriptionPostSetup);
_200B_200B_200F_202B_202B_206B_202E_200D_202C_206F_206C_202D_202B_206D_206D_200E_202A_202C_206C_206A_202D_200D_206C_202D_206E_202B_206B_206A_202D_200E_202C_206E_200E_206E_200E_200D_206D_200B_200C_206B_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(-547923045), (IAddonLifecycle.AddonEventDelegate)EventTutorialPostSetup);
_200B_200B_200F_202B_202B_206B_202E_200D_202C_206F_206C_202D_202B_206D_206D_200E_202A_202C_206C_206A_202D_200D_206C_202D_206E_202B_206B_206A_202D_200E_202C_206E_200E_206E_200E_200D_206D_200B_200C_206B_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(-968492780), (IAddonLifecycle.AddonEventDelegate)GuidePostSetup);
_200B_200B_200F_202B_202B_206B_202E_200D_202C_206F_206C_202D_202B_206D_206D_200E_202A_202C_206C_206A_202D_200D_206C_202D_206E_202B_206B_206A_202D_200E_202C_206E_200E_206E_200E_200D_206D_200B_200C_206B_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(-1813722758), (IAddonLifecycle.AddonEventDelegate)JobHudNoticePostSetup);
_200B_200B_200F_202B_202B_206B_202E_200D_202C_206F_206C_202D_202B_206D_206D_200E_202A_202C_206C_206A_202D_200D_206C_202D_206E_202B_206B_206A_202D_200E_202C_206E_200E_206E_200E_200D_206D_200B_200C_206B_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(341545647), (IAddonLifecycle.AddonEventDelegate)MultipleHelpWindowPostSetup);
_200B_200B_200F_202B_202B_206B_202E_200D_202C_206F_206C_202D_202B_206D_206D_200E_202A_202C_206C_206A_202D_200D_206C_202D_206E_202B_206B_206A_202D_200E_202C_206E_200E_206E_200E_200D_206D_200B_200C_206B_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(-1889051347), (IAddonLifecycle.AddonEventDelegate)ContentsTutorialPostSetup);
_200B_200B_200F_202B_202B_206B_202E_200D_202C_206F_206C_202D_202B_206D_206D_200E_202A_202C_206C_206A_202D_200D_206C_202D_206E_202B_206B_206A_202D_200E_202C_206E_200E_206E_200E_200D_206D_200B_200C_206B_202E(_addonLifecycle, AddonEvent.PostSetup, 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>(40702289), (IAddonLifecycle.AddonEventDelegate)UnendingCodexPostSetup);
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "Description", DescriptionPostSetup);
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "EventTutorial", EventTutorialPostSetup);
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "Guide", GuidePostSetup);
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "JobHudNotice", JobHudNoticePostSetup);
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "MultipleHelpWindow", MultipleHelpWindowPostSetup);
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "ContentsTutorial", ContentsTutorialPostSetup);
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "AkatsukiNote", UnendingCodexPostSetup);
_questController.AutomationTypeChanged -= CloseHelpWindowsWhenStartingQuests;
}
void IDisposable.Dispose()
{
//ILSpy generated this explicit interface implementation from .override directive in Dispose
this.Dispose();
}
static void _206B_206F_206A_206D_206D_206D_200D_202C_202B_200E_206F_202E_206C_200F_206D_202E_206C_206F_202A_206E_206A_202E_200F_200F_206B_200B_206C_206B_200E_206A_200E_206A_202D_200D_200B_206D_202A_206E_202B_200E_202E(IAddonLifecycle P_0, AddonEvent P_1, string P_2, IAddonLifecycle.AddonEventDelegate P_3)
{
P_0.RegisterListener(P_1, P_2, P_3);
}
static void _206E_202E_206B_206E_202A_206A_206F_200E_202E_200B_202C_200F_200D_200E_206D_200C_202A_202E_202A_202D_200D_202C_202D_200E_200D_202A_200C_202C_206B_200B_206E_202B_200E_200E_202C_202E_206A_202A_206E_206A_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static ushort _202E_200F_206D_200E_202D_202E_200F_200B_200F_206E_202E_202D_206F_202D_206C_202B_202D_200F_206A_202B_200B_206B_202A_206C_200C_200D_202C_200B_202E_200D_202C_206A_206E_200D_202D_202D_206C_202E_202C_206F_202E(ElementId P_0)
{
return P_0.Value;
}
static AtkUnitBasePtr _206E_206A_206A_206F_202B_202B_202B_206B_206B_206A_200B_202A_206E_206B_206F_200E_200E_206E_206C_202A_206A_200D_202C_206A_206B_200F_206F_202B_206E_200F_202C_200E_202B_206C_206A_202C_202B_200B_202B_206E_202E(AddonArgs P_0)
{
return P_0.Addon;
}
static Task _200D_206E_202D_200C_202D_206E_206C_202B_202A_206B_206E_202B_202D_206D_202E_206D_200D_206C_206A_200E_206E_200C_200D_206F_202C_200E_206F_200B_206F_200D_200E_200E_202D_206A_200B_202A_200E_200D_200D_206B_202E(IFramework P_0, Action P_1, TimeSpan P_2, int P_3, CancellationToken P_4)
{
return P_0.RunOnTick(P_1, P_2, P_3, P_4);
}
static void _200B_200B_200F_202B_202B_206B_202E_200D_202C_206F_206C_202D_202B_206D_206D_200E_202A_202C_206C_206A_202D_200D_206C_202D_206E_202B_206B_206A_202D_200E_202C_206E_200E_206E_200E_200D_206D_200B_200C_206B_202E(IAddonLifecycle P_0, AddonEvent P_1, string P_2, IAddonLifecycle.AddonEventDelegate P_3)
{
P_0.UnregisterListener(P_1, P_2, P_3);
}
}

View file

@ -1,6 +1,4 @@
using System;
using System.Runtime.CompilerServices;
using Dalamud.Game.Config;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Component.GUI;
using FFXIVClientStructs.Interop;
@ -25,7 +23,7 @@ internal sealed class QteController : IDisposable
private Throttle _throttle;
private readonly Random _random = _206A_206D_200B_206B_202B_206B_206F_202C_200B_200C_202A_206B_206B_200F_206C_202E_206A_202D_202D_200E_206F_200B_206A_200B_206F_206F_202C_200D_200B_200C_202C_202E_202A_202E_202C_206D_206A_202C_200B_206B_202E();
private readonly Random _random = new Random();
private bool _hasDirectChat;
@ -38,243 +36,81 @@ internal sealed class QteController : IDisposable
_gameConfig = gameConfig;
_framework = framework;
_logger = logger;
_200C_206B_202C_202D_206D_202C_200B_202B_206E_206C_200E_206C_200D_206C_200B_206C_206C_200F_202D_202B_200B_206B_206C_200E_206C_200E_200E_206F_206A_206A_202B_206F_202E_206A_200D_206B_202E_200D_200E_202E_202E(_framework, (IFramework.OnUpdateDelegate)OnUpdate);
_framework.Update += OnUpdate;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe void OnUpdate(IFramework framework)
{
int num = (_configuration.General.AutoSolveQte ? (-1685552556) : (-1685552558));
AtkUnitBase* addonPtr = default(AtkUnitBase*);
while (true)
AtkUnitBase* addonPtr;
if (!_configuration.General.AutoSolveQte)
{
int num2 = num;
int num3 = -1685552557;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
EnableDirectChatIfNeeded();
}
else if (_gameGui.TryGetAddonByName<AtkUnitBase>("QTE", out addonPtr) && LAddon.IsAddonReady(addonPtr) && addonPtr->IsVisible)
{
DisableDirectChatIfNeeded();
if (_throttle.TryReset((double)_random.Next(25, 50) / 1000.0))
{
case 3:
_206B_202D_206C_206F_200D_200E_202D_202A_206B_206E_200E_200B_202C_206F_202C_206A_206D_200C_202E_206D_206C_200C_202B_206F_206B_206E_200B_206A_200C_200F_200C_200F_200D_206A_202B_202A_206F_200B_202D_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>(495416041), Array.Empty<object>());
WindowsKeypress.SendKeypress(WindowsKeypress.LimitedKeys.Escape);
num = -1685552559;
break;
case 5:
EnableDirectChatIfNeeded();
num = -1685552550;
break;
case 1:
EnableDirectChatIfNeeded();
return;
case 0:
num = ((!_206D_206D_200E_200E_206C_206A_202C_206D_200D_200D_206A_202B_202D_200E_206C_200E_206D_202B_206B_202C_206D_200D_206D_206F_200D_206F_200B_206C_202B_200F_200C_200F_206B_202D_206C_206E_206E_202C_200F_202C_202E(addonPtr)) ? (-1685552554) : (-1685552549));
break;
case 9:
return;
case 4:
DisableDirectChatIfNeeded();
num = ((!_throttle.TryReset((double)_206C_206E_200E_200C_202C_206C_202B_206C_202E_206E_206A_200B_206D_202B_202C_206B_202C_206C_200B_202B_206D_206D_206B_200B_206F_206F_202C_202D_206D_206C_206E_200C_200D_202C_202A_202D_206C_202C_200E_206F_202E(_random, 25, 50) / 1000.0)) ? (-1685552550) : (-1685552551));
break;
case 10:
num = ((!IsChatLogFocused()) ? (-1685552559) : (-1685552560));
break;
case 6:
num = -1685552558;
break;
case 7:
num = ((!_gameGui.TryGetAddonByName<AtkUnitBase>(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>(-1397653892), out addonPtr)) ? (-1685552554) : (-1685552557));
break;
case 2:
if (IsChatLogFocused())
{
_logger.LogDebug("Chat is focused during QTE, sending Escape");
WindowsKeypress.SendKeypress(WindowsKeypress.LimitedKeys.Escape);
}
WindowsKeypress.SendKeypress(WindowsKeypress.LimitedKeys.A);
return;
case 8:
num = ((!addonPtr->IsVisible) ? (-1685552554) : (-1685552553));
break;
}
}
else
{
EnableDirectChatIfNeeded();
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private unsafe bool IsChatLogFocused()
{
AtkStage* ptr = AtkStage.Instance();
int num = ((ptr != null) ? (-1746454886) : (-1746454891));
int num5 = default(int);
Span<Pointer<AtkUnitBase>> entries = default(Span<Pointer<AtkUnitBase>>);
Pointer<AtkUnitBase> pointer = default(Pointer<AtkUnitBase>);
while (true)
if (ptr == null)
{
int num2 = num;
int num3 = -1746454883;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
return false;
}
Span<Pointer<AtkUnitBase>> entries = ptr->RaptureAtkUnitManager->AtkUnitManager.FocusedUnitsList.Entries;
for (int i = 0; i < entries.Length; i++)
{
Pointer<AtkUnitBase> pointer = entries[i];
if (pointer.Value != null && pointer.Value->NameString == "ChatLog")
{
case 5:
num = ((num5 < entries.Length) ? (-1746454887) : (-1746454885));
break;
case 8:
return false;
case 0:
num = -1746454891;
break;
case 6:
return false;
case 3:
return true;
case 2:
{
int num6 = num5;
num3 = 1;
num4 = num6;
int num7 = num4 ^ num3;
int num8 = num4 & num3;
num5 = num7 + (num8 + num8);
num = -1746454888;
break;
}
case 4:
pointer = entries[num5];
num = ((pointer.Value == null) ? (-1746454881) : (-1746454884));
break;
case 7:
entries = ptr->RaptureAtkUnitManager->AtkUnitManager.FocusedUnitsList.Entries;
num5 = 0;
num = -1746454888;
break;
case 1:
num = ((!_206D_200D_200D_206A_202C_200D_202A_206F_202C_206A_200D_200B_200E_202E_200E_200E_202D_200D_200F_202C_202A_200D_206B_206C_200F_202E_200C_206D_200B_200F_200F_206A_200D_202D_200C_206C_202E_206B_202C_202E_202E(pointer.Value->NameString, 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>(-101701378))) ? (-1746454881) : (-1746454882));
break;
}
}
return false;
}
[MethodImpl(MethodImplOptions.NoInlining)]
private void EnableDirectChatIfNeeded()
{
int num = ((!_hasDirectChat) ? 514735225 : 514735226);
while (true)
if (_hasDirectChat)
{
int num2 = num;
int num3 = 514735224;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 1:
return;
case 2:
_202A_206D_202C_202A_200F_206B_200F_206D_200E_206E_200B_206F_202C_206B_206B_202A_206E_206F_202E_202E_200F_206F_206A_206E_200D_206C_206A_200C_206B_200D_200D_200E_206A_202C_200E_200C_202D_206D_202C_206E_202E(_200E_202C_206D_206C_200C_206E_200F_200F_200B_206E_200D_200D_206D_206C_206A_200C_206C_202E_202C_206C_206D_202E_202E_200C_206F_200E_206E_202B_200D_200D_200F_206B_200F_202C_200C_202B_206C_200D_202E(_gameConfig), 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>(12163311), _directChatWasEnabled);
_hasDirectChat = false;
_206B_202D_206C_206F_200D_200E_202D_202A_206B_206E_200E_200B_202C_206F_202C_206A_206D_200C_202E_206D_206C_200C_202B_206F_206B_206E_200B_206A_200C_200F_200C_200F_200D_206A_202B_202A_206F_200B_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>(-1824458648), new object[1] { _directChatWasEnabled });
num = 514735225;
break;
case 0:
num = 514735226;
break;
}
_gameConfig.UiControl.Set("DirectChat", _directChatWasEnabled);
_hasDirectChat = false;
_logger.LogDebug("Restored DirectChat to {Value}", _directChatWasEnabled);
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
private void DisableDirectChatIfNeeded()
{
int num = (_hasDirectChat ? 343908918 : 343908917);
bool flag = default(bool);
while (true)
if (!_hasDirectChat && _gameConfig.UiControl.TryGetBool("DirectChat", out var value))
{
int num2 = num;
int num3 = 343908918;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
_directChatWasEnabled = value;
if (value)
{
case 0:
return;
case 3:
num = ((!_206B_206E_200C_206C_202A_202E_206A_206F_206D_206D_200E_200C_206D_200F_202E_202E_206F_206F_202D_202A_202A_206B_202E_200C_206A_206C_200E_200C_202A_200F_200C_206B_202A_200B_200E_206C_206D_202A_206B_200D_202E(_200E_202C_206D_206C_200C_206E_200F_200F_200B_206E_200D_200D_206D_206C_206A_200C_206C_202E_202C_206C_206D_202E_202E_200C_206F_200E_206E_202B_200D_200D_200F_206B_200F_202C_200C_202B_206C_200D_202E(_gameConfig), 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>(1876854388), ref flag)) ? 343908918 : 343908916);
break;
case 5:
_hasDirectChat = true;
num = 343908918;
break;
case 1:
_202A_206D_202C_202A_200F_206B_200F_206D_200E_206E_200B_206F_202C_206B_206B_202A_206E_206F_202E_202E_200F_206F_206A_206E_200D_206C_206A_200C_206B_200D_200D_200E_206A_202C_200E_200C_202D_206D_202C_206E_202E(_200E_202C_206D_206C_200C_206E_200F_200F_200B_206E_200D_200D_206D_206C_206A_200C_206C_202E_202C_206C_206D_202E_202E_200C_206F_200E_206E_202B_200D_200D_200F_206B_200F_202C_200C_202B_206C_200D_202E(_gameConfig), 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>(1876854388), false);
_206B_202D_206C_206F_200D_200E_202D_202A_206B_206E_200E_200B_202C_206F_202C_206A_206D_200C_202E_206D_206C_200C_202B_206F_206B_206E_200B_206A_200C_200F_200C_200F_200D_206A_202B_202A_206F_200B_202D_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>(1363621454), Array.Empty<object>());
num = 343908915;
break;
case 4:
num = 343908917;
break;
case 2:
_directChatWasEnabled = flag;
num = ((!flag) ? 343908915 : 343908919);
break;
_gameConfig.UiControl.Set("DirectChat", value: false);
_logger.LogDebug("Temporarily disabled DirectChat for QTE handling");
}
_hasDirectChat = true;
}
}
public void Dispose()
{
_200D_200C_206B_206C_200F_200B_202B_202C_202E_200C_200E_202B_200E_200E_206A_200C_202A_202A_202D_206A_202C_202A_206D_202A_206F_206F_202B_206E_206B_200E_206E_202E_200B_200F_200B_202E_200E_202C_200F_206E_202E(_framework, (IFramework.OnUpdateDelegate)OnUpdate);
_framework.Update -= OnUpdate;
EnableDirectChatIfNeeded();
}
void IDisposable.Dispose()
{
//ILSpy generated this explicit interface implementation from .override directive in Dispose
this.Dispose();
}
static Random _206A_206D_200B_206B_202B_206B_206F_202C_200B_200C_202A_206B_206B_200F_206C_202E_206A_202D_202D_200E_206F_200B_206A_200B_206F_206F_202C_200D_200B_200C_202C_202E_202A_202E_202C_206D_206A_202C_200B_206B_202E()
{
return new Random();
}
static void _200C_206B_202C_202D_206D_202C_200B_202B_206E_206C_200E_206C_200D_206C_200B_206C_206C_200F_202D_202B_200B_206B_206C_200E_206C_200E_200E_206F_206A_206A_202B_206F_202E_206A_200D_206B_202E_200D_200E_202E_202E(IFramework P_0, IFramework.OnUpdateDelegate P_1)
{
P_0.Update += P_1;
}
unsafe static bool _206D_206D_200E_200E_206C_206A_202C_206D_200D_200D_206A_202B_202D_200E_206C_200E_206D_202B_206B_202C_206D_200D_206D_206F_200D_206F_200B_206C_202B_200F_200C_200F_206B_202D_206C_206E_206E_202C_200F_202C_202E(AtkUnitBase* P_0)
{
return LAddon.IsAddonReady(P_0);
}
static int _206C_206E_200E_200C_202C_206C_202B_206C_202E_206E_206A_200B_206D_202B_202C_206B_202C_206C_200B_202B_206D_206D_206B_200B_206F_206F_202C_202D_206D_206C_206E_200C_200D_202C_202A_202D_206C_202C_200E_206F_202E(Random P_0, int P_1, int P_2)
{
return P_0.Next(P_1, P_2);
}
static void _206B_202D_206C_206F_200D_200E_202D_202A_206B_206E_200E_200B_202C_206F_202C_206A_206D_200C_202E_206D_206C_200C_202B_206F_206B_206E_200B_206A_200C_200F_200C_200F_200D_206A_202B_202A_206F_200B_202D_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static bool _206D_200D_200D_206A_202C_200D_202A_206F_202C_206A_200D_200B_200E_202E_200E_200E_202D_200D_200F_202C_202A_200D_206B_206C_200F_202E_200C_206D_200B_200F_200F_206A_200D_202D_200C_206C_202E_206B_202C_202E_202E(string P_0, string P_1)
{
return P_0 == P_1;
}
static GameConfigSection _200E_202C_206D_206C_200C_206E_200F_200F_200B_206E_200D_200D_206D_206C_206A_200C_206C_202E_202C_206C_206D_202E_202E_200C_206F_200E_206E_202B_200D_200D_200F_206B_200F_202C_200C_202B_206C_200D_202E(IGameConfig P_0)
{
return P_0.UiControl;
}
static void _202A_206D_202C_202A_200F_206B_200F_206D_200E_206E_200B_206F_202C_206B_206B_202A_206E_206F_202E_202E_200F_206F_206A_206E_200D_206C_206A_200C_206B_200D_200D_200E_206A_202C_200E_200C_202D_206D_202C_206E_202E(GameConfigSection P_0, string P_1, bool P_2)
{
P_0.Set(P_1, P_2);
}
static bool _206B_206E_200C_206C_202A_202E_206A_206F_206D_206D_200E_200C_206D_200F_202E_202E_206F_206F_202D_202A_202A_206B_202E_200C_206A_206C_200E_200C_202A_200F_200C_206B_202A_200B_200E_206C_206D_202A_206B_200D_202E(GameConfigSection P_0, string P_1, ref bool P_2)
{
return P_0.TryGetBool(P_1, out P_2);
}
static void _200D_200C_206B_206C_200F_200B_202B_202C_202E_200C_200E_202B_200E_200E_206A_200C_202A_202A_202D_206A_202C_202A_206D_202A_206F_206F_202B_206E_206B_200E_206E_202E_200B_200F_200B_202E_200E_202C_200F_206E_202E(IFramework P_0, IFramework.OnUpdateDelegate P_1)
{
P_0.Update -= P_1;
}
}

View file

@ -1,8 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Runtime.CompilerServices;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Component.GUI;
using LLib.GameUI;
@ -15,93 +13,6 @@ namespace Questionable.Controller.GameUi;
internal sealed class ShopController : IDisposable, IShopWindow
{
[CompilerGenerated]
private sealed class _003C_003Ec__DisplayClass28_0
{
public unsafe AtkValue* atkValues;
public QuestStep currentStep;
internal unsafe ItemForSale _003CUpdateShopStock_003Eb__0(int i)
{
ItemForSale itemForSale = _206D_206A_200F_206C_206E_200F_200E_202E_200B_200B_206F_206C_202D_206B_200E_200C_202E_202B_202A_206B_206A_206A_206F_206D_206A_200D_200C_202D_206F_200F_202D_206D_206C_200E_202D_200E_206F_206B_200E_202E_202E();
_200D_202B_206C_206B_200D_202B_200F_206B_200E_206A_206E_200E_202D_200B_206E_206B_202A_200C_206A_206A_206D_202A_202B_206E_200F_206E_202C_202D_202A_200C_202C_202C_206E_206B_200E_202A_202B_206D_200B_206F_202E(itemForSale, i);
AtkValue* num = atkValues;
int num2 = i;
int num3 = 14;
_206F_202E_206F_202E_206A_202C_202C_202B_202E_202C_202D_200D_200B_202B_206B_206F_202D_200E_202D_206F_206A_200E_206A_202D_206E_206D_206E_206A_202A_202D_200F_200C_202D_202C_200D_206C_200C_206D_202A_202E(itemForSale, _200E_200C_202C_200E_200F_202E_202D_200C_200D_200C_200C_202B_200B_202C_200D_206B_206E_202D_200C_206E_200F_202D_206E_200B_202B_206F_200C_200B_200D_206F_202B_206B_202B_206F_200F_200C_206F_200E_206E_202C_202E(num[(num3 | num2) + (num3 & num2)]));
AtkValue* num4 = atkValues;
num2 = i;
num3 = 75;
_206A_200B_206E_206D_202D_206B_206A_206C_202E_202B_200C_206B_206B_206B_202E_200D_200E_202C_206B_206B_202D_202E_202E_206E_206A_206B_200F_200E_206D_200F_206C_202C_202D_200B_206D_206B_206D_202C_202A_206D_202E(itemForSale, num4[(num3 | num2) + (num3 & num2)].UInt);
_202C_206E_206F_202E_200B_206C_202C_200C_206A_206F_200E_202A_200B_200B_206A_206C_206C_202A_202C_202C_200C_200B_202C_206F_206D_202B_206A_202E_202C_206A_206A_200D_200C_200F_202A_202E_202D_200B_202C_206A_202E(itemForSale, 1u);
AtkValue* num5 = atkValues;
num2 = i;
num3 = 136;
_202D_200D_200E_206A_200F_200F_200D_206E_200C_206C_202E_206D_206F_200C_206A_200B_200F_200B_206D_202D_200F_200E_202E_206B_200C_200F_200C_200F_200D_200B_200D_200E_200C_200F_200D_206F_202D_206C_206B_206B_202E(itemForSale, num5[(num3 | num2) + (num3 & num2)].UInt);
AtkValue* num6 = atkValues;
num2 = i;
num3 = 441;
_200F_202C_202E_202D_206C_206A_200B_200C_200B_202E_202A_200B_202E_200D_202B_202E_200C_202D_206B_202C_202A_206F_206C_202A_200F_200C_202B_206D_202B_200D_206C_202A_200D_206D_200D_206F_202B_206D_200B_202C_202E(itemForSale, num6[(num3 | num2) + (num3 & num2)].UInt);
return itemForSale;
}
internal bool _003CUpdateShopStock_003Eb__1(ItemForSale x)
{
return _206D_202C_206C_200B_200D_206D_206F_206C_206A_200D_206A_206E_200B_206F_200B_202E_206F_202C_206C_202C_206E_202A_206D_202D_200C_200D_206A_200F_202D_202C_202A_200F_206D_200F_206A_200D_200F_202D_202E_200D_202E(x) == _202D_202B_202E_206A_200F_202C_202A_206F_206E_206B_206D_206E_200C_200F_206A_202D_202B_200F_202B_200F_200B_206C_206E_202B_206F_206E_200E_200B_202B_200D_202C_202A_206E_202D_200D_200B_202C_206D_202D_206A_202E(currentStep);
}
static ItemForSale _206D_206A_200F_206C_206E_200F_200E_202E_200B_200B_206F_206C_202D_206B_200E_200C_202E_202B_202A_206B_206A_206A_206F_206D_206A_200D_200C_202D_206F_200F_202D_206D_206C_200E_202D_200E_206F_206B_200E_202E_202E()
{
return new ItemForSale();
}
static void _200D_202B_206C_206B_200D_202B_200F_206B_200E_206A_206E_200E_202D_200B_206E_206B_202A_200C_206A_206A_206D_202A_202B_206E_200F_206E_202C_202D_202A_200C_202C_202C_206E_206B_200E_202A_202B_206D_200B_206F_202E(ItemForSale P_0, int P_1)
{
P_0.Position = P_1;
}
static string _200E_200C_202C_200E_200F_202E_202D_200C_200D_200C_200C_202B_200B_202C_200D_206B_206E_202D_200C_206E_200F_202D_206E_200B_202B_206F_200C_200B_200D_206F_202B_206B_202B_206F_200F_200C_206F_200E_206E_202C_202E(AtkValue P_0)
{
return P_0.ReadAtkString();
}
static void _206F_202E_206F_202E_206A_202C_202C_202B_202E_202C_202D_200D_200B_202B_206B_206F_202D_200E_202D_206F_206A_200E_206A_202D_206E_206D_206E_206A_202A_202D_200F_200C_202D_202C_200D_206C_200C_206D_202A_202E(ItemForSale P_0, string P_1)
{
P_0.ItemName = P_1;
}
static void _206A_200B_206E_206D_202D_206B_206A_206C_202E_202B_200C_206B_206B_206B_202E_200D_200E_202C_206B_206B_202D_202E_202E_206E_206A_206B_200F_200E_206D_200F_206C_202C_202D_200B_206D_206B_206D_202C_202A_206D_202E(ItemForSale P_0, uint P_1)
{
P_0.Price = P_1;
}
static void _202C_206E_206F_202E_200B_206C_202C_200C_206A_206F_200E_202A_200B_200B_206A_206C_206C_202A_202C_202C_200C_200B_202C_206F_206D_202B_206A_202E_202C_206A_206A_200D_200C_200F_202A_202E_202D_200B_202C_206A_202E(ItemForSale P_0, uint P_1)
{
P_0.CurrencyItemId = P_1;
}
static void _202D_200D_200E_206A_200F_200F_200D_206E_200C_206C_202E_206D_206F_200C_206A_200B_200F_200B_206D_202D_200F_200E_202E_206B_200C_200F_200C_200F_200D_200B_200D_200E_200C_200F_200D_206F_202D_206C_206B_206B_202E(ItemForSale P_0, uint P_1)
{
P_0.OwnedItems = P_1;
}
static void _200F_202C_202E_202D_206C_206A_200B_200C_200B_202E_202A_200B_202E_200D_202B_202E_200C_202D_206B_202C_202A_206F_206C_202A_200F_200C_202B_206D_202B_200D_206C_202A_200D_206D_200D_206F_202B_206D_200B_202C_202E(ItemForSale P_0, uint P_1)
{
P_0.ItemId = P_1;
}
static uint _206D_202C_206C_200B_200D_206D_206F_206C_206A_200D_206A_206E_200B_206F_200B_202E_206F_202C_206C_202C_206E_202A_206D_202D_200C_200D_206A_200F_202D_202C_202A_200F_206D_200F_206A_200D_200F_202D_202E_200D_202E(ItemForSale P_0)
{
return P_0.ItemId;
}
static uint? _202D_202B_202E_206A_200F_202C_202A_206F_206E_206B_206D_206E_200C_200F_206A_202D_202B_200F_202B_200F_200B_206C_206E_202B_206F_206E_200E_200B_202B_200D_202C_202A_206E_202D_200D_200B_202C_206D_202D_206A_202E(QuestStep P_0)
{
return P_0.ItemId;
}
}
private readonly QuestController _questController;
private readonly IGameGui _gameGui;
@ -124,262 +35,124 @@ internal sealed class ShopController : IDisposable, IShopWindow
public bool IsOpen { get; set; }
public bool IsAutoBuyEnabled => _200C_202E_202B_202B_206C_206C_206E_200E_200B_200D_206E_202B_202A_202A_200B_200C_200D_206C_200D_206F_202A_202B_202A_200B_206B_202A_200B_200F_206F_202A_200E_202A_202B_206F_202B_200F_200E_200F_206F_202C_202E(_shop);
public bool IsAutoBuyEnabled => _shop.AutoBuyEnabled;
public bool IsAwaitingYesNo
{
get
{
return _206F_200B_202D_202B_206C_206B_200E_202B_200D_200E_206D_202D_202C_206D_206C_200F_200C_206F_200B_200E_202D_202D_200E_206E_202D_202C_206C_202D_202A_200F_202E_202D_202E_206F_202E_202D_200D_206B_202A_202A_202E(_shop);
return _shop.IsAwaitingYesNo;
}
set
{
_202E_200F_206E_206E_202D_200F_202D_202E_206A_206F_202B_206A_200B_202B_202B_206A_200C_206D_202A_206F_206A_202A_206B_200B_202E_202C_202D_202A_206B_200C_206B_200F_206C_200F_202A_202C_200D_206B_206F_206C_202E(_shop, value);
_shop.IsAwaitingYesNo = value;
}
}
public Vector2? Position { get; set; }
[MethodImpl(MethodImplOptions.NoInlining)]
public ShopController(QuestController questController, IGameGui gameGui, IAddonLifecycle addonLifecycle, IFramework framework, ILogger<ShopController> logger, IPluginLog pluginLog, IDataManager dataManager)
{
_questController = questController;
_gameGui = gameGui;
_framework = framework;
_shop = _206D_202A_202E_206D_206B_202C_200C_206E_200B_202B_206D_202A_202B_206D_202E_200C_200B_206F_206C_206C_202C_206F_206C_202E_206B_202B_206E_202C_200D_206D_202A_206E_206B_206A_206B_206A_206E_206D_202E((IShopWindow)this, 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>(-2121285778), pluginLog, gameGui, addonLifecycle, dataManager);
_shop = new RegularShopBase(this, "Shop", pluginLog, gameGui, addonLifecycle, dataManager);
_logger = logger;
_200B_202A_200F_206D_200C_200B_206B_206A_202E_202A_200D_202C_202B_200D_202A_206A_206F_202A_206C_206F_200D_202D_202B_206E_206A_200C_206A_206D_206D_202A_202B_202B_202E_202B_206B_200D_206D_202B_200B_206C_202E(_framework, (IFramework.OnUpdateDelegate)FrameworkUpdate);
_framework.Update += FrameworkUpdate;
}
public void Dispose()
{
_202E_206A_206E_200F_206E_200C_206B_200B_200C_200D_200E_200C_206A_200D_206E_200C_202C_206E_206F_206D_202D_206F_200F_206E_202B_206A_206C_200D_206B_202C_206C_202D_206A_200C_206B_200B_206E_206D_200B_200E_202E(_framework, (IFramework.OnUpdateDelegate)FrameworkUpdate);
_200C_202E_206E_206C_202A_200C_202B_200C_202A_206E_206C_206F_202B_202C_202B_200E_206B_200F_202B_206D_206F_206E_200E_206F_206B_200B_202D_202E_206A_206B_200B_200E_200E_206C_202D_200E_202E_202C_206E_202A_202E(_shop);
_framework.Update -= FrameworkUpdate;
_shop.Dispose();
}
void IDisposable.Dispose()
{
//ILSpy generated this explicit interface implementation from .override directive in Dispose
this.Dispose();
}
[MethodImpl(MethodImplOptions.NoInlining)]
private void FrameworkUpdate(IFramework framework)
{
int num = ((!IsOpen) ? (-1743708968) : (-1743708973));
QuestStep questStep = default(QuestStep);
int num7 = default(int);
while (true)
if (!IsOpen || _shop.ItemForSale == null)
{
int num2 = num;
int num3 = -1743708974;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 4:
_202E_202A_200F_202E_200F_202E_200C_200D_206B_202D_202B_200E_206F_200C_202E_200D_200E_202E_206C_206D_206E_206C_202A_202A_202A_206F_206B_200F_202D_200B_202A_200B_202E_206C_206A_206E_200D_200F_202B_200D_202E(_shop, (ItemForSale)null);
RestoreExternalPluginState();
num = -1743708968;
break;
case 8:
num = ((_202B_200D_200D_206C_200E_200C_202C_206F_206A_206E_206C_202E_202C_200E_206C_206D_202E_206E_206B_202D_202B_200E_206F_202D_206C_202B_206C_206F_206D_202A_202D_200F_200F_202B_202B_202D_206A_200F_200F_202C_202E(_shop) == null) ? (-1743708974) : (-1743708975));
break;
case 1:
num = ((_206C_202C_206C_202D_206D_202A_206A_200C_202C_200B_202C_206F_200D_206B_206B_202C_206D_202D_200E_200B_206D_202B_206E_202D_202E_202E_206F_206E_206C_202E_206F_206A_206F_200B_202E_206E_200B_200D_200C_206F_202E(_shop) == null) ? (-1743708968) : (-1743708966));
break;
case 5:
{
int num8 = _200E_206D_206B_202D_200C_206A_200E_206D_200B_202D_202E_206A_206B_206E_206D_200E_200C_202A_200F_202E_202C_206A_200F_206A_200C_200E_206A_206D_200E_200D_202E_206F_206F_202A_200B_202D_206D_200C_206C_200E_202E(0, _206C_202A_206F_200F_200B_200F_206F_200B_200B_206B_200B_202E_202B_200B_200F_200B_202A_206C_206B_202C_206E_200F_200F_206D_206A_200B_206C_200E_202B_200D_202D_200F_206A_200E_200B_200E_202C_202D_206D_206D_202E(questStep).GetValueOrDefault() - (int)_202E_206F_202B_202C_202E_206F_200D_206B_202A_202B_206B_206A_206D_200D_202E_202C_200D_206E_200E_200D_206E_202D_206E_200E_200E_206D_206C_200B_200F_200E_202C_206A_206B_200B_200C_206A_206C_206B_202B_202A_202E(_206C_202C_206C_202D_206D_202A_206A_200C_202C_200B_202C_206F_200D_206B_206B_202C_206D_202D_200E_200B_206D_202B_206E_202D_202E_202E_206F_206E_206C_202E_206F_206A_206F_200B_202E_206E_200B_200D_200C_206F_202E(_shop)));
num7 = _200F_202B_202B_206C_200D_200C_200F_206A_206D_206D_202D_206A_202C_202D_206F_206F_202D_206C_202E_202B_206E_202B_200C_206F_206F_200C_200F_200E_206A_206C_206B_200D_200E_206F_206B_202A_202E_202C_206A_202A_202E(_202D_202D_200D_200D_206A_202C_202C_200C_206B_206C_200D_206B_202B_202E_206F_202B_202B_200D_202C_206E_202E_200E_200E_200D_200C_200E_202B_206C_206D_200F_200F_202D_200D_200B_206B_206E_202B_202C_200C_202A_202E(_shop), num8);
num = ((num7 <= 0) ? (-1743708970) : (-1743708965));
break;
}
case 2:
_202E_202A_200F_202E_200F_202E_200C_200D_206B_202D_202B_200E_206F_200C_202E_200D_200E_202E_206C_206D_206E_206C_202A_202A_202A_206F_206B_200F_202D_200B_202A_200B_202E_206C_206A_206E_200D_200F_202B_200D_202E(_shop, (ItemForSale)null);
RestoreExternalPluginState();
return;
case 10:
return;
case 6:
num = -1743708973;
break;
case 0:
questStep = FindCurrentStep();
num = ((questStep == null) ? (-1743708976) : (-1743708971));
break;
case 7:
num = ((_206B_200F_206A_200C_206B_206B_202D_202E_206E_202D_200C_202C_206C_200F_202C_206B_206C_202B_202A_200F_202A_206A_206C_206C_206F_206D_200F_200D_206B_202C_202B_202B_206A_200E_206A_202C_200C_206D_206A_202B_202E(questStep) == EInteractionType.PurchaseItem) ? (-1743708969) : (-1743708976));
break;
case 3:
_202E_200C_206B_202C_200E_202B_200C_206F_202A_206F_200D_206C_202D_202C_200F_206A_202B_200D_200B_202D_206F_206E_200E_206C_206F_206C_202E_206A_206C_202E_206B_206D_206C_206F_202A_200F_206B_206F_200E_202A_202E(_shop);
return;
case 9:
_202B_206A_206D_206D_206E_200E_202B_206E_202C_206D_200D_202A_202C_202D_206F_202C_202D_202D_206D_206E_206E_202A_202B_206F_200B_200E_202E_202E_202B_200B_206E_206A_206F_200E_202B_200C_200B_206C_200B_202E_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>(434015474), new object[2]
{
num7,
_200F_202B_206D_202E_202E_202C_200C_202D_200F_202B_202A_206E_206E_200F_206F_202B_202D_202D_202A_202A_200E_200B_206C_206A_200E_206F_206C_200C_206D_206F_206B_202B_200C_200E_202E_206C_202C_206B_202C_206D_202E(_206C_202C_206C_202D_206D_202A_206A_200C_202C_200B_202C_206F_200D_206B_206B_202C_206D_202D_200E_200B_206D_202B_206E_202D_202E_202E_206F_206E_206C_202E_206F_206A_206F_200B_202E_206E_200B_200D_200C_206F_202E(_shop))
});
_200D_200E_202E_202A_206E_206F_202E_206D_206B_206F_206A_200D_206C_200D_202B_202D_200E_200E_200E_200D_200D_200B_202A_206B_202E_206F_202C_200E_206B_200D_200B_202E_202E_202C_200D_206A_206B_206F_206D_202A_202E(_shop, num7);
_202E_200C_206B_202C_200E_202B_200C_206F_202A_206F_200D_206C_202D_202C_200F_206A_202B_200D_200B_202D_206F_206E_200E_206C_206F_206C_202E_206A_206C_202E_206B_206D_206C_206F_202A_200F_206B_206F_200E_202A_202E(_shop);
return;
}
return;
}
if (_shop.PurchaseState != null)
{
_shop.HandleNextPurchaseStep();
return;
}
QuestStep questStep = FindCurrentStep();
if (questStep == null || questStep.InteractionType != EInteractionType.PurchaseItem)
{
_shop.ItemForSale = null;
RestoreExternalPluginState();
return;
}
int val = Math.Max(0, questStep.ItemCount.GetValueOrDefault() - (int)_shop.ItemForSale.OwnedItems);
int num = Math.Min(_shop.GetMaxItemsToPurchase(), val);
if (num > 0)
{
_logger.LogDebug("Auto-buying {ToPurchase} {ItemName}", num, _shop.ItemForSale.ItemName);
_shop.StartAutoPurchase(num);
_shop.HandleNextPurchaseStep();
}
else
{
_shop.ItemForSale = null;
RestoreExternalPluginState();
}
}
private QuestStep? FindCurrentStep()
{
QuestController.QuestProgress currentQuest = _questController.CurrentQuest;
int num = ((currentQuest != null) ? (-2079361187) : (-2079361188));
object obj;
while (true)
{
int num2 = num;
int num3 = -2079361187;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
default:
continue;
case 2:
goto IL_004d;
case 0:
obj = currentQuest.Quest.FindSequence(currentQuest.Sequence);
break;
case 1:
obj = null;
break;
}
break;
IL_004d:
num = -2079361188;
}
if (obj == null)
{
return null;
}
return _206C_206B_200C_202A_206C_206C_200B_200C_202C_206A_200B_206C_200E_202E_202C_200D_206A_200B_202A_206A_206B_202E_206D_202E_200C_202D_200D_206B_200D_200F_206C_206E_206A_202A_206B_206F_200E_206D_206A_202D_202E((QuestSequence)obj, currentQuest?.Step ?? 0);
return (currentQuest?.Quest.FindSequence(currentQuest.Sequence))?.FindStep(currentQuest?.Step ?? 0);
}
[MethodImpl(MethodImplOptions.NoInlining)]
public unsafe void UpdateShopStock(AtkUnitBase* addon)
{
QuestStep currentStep = FindCurrentStep();
int num = ((currentStep == null) ? 958087197 : 958087193);
uint uInt = default(uint);
AtkValue* atkValues = default(AtkValue*);
while (true)
if (currentStep == null || currentStep.InteractionType != EInteractionType.PurchaseItem)
{
int num2 = num;
int num3 = 958087192;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 4:
_202E_202A_200F_202E_200F_202E_200C_200D_206B_202D_202B_200E_206F_200C_202E_200D_200E_202E_206C_206D_206E_206C_202A_202A_202A_206F_206B_200F_202D_200B_202A_200B_202E_206C_206A_206E_200D_200F_202B_200D_202E(_shop, (ItemForSale)null);
return;
case 6:
return;
case 0:
uInt = atkValues[2].UInt;
num = ((uInt != 0) ? 958087189 : 958087196);
break;
case 7:
num = ((_currentStockSwitchAttempts >= 3) ? 958087198 : 958087195);
break;
case 9:
_lastPurchaseItemId = _206F_202C_200B_202C_200D_206E_202D_200C_200B_200F_202B_202C_200B_206E_206C_206E_202A_206A_200F_206B_200B_200F_202C_202D_206E_200D_200E_200E_206E_206F_206E_206C_202B_202D_206C_200E_206C_200E_200E_202D_202E(currentStep);
_currentStockSwitchAttempts = 0;
num = 958087192;
break;
case 5:
_202E_202A_200F_202E_200F_202E_200C_200D_206B_202D_202B_200E_206F_200C_202E_200D_200E_202E_206C_206D_206E_206C_202A_202A_202A_206F_206B_200F_202D_200B_202A_200B_202E_206C_206A_206E_200D_200F_202B_200D_202E(_shop, (ItemForSale)null);
return;
case 8:
_202A_200C_206E_202D_206D_206D_202C_202E_200B_200E_206C_200F_202A_200B_206F_206E_206E_206C_200F_200D_206E_202A_202E_202D_200B_200B_202E_206F_202D_206D_206A_202B_206E_202D_202A_206A_200C_206B_206E_206D_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>(-662596466), new object[1] { addon->AtkValuesCount });
_202E_202A_200F_202E_200F_202E_200C_200D_206B_202D_202B_200E_206F_200C_202E_200D_200E_202E_206C_206D_206E_206C_202A_202A_202A_206F_206B_200F_202D_200B_202A_200B_202E_206C_206A_206E_200D_200F_202B_200D_202E(_shop, (ItemForSale)null);
return;
case 3:
num = ((_202B_206B_206D_206A_202B_200F_200B_200F_200F_202D_206E_206F_200F_200C_206F_202E_202E_202A_200B_202E_200D_206D_200B_206C_200E_206A_206B_206C_202D_206C_202B_200F_206D_202E_200C_206A_206C_206A_200E_206B_202E() - _lastCurrentStockSwitchMs <= 2000) ? 958087198 : 958087188);
break;
case 14:
_currentStockSwitchAttempts = 0;
return;
case 1:
num = ((_206B_200F_206A_200C_206B_206B_202D_202E_206E_202D_200C_202C_206C_200F_202C_206B_206C_202B_202A_200F_202A_206A_206C_206C_206F_206D_200F_200D_206B_202C_202B_202B_206A_200E_206A_202C_200C_206D_206A_202B_202E(currentStep) == EInteractionType.PurchaseItem) ? 958087186 : 958087197);
break;
case 10:
num = ((addon->AtkValuesCount == 625) ? 958087187 : 958087184);
break;
case 11:
{
atkValues = addon->AtkValues;
uint? num7 = _206F_202C_200B_202C_200D_206E_202D_200C_200B_200F_202B_202C_200B_206E_206C_206E_202A_206A_200F_206B_200B_200F_202C_202D_206E_200D_200E_200E_206E_206F_206E_206C_202B_202D_206C_200E_206C_200E_200E_202D_202E(currentStep);
uint? lastPurchaseItemId = _lastPurchaseItemId;
bool num8 = num7.GetValueOrDefault() == lastPurchaseItemId.GetValueOrDefault();
num3 = ((num7.HasValue == lastPurchaseItemId.HasValue) ? 1 : 0);
num4 = (num8 ? 1 : 0);
num = (((num4 | num3) - (num4 ^ num3) != 0) ? 958087192 : 958087185);
break;
}
case 2:
num = 958087193;
break;
case 13:
_202E_202A_200F_202E_200F_202E_200C_200D_206B_202D_202B_200E_206F_200C_202E_200D_200E_202E_206C_206D_206E_206C_202A_202A_202A_206F_206B_200F_202D_200B_202A_200B_202E_206C_206A_206E_200D_200F_202B_200D_202E(_shop, _206C_202D_206B_206B_200E_206D_206B_200D_202C_200E_206C_206A_202D_206F_206C_200C_206A_206B_200E_200F_200E_206D_202D_206A_206D_206F_202D_200D_202A_202D_202D_202A_206C_200C_202C_206F_200E_202A_202D_206E_202E(0, (int)uInt).Select(delegate(int i)
{
ItemForSale itemForSale = _003C_003Ec__DisplayClass28_0._206D_206A_200F_206C_206E_200F_200E_202E_200B_200B_206F_206C_202D_206B_200E_200C_202E_202B_202A_206B_206A_206A_206F_206D_206A_200D_200C_202D_206F_200F_202D_206D_206C_200E_202D_200E_206F_206B_200E_202E_202E();
_003C_003Ec__DisplayClass28_0._200D_202B_206C_206B_200D_202B_200F_206B_200E_206A_206E_200E_202D_200B_206E_206B_202A_200C_206A_206A_206D_202A_202B_206E_200F_206E_202C_202D_202A_200C_202C_202C_206E_206B_200E_202A_202B_206D_200B_206F_202E(itemForSale, i);
AtkValue* num9 = atkValues;
int num10 = i;
int num11 = 14;
_003C_003Ec__DisplayClass28_0._206F_202E_206F_202E_206A_202C_202C_202B_202E_202C_202D_200D_200B_202B_206B_206F_202D_200E_202D_206F_206A_200E_206A_202D_206E_206D_206E_206A_202A_202D_200F_200C_202D_202C_200D_206C_200C_206D_202A_202E(itemForSale, _003C_003Ec__DisplayClass28_0._200E_200C_202C_200E_200F_202E_202D_200C_200D_200C_200C_202B_200B_202C_200D_206B_206E_202D_200C_206E_200F_202D_206E_200B_202B_206F_200C_200B_200D_206F_202B_206B_202B_206F_200F_200C_206F_200E_206E_202C_202E(num9[(num11 | num10) + (num11 & num10)]));
AtkValue* num12 = atkValues;
num10 = i;
num11 = 75;
_003C_003Ec__DisplayClass28_0._206A_200B_206E_206D_202D_206B_206A_206C_202E_202B_200C_206B_206B_206B_202E_200D_200E_202C_206B_206B_202D_202E_202E_206E_206A_206B_200F_200E_206D_200F_206C_202C_202D_200B_206D_206B_206D_202C_202A_206D_202E(itemForSale, num12[(num11 | num10) + (num11 & num10)].UInt);
_003C_003Ec__DisplayClass28_0._202C_206E_206F_202E_200B_206C_202C_200C_206A_206F_200E_202A_200B_200B_206A_206C_206C_202A_202C_202C_200C_200B_202C_206F_206D_202B_206A_202E_202C_206A_206A_200D_200C_200F_202A_202E_202D_200B_202C_206A_202E(itemForSale, 1u);
AtkValue* num13 = atkValues;
num10 = i;
num11 = 136;
_003C_003Ec__DisplayClass28_0._202D_200D_200E_206A_200F_200F_200D_206E_200C_206C_202E_206D_206F_200C_206A_200B_200F_200B_206D_202D_200F_200E_202E_206B_200C_200F_200C_200F_200D_200B_200D_200E_200C_200F_200D_206F_202D_206C_206B_206B_202E(itemForSale, num13[(num11 | num10) + (num11 & num10)].UInt);
AtkValue* num14 = atkValues;
num10 = i;
num11 = 441;
_003C_003Ec__DisplayClass28_0._200F_202C_202E_202D_206C_206A_200B_200C_200B_202E_202A_200B_202E_200D_202B_202E_200C_202D_206B_202C_202A_206F_206C_202A_200F_200C_202B_206D_202B_200D_206C_202A_200D_206D_200D_206F_202B_206D_200B_202C_202E(itemForSale, num14[(num11 | num10) + (num11 & num10)].UInt);
return itemForSale;
}).FirstOrDefault((ItemForSale x) => _003C_003Ec__DisplayClass28_0._206D_202C_206C_200B_200D_206D_206F_206C_206A_200D_206A_206E_200B_206F_200B_202E_206F_202C_206C_202C_206E_202A_206D_202D_200C_200D_206A_200F_202D_202C_202A_200F_206D_200F_206A_200D_200F_202D_202E_200D_202E(x) == _003C_003Ec__DisplayClass28_0._202D_202B_202E_206A_200F_202C_202A_206F_206E_206B_206D_206E_200C_200F_206A_202D_202B_200F_202B_200F_200B_206C_206E_202B_206F_206E_200E_200B_202B_200D_202C_202A_206E_202D_200D_200B_202C_206D_202D_206A_202E(currentStep)));
num = ((_206C_202C_206C_202D_206D_202A_206A_200C_202C_200B_202C_206F_200D_206B_206B_202C_206D_202D_200E_200B_206D_202B_206E_202D_202E_202E_206F_206E_206C_202E_206F_206A_206F_200B_202E_206E_200B_200D_200C_206F_202E(_shop) == null) ? 958087199 : 958087190);
break;
case 12:
{
int currentStockSwitchAttempts = _currentStockSwitchAttempts;
num3 = 1;
num4 = currentStockSwitchAttempts;
int num5 = num4 ^ num3;
int num6 = num4 & num3;
_currentStockSwitchAttempts = num5 + (num6 + num6);
_lastCurrentStockSwitchMs = _202B_206B_206D_206A_202B_200F_200B_200F_200F_202D_206E_206F_200F_200C_206F_202E_202E_202A_200B_202E_200D_206D_200B_206C_200E_206A_206B_206C_202D_206C_202B_200F_206D_202E_200C_206A_206C_206A_200E_206B_202E();
_200D_200B_200F_206C_200B_202D_202A_202A_206B_200D_202A_206A_206E_206E_206C_200E_206B_202E_200C_202A_202A_202E_206D_206C_206F_206F_206D_200D_206F_200C_200F_206B_200F_200B_206D_200B_200F_200B_202C_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>(773010987), new object[4]
{
uInt,
_206F_202C_200B_202C_200D_206E_202D_200C_200B_200F_202B_202C_200B_206E_206C_206E_202A_206A_200F_206B_200B_200F_202C_202D_206E_200D_200E_200E_206E_206F_206E_206C_202B_202D_206C_200E_206C_200E_200E_202D_202E(currentStep),
_currentStockSwitchAttempts,
3
});
SwitchToCurrentStockTab(addon);
num = 958087198;
break;
}
}
_shop.ItemForSale = null;
return;
}
if (addon->AtkValuesCount != 625)
{
_logger.LogError("Unexpected amount of atkvalues for Shop addon ({AtkValueCount})", addon->AtkValuesCount);
_shop.ItemForSale = null;
return;
}
AtkValue* atkValues = addon->AtkValues;
if (currentStep.ItemId != _lastPurchaseItemId)
{
_lastPurchaseItemId = currentStep.ItemId;
_currentStockSwitchAttempts = 0;
}
uint uInt = atkValues[2].UInt;
if (uInt == 0)
{
_shop.ItemForSale = null;
return;
}
_shop.ItemForSale = (from i in Enumerable.Range(0, (int)uInt)
select new ItemForSale
{
Position = i,
ItemName = atkValues[14 + i].ReadAtkString(),
Price = atkValues[75 + i].UInt,
CurrencyItemId = 1u,
OwnedItems = atkValues[136 + i].UInt,
ItemId = atkValues[441 + i].UInt
}).FirstOrDefault((ItemForSale x) => x.ItemId == currentStep.ItemId);
if (_shop.ItemForSale != null)
{
_currentStockSwitchAttempts = 0;
}
else if (_currentStockSwitchAttempts < 3 && Environment.TickCount64 - _lastCurrentStockSwitchMs > 2000)
{
_currentStockSwitchAttempts++;
_lastCurrentStockSwitchMs = Environment.TickCount64;
_logger.LogWarning("Shop list has {ItemCount} item(s) but not {ItemId}; switching to Current Stock tab ({Attempt}/{Max})", uInt, currentStep.ItemId, _currentStockSwitchAttempts, 3);
SwitchToCurrentStockTab(addon);
}
}
unsafe void IShopWindow.UpdateShopStock(AtkUnitBase* addon)
{
//ILSpy generated this explicit interface implementation from .override directive in UpdateShopStock
this.UpdateShopStock(addon);
}
public unsafe void TriggerPurchase(AtkUnitBase* addonShop, int buyNow)
@ -394,7 +167,7 @@ internal sealed class ShopController : IDisposable, IShopWindow
new AtkValue
{
Type = AtkValueType.Int,
Int = _202A_200F_202A_202D_206E_202A_200E_202A_202A_206E_206B_202C_200F_202C_202D_206A_206C_202E_202C_206A_200D_200B_202B_206E_202A_200E_202A_202D_206F_200C_202B_202A_206F_206C_200F_206A_200B_202A_206D_206C_202E(_206C_202C_206C_202D_206D_202A_206A_200C_202C_200B_202C_206F_200D_206B_206B_202C_206D_202D_200E_200B_206D_202B_206E_202D_202E_202E_206F_206E_206C_202E_206F_206A_206F_200B_202E_206E_200B_200D_200C_206F_202E(_shop))
Int = _shop.ItemForSale.Position
},
new AtkValue
{
@ -410,12 +183,6 @@ internal sealed class ShopController : IDisposable, IShopWindow
addonShop->FireCallback(4u, values);
}
unsafe void IShopWindow.TriggerPurchase(AtkUnitBase* addonShop, int buyNow)
{
//ILSpy generated this explicit interface implementation from .override directive in TriggerPurchase
this.TriggerPurchase(addonShop, buyNow);
}
private unsafe void SwitchToCurrentStockTab(AtkUnitBase* addonShop)
{
AtkValue* values = stackalloc AtkValue[3]
@ -443,177 +210,11 @@ internal sealed class ShopController : IDisposable, IShopWindow
{
}
void IShopWindow.SaveExternalPluginState()
{
//ILSpy generated this explicit interface implementation from .override directive in SaveExternalPluginState
this.SaveExternalPluginState();
}
[MethodImpl(MethodImplOptions.NoInlining)]
public unsafe void RestoreExternalPluginState()
{
AtkUnitBase* addonPtr;
int num = ((!_gameGui.TryGetAddonByName<AtkUnitBase>(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>(831697146), out addonPtr)) ? 2003329777 : 2003329778);
while (true)
if (_gameGui.TryGetAddonByName<AtkUnitBase>("Shop", out var addonPtr))
{
int num2 = num;
int num3 = 2003329776;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
num = 2003329778;
break;
case 2:
addonPtr->FireCallbackInt(-1);
num = 2003329777;
break;
case 1:
return;
}
addonPtr->FireCallbackInt(-1);
}
}
void IShopWindow.RestoreExternalPluginState()
{
//ILSpy generated this explicit interface implementation from .override directive in RestoreExternalPluginState
this.RestoreExternalPluginState();
}
static RegularShopBase _206D_202A_202E_206D_206B_202C_200C_206E_200B_202B_206D_202A_202B_206D_202E_200C_200B_206F_206C_206C_202C_206F_206C_202E_206B_202B_206E_202C_200D_206D_202A_206E_206B_206A_206B_206A_206E_206D_202E(IShopWindow P_0, string P_1, IPluginLog P_2, IGameGui P_3, IAddonLifecycle P_4, IDataManager P_5)
{
return new RegularShopBase(P_0, P_1, P_2, P_3, P_4, P_5);
}
static void _200B_202A_200F_206D_200C_200B_206B_206A_202E_202A_200D_202C_202B_200D_202A_206A_206F_202A_206C_206F_200D_202D_202B_206E_206A_200C_206A_206D_206D_202A_202B_202B_202E_202B_206B_200D_206D_202B_200B_206C_202E(IFramework P_0, IFramework.OnUpdateDelegate P_1)
{
P_0.Update += P_1;
}
static bool _200C_202E_202B_202B_206C_206C_206E_200E_200B_200D_206E_202B_202A_202A_200B_200C_200D_206C_200D_206F_202A_202B_202A_200B_206B_202A_200B_200F_206F_202A_200E_202A_202B_206F_202B_200F_200E_200F_206F_202C_202E(RegularShopBase P_0)
{
return P_0.AutoBuyEnabled;
}
static bool _206F_200B_202D_202B_206C_206B_200E_202B_200D_200E_206D_202D_202C_206D_206C_200F_200C_206F_200B_200E_202D_202D_200E_206E_202D_202C_206C_202D_202A_200F_202E_202D_202E_206F_202E_202D_200D_206B_202A_202A_202E(RegularShopBase P_0)
{
return P_0.IsAwaitingYesNo;
}
static void _202E_200F_206E_206E_202D_200F_202D_202E_206A_206F_202B_206A_200B_202B_202B_206A_200C_206D_202A_206F_206A_202A_206B_200B_202E_202C_202D_202A_206B_200C_206B_200F_206C_200F_202A_202C_200D_206B_206F_206C_202E(RegularShopBase P_0, bool P_1)
{
P_0.IsAwaitingYesNo = P_1;
}
static void _202E_206A_206E_200F_206E_200C_206B_200B_200C_200D_200E_200C_206A_200D_206E_200C_202C_206E_206F_206D_202D_206F_200F_206E_202B_206A_206C_200D_206B_202C_206C_202D_206A_200C_206B_200B_206E_206D_200B_200E_202E(IFramework P_0, IFramework.OnUpdateDelegate P_1)
{
P_0.Update -= P_1;
}
static void _200C_202E_206E_206C_202A_200C_202B_200C_202A_206E_206C_206F_202B_202C_202B_200E_206B_200F_202B_206D_206F_206E_200E_206F_206B_200B_202D_202E_206A_206B_200B_200E_200E_206C_202D_200E_202E_202C_206E_202A_202E(RegularShopBase P_0)
{
P_0.Dispose();
}
static ItemForSale _206C_202C_206C_202D_206D_202A_206A_200C_202C_200B_202C_206F_200D_206B_206B_202C_206D_202D_200E_200B_206D_202B_206E_202D_202E_202E_206F_206E_206C_202E_206F_206A_206F_200B_202E_206E_200B_200D_200C_206F_202E(RegularShopBase P_0)
{
return P_0.ItemForSale;
}
static PurchaseState _202B_200D_200D_206C_200E_200C_202C_206F_206A_206E_206C_202E_202C_200E_206C_206D_202E_206E_206B_202D_202B_200E_206F_202D_206C_202B_206C_206F_206D_202A_202D_200F_200F_202B_202B_202D_206A_200F_200F_202C_202E(RegularShopBase P_0)
{
return P_0.PurchaseState;
}
static void _202E_200C_206B_202C_200E_202B_200C_206F_202A_206F_200D_206C_202D_202C_200F_206A_202B_200D_200B_202D_206F_206E_200E_206C_206F_206C_202E_206A_206C_202E_206B_206D_206C_206F_202A_200F_206B_206F_200E_202A_202E(RegularShopBase P_0)
{
P_0.HandleNextPurchaseStep();
}
static EInteractionType _206B_200F_206A_200C_206B_206B_202D_202E_206E_202D_200C_202C_206C_200F_202C_206B_206C_202B_202A_200F_202A_206A_206C_206C_206F_206D_200F_200D_206B_202C_202B_202B_206A_200E_206A_202C_200C_206D_206A_202B_202E(QuestStep P_0)
{
return P_0.InteractionType;
}
static void _202E_202A_200F_202E_200F_202E_200C_200D_206B_202D_202B_200E_206F_200C_202E_200D_200E_202E_206C_206D_206E_206C_202A_202A_202A_206F_206B_200F_202D_200B_202A_200B_202E_206C_206A_206E_200D_200F_202B_200D_202E(RegularShopBase P_0, ItemForSale P_1)
{
P_0.ItemForSale = P_1;
}
static int? _206C_202A_206F_200F_200B_200F_206F_200B_200B_206B_200B_202E_202B_200B_200F_200B_202A_206C_206B_202C_206E_200F_200F_206D_206A_200B_206C_200E_202B_200D_202D_200F_206A_200E_200B_200E_202C_202D_206D_206D_202E(QuestStep P_0)
{
return P_0.ItemCount;
}
static uint _202E_206F_202B_202C_202E_206F_200D_206B_202A_202B_206B_206A_206D_200D_202E_202C_200D_206E_200E_200D_206E_202D_206E_200E_200E_206D_206C_200B_200F_200E_202C_206A_206B_200B_200C_206A_206C_206B_202B_202A_202E(ItemForSale P_0)
{
return P_0.OwnedItems;
}
static int _200E_206D_206B_202D_200C_206A_200E_206D_200B_202D_202E_206A_206B_206E_206D_200E_200C_202A_200F_202E_202C_206A_200F_206A_200C_200E_206A_206D_200E_200D_202E_206F_206F_202A_200B_202D_206D_200C_206C_200E_202E(int P_0, int P_1)
{
return Math.Max(P_0, P_1);
}
static int _202D_202D_200D_200D_206A_202C_202C_200C_206B_206C_200D_206B_202B_202E_206F_202B_202B_200D_202C_206E_202E_200E_200E_200D_200C_200E_202B_206C_206D_200F_200F_202D_200D_200B_206B_206E_202B_202C_200C_202A_202E(RegularShopBase P_0)
{
return P_0.GetMaxItemsToPurchase();
}
static int _200F_202B_202B_206C_200D_200C_200F_206A_206D_206D_202D_206A_202C_202D_206F_206F_202D_206C_202E_202B_206E_202B_200C_206F_206F_200C_200F_200E_206A_206C_206B_200D_200E_206F_206B_202A_202E_202C_206A_202A_202E(int P_0, int P_1)
{
return Math.Min(P_0, P_1);
}
static string _200F_202B_206D_202E_202E_202C_200C_202D_200F_202B_202A_206E_206E_200F_206F_202B_202D_202D_202A_202A_200E_200B_206C_206A_200E_206F_206C_200C_206D_206F_206B_202B_200C_200E_202E_206C_202C_206B_202C_206D_202E(ItemForSale P_0)
{
return P_0.ItemName;
}
static void _202B_206A_206D_206D_206E_200E_202B_206E_202C_206D_200D_202A_202C_202D_206F_202C_202D_202D_206D_206E_206E_202A_202B_206F_200B_200E_202E_202E_202B_200B_206E_206A_206F_200E_202B_200C_200B_206C_200B_202E_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static void _200D_200E_202E_202A_206E_206F_202E_206D_206B_206F_206A_200D_206C_200D_202B_202D_200E_200E_200E_200D_200D_200B_202A_206B_202E_206F_202C_200E_206B_200D_200B_202E_202E_202C_200D_206A_206B_206F_206D_202A_202E(RegularShopBase P_0, int P_1)
{
P_0.StartAutoPurchase(P_1);
}
static QuestStep _206C_206B_200C_202A_206C_206C_200B_200C_202C_206A_200B_206C_200E_202E_202C_200D_206A_200B_202A_206A_206B_202E_206D_202E_200C_202D_200D_206B_200D_200F_206C_206E_206A_202A_206B_206F_200E_206D_206A_202D_202E(QuestSequence P_0, int P_1)
{
return P_0.FindStep(P_1);
}
static void _202A_200C_206E_202D_206D_206D_202C_202E_200B_200E_206C_200F_202A_200B_206F_206E_206E_206C_200F_200D_206E_202A_202E_202D_200B_200B_202E_206F_202D_206D_206A_202B_206E_202D_202A_206A_200C_206B_206E_206D_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogError(P_1, P_2);
}
static uint? _206F_202C_200B_202C_200D_206E_202D_200C_200B_200F_202B_202C_200B_206E_206C_206E_202A_206A_200F_206B_200B_200F_202C_202D_206E_200D_200E_200E_206E_206F_206E_206C_202B_202D_206C_200E_206C_200E_200E_202D_202E(QuestStep P_0)
{
return P_0.ItemId;
}
static IEnumerable<int> _206C_202D_206B_206B_200E_206D_206B_200D_202C_200E_206C_206A_202D_206F_206C_200C_206A_206B_200E_200F_200E_206D_202D_206A_206D_206F_202D_200D_202A_202D_202D_202A_206C_200C_202C_206F_200E_202A_202D_206E_202E(int P_0, int P_1)
{
return Enumerable.Range(P_0, P_1);
}
static long _202B_206B_206D_206A_202B_200F_200B_200F_200F_202D_206E_206F_200F_200C_206F_202E_202E_202A_200B_202E_200D_206D_200B_206C_200E_206A_206B_206C_202D_206C_202B_200F_206D_202E_200C_206A_206C_206A_200E_206B_202E()
{
return Environment.TickCount64;
}
static void _200D_200B_200F_206C_200B_202D_202A_202A_206B_200D_202A_206A_206E_206E_206C_200E_206B_202E_200C_202A_202A_202E_206D_206C_206F_206F_206D_200D_206F_200C_200F_206B_200F_200B_206D_200B_200F_200B_202C_200E_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogWarning(P_1, P_2);
}
static int _202A_200F_202A_202D_206E_202A_200E_202A_202A_206E_206B_202C_200F_202C_202D_206A_206C_202E_202C_206A_200D_200B_202B_206E_202A_200E_202A_202D_206F_200C_202B_202A_206F_206C_200F_206A_200B_202A_206D_206C_202E(ItemForSale P_0)
{
return P_0.Position;
}
}