forked from aly/qstbak
306 lines
14 KiB
C#
306 lines
14 KiB
C#
using System;
|
|
using System.Runtime.CompilerServices;
|
|
using Dalamud.Plugin.Services;
|
|
using FFXIVClientStructs.FFXIV.Client.Game;
|
|
using FFXIVClientStructs.FFXIV.Client.Game.Group;
|
|
using LLib.GameData;
|
|
using Microsoft.Extensions.Logging;
|
|
using Questionable.Data;
|
|
using Questionable.Model.Questing;
|
|
|
|
namespace Questionable.Controller.Utils;
|
|
|
|
internal sealed class PartyWatchdog : IDisposable
|
|
{
|
|
private readonly QuestController _questController;
|
|
|
|
private readonly Configuration _configuration;
|
|
|
|
private readonly TerritoryData _territoryData;
|
|
|
|
private readonly IClientState _clientState;
|
|
|
|
private readonly IChatGui _chatGui;
|
|
|
|
private readonly ILogger<PartyWatchdog> _logger;
|
|
|
|
private uint? _uncheckedTerritoryId;
|
|
|
|
public PartyWatchdog(QuestController questController, Configuration configuration, TerritoryData territoryData, IClientState clientState, IChatGui chatGui, ILogger<PartyWatchdog> logger)
|
|
{
|
|
_questController = questController;
|
|
_configuration = configuration;
|
|
_territoryData = territoryData;
|
|
_clientState = clientState;
|
|
_chatGui = chatGui;
|
|
_logger = logger;
|
|
_202E_202B_202C_200E_206F_202C_200D_206C_206A_206D_206D_206B_206C_206C_206B_206E_202D_200C_206B_202A_202C_206B_206C_200E_206E_202E_202D_200D_200D_206B_200C_206E_202A_206D_200C_200B_202D_200E_206D_200C_202E(_clientState, (Action<uint>)TerritoryChanged);
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.NoInlining)]
|
|
private unsafe void TerritoryChanged(uint newTerritoryId)
|
|
{
|
|
int num = ((!_configuration.Advanced.DisablePartyWatchdog) ? 546819972 : 546819975);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 546819973;
|
|
int num4 = num2;
|
|
int num5 = num4 + num3;
|
|
int num6 = num4 & num3;
|
|
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler;
|
|
switch (num5 - (num6 + num6))
|
|
{
|
|
case 5:
|
|
return;
|
|
case 1:
|
|
switch ((ETerritoryIntendedUse)GameMain.Instance()->CurrentTerritoryIntendedUseId)
|
|
{
|
|
case ETerritoryIntendedUse.MordionGaol:
|
|
case ETerritoryIntendedUse.Frontline:
|
|
case ETerritoryIntendedUse.LordOfVerminion:
|
|
case ETerritoryIntendedUse.ExploratoryMissions:
|
|
case ETerritoryIntendedUse.CrystallineConflict:
|
|
case ETerritoryIntendedUse.DeepDungeon:
|
|
case ETerritoryIntendedUse.TreasureMapInstance:
|
|
case ETerritoryIntendedUse.TripleTriadBattlehall:
|
|
case ETerritoryIntendedUse.CrystallineConflictCustomMatch:
|
|
case ETerritoryIntendedUse.DiademHuntingGrounds:
|
|
case ETerritoryIntendedUse.RivalWings:
|
|
case ETerritoryIntendedUse.Eureka:
|
|
case ETerritoryIntendedUse.LeapOfFaith:
|
|
case ETerritoryIntendedUse.OceanFishing:
|
|
case ETerritoryIntendedUse.Diadem:
|
|
case ETerritoryIntendedUse.Bozja:
|
|
case ETerritoryIntendedUse.TripleTriadOpenTournament:
|
|
case ETerritoryIntendedUse.TripleTriadInvitationalParlor:
|
|
case ETerritoryIntendedUse.DelubrumReginae:
|
|
case ETerritoryIntendedUse.DelubrumReginaeSavage:
|
|
case ETerritoryIntendedUse.Blunderville:
|
|
goto IL_0168;
|
|
case ETerritoryIntendedUse.Dungeon:
|
|
case ETerritoryIntendedUse.VariantDungeon:
|
|
case ETerritoryIntendedUse.AllianceRaid:
|
|
case ETerritoryIntendedUse.Trial:
|
|
case ETerritoryIntendedUse.Raid1:
|
|
case ETerritoryIntendedUse.Raid2:
|
|
case ETerritoryIntendedUse.Seasonal:
|
|
case ETerritoryIntendedUse.TheCalamityRetold:
|
|
case ETerritoryIntendedUse.CriterionDungeon:
|
|
case ETerritoryIntendedUse.CriterionDungeonSavage:
|
|
goto IL_01aa;
|
|
case ETerritoryIntendedUse.OpeningArea:
|
|
case ETerritoryIntendedUse.BeforeTrialDung:
|
|
case ETerritoryIntendedUse.PreEwOverworldQuestBattle:
|
|
case ETerritoryIntendedUse.Unknown11:
|
|
case ETerritoryIntendedUse.WaitingRoom:
|
|
case ETerritoryIntendedUse.HousingOutdoor:
|
|
case ETerritoryIntendedUse.HousingIndoor:
|
|
case ETerritoryIntendedUse.SoloOverworldInstances:
|
|
case ETerritoryIntendedUse.ChocoboSquareOld:
|
|
case ETerritoryIntendedUse.ChocoboRacing:
|
|
case ETerritoryIntendedUse.Firmament:
|
|
case ETerritoryIntendedUse.SanctumOfTheTwelve:
|
|
case ETerritoryIntendedUse.GoldSaucer:
|
|
case ETerritoryIntendedUse.OriginalStepsOfFaith:
|
|
case ETerritoryIntendedUse.HallOfTheNovice:
|
|
case ETerritoryIntendedUse.SoloDuty:
|
|
case ETerritoryIntendedUse.GrandCompanyBarracks:
|
|
case ETerritoryIntendedUse.SeasonalInstancedArea:
|
|
case ETerritoryIntendedUse.ChaoticRaid:
|
|
case ETerritoryIntendedUse.Unknown40:
|
|
case ETerritoryIntendedUse.Unknown42:
|
|
case ETerritoryIntendedUse.MaskedCarnival:
|
|
case ETerritoryIntendedUse.IslandSanctuary:
|
|
case ETerritoryIntendedUse.EndwalkerMsqSoloOverworld:
|
|
case ETerritoryIntendedUse.Unknown55:
|
|
case ETerritoryIntendedUse.Elysion:
|
|
return;
|
|
}
|
|
num = 546819968;
|
|
break;
|
|
case 3:
|
|
goto IL_0168;
|
|
case 6:
|
|
goto IL_01aa;
|
|
case 2:
|
|
return;
|
|
case 0:
|
|
num = 546819975;
|
|
break;
|
|
case 4:
|
|
return;
|
|
IL_01aa:
|
|
_uncheckedTerritoryId = newTerritoryId;
|
|
_200E_202E_200F_200B_202B_206B_206D_206B_206F_206B_202B_200E_206E_202D_202B_200E_200B_206A_206F_202E_206C_206D_202B_200F_206A_206D_206C_200F_202A_202B_200E_202B_202A_200F_206A_200D_202C_202C_206B_202E((ILogger)_logger, global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(-863360954), new object[1] { newTerritoryId });
|
|
num = 546819969;
|
|
break;
|
|
IL_0168:
|
|
defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(27, 1);
|
|
defaultInterpolatedStringHandler.AppendLiteral(global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(-1856891210));
|
|
defaultInterpolatedStringHandler.AppendFormatted(newTerritoryId);
|
|
defaultInterpolatedStringHandler.AppendLiteral(global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(1735737295));
|
|
StopIfRunning(defaultInterpolatedStringHandler.ToStringAndClear());
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.NoInlining)]
|
|
public unsafe void Update()
|
|
{
|
|
int num = ((!_configuration.Advanced.DisablePartyWatchdog) ? 783719390 : 783719389);
|
|
GroupManager* ptr = default(GroupManager*);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 783719387;
|
|
int num4 = num2;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 9:
|
|
ptr = GroupManager.Instance();
|
|
num = ((ptr != null) ? 783719391 : 783719387);
|
|
break;
|
|
case 6:
|
|
return;
|
|
case 10:
|
|
_200E_202E_200F_200B_202B_206B_206D_206B_206F_206B_202B_200E_206E_202D_202B_200E_200B_206A_206F_202E_206C_206D_202B_200F_206A_206D_206C_200F_202A_202B_200E_202B_202A_200F_206A_200D_202C_202C_206B_202E((ILogger)_logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E<string>(-762149952), Array.Empty<object>());
|
|
num = 783719379;
|
|
break;
|
|
case 0:
|
|
return;
|
|
case 7:
|
|
num = ((GameMain.Instance()->TerritoryLoadState != 2) ? 783719385 : 783719378);
|
|
break;
|
|
case 1:
|
|
StopIfRunning(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>(1306739522));
|
|
num = 783719379;
|
|
break;
|
|
case 11:
|
|
num = 783719389;
|
|
break;
|
|
case 3:
|
|
num = (IsDutyConfiguredForParty(_uncheckedTerritoryId.Value) ? 783719377 : 783719386);
|
|
break;
|
|
case 4:
|
|
{
|
|
byte memberCount = ptr->MainGroup.MemberCount;
|
|
bool isAlliance = ptr->MainGroup.IsAlliance;
|
|
_200E_202E_200F_200B_202B_206B_206D_206B_206F_206B_202B_200E_206E_202D_202B_200E_200B_206A_206F_202E_206C_206D_202B_200F_206A_206D_206C_200F_202A_202B_200E_202B_202A_200F_206A_200D_202C_202C_206B_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(189353374), new object[3] { _uncheckedTerritoryId, memberCount, isAlliance });
|
|
bool num5 = memberCount > 1;
|
|
num3 = (isAlliance ? 1 : 0);
|
|
num4 = (num5 ? 1 : 0);
|
|
num = (((num4 & num3) + (num4 ^ num3) == 0) ? 783719379 : 783719384);
|
|
break;
|
|
}
|
|
case 5:
|
|
num = ((_uncheckedTerritoryId != _206B_202D_200B_200D_200B_202E_206B_200F_200C_206C_200B_202A_202E_206C_206B_200E_206A_202E_200D_200E_202B_200C_202E_200B_206D_206E_200C_200E_200B_206B_200D_206B_200E_200D_202A_206D_206E_200C_206C_206B_202E(_clientState)) ? 783719385 : 783719388);
|
|
break;
|
|
case 2:
|
|
return;
|
|
case 8:
|
|
_uncheckedTerritoryId = null;
|
|
num = 783719385;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private bool IsDutyConfiguredForParty(uint territoryId)
|
|
{
|
|
uint cfcId;
|
|
int num = (_territoryData.TryGetContentFinderConditionIdForTerritory(territoryId, out cfcId) ? 309783297 : 309783299);
|
|
EDutyMode value = default(EDutyMode);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 309783298;
|
|
int num4 = num2;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 4:
|
|
return value == EDutyMode.UnsyncParty;
|
|
case 3:
|
|
num = ((!_configuration.Duties.DutyModeOverrides.TryGetValue(cfcId, out value)) ? 309783296 : 309783302);
|
|
break;
|
|
case 2:
|
|
return _configuration.Duties.DefaultDutyMode == EDutyMode.UnsyncParty;
|
|
case 0:
|
|
num = 309783299;
|
|
break;
|
|
case 1:
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.NoInlining)]
|
|
private void StopIfRunning(string reason)
|
|
{
|
|
int num = (_questController.IsRunning ? 1851860853 : 1851860852);
|
|
while (true)
|
|
{
|
|
int num2 = num;
|
|
int num3 = 1851860854;
|
|
int num4 = num2;
|
|
switch ((num4 | num3) - (num4 & num3))
|
|
{
|
|
case 0:
|
|
num = 1851860852;
|
|
break;
|
|
case 2:
|
|
num = ((_questController.AutomationType == QuestController.EAutomationType.Manual) ? 1851860855 : 1851860853);
|
|
break;
|
|
case 3:
|
|
_202C_202D_206F_200F_206F_200C_202B_200B_206D_200F_202C_200C_206B_202D_200C_200F_206F_200D_202E_206C_206F_202A_202E_200D_200C_202C_200C_202B_202B_206E_202E_202E_200C_200C_202D_202D_206B_206B_206D_200D_202E(_chatGui, _202E_202A_206C_206D_202C_202A_200B_200E_206B_200C_202A_206E_202B_206A_200D_206B_206D_206F_206F_202A_206C_202E_200D_200F_206E_200D_206B_200D_202C_200E_206F_206C_200D_206C_206B_200B_206C_200B_200E_202A_202E(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>(523838362), reason, 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>(677123386)), 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>(467221712), (ushort?)(ushort)576);
|
|
_questController.Stop(reason);
|
|
num = 1851860855;
|
|
break;
|
|
case 1:
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_200E_206B_206A_200F_202A_200E_206D_202E_206B_206C_202A_206A_206C_200F_206F_206F_206C_206D_206F_200F_206A_206C_206A_206E_202A_202E_206C_206B_202E_206C_200F_206F_200E_202B_202C_202A_200E_206B_206E_202A_202E(_clientState, (Action<uint>)TerritoryChanged);
|
|
}
|
|
|
|
void IDisposable.Dispose()
|
|
{
|
|
//ILSpy generated this explicit interface implementation from .override directive in Dispose
|
|
this.Dispose();
|
|
}
|
|
|
|
static void _202E_202B_202C_200E_206F_202C_200D_206C_206A_206D_206D_206B_206C_206C_206B_206E_202D_200C_206B_202A_202C_206B_206C_200E_206E_202E_202D_200D_200D_206B_200C_206E_202A_206D_200C_200B_202D_200E_206D_200C_202E(IClientState P_0, Action<uint> P_1)
|
|
{
|
|
P_0.TerritoryChanged += P_1;
|
|
}
|
|
|
|
static void _200E_202E_200F_200B_202B_206B_206D_206B_206F_206B_202B_200E_206E_202D_202B_200E_200B_206A_206F_202E_206C_206D_202B_200F_206A_206D_206C_200F_202A_202B_200E_202B_202A_200F_206A_200D_202C_202C_206B_202E(ILogger P_0, string P_1, object[] P_2)
|
|
{
|
|
P_0.LogDebug(P_1, P_2);
|
|
}
|
|
|
|
static uint _206B_202D_200B_200D_200B_202E_206B_200F_200C_206C_200B_202A_202E_206C_206B_200E_206A_202E_200D_200E_202B_200C_202E_200B_206D_206E_200C_200E_200B_206B_200D_206B_200E_200D_202A_206D_206E_200C_206C_206B_202E(IClientState P_0)
|
|
{
|
|
return P_0.TerritoryType;
|
|
}
|
|
|
|
static string _202E_202A_206C_206D_202C_202A_200B_200E_206B_200C_202A_206E_202B_206A_200D_206B_206D_206F_206F_202A_206C_202E_200D_200F_206E_200D_206B_200D_202C_200E_206F_206C_200D_206C_206B_200B_206C_200B_200E_202A_202E(string P_0, string P_1, string P_2)
|
|
{
|
|
return P_0 + P_1 + P_2;
|
|
}
|
|
|
|
static void _202C_202D_206F_200F_206F_200C_202B_200B_206D_200F_202C_200C_206B_202D_200C_200F_206F_200D_202E_206C_206F_202A_202E_200D_200C_202C_200C_202B_202B_206E_202E_202E_200C_200C_202D_202D_206B_206B_206D_200D_202E(IChatGui P_0, string P_1, string P_2, ushort? P_3)
|
|
{
|
|
P_0.PrintError(P_1, P_2, P_3);
|
|
}
|
|
|
|
static void _200E_206B_206A_200F_202A_200E_206D_202E_206B_206C_202A_206A_206C_200F_206F_206F_206C_206D_206F_200F_206A_206C_206A_206E_202A_202E_206C_206B_202E_206C_200F_206F_200E_202B_202C_202A_200E_206B_206E_202A_202E(IClientState P_0, Action<uint> P_1)
|
|
{
|
|
P_0.TerritoryChanged -= P_1;
|
|
}
|
|
}
|