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 _logger; private uint? _uncheckedTerritoryId; public PartyWatchdog(QuestController questController, Configuration configuration, TerritoryData territoryData, IClientState clientState, IChatGui chatGui, ILogger 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)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(-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(-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(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(-762149952), Array.Empty()); 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(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(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(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(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(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)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 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 P_1) { P_0.TerritoryChanged -= P_1; } }