using System; using FFXIVClientStructs.FFXIV.Client.Game.UI; namespace LLib.Buddy; public static class BuddyStateHelper { public unsafe static bool IsCompanionSummoned() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? (-1349796682) : (-1349796683)); while (true) { int num2 = num; int num3 = -1349796684; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 2: return ptr->Buddy.CompanionInfo.TimeLeft > 0f; case 1: return false; case 0: goto IL_0063; } continue; IL_0063: num = -1349796683; } } public unsafe static bool IsCompanionMounted() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? (-1440023216) : (-1440023213)); while (true) { int num2 = num; int num3 = -1440023215; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: goto IL_0049; case 1: return ptr->Buddy.CompanionInfo.Mounted; case 2: return false; } continue; IL_0049: num = -1440023213; } } public unsafe static string GetCompanionName() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? 1483608628 : 1483608631); while (true) { int num2 = num; int num3 = 1483608630; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: goto IL_004b; case 2: return ptr->Buddy.CompanionInfo.NameString; case 1: return string.Empty; } continue; IL_004b: num = 1483608631; } } public unsafe static byte GetCompanionColorStainId() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? 345206792 : 345206793); while (true) { int num2 = num; int num3 = 345206792; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: return ptr->Buddy.CompanionInfo.CurrentColorStainId; case 1: return 0; case 2: goto IL_005c; } continue; IL_005c: num = 345206793; } } public unsafe static byte GetCompanionRank() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? 424961589 : 424961588); while (true) { int num2 = num; int num3 = 424961589; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: return ptr->Buddy.CompanionInfo.Rank; case 1: return 0; case 2: goto IL_005c; } continue; IL_005c: num = 424961588; } } public unsafe static uint GetCompanionCurrentXP() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? (-7933264) : (-7933261)); while (true) { int num2 = num; int num3 = -7933262; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 2: return ptr->Buddy.CompanionInfo.CurrentXP; case 1: return 0u; case 0: goto IL_005c; } continue; IL_005c: num = -7933261; } } public unsafe static byte GetCompanionStars() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? 1600521884 : 1600521887); while (true) { int num2 = num; int num3 = 1600521885; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: goto IL_0049; case 2: return 0; case 1: return ptr->Buddy.CompanionInfo.Stars; } continue; IL_0049: num = 1600521887; } } public unsafe static byte GetCompanionSkillPoints() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? 624298941 : 624298942); while (true) { int num2 = num; int num3 = 624298940; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 1: return ptr->Buddy.CompanionInfo.SkillPoints; case 2: return 0; case 0: goto IL_005c; } continue; IL_005c: num = 624298942; } } public unsafe static byte GetDefenderLevel() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? (-1160271461) : (-1160271462)); while (true) { int num2 = num; int num3 = -1160271461; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 2: goto IL_004c; case 1: return 0; case 0: return ptr->Buddy.CompanionInfo.Levels[0]; } continue; IL_004c: num = -1160271462; } } public unsafe static byte GetAttackerLevel() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? 35779603 : 35779600); while (true) { int num2 = num; int num3 = 35779602; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: goto IL_004c; case 1: return ptr->Buddy.CompanionInfo.Levels[1]; case 2: return 0; } continue; IL_004c: num = 35779600; } } public unsafe static byte GetHealerLevel() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? (-1648020324) : (-1648020321)); while (true) { int num2 = num; int num3 = -1648020323; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 1: return ptr->Buddy.CompanionInfo.Levels[2]; case 2: return 0; case 0: goto IL_006b; } continue; IL_006b: num = -1648020321; } } public unsafe static (byte Head, byte Chest, byte Feet) GetEquippedBardingIds() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? (-214194545) : (-214194548)); while (true) { int num2 = num; int num3 = -214194546; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: goto IL_004c; case 1: { Span buddyEquipRowIds = ptr->Buddy.CompanionInfo.BuddyEquipRowIds; return (Head: buddyEquipRowIds[0], Chest: buddyEquipRowIds[1], Feet: buddyEquipRowIds[2]); } case 2: return (Head: 0, Chest: 0, Feet: 0); } continue; IL_004c: num = -214194548; } } public unsafe static bool IsBardingUnlocked(uint bardingId) { UIState* ptr = UIState.Instance(); int num = ((ptr == null) ? 1179942104 : 1179942107); while (true) { int num2 = num; int num3 = 1179942105; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: goto IL_004b; case 2: return ptr->Buddy.CompanionInfo.IsBuddyEquipUnlocked(bardingId); case 1: return false; } continue; IL_004b: num = 1179942107; } } public unsafe static byte GetActiveCommand() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? 360275929 : 360275930); while (true) { int num2 = num; int num3 = 360275928; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 1: return ptr->Buddy.CompanionInfo.ActiveCommand; case 2: return 0; case 0: goto IL_005c; } continue; IL_005c: num = 360275930; } } public unsafe static byte GetFavoriteFeed() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? 816585553 : 816585552); while (true) { int num2 = num; int num3 = 816585553; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: return ptr->Buddy.CompanionInfo.FavoriteFeed; case 1: return 0; case 2: goto IL_005e; } continue; IL_005e: num = 816585552; } } public unsafe static bool IsPetSummoned() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? 318028987 : 318028984); while (true) { int num2 = num; int num3 = 318028985; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 2: num = ((ptr->Buddy.PetInfo.Pet == null) ? 318028985 : 318028986); break; case 3: return ptr->Buddy.PetInfo.Pet->EntityId != 0; case 0: return false; case 1: return false; case 4: num = 318028984; break; } } } public unsafe static byte GetPetOrder() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? (-105624424) : (-105624421)); while (true) { int num2 = num; int num3 = -105624422; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: goto IL_0049; case 1: return 0; case 2: return ptr->Buddy.PetInfo.Order; } continue; IL_0049: num = -105624421; } } public unsafe static byte GetPetStance() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? 25937805 : 25937806); while (true) { int num2 = num; int num3 = 25937807; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: goto IL_0049; case 2: return ptr->Buddy.PetInfo.Stance; case 1: return 0; } continue; IL_0049: num = 25937806; } } public unsafe static bool IsBattleBuddyPresent() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? (-506116548) : (-506116552)); int num7 = default(int); Span battleBuddies = default(Span); while (true) { int num2 = num; int num3 = -506116551; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 3: return true; case 6: { int num8 = num7; num3 = 1; num4 = num8; num7 = (num4 | num3) + (num4 & num3); num = -506116546; break; } case 0: num = ((battleBuddies[num7].EntityId == 0) ? (-506116545) : (-506116550)); break; case 1: return false; case 2: num = -506116552; break; case 7: num = ((num7 < battleBuddies.Length) ? (-506116551) : (-506116547)); break; case 4: return false; case 5: battleBuddies = ptr->Buddy.BattleBuddies; num7 = 0; num = -506116546; break; } } } public unsafe static bool HasDutyHelpers() { UIState* ptr = UIState.Instance(); int num = ((ptr != null) ? 132041618 : 132041619); while (true) { int num2 = num; int num3 = 132041618; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 2: goto IL_0049; case 1: return false; case 0: return ptr->Buddy.DutyHelperInfo.HasHelpers; } continue; IL_0049: num = 132041619; } } }