forked from aly/qstbak
muffin v7.5.6
This commit is contained in:
parent
6266f9e6b7
commit
addf2d530f
619 changed files with 264792 additions and 446022 deletions
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using Dalamud.Hooking;
|
||||
using Dalamud.Plugin.Services;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game.Event;
|
||||
|
|
@ -19,6 +20,7 @@ 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;
|
||||
|
|
@ -26,38 +28,90 @@ internal sealed class AutoSnipeHandler : IDisposable
|
|||
_logger = logger;
|
||||
try
|
||||
{
|
||||
_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 = 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.Enable();
|
||||
_logger.LogInformation("AutoSnipeHandler enabled");
|
||||
_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>());
|
||||
}
|
||||
catch (Exception exception)
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(exception, "Failed to initialize AutoSnipeHandler");
|
||||
_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>());
|
||||
_enqueueSnipeTaskHook = null;
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe ulong EnqueueSnipeTask(EventSceneModuleImplBase* scene, lua_State* state)
|
||||
{
|
||||
if (_configuration.General.AutoSnipe && _questController.IsRunning)
|
||||
int num = ((!_configuration.General.AutoSnipe) ? 905347558 : 905347556);
|
||||
while (true)
|
||||
{
|
||||
_logger.LogDebug("Auto-completing snipe task");
|
||||
TValue* top = state->top;
|
||||
top->tt = 3;
|
||||
top->value.n = 1.0;
|
||||
state->top++;
|
||||
return 1uL;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
return _enqueueSnipeTaskHook.Original(scene, state);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public void Dispose()
|
||||
{
|
||||
if (_enqueueSnipeTaskHook != null)
|
||||
int num = ((_enqueueSnipeTaskHook == null) ? 1906347675 : 1906347672);
|
||||
while (true)
|
||||
{
|
||||
_enqueueSnipeTaskHook.Disable();
|
||||
_enqueueSnipeTaskHook.Dispose();
|
||||
_logger.LogInformation("AutoSnipeHandler disabled");
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
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;
|
||||
|
|
@ -16,9 +18,9 @@ internal sealed class ChocoboNameHandler : IDisposable
|
|||
{
|
||||
private static readonly HashSet<ElementId> ChocoboQuestIds = new HashSet<ElementId>
|
||||
{
|
||||
new QuestId(700),
|
||||
new QuestId(701),
|
||||
new QuestId(702)
|
||||
_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)
|
||||
};
|
||||
|
||||
private readonly QuestController _questController;
|
||||
|
|
@ -31,108 +33,328 @@ 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;
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "InputString", OnInputStringSetup);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectYesno", OnSelectYesNoSetup);
|
||||
_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);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public void Dispose()
|
||||
{
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "SelectYesno", OnSelectYesNoSetup);
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "InputString", OnInputStringSetup);
|
||||
_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();
|
||||
}
|
||||
|
||||
private bool IsChocoboQuestActive()
|
||||
{
|
||||
QuestController.QuestProgress currentQuest = _questController.CurrentQuest;
|
||||
if (currentQuest != null)
|
||||
int num = ((currentQuest == null) ? (-1870798202) : (-1870798201));
|
||||
while (true)
|
||||
{
|
||||
return ChocoboQuestIds.Contains(currentQuest.Quest.Id);
|
||||
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 false;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe void OnInputStringSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
if (_questController.IsRunning && IsChocoboQuestActive())
|
||||
int num = (_questController.IsRunning ? 1822557266 : 1822557269);
|
||||
AtkUnitBase* address = default(AtkUnitBase*);
|
||||
while (true)
|
||||
{
|
||||
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
||||
if (LAddon.IsAddonReady(address))
|
||||
int num2 = num;
|
||||
int num3 = 1822557265;
|
||||
int num4 = num2;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
case 5:
|
||||
{
|
||||
string validatedChocoboName = GetValidatedChocoboName(_configuration.Advanced.ChocoboName);
|
||||
_logger.LogInformation("Entering chocobo name: {Name}", validatedChocoboName);
|
||||
_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 });
|
||||
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)
|
||||
{
|
||||
if (_questController.IsRunning && _awaitingConfirmation)
|
||||
int num = (_questController.IsRunning ? (-693008591) : (-693008586));
|
||||
AtkUnitBase* address = default(AtkUnitBase*);
|
||||
while (true)
|
||||
{
|
||||
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
||||
if (LAddon.IsAddonReady(address))
|
||||
int num2 = num;
|
||||
int num3 = -693008590;
|
||||
int num4 = num2;
|
||||
int num5 = num4 + num3;
|
||||
int num6 = num4 & num3;
|
||||
switch (num5 - (num6 + num6))
|
||||
{
|
||||
_logger.LogInformation("Confirming chocobo name");
|
||||
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>());
|
||||
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)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(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)
|
||||
{
|
||||
return "Kweh";
|
||||
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;
|
||||
}
|
||||
}
|
||||
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);
|
||||
if (componentNodeById == null)
|
||||
int num = ((componentNodeById != null) ? 1161429663 : 1161429658);
|
||||
AtkComponentTextInput* asAtkComponentTextInput = default(AtkComponentTextInput*);
|
||||
while (true)
|
||||
{
|
||||
_logger.LogWarning("Could not find text input node in InputString addon");
|
||||
return;
|
||||
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;
|
||||
}
|
||||
}
|
||||
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 = AtkValueType.Int;
|
||||
ptr->Type = FFXIVClientStructs.FFXIV.Component.GUI.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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +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.Client.UI;
|
||||
using FFXIVClientStructs.FFXIV.Component.GUI;
|
||||
|
|
@ -24,6 +27,7 @@ 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;
|
||||
|
|
@ -31,125 +35,273 @@ internal sealed class CraftworksSupplyController : IDisposable
|
|||
_gameGui = gameGui;
|
||||
_framework = framework;
|
||||
_logger = logger;
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostReceiveEvent, "ContextIconMenu", ContextIconMenuPostReceiveEvent);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, "BankaCraftworksSupply", BankaCraftworksSupplyPostUpdate);
|
||||
_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);
|
||||
}
|
||||
|
||||
private unsafe void BankaCraftworksSupplyPostUpdate(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
if (ShouldHandleUiInteractions)
|
||||
int num = (ShouldHandleUiInteractions ? (-1071885415) : (-1071885414));
|
||||
while (true)
|
||||
{
|
||||
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
||||
InteractWithBankaCraftworksSupply(address);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe void InteractWithBankaCraftworksSupply()
|
||||
{
|
||||
if (_gameGui.TryGetAddonByName<AtkUnitBase>("BankaCraftworksSupply", out var addonPtr))
|
||||
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)
|
||||
{
|
||||
InteractWithBankaCraftworksSupply(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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe void InteractWithBankaCraftworksSupply(AtkUnitBase* addon)
|
||||
{
|
||||
AtkValue* atkValues = addon->AtkValues;
|
||||
uint uInt = atkValues[7].UInt;
|
||||
uint num = 6 - uInt;
|
||||
for (int i = 0; i < num; i++)
|
||||
int num = (int)uInt;
|
||||
int num2 = 6;
|
||||
uint num3 = (uint)(~(~num2 + num));
|
||||
int num4 = 0;
|
||||
int num5 = 571288913;
|
||||
while (true)
|
||||
{
|
||||
if (atkValues[31 + i].UInt == 0)
|
||||
int num6 = num5;
|
||||
num = 571288917;
|
||||
num2 = num6;
|
||||
int num7 = num2 + num;
|
||||
int num8 = num2 & num;
|
||||
switch (num7 - (num8 + num8))
|
||||
{
|
||||
_logger.LogInformation("Selecting an item for slot {Slot}", i);
|
||||
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 });
|
||||
AtkValue* values = stackalloc AtkValue[2]
|
||||
{
|
||||
new AtkValue
|
||||
{
|
||||
Type = AtkValueType.Int,
|
||||
Type = FFXIVClientStructs.FFXIV.Component.GUI.AtkValueType.Int,
|
||||
Int = 2
|
||||
},
|
||||
new AtkValue
|
||||
{
|
||||
Type = AtkValueType.Int,
|
||||
Int = i
|
||||
Type = FFXIVClientStructs.FFXIV.Component.GUI.AtkValueType.Int,
|
||||
Int = num4
|
||||
}
|
||||
};
|
||||
addon->FireCallback(2u, values);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (atkValues[31].UInt != 0)
|
||||
{
|
||||
_logger.LogInformation("Confirming turn-in");
|
||||
addon->FireCallbackInt(0);
|
||||
}
|
||||
}
|
||||
|
||||
private unsafe void ContextIconMenuPostReceiveEvent(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
if (!ShouldHandleUiInteractions)
|
||||
{
|
||||
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.LogInformation("Picking item for {AddonName}", addonById->NameString);
|
||||
AtkValue* values = stackalloc AtkValue[5]
|
||||
case 4:
|
||||
num5 = ((num4 < num3) ? 571288915 : 571288917);
|
||||
break;
|
||||
case 0:
|
||||
num5 = ((atkValues[31].UInt == 0) ? 571288916 : 571288914);
|
||||
break;
|
||||
case 6:
|
||||
{
|
||||
new AtkValue
|
||||
{
|
||||
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));
|
||||
num = num4;
|
||||
num2 = 31;
|
||||
int num9 = num2 ^ num;
|
||||
int num10 = num2 & num;
|
||||
num5 = ((atkValues[num9 + (num10 + num10)].UInt != 0) ? 571288919 : 571288912);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
|
||||
[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)
|
||||
{
|
||||
_logger.LogTrace("Ignoring contextmenu event for {AddonName}", addonById->NameString);
|
||||
int num2 = num;
|
||||
int num3 = 127250475;
|
||||
int num4 = num2;
|
||||
int num5 = num4 + num3;
|
||||
int num6 = num4 & num3;
|
||||
switch (num5 - (num6 + num6))
|
||||
{
|
||||
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
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public void Dispose()
|
||||
{
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostSetup, "BankaCraftworksSupply", BankaCraftworksSupplyPostUpdate);
|
||||
_addonLifecycle.UnregisterListener(AddonEvent.PostReceiveEvent, "ContextIconMenu", ContextIconMenuPostReceiveEvent);
|
||||
_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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,11 @@
|
|||
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;
|
||||
|
|
@ -9,6 +14,84 @@ 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;
|
||||
|
|
@ -28,11 +111,11 @@ internal sealed class CreditsController : IDisposable
|
|||
_instance?.CreditPlayerPostSetup(t, a);
|
||||
};
|
||||
|
||||
private static readonly string[] CreditScrollArray = new string[1] { "CreditScroll" };
|
||||
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[] CreditArray = new string[1] { "Credit" };
|
||||
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[] CreditPlayerArray = new string[1] { "CreditPlayer" };
|
||||
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 bool _deferDisposeUntilCutsceneEnds;
|
||||
|
||||
|
|
@ -42,211 +125,574 @@ internal sealed class CreditsController : IDisposable
|
|||
|
||||
private static int _maxConsecutiveSkips = 5;
|
||||
|
||||
private static DateTime _lastHandledAt = DateTime.MinValue;
|
||||
private static long? _lastHandledAt;
|
||||
|
||||
private static readonly TimeSpan _reentrancySuppress = TimeSpan.FromMilliseconds(500L);
|
||||
private const long ReentrancySuppressMs = 500L;
|
||||
|
||||
private static long _lastHandledAddr;
|
||||
|
||||
private static readonly TimeSpan _consecutiveResetWindow = TimeSpan.FromSeconds(10L);
|
||||
private const long ConsecutiveResetWindowMs = 10000L;
|
||||
|
||||
private readonly IAddonLifecycle _addonLifecycle;
|
||||
|
||||
private readonly Configuration _configuration;
|
||||
|
||||
private readonly ICondition _condition;
|
||||
|
||||
private readonly ILogger<CreditsController> _logger;
|
||||
|
||||
private static readonly object _lock = new object();
|
||||
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();
|
||||
|
||||
public CreditsController(IAddonLifecycle addonLifecycle, Configuration configuration, ILogger<CreditsController> logger)
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public CreditsController(IAddonLifecycle addonLifecycle, Configuration configuration, ICondition condition, ILogger<CreditsController> logger)
|
||||
{
|
||||
_addonLifecycle = addonLifecycle;
|
||||
_configuration = configuration;
|
||||
_condition = condition;
|
||||
_logger = logger;
|
||||
lock (_lock)
|
||||
object obj = _lock;
|
||||
bool flag = false;
|
||||
try
|
||||
{
|
||||
_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;
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, CreditScrollArray, _creditScrollHandler);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, CreditArray, _creditHandler);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, CreditPlayerArray, _creditPlayerHandler);
|
||||
_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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnConditionChange(ConditionFlag flag, bool value)
|
||||
{
|
||||
int num = ((flag == ConditionFlag.OccupiedInCutSceneEvent) ? 186472363 : 186472362);
|
||||
bool flag2 = default(bool);
|
||||
while (true)
|
||||
{
|
||||
int num2 = num;
|
||||
int num3 = 186472361;
|
||||
int num4 = num2;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private unsafe void CreditScrollPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
HandleCutscene(delegate
|
||||
HandleCutscene([MethodImpl(MethodImplOptions.NoInlining)] () =>
|
||||
{
|
||||
_logger.LogInformation("CreditScrollPostSetup: attempting to close credits sequence (scroll).");
|
||||
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
||||
_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;
|
||||
address->FireCallbackInt(-2);
|
||||
}, args);
|
||||
}
|
||||
|
||||
private unsafe void CreditPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
HandleCutscene(delegate
|
||||
HandleCutscene([MethodImpl(MethodImplOptions.NoInlining)] () =>
|
||||
{
|
||||
_logger.LogInformation("CreditPostSetup: attempting to close credits sequence.");
|
||||
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
||||
_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;
|
||||
address->FireCallbackInt(-2);
|
||||
}, args);
|
||||
}
|
||||
|
||||
private unsafe void CreditPlayerPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
HandleCutscene(delegate
|
||||
HandleCutscene([MethodImpl(MethodImplOptions.NoInlining)] () =>
|
||||
{
|
||||
_logger.LogInformation("CreditPlayerPostSetup: attempting to close CreditPlayer.");
|
||||
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
||||
_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;
|
||||
address->Close(fireCallback: true);
|
||||
}, args);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private void HandleCutscene(Action nativeAction, AddonArgs args)
|
||||
{
|
||||
if (_configuration.General.CinemaMode)
|
||||
int num = ((!_configuration.General.CinemaMode) ? 1928788595 : 1928788597);
|
||||
long valueOrDefault = default(long);
|
||||
long num8 = default(long);
|
||||
while (true)
|
||||
{
|
||||
_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.LogInformation("HandleCutscene: Addon address is zero, skipping.");
|
||||
return;
|
||||
}
|
||||
lock (_lock)
|
||||
{
|
||||
if (_lastHandledAt != DateTime.MinValue && DateTime.Now - _lastHandledAt > _consecutiveResetWindow)
|
||||
int num2 = num;
|
||||
int num3 = 1928788595;
|
||||
int num4 = num2;
|
||||
long num10;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
if (_handledConsecutiveCutscenes != 0)
|
||||
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:
|
||||
{
|
||||
_logger.LogDebug("HandleCutscene: long pause detected ({Elapsed}), resetting consecutive counter (was {Was}).", DateTime.Now - _lastHandledAt, _handledConsecutiveCutscenes);
|
||||
object obj = _lock;
|
||||
bool flag = false;
|
||||
try
|
||||
{
|
||||
_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;
|
||||
}
|
||||
}
|
||||
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 });
|
||||
return;
|
||||
}
|
||||
_handledConsecutiveCutscenes = 0;
|
||||
}
|
||||
if (DateTime.Now - _lastHandledAt < _reentrancySuppress && num == _lastHandledAddr)
|
||||
{
|
||||
_logger.LogDebug("HandleCutscene: suppressed re-entrant invocation for same addon (addr=0x{Address:X}).", num);
|
||||
return;
|
||||
}
|
||||
if (_handledConsecutiveCutscenes >= _maxConsecutiveSkips)
|
||||
{
|
||||
_logger.LogInformation("HandleCutscene: reached max consecutive skips ({MaxSkips}), unregistering listeners.", _maxConsecutiveSkips);
|
||||
TryUnregisterAndClear();
|
||||
return;
|
||||
}
|
||||
_lastHandledAt = DateTime.Now;
|
||||
_lastHandledAddr = num;
|
||||
_handledConsecutiveCutscenes++;
|
||||
_logger.LogDebug("HandleCutscene: handling cutscene #{Count} (addr=0x{Address:X}).", _handledConsecutiveCutscenes, num);
|
||||
}
|
||||
try
|
||||
{
|
||||
nativeAction();
|
||||
_logger.LogInformation("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);
|
||||
}
|
||||
lock (_lock)
|
||||
{
|
||||
if (_handledConsecutiveCutscenes >= _maxConsecutiveSkips && !_deferDisposeUntilCutsceneEnds)
|
||||
{
|
||||
_logger.LogDebug("HandleCutscene: max handled reached and no defer active, unregistering now.");
|
||||
TryUnregisterAndClear();
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.LogDebug("HandleCutscene: leaving listeners registered (handled {Count}/{Max}).", _handledConsecutiveCutscenes, _maxConsecutiveSkips);
|
||||
IL_0077:
|
||||
num8 = num10;
|
||||
num = ((num8 != 0L) ? 1928788594 : 1928788593);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void TryUnregisterAndClear()
|
||||
{
|
||||
if (_registeredLifecycle != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditPlayerArray, _creditPlayerHandler);
|
||||
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditArray, _creditHandler);
|
||||
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditScrollArray, _creditScrollHandler);
|
||||
_logger.LogDebug("TryUnregisterAndClear: listeners unregistered successfully.");
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
_logger.LogError(exception, "TryUnregisterAndClear: exception while unregistering listeners.");
|
||||
}
|
||||
}
|
||||
_registeredLifecycle = null;
|
||||
_instance = null;
|
||||
_handledConsecutiveCutscenes = 0;
|
||||
_lastHandledAddr = 0L;
|
||||
_lastHandledAt = DateTime.MinValue;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public static void DeferDisposeUntilCutsceneEnds()
|
||||
{
|
||||
lock (_lock)
|
||||
object obj = _lock;
|
||||
bool flag = false;
|
||||
try
|
||||
{
|
||||
_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;
|
||||
if (_instance != null)
|
||||
int num = ((_instance == null) ? 1593867446 : 1593867445);
|
||||
while (true)
|
||||
{
|
||||
_instance._logger.LogDebug("CreditsController: deferring dispose until cutscene ends.");
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public static void NotifyCutsceneEnded()
|
||||
{
|
||||
lock (_lock)
|
||||
object obj = _lock;
|
||||
bool flag = false;
|
||||
try
|
||||
{
|
||||
_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;
|
||||
if (_instance != null)
|
||||
int num = ((_instance == null) ? 1205296441 : 1205296446);
|
||||
while (true)
|
||||
{
|
||||
_instance._logger.LogDebug("CreditsController: cutscene ended, processing pending dispose state.");
|
||||
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;
|
||||
}
|
||||
}
|
||||
if (_pendingDispose && _instance != null)
|
||||
}
|
||||
finally
|
||||
{
|
||||
int num = ((!flag) ? (-15651437) : (-15651440));
|
||||
while (true)
|
||||
{
|
||||
_instance._logger.LogDebug("CreditsController: pending dispose detected, performing unregister now.");
|
||||
_instance.Dispose();
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public void Dispose()
|
||||
{
|
||||
lock (_lock)
|
||||
object obj = _lock;
|
||||
bool flag = false;
|
||||
try
|
||||
{
|
||||
if (_instance != this)
|
||||
_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)
|
||||
{
|
||||
return;
|
||||
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;
|
||||
}
|
||||
}
|
||||
if (_deferDisposeUntilCutsceneEnds)
|
||||
}
|
||||
finally
|
||||
{
|
||||
int num = ((!flag) ? 1603499567 : 1603499564);
|
||||
while (true)
|
||||
{
|
||||
_pendingDispose = true;
|
||||
_logger.LogInformation("CreditsController.Dispose deferred until cutscene end.");
|
||||
return;
|
||||
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;
|
||||
}
|
||||
if (_registeredLifecycle != null)
|
||||
{
|
||||
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditPlayerArray, _creditPlayerHandler);
|
||||
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditArray, _creditHandler);
|
||||
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditScrollArray, _creditScrollHandler);
|
||||
}
|
||||
_registeredLifecycle = null;
|
||||
_instance = null;
|
||||
_pendingDispose = false;
|
||||
_handledConsecutiveCutscenes = 0;
|
||||
_lastHandledAddr = 0L;
|
||||
_lastHandledAt = DateTime.MinValue;
|
||||
_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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using Dalamud.Game.ClientState.Objects.SubKinds;
|
||||
using Dalamud.Plugin.Services;
|
||||
using LLib.Shop;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
|
@ -29,7 +31,7 @@ internal sealed class GCShopHandler : IDisposable
|
|||
|
||||
private GCPurchaseInfo? _currentPurchase;
|
||||
|
||||
private DateTime _lastActionTime = DateTime.MinValue;
|
||||
private long _lastActionMs;
|
||||
|
||||
private bool _purchaseCompletedThisStep;
|
||||
|
||||
|
|
@ -42,111 +44,371 @@ internal sealed class GCShopHandler : IDisposable
|
|||
_objectTable = objectTable;
|
||||
_framework = framework;
|
||||
_logger = logger;
|
||||
_gcShop.PurchaseCompleted += OnPurchaseCompleted;
|
||||
_framework.Update += OnFrameworkUpdate;
|
||||
_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);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_framework.Update -= OnFrameworkUpdate;
|
||||
_gcShop.PurchaseCompleted -= OnPurchaseCompleted;
|
||||
_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);
|
||||
}
|
||||
|
||||
void IDisposable.Dispose()
|
||||
{
|
||||
//ILSpy generated this explicit interface implementation from .override directive in Dispose
|
||||
this.Dispose();
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private void OnFrameworkUpdate(IFramework framework)
|
||||
{
|
||||
if (_objectTable.LocalPlayer == null)
|
||||
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)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!_questController.IsRunning)
|
||||
{
|
||||
if (_state != GCShopState.Inactive)
|
||||
int num2 = num;
|
||||
int num3 = -1672254240;
|
||||
int num4 = num2;
|
||||
int num5 = num4 + num3;
|
||||
int num6 = num4 & num3;
|
||||
switch (num5 - (num6 + num6))
|
||||
{
|
||||
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.LogInformation("GC shop purchase completed!");
|
||||
_state = GCShopState.Inactive;
|
||||
_lastActionTime = DateTime.MinValue;
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private void CheckForGCPurchase()
|
||||
{
|
||||
QuestController.QuestProgress currentQuest = _questController.CurrentQuest;
|
||||
if (currentQuest == null)
|
||||
int num = ((currentQuest != null) ? (-837261037) : (-837261044));
|
||||
GCPurchaseInfo gCPurchaseInfo = default(GCPurchaseInfo);
|
||||
while (true)
|
||||
{
|
||||
if (_currentPurchase != null)
|
||||
{
|
||||
Reset();
|
||||
}
|
||||
return;
|
||||
}
|
||||
GCPurchaseInfo gCPurchaseInfo = (currentQuest.Quest.FindSequence(currentQuest.Sequence)?.FindStep(currentQuest.Step))?.GCPurchase;
|
||||
if (gCPurchaseInfo == null)
|
||||
{
|
||||
if (_currentPurchase != null)
|
||||
{
|
||||
_currentPurchase = null;
|
||||
_purchaseCompletedThisStep = false;
|
||||
}
|
||||
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)
|
||||
int num2 = num;
|
||||
int num3 = -837261053;
|
||||
int num4 = num2;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
case 13:
|
||||
_currentPurchase = gCPurchaseInfo;
|
||||
_purchaseCompletedThisStep = false;
|
||||
}
|
||||
if (_gcShop.IsOpen && _state == GCShopState.Inactive && !_purchaseCompletedThisStep)
|
||||
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:
|
||||
_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:
|
||||
{
|
||||
_logger.LogInformation("GC shop is open. Starting purchase of item {ItemId}.", gCPurchaseInfo.ItemId);
|
||||
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) });
|
||||
_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()
|
||||
{
|
||||
if (_gcShop.IsOpen && _currentPurchase != null && !((DateTime.Now - _lastActionTime).TotalMilliseconds < 500.0))
|
||||
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.IsPurchaseInProgress)
|
||||
int num2 = num;
|
||||
int num3 = 252931587;
|
||||
int num4 = num2;
|
||||
int num5 = num4 + num3;
|
||||
int num6 = num4 & num3;
|
||||
switch (num5 - (num6 + num6))
|
||||
{
|
||||
_gcShop.StartPurchase(_currentPurchase.ItemId, _currentPurchase.RankTab, _currentPurchase.CategoryTab);
|
||||
_lastActionTime = DateTime.Now;
|
||||
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.ProcessPurchase();
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private void OnPurchaseCompleted(object? sender, PurchaseCompletedEventArgs e)
|
||||
{
|
||||
if (_state == GCShopState.Purchasing && _currentPurchase != null && _questController.IsRunning && e.Success && e.ItemId == _currentPurchase.ItemId)
|
||||
int num = ((_state != GCShopState.Purchasing) ? 191751636 : 191751642);
|
||||
while (true)
|
||||
{
|
||||
_logger.LogInformation("GC purchase of item {ItemId} completed successfully", e.ItemId);
|
||||
_gcShop.CloseShop();
|
||||
_purchaseCompletedThisStep = true;
|
||||
_state = GCShopState.Completed;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Reset()
|
||||
{
|
||||
_state = GCShopState.Inactive;
|
||||
_currentPurchase = null;
|
||||
_lastActionTime = DateTime.MinValue;
|
||||
_purchaseCompletedThisStep = false;
|
||||
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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,15 @@
|
|||
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;
|
||||
|
||||
|
|
@ -20,6 +25,7 @@ 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;
|
||||
|
|
@ -28,145 +34,419 @@ internal sealed class HelpUiController : IDisposable
|
|||
_framework = framework;
|
||||
_logger = logger;
|
||||
_questController.AutomationTypeChanged += CloseHelpWindowsWhenStartingQuests;
|
||||
_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);
|
||||
_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);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe void CloseHelpWindowsWhenStartingQuests(object sender, QuestController.EAutomationType e)
|
||||
{
|
||||
if (e != QuestController.EAutomationType.Manual)
|
||||
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 (_gameGui.TryGetAddonByName<AtkUnitBase>("Guide", out var addonPtr))
|
||||
int num2 = num;
|
||||
int num3 = 153660420;
|
||||
int num4 = num2;
|
||||
int num5 = num4 + num3;
|
||||
int num6 = num4 & num3;
|
||||
switch (num5 - (num6 + num6))
|
||||
{
|
||||
_logger.LogInformation("Guide window is open");
|
||||
GuidePostSetup(addonPtr);
|
||||
}
|
||||
if (_gameGui.TryGetAddonByName<AtkUnitBase>("EventTutorial", out var addonPtr2))
|
||||
{
|
||||
_logger.LogInformation("EventTutorial window is open");
|
||||
EventTutorialPostSetup(addonPtr2);
|
||||
}
|
||||
if (_gameGui.TryGetAddonByName<AtkUnitBase>("ContentsTutorial", out var addonPtr3))
|
||||
{
|
||||
_logger.LogInformation("ContentsTutorial window is open");
|
||||
ContentsTutorialPostSetup(addonPtr3);
|
||||
}
|
||||
if (_gameGui.TryGetAddonByName<AtkUnitBase>("JobHudNotice", out var addonPtr4))
|
||||
{
|
||||
_logger.LogInformation("JobHudNotice window is open");
|
||||
JobHudNoticePostSetup(addonPtr4);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe void UnendingCodexPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
if (_questController.StartedQuest?.Quest.Id.Value == 4526)
|
||||
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)
|
||||
{
|
||||
_logger.LogInformation("Closing Unending Codex");
|
||||
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
||||
address->FireCallbackInt(-2);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private unsafe void ContentsTutorialPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
bool flag;
|
||||
switch (_questController.StartedQuest?.Quest.Id.Value)
|
||||
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)
|
||||
{
|
||||
case 245:
|
||||
case 3872:
|
||||
case 5253:
|
||||
flag = true;
|
||||
break;
|
||||
default:
|
||||
flag = false;
|
||||
break;
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
ContentsTutorialPostSetup((AtkUnitBase*)args.Addon.Address);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe void ContentsTutorialPostSetup(AtkUnitBase* addon)
|
||||
{
|
||||
_logger.LogInformation("Closing ContentsTutorial");
|
||||
_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>());
|
||||
addon->FireCallbackInt(13);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe void MultipleHelpWindowPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
if (_questController.StartedQuest?.Quest.Id.Value == 245)
|
||||
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)
|
||||
{
|
||||
_logger.LogInformation("Closing MultipleHelpWindow");
|
||||
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
||||
address->FireCallbackInt(-2);
|
||||
address->FireCallbackInt(-1);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private unsafe void JobHudNoticePostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
if (_questController.IsRunning || _questController.AutomationType != QuestController.EAutomationType.Manual)
|
||||
int num = (_questController.IsRunning ? (-1467614893) : (-1467614895));
|
||||
while (true)
|
||||
{
|
||||
JobHudNoticePostSetup((AtkUnitBase*)args.Addon.Address);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe void JobHudNoticePostSetup(AtkUnitBase* addon)
|
||||
{
|
||||
_logger.LogInformation("Clicking the JobHudNotice window to open the relevant Guide page");
|
||||
_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>());
|
||||
addon->FireCallbackInt(0);
|
||||
}
|
||||
|
||||
private unsafe void GuidePostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
if (_questController.IsRunning || _questController.AutomationType != QuestController.EAutomationType.Manual)
|
||||
int num = (_questController.IsRunning ? 373369011 : 373369010);
|
||||
while (true)
|
||||
{
|
||||
GuidePostSetup((AtkUnitBase*)args.Addon.Address);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe void GuidePostSetup(AtkUnitBase* addon)
|
||||
{
|
||||
_logger.LogInformation("Closing Guide window");
|
||||
_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>());
|
||||
addon->FireCallbackInt(-1);
|
||||
}
|
||||
|
||||
private unsafe void EventTutorialPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
if (!_questController.IsRunning && _questController.AutomationType == QuestController.EAutomationType.Manual)
|
||||
int num = (_questController.IsRunning ? (-1567711917) : (-1567711920));
|
||||
while (true)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_framework.RunOnTick(delegate
|
||||
{
|
||||
if (_gameGui.TryGetAddonByName<AtkUnitBase>("EventTutorial", out var addonPtr))
|
||||
int num2 = num;
|
||||
int num3 = -1567711918;
|
||||
int num4 = num2;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
EventTutorialPostSetup(addonPtr);
|
||||
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;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe void EventTutorialPostSetup(AtkUnitBase* addon)
|
||||
{
|
||||
_logger.LogInformation("Closing EventTutorial window");
|
||||
_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>());
|
||||
addon->FireCallbackInt(-1);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe void DescriptionPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
int num = (_questController.IsRunning ? (-1356307906) : (-1356307905));
|
||||
while (true)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public void Dispose()
|
||||
{
|
||||
_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);
|
||||
_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);
|
||||
_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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,7 +1,10 @@
|
|||
using System;
|
||||
using System.Runtime.CompilerServices;
|
||||
using Dalamud.Game.Config;
|
||||
using Dalamud.Plugin.Services;
|
||||
using FFXIVClientStructs.FFXIV.Component.GUI;
|
||||
using FFXIVClientStructs.Interop;
|
||||
using LLib;
|
||||
using LLib.GameUI;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Questionable.Controller.Utils;
|
||||
|
|
@ -20,9 +23,9 @@ internal sealed class QteController : IDisposable
|
|||
|
||||
private readonly ILogger<QteController> _logger;
|
||||
|
||||
private long _throttler = Environment.TickCount64;
|
||||
private Throttle _throttle;
|
||||
|
||||
private readonly Random _random = new Random();
|
||||
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 bool _hasDirectChat;
|
||||
|
||||
|
|
@ -35,79 +38,243 @@ internal sealed class QteController : IDisposable
|
|||
_gameConfig = gameConfig;
|
||||
_framework = framework;
|
||||
_logger = logger;
|
||||
_framework.Update += OnUpdate;
|
||||
_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);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe void OnUpdate(IFramework framework)
|
||||
{
|
||||
AtkUnitBase* addonPtr;
|
||||
if (!_configuration.General.AutoSolveQte)
|
||||
int num = (_configuration.General.AutoSolveQte ? (-1685552556) : (-1685552558));
|
||||
AtkUnitBase* addonPtr = default(AtkUnitBase*);
|
||||
while (true)
|
||||
{
|
||||
EnableDirectChatIfNeeded();
|
||||
}
|
||||
else if (_gameGui.TryGetAddonByName<AtkUnitBase>("QTE", out addonPtr) && LAddon.IsAddonReady(addonPtr) && addonPtr->IsVisible)
|
||||
{
|
||||
DisableDirectChatIfNeeded();
|
||||
if (Environment.TickCount64 >= _throttler)
|
||||
int num2 = num;
|
||||
int num3 = -1685552557;
|
||||
int num4 = num2;
|
||||
int num5 = num4 + num3;
|
||||
int num6 = num4 & num3;
|
||||
switch (num5 - (num6 + num6))
|
||||
{
|
||||
if (IsChatLogFocused())
|
||||
{
|
||||
WindowsKeypress.SendKeypress(WindowsKeypress.LimitedKeys.Escape);
|
||||
}
|
||||
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:
|
||||
WindowsKeypress.SendKeypress(WindowsKeypress.LimitedKeys.A);
|
||||
_throttler = Environment.TickCount64 + _random.Next(25, 50);
|
||||
return;
|
||||
case 8:
|
||||
num = ((!addonPtr->IsVisible) ? (-1685552554) : (-1685552553));
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
EnableDirectChatIfNeeded();
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private unsafe bool IsChatLogFocused()
|
||||
{
|
||||
AtkStage* ptr = AtkStage.Instance();
|
||||
if (ptr == null)
|
||||
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)
|
||||
{
|
||||
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")
|
||||
int num2 = num;
|
||||
int num3 = -1746454883;
|
||||
int num4 = num2;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
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()
|
||||
{
|
||||
if (_hasDirectChat)
|
||||
int num = ((!_hasDirectChat) ? 514735225 : 514735226);
|
||||
while (true)
|
||||
{
|
||||
_gameConfig.UiControl.Set("DirectChat", _directChatWasEnabled);
|
||||
_hasDirectChat = false;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private void DisableDirectChatIfNeeded()
|
||||
{
|
||||
if (!_hasDirectChat && _gameConfig.UiControl.TryGetBool("DirectChat", out var value))
|
||||
int num = (_hasDirectChat ? 343908918 : 343908917);
|
||||
bool flag = default(bool);
|
||||
while (true)
|
||||
{
|
||||
_directChatWasEnabled = value;
|
||||
if (value)
|
||||
int num2 = num;
|
||||
int num3 = 343908918;
|
||||
int num4 = num2;
|
||||
int num5 = num4 + num3;
|
||||
int num6 = num4 & num3;
|
||||
switch (num5 - (num6 + num6))
|
||||
{
|
||||
_gameConfig.UiControl.Set("DirectChat", value: false);
|
||||
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;
|
||||
}
|
||||
_hasDirectChat = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_framework.Update -= OnUpdate;
|
||||
_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);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
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;
|
||||
|
|
@ -13,6 +15,93 @@ 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;
|
||||
|
|
@ -23,116 +112,274 @@ internal sealed class ShopController : IDisposable, IShopWindow
|
|||
|
||||
private readonly ILogger<ShopController> _logger;
|
||||
|
||||
private long _lastCurrentStockSwitchMs;
|
||||
|
||||
private int _currentStockSwitchAttempts;
|
||||
|
||||
private uint? _lastPurchaseItemId;
|
||||
|
||||
private const int MaxCurrentStockSwitchAttempts = 3;
|
||||
|
||||
public bool IsEnabled => _questController.IsRunning;
|
||||
|
||||
public bool IsOpen { get; set; }
|
||||
|
||||
public bool IsAutoBuyEnabled => _shop.AutoBuyEnabled;
|
||||
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 IsAwaitingYesNo
|
||||
{
|
||||
get
|
||||
{
|
||||
return _shop.IsAwaitingYesNo;
|
||||
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);
|
||||
}
|
||||
set
|
||||
{
|
||||
_shop.IsAwaitingYesNo = value;
|
||||
_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);
|
||||
}
|
||||
}
|
||||
|
||||
public Vector2? Position { get; set; }
|
||||
|
||||
public ShopController(QuestController questController, IGameGui gameGui, IAddonLifecycle addonLifecycle, IFramework framework, ILogger<ShopController> logger, IPluginLog pluginLog)
|
||||
[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 = new RegularShopBase(this, "Shop", pluginLog, gameGui, addonLifecycle);
|
||||
_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);
|
||||
_logger = logger;
|
||||
_framework.Update += FrameworkUpdate;
|
||||
_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);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_framework.Update -= FrameworkUpdate;
|
||||
_shop.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);
|
||||
}
|
||||
|
||||
void IDisposable.Dispose()
|
||||
{
|
||||
//ILSpy generated this explicit interface implementation from .override directive in Dispose
|
||||
this.Dispose();
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private void FrameworkUpdate(IFramework framework)
|
||||
{
|
||||
if (!IsOpen || _shop.ItemForSale == null)
|
||||
int num = ((!IsOpen) ? (-1743708968) : (-1743708973));
|
||||
QuestStep questStep = default(QuestStep);
|
||||
int num7 = default(int);
|
||||
while (true)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (_shop.PurchaseState != null)
|
||||
{
|
||||
_shop.HandleNextPurchaseStep();
|
||||
return;
|
||||
}
|
||||
QuestStep questStep = FindCurrentStep();
|
||||
if (questStep != null && questStep.InteractionType == EInteractionType.PurchaseItem)
|
||||
{
|
||||
int num = Math.Max(0, questStep.ItemCount.GetValueOrDefault() - (int)_shop.ItemForSale.OwnedItems);
|
||||
if (Math.Min(_shop.GetMaxItemsToPurchase(), num) > 0)
|
||||
int num2 = num;
|
||||
int num3 = -1743708974;
|
||||
int num4 = num2;
|
||||
int num5 = num4 + num3;
|
||||
int num6 = num4 & num3;
|
||||
switch (num5 - (num6 + num6))
|
||||
{
|
||||
_logger.LogDebug("Auto-buying {MissingItems} {ItemName}", num, _shop.ItemForSale.ItemName);
|
||||
_shop.StartAutoPurchase(num);
|
||||
_shop.HandleNextPurchaseStep();
|
||||
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;
|
||||
}
|
||||
else
|
||||
{
|
||||
_shop.CancelAutoPurchase();
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int GetCurrencyCount()
|
||||
{
|
||||
return _shop.GetItemCount(1u);
|
||||
}
|
||||
|
||||
private QuestStep? FindCurrentStep()
|
||||
{
|
||||
QuestController.QuestProgress currentQuest = _questController.CurrentQuest;
|
||||
return (currentQuest?.Quest.FindSequence(currentQuest.Sequence))?.FindStep(currentQuest?.Step ?? 0);
|
||||
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);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public unsafe void UpdateShopStock(AtkUnitBase* addon)
|
||||
{
|
||||
QuestStep currentStep = FindCurrentStep();
|
||||
if (currentStep == null || currentStep.InteractionType != EInteractionType.PurchaseItem)
|
||||
int num = ((currentStep == null) ? 958087197 : 958087193);
|
||||
uint uInt = default(uint);
|
||||
AtkValue* atkValues = default(AtkValue*);
|
||||
while (true)
|
||||
{
|
||||
_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 (atkValues->UInt != 0)
|
||||
{
|
||||
_shop.ItemForSale = null;
|
||||
return;
|
||||
}
|
||||
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
|
||||
int num2 = num;
|
||||
int num3 = 958087192;
|
||||
int num4 = num2;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
Position = i,
|
||||
ItemName = atkValues[14 + i].ReadAtkString(),
|
||||
Price = atkValues[75 + i].UInt,
|
||||
OwnedItems = atkValues[136 + i].UInt,
|
||||
ItemId = atkValues[441 + i].UInt
|
||||
}).FirstOrDefault((ItemForSale x) => x.ItemId == currentStep.ItemId);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
|
|
@ -147,7 +394,7 @@ internal sealed class ShopController : IDisposable, IShopWindow
|
|||
new AtkValue
|
||||
{
|
||||
Type = AtkValueType.Int,
|
||||
Int = _shop.ItemForSale.Position
|
||||
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))
|
||||
},
|
||||
new AtkValue
|
||||
{
|
||||
|
|
@ -163,15 +410,210 @@ 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]
|
||||
{
|
||||
new AtkValue
|
||||
{
|
||||
Type = AtkValueType.Int,
|
||||
Int = 1
|
||||
},
|
||||
new AtkValue
|
||||
{
|
||||
Type = AtkValueType.Int,
|
||||
Int = -1
|
||||
},
|
||||
new AtkValue
|
||||
{
|
||||
Type = AtkValueType.Int,
|
||||
Int = -1
|
||||
}
|
||||
};
|
||||
addonShop->FireCallback(3u, values);
|
||||
}
|
||||
|
||||
public void SaveExternalPluginState()
|
||||
{
|
||||
}
|
||||
|
||||
void IShopWindow.SaveExternalPluginState()
|
||||
{
|
||||
//ILSpy generated this explicit interface implementation from .override directive in SaveExternalPluginState
|
||||
this.SaveExternalPluginState();
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public unsafe void RestoreExternalPluginState()
|
||||
{
|
||||
if (_gameGui.TryGetAddonByName<AtkUnitBase>("Shop", out var addonPtr))
|
||||
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)
|
||||
{
|
||||
addonPtr->FireCallbackInt(-1);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue