1
0
Fork 0
forked from aly/qstbak

muffin v7.5.6

This commit is contained in:
alydev 2026-08-17 20:27:25 +10:00
parent 6266f9e6b7
commit addf2d530f
619 changed files with 264792 additions and 446022 deletions

View file

@ -0,0 +1,41 @@
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game;
using Lumina.Excel.Sheets;
namespace LLib.GameData;
public static class ClassJobHelper
{
public static bool IsClassJobUnlocked(EClassJob classJob, IDataManager dataManager)
{
ClassJob row = dataManager.GetExcelSheet<ClassJob>().GetRow((uint)classJob);
ushort num = (ushort)row.UnlockQuest.RowId;
int num2 = ((num == 0) ? 1968883418 : 1968883419);
while (true)
{
int num3 = num2;
int num4 = 1968883416;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
{
case 1:
return false;
case 3:
return QuestManager.IsQuestComplete(num);
case 4:
return PlayerStateHelper.GetClassJobLevel(row.ExpArrayIndex) > 0;
case 2:
num2 = ((row.ExpArrayIndex >= 0) ? 1968883420 : 1968883417);
break;
case 0:
num2 = 1968883419;
break;
}
}
}
public static bool IsJobUnlocked(EClassJob classJob, IDataManager dataManager)
{
return IsClassJobUnlocked((EClassJob)dataManager.GetExcelSheet<ClassJob>().GetRow((uint)classJob).ClassJobParent.RowId, dataManager);
}
}

View file

@ -0,0 +1,35 @@
namespace LLib.GameData;
public enum CommandFlag
{
DrawOrSheatheWeapon = 1,
AutoAttack = 2,
Target = 3,
Dismount = 101,
CancelCast = 105,
StatusOff = 104,
WithdrawFashionAccessory = 109,
Revive = 200,
Teleport = 202,
InstantReturn = 214,
Inspect = 300,
ChangeTitle = 302,
RepairItem = 434,
RepairEquippedItems = 435,
ExtractMateria = 437,
GearsetChange = 441,
RequestSaddleBag = 444,
BuddyOrder = 500,
InterruptEmote = 502,
EnterSwim = 608,
LeaveSwim = 609,
EnterFlight = 616,
Craft = 700,
Fish = 701,
ExitCraft = 711,
AbandonQuest = 800,
LeaveDuty = 819,
RepairEquippedItemsNPC = 1602,
Desynthesize = 2800,
ApplyGlamourPlate = 2357
}

View file

@ -0,0 +1,255 @@
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Plugin.Services;
namespace LLib.GameData;
public static class ConditionHelper
{
public static bool IsBoundByDuty(ICondition condition)
{
int num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.BoundByDuty) ? 982422876 : 982422878);
while (true)
{
int num2 = num;
int num3 = 982422877;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
num = 982422878;
break;
case 0:
return _206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.BoundByDuty95);
case 1:
return true;
case 3:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.BoundByDuty56) ? 982422876 : 982422877);
break;
}
}
}
public static bool IsInCombat(ICondition condition)
{
return _206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.InCombat);
}
public static bool IsInCutscene(ICondition condition)
{
int num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.OccupiedInCutSceneEvent) ? 298384256 : 298384257);
while (true)
{
int num2 = num;
int num3 = 298384256;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 3:
num = 298384257;
break;
case 1:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.WatchingCutscene) ? 298384256 : 298384258);
break;
case 0:
return true;
case 2:
return _206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.WatchingCutscene78);
}
}
}
public static bool IsBetweenAreas(ICondition condition)
{
int num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.BetweenAreas) ? 617778151 : 617778150);
while (true)
{
int num2 = num;
int num3 = 617778151;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
goto IL_0048;
case 0:
return true;
case 1:
return _206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.BetweenAreas51);
}
continue;
IL_0048:
num = 617778150;
}
}
public static bool IsCrafting(ICondition condition)
{
int num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Crafting) ? (-531070532) : (-531070529));
while (true)
{
int num2 = num;
int num3 = -531070530;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 3:
num = -531070529;
break;
case 2:
return true;
case 0:
return _206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.ExecutingCraftingAction);
case 1:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.PreparingToCraft) ? (-531070532) : (-531070530));
break;
}
}
}
public static bool IsGathering(ICondition condition)
{
int num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Gathering) ? (-1745581447) : (-1745581446));
while (true)
{
int num2 = num;
int num3 = -1745581448;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
goto IL_0047;
case 2:
return _206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.ExecutingGatheringAction);
case 1:
return true;
}
continue;
IL_0047:
num = -1745581446;
}
}
public static bool IsOccupied(ICondition condition)
{
int num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Occupied) ? 149420092 : 149420094);
while (true)
{
int num2 = num;
int num3 = 149420092;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 5:
num = 149420094;
break;
case 4:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Occupied38) ? 149420092 : 149420093);
break;
case 3:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Occupied33) ? 149420092 : 149420088);
break;
case 0:
return true;
case 2:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Occupied30) ? 149420092 : 149420095);
break;
case 1:
return _206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Occupied39);
}
}
}
public static bool IsLockedIn(ICondition condition)
{
int num = (IsBoundByDuty(condition) ? 829421731 : 829421732);
while (true)
{
int num2 = num;
int num3 = 829421734;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 1:
num = (IsBetweenAreas(condition) ? 829421731 : 829421730);
break;
case 0:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Unconscious) ? 829421731 : 829421733);
break;
case 4:
num = (IsOccupied(condition) ? 829421731 : 829421734);
break;
case 3:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Jumping) ? 829421731 : 829421728);
break;
case 2:
num = (IsInCutscene(condition) ? 829421731 : 829421735);
break;
case 6:
return _206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Jumping61);
case 7:
num = 829421732;
break;
case 5:
return true;
}
}
}
public static bool IsUnavailable(ICondition condition)
{
int num = (IsLockedIn(condition) ? 721479038 : 721479035);
while (true)
{
int num2 = num;
int num3 = 721479037;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 7:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.UsingFashionAccessory) ? 721479038 : 721479030);
break;
case 2:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Mounted) ? 721479038 : 721479029);
break;
case 3:
return true;
case 6:
num = (IsCrafting(condition) ? 721479038 : 721479032);
break;
case 0:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.PlayingLordOfVerminion) ? 721479038 : 721479031);
break;
case 5:
num = (IsGathering(condition) ? 721479038 : 721479039);
break;
case 9:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Mounting71) ? 721479038 : 721479036);
break;
case 8:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Mounting) ? 721479038 : 721479028);
break;
case 1:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.ChocoboRacing) ? 721479038 : 721479037);
break;
case 4:
num = 721479035;
break;
case 11:
return _206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.InFlight);
case 10:
num = (_206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(condition, ConditionFlag.Performing) ? 721479038 : 721479034);
break;
}
}
}
static bool _206D_202D_206B_202B_206A_206D_206B_206B_200E_206B_202C_206C_200E_202C_206D_202C_200B_206D_206A_206D_200C_206C_206C_202E_202D_206A_206B_200F_206F_202A_202B_202A_200B_206C_206E_200D_200D_200D_200E_200C_202E(ICondition P_0, ConditionFlag P_1)
{
return P_0[P_1];
}
}

View file

@ -44,5 +44,6 @@ public enum EClassJob : uint
Reaper,
Sage,
Viper,
Pictomancer
Pictomancer,
Beastmaster
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,10 @@
namespace LLib.GameData;
public enum ECombatRole
{
None,
Tank,
Healer,
Dps,
AllRounder
}

View file

@ -0,0 +1,37 @@
namespace LLib.GameData;
public static class ECombatRoleExtensions
{
public static ECombatRole GetCombatRole(this EClassJob classJob)
{
int num = ((!classJob.IsTank()) ? 1662519896 : 1662519898);
while (true)
{
int num2 = num;
int num3 = 1662519899;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
return ECombatRole.None;
case 1:
return ECombatRole.Tank;
case 2:
num = 1662519898;
break;
case 3:
num = ((!classJob.IsHealer()) ? 1662519903 : 1662519902);
break;
case 4:
num = ((!classJob.IsDps()) ? 1662519899 : 1662519901);
break;
case 6:
return ECombatRole.Dps;
case 5:
return ECombatRole.Healer;
}
}
}
}

View file

@ -0,0 +1,8 @@
namespace LLib.GameData;
public enum EPublicEventType : byte
{
Fate,
DynamicEvent,
MechaEvent
}

View file

@ -2,59 +2,69 @@ namespace LLib.GameData;
public enum ETerritoryIntendedUse : byte
{
CityArea = 0,
OpenWorld = 1,
Inn = 2,
Dungeon = 3,
VariantDungeon = 4,
Gaol = 5,
StartingArea = 6,
QuestArea = 7,
AllianceRaid = 8,
QuestBattle = 9,
Trial = 10,
QuestArea2 = 12,
ResidentialArea = 13,
HousingInstances = 14,
QuestArea3 = 15,
Raid = 16,
Raid2 = 17,
Frontline = 18,
ChocoboSquare = 20,
RestorationEvent = 21,
Sanctum = 22,
GoldSaucer = 23,
LordOfVerminion = 25,
Diadem = 26,
HallOfTheNovice = 27,
CrystallineConflict = 28,
QuestBattle2 = 29,
Barracks = 30,
DeepDungeon = 31,
SeasonalEvent = 32,
TreasureMapDuty = 33,
SeasonalEventDuty = 34,
Battlehall = 35,
CrystallineConflict2 = 37,
Diadem2 = 38,
RivalWings = 39,
Unknown1 = 40,
Eureka = 41,
SeasonalEvent2 = 43,
LeapOfFaith = 44,
MaskedCarnivale = 45,
OceanFishing = 46,
Diadem3 = 47,
Bozja = 48,
IslandSanctuary = 49,
Battlehall2 = 50,
Battlehall3 = 51,
LargeScaleRaid = 52,
LargeScaleSavageRaid = 53,
QuestArea4 = 54,
TribalInstance = 56,
CriterionDuty = 57,
CriterionSavageDuty = 58,
Blunderville = 59,
CosmicExploration = 60
Town,
Overworld,
Inn,
Dungeon,
VariantDungeon,
MordionGaol,
OpeningArea,
BeforeTrialDung,
AllianceRaid,
PreEwOverworldQuestBattle,
Trial,
Unknown11,
WaitingRoom,
HousingOutdoor,
HousingIndoor,
SoloOverworldInstances,
Raid1,
Raid2,
Frontline,
ChocoboSquareOld,
ChocoboRacing,
Firmament,
SanctumOfTheTwelve,
GoldSaucer,
OriginalStepsOfFaith,
LordOfVerminion,
ExploratoryMissions,
HallOfTheNovice,
CrystallineConflict,
SoloDuty,
GrandCompanyBarracks,
DeepDungeon,
Seasonal,
TreasureMapInstance,
SeasonalInstancedArea,
TripleTriadBattlehall,
ChaoticRaid,
CrystallineConflictCustomMatch,
DiademHuntingGrounds,
RivalWings,
Unknown40,
Eureka,
Unknown42,
TheCalamityRetold,
LeapOfFaith,
MaskedCarnival,
OceanFishing,
Diadem,
Bozja,
IslandSanctuary,
TripleTriadOpenTournament,
TripleTriadInvitationalParlor,
DelubrumReginae,
DelubrumReginaeSavage,
EndwalkerMsqSoloOverworld,
Unknown55,
Elysion,
CriterionDungeon,
CriterionDungeonSavage,
Blunderville,
CosmicExploration,
OccultCrescent,
Unknown62,
Unknown63,
Unknown64
}

View file

@ -0,0 +1,470 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Runtime.CompilerServices;
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Game.ClientState.Objects.SubKinds;
using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.Game.Character;
using FFXIVClientStructs.FFXIV.Component.GUI;
using LLib.GameUI;
using Lumina.Excel.Sheets;
using Microsoft.Extensions.Logging;
namespace LLib.GameData;
public sealed class GameStateHelper
{
private readonly IDataManager _dataManager;
private readonly IClientState _clientState;
private readonly ICondition _condition;
private readonly IObjectTable _objectTable;
private readonly IGameGui _gameGui;
private readonly ILogger<GameStateHelper> _logger;
private readonly ReadOnlyDictionary<uint, uint> _territoryToAetherCurrentCompFlgSet;
public GameStateHelper(IDataManager dataManager, IClientState clientState, ICondition condition, IObjectTable objectTable, IGameGui gameGui, ILogger<GameStateHelper> logger)
{
_dataManager = dataManager;
_clientState = clientState;
_condition = condition;
_objectTable = objectTable;
_gameGui = gameGui;
_logger = logger;
_territoryToAetherCurrentCompFlgSet = (from x in dataManager.GetExcelSheet<TerritoryType>()
where x.RowId != 0
where x.AetherCurrentCompFlgSet.RowId != 0
select x).ToDictionary((TerritoryType x) => x.RowId, (TerritoryType x) => x.AetherCurrentCompFlgSet.RowId).AsReadOnly();
}
public bool IsFlyingUnlocked(uint territoryId)
{
uint value;
int num = ((!_territoryToAetherCurrentCompFlgSet.TryGetValue(territoryId, out value)) ? 403824667 : 403824666);
while (true)
{
int num2 = num;
int num3 = 403824667;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
goto IL_004e;
case 0:
return false;
case 1:
return PlayerStateHelper.IsAetherCurrentZoneComplete(value);
}
continue;
IL_004e:
num = 403824666;
}
}
public bool IsFlyingUnlockedInCurrentZone()
{
return IsFlyingUnlocked(_206E_200D_200F_206A_202B_200B_206B_206B_200E_200D_202A_206A_200D_206F_200E_200E_200E_206D_202A_206E_206C_200F_200D_206A_200D_200F_200E_206D_206E_206B_200E_200F_202E_200E_202C_200C_202A_206E_200F_206E_202E(_clientState));
}
public unsafe ushort? GetMountId()
{
IPlayerCharacter playerCharacter = _200F_206D_206D_202B_202B_200E_200D_200F_200C_202C_200E_202A_200E_202A_206D_202D_206D_200E_202B_200E_202C_202A_200D_206D_202E_202E_202A_202D_206D_206B_206A_202D_202D_200D_202C_206C_206B_200F_202B_202B_202E(_objectTable);
int num = ((playerCharacter != null) ? 1199000575 : 1199000574);
BattleChara* ptr = default(BattleChara*);
while (true)
{
int num2 = num;
int num3 = 1199000570;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 1:
num = ((ptr->Mount.MountId != 0) ? 1199000568 : 1199000569);
break;
case 4:
return null;
case 5:
ptr = (BattleChara*)_202B_206A_206C_202B_206B_202C_202C_206B_206F_206E_206D_206F_202E_200B_206D_202E_206A_206A_206A_200C_206E_200B_206C_200C_200D_206D_202C_206E_206D_202E_200B_202B_206C_202A_202E_206A_202E_206B_202E_202B_202E((IGameObject)playerCharacter);
num = ((ptr == null) ? 1199000569 : 1199000571);
break;
case 3:
return null;
case 2:
return ptr->Mount.MountId;
case 0:
num = 1199000574;
break;
}
}
}
public unsafe bool HasStatusPreventingMount()
{
int num = ((!_202D_206E_206A_206C_206E_202D_200B_200D_200B_202E_200B_206E_200E_200D_200B_200E_202C_206F_206A_206C_202C_202B_200D_206E_202A_202D_202C_202D_200B_200F_200E_206E_200F_206E_206C_202A_206A_202D_202C_202E(_condition, ConditionFlag.Swimming)) ? (-1891317293) : (-1891317282));
IPlayerCharacter playerCharacter = default(IPlayerCharacter);
StatusManager* statusManager = default(StatusManager*);
while (true)
{
int num2 = num;
int num3 = -1891317286;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 8:
return false;
case 4:
num = (IsFlyingUnlockedInCurrentZone() ? (-1891317293) : (-1891317288));
break;
case 7:
{
BattleChara* ptr = (BattleChara*)_202B_206A_206C_202B_206B_202C_202C_206B_206F_206E_206D_206F_202E_200B_206D_202E_206A_206A_206A_200C_206E_200B_206C_200C_200D_206D_202C_206E_206D_202E_200B_202B_206C_202A_202E_206A_202E_206B_202E_202B_202E((IGameObject)playerCharacter);
statusManager = ptr->GetStatusManager();
num = (statusManager->HasStatus(1151u) ? (-1891317287) : (-1891317296));
break;
}
case 5:
num = -1891317282;
break;
case 9:
num = (PlayerStateHelper.IsAnyMountUnlocked() ? (-1891317286) : (-1891317285));
break;
case 10:
num = ((!statusManager->HasStatus(1945u)) ? (-1891317284) : (-1891317287));
break;
case 6:
return HasStatusPreventingMountOrSprint();
case 3:
return true;
case 1:
return true;
case 0:
playerCharacter = _200F_206D_206D_202B_202B_200E_200D_200F_200C_202C_200E_202A_200E_202A_206D_202D_206D_200E_202B_200E_202C_202A_200D_206D_202E_202E_202A_202D_206D_206B_206A_202D_202D_200D_202C_206C_206B_200F_202B_202B_202E(_objectTable);
num = ((playerCharacter != null) ? (-1891317283) : (-1891317294));
break;
case 2:
return true;
}
}
}
public bool HasStatusPreventingSprint()
{
return HasStatusPreventingMountOrSprint();
}
[MethodImpl(MethodImplOptions.NoInlining)]
public unsafe bool Mount(uint preferredMountId = 0u)
{
int num = ((!_202D_206E_206A_206C_206E_202D_200B_200D_200B_202E_200B_206E_200E_200D_200B_200E_202C_206F_206A_206C_202C_202B_200D_206E_202A_202D_202C_202D_200B_200F_200E_206E_200F_206E_206C_202A_206A_202D_202C_202E(_condition, ConditionFlag.Mounted)) ? (-2056897107) : (-2056897108));
while (true)
{
int num2 = num;
int num3 = -2056897114;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 13:
num = -2056897108;
break;
case 9:
num = ((ActionManager.Instance()->GetActionStatus(ActionType.GeneralAction, 9u, 3758096384uL, checkRecastActive: true, checkCastingActive: true, null) != 0) ? (-2056897118) : (-2056897113));
break;
case 3:
return false;
case 8:
num = ((!PlayerStateHelper.IsMountUnlocked(preferredMountId)) ? (-2056897105) : (-2056897116));
break;
case 4:
return false;
case 7:
_202D_202E_206F_202A_206D_206A_206B_200C_202A_200D_206B_202C_202C_202C_206E_202E_206F_202E_200B_206C_206E_202A_206A_202D_200F_206B_200D_202D_206D_200F_202D_202C_206E_206D_200D_202B_202B_200C_202D_206A_202E((ILogger)_logger, global::_003CModule_003E._206E_202B_206C_202A_202A_200E_202B_202B_206D_200B_200C_206B_200B_206D_202E_202D_206C_202B_200B_206A_202D_206C_202A_200F_202D_200C_200B_200B_200B_200D_202C_206E_206D_202E_200C_206B_206A_206D_202D_202C_202E<string>(-1476715702), new object[1] { preferredMountId });
num = ((!ActionManager.Instance()->UseAction(ActionType.Mount, preferredMountId, 3758096384uL, 0u, ActionManager.UseActionMode.None, 0u, null)) ? (-2056897115) : (-2056897117));
break;
case 6:
_200B_206F_202B_202C_200E_206D_206A_202A_202C_200B_202B_206D_206F_200D_206D_206A_206A_202E_200F_202C_200E_202E_200C_202E_206D_202C_200D_206E_200B_200E_206B_202C_200B_200E_206F_202E_202D_206C_202D_202E((ILogger)_logger, global::_003CModule_003E._202E_202C_206D_206B_202B_202D_206D_202E_206F_202E_202A_206A_206A_202B_206A_202D_202C_206C_206B_202C_206E_202B_200E_206E_206A_206C_200D_200D_200F_200B_202C_200B_200E_206F_202C_200F_202D_202A_206E_202B_202E<string>(1773045698), Array.Empty<object>());
return true;
case 10:
return true;
case 1:
_202D_202E_206F_202A_206D_206A_206B_200C_202A_200D_206B_202C_202C_202C_206E_202E_206F_202E_200B_206C_206E_202A_206A_202D_200F_206B_200D_202D_206D_200F_202D_202C_206E_206D_200D_202B_202B_200C_202D_206A_202E((ILogger)_logger, global::_003CModule_003E._206A_206D_202C_206E_206D_206E_202A_200F_200D_206A_200F_206C_202C_202D_206D_206A_200D_200F_206A_206C_202C_206D_206E_200F_200F_200C_206B_200B_206B_206E_202B_206B_200E_200E_200B_206F_200F_202E_200C_200C_202E<string>(-1930041306), Array.Empty<object>());
num = ((!ActionManager.Instance()->UseAction(ActionType.GeneralAction, 9u, 3758096384uL, 0u, ActionManager.UseActionMode.None, 0u, null)) ? (-2056897118) : (-2056897120));
break;
case 2:
num = ((ActionManager.Instance()->GetActionStatus(ActionType.Mount, preferredMountId, 3758096384uL, checkRecastActive: true, checkCastingActive: true, null) != 0) ? (-2056897115) : (-2056897119));
break;
case 5:
_200B_206F_202B_202C_200E_206D_206A_202A_202C_200B_202B_206D_206F_200D_206D_206A_206A_202E_200F_202C_200E_202E_200C_202E_206D_202C_200D_206E_200B_200E_206B_202C_200B_200E_206F_202E_202D_206C_202D_202E((ILogger)_logger, global::_003CModule_003E._202E_202C_206D_206B_202B_202D_206D_202E_206F_202E_202A_206A_206A_202B_206A_202D_202C_206C_206B_202C_206E_202B_200E_206E_206A_206C_200D_200D_200F_200B_202C_200B_200E_206F_202C_200F_202D_202A_206E_202B_202E<string>(-297265243), new object[1] { preferredMountId });
return true;
case 11:
num = ((!HasStatusPreventingMount()) ? (-2056897114) : (-2056897110));
break;
case 0:
num = ((preferredMountId == 0) ? (-2056897105) : (-2056897106));
break;
case 12:
_202D_202E_206F_202A_206D_206A_206B_200C_202A_200D_206B_202C_202C_202C_206E_202E_206F_202E_200B_206C_206E_202A_206A_202D_200F_206B_200D_202D_206D_200F_202D_202C_206E_206D_200D_202B_202B_200C_202D_206A_202E((ILogger)_logger, global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(-1799024315), Array.Empty<object>());
return false;
}
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
public unsafe bool Unmount()
{
int num = (_202D_206E_206A_206C_206E_202D_200B_200D_200B_202E_200B_206E_200E_200D_200B_200E_202C_206F_206A_206C_202C_202B_200D_206E_202A_202D_202C_202D_200B_200F_200E_206E_200F_206E_206C_202A_206A_202D_202C_202E(_condition, ConditionFlag.Mounted) ? (-837931161) : (-837931166));
while (true)
{
int num2 = num;
int num3 = -837931167;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
num = -837931166;
break;
case 3:
return true;
case 1:
_202D_202E_206F_202A_206D_206A_206B_200C_202A_200D_206B_202C_202C_202C_206E_202E_206F_202E_200B_206C_206E_202A_206A_202D_200F_206B_200D_202D_206D_200F_202D_202C_206E_206D_200D_202B_202B_200C_202D_206A_202E((ILogger)_logger, global::_003CModule_003E._206A_206D_202C_206E_206D_206E_202A_200F_200D_206A_200F_206C_202C_202D_206D_206A_200D_200F_206A_206C_202C_206D_206E_200F_200F_200C_206B_200B_206B_206E_202B_206B_200E_200E_200B_206F_200F_202E_200C_200C_202E<string>(-714588632), Array.Empty<object>());
return false;
case 0:
_202D_202E_206F_202A_206D_206A_206B_200C_202A_200D_206B_202C_202C_202C_206E_202E_206F_202E_200B_206C_206E_202A_206A_202D_200F_206B_200D_202D_206D_200F_202D_202C_206E_206D_200D_202B_202B_200C_202D_206A_202E((ILogger)_logger, global::_003CModule_003E._206A_206D_202C_206E_206D_206E_202A_200F_200D_206A_200F_206C_202C_202D_206D_206A_200D_200F_206A_206C_202C_206D_206E_200F_200F_200C_206B_200B_206B_206E_202B_206B_200E_200E_200B_206F_200F_202E_200C_200C_202E<string>(-1741093506), Array.Empty<object>());
num = ((!ActionManager.Instance()->UseAction(ActionType.GeneralAction, 23u, 3758096384uL, 0u, ActionManager.UseActionMode.None, 0u, null)) ? (-837931163) : (-837931164));
break;
case 6:
num = ((ActionManager.Instance()->GetActionStatus(ActionType.GeneralAction, 23u, 3758096384uL, checkRecastActive: true, checkCastingActive: true, null) == 0) ? (-837931167) : (-837931168));
break;
case 5:
_200B_206F_202B_202C_200E_206D_206A_202A_202C_200B_202B_206D_206F_200D_206D_206A_206A_202E_200F_202C_200E_202E_200C_202E_206D_202C_200D_206E_200B_200E_206B_202C_200B_200E_206F_202E_202D_206C_202D_202E((ILogger)_logger, global::_003CModule_003E._202E_202C_206D_206B_202B_202D_206D_202E_206F_202E_202A_206A_206A_202B_206A_202D_202C_206C_206B_202C_206E_202B_200E_206E_206A_206C_200D_200D_200F_200B_202C_200B_200E_206F_202C_200F_202D_202A_206E_202B_202E<string>(-97506348), Array.Empty<object>());
return true;
case 4:
return false;
}
}
}
public unsafe int? GetFreeInventorySlots()
{
InventoryManager* ptr = InventoryManager.Instance();
int num = ((ptr != null) ? (-1831709052) : (-1831709042));
int num7 = default(int);
int num8 = default(int);
InventoryType inventoryType = default(InventoryType);
InventoryContainer* inventoryContainer = default(InventoryContainer*);
InventoryItem* inventorySlot = default(InventoryItem*);
while (true)
{
int num2 = num;
int num3 = -1831709050;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 1:
{
int num10 = num7;
num3 = 1;
num4 = num10;
int num11 = num4 ^ num3;
int num12 = num4 & num3;
num7 = num11 + (num12 + num12);
num = -1831709055;
break;
}
case 7:
{
int num9 = num8;
num3 = 1;
num4 = num9;
num8 = (num4 | num3) + (num4 & num3);
num = -1831709054;
break;
}
case 12:
num = ((inventoryType <= InventoryType.Inventory4) ? (-1831709053) : (-1831709050));
break;
case 11:
num8 = 0;
num = -1831709054;
break;
case 8:
return null;
case 0:
return num7;
case 13:
num = -1831709042;
break;
case 3:
return null;
case 5:
inventoryContainer = ptr->GetInventoryContainer(inventoryType);
num = ((inventoryContainer != null) ? (-1831709043) : (-1831709051));
break;
case 10:
num = ((inventorySlot->ItemId != 0) ? (-1831709055) : (-1831709049));
break;
case 4:
num = ((num8 < inventoryContainer->Size) ? (-1831709056) : (-1831709041));
break;
case 6:
inventorySlot = inventoryContainer->GetInventorySlot(num8);
num = ((inventorySlot == null) ? (-1831709049) : (-1831709044));
break;
case 2:
num7 = 0;
inventoryType = InventoryType.Inventory1;
num = -1831709046;
break;
case 9:
inventoryType++;
num = -1831709046;
break;
}
}
}
public uint GetItemLevel(uint itemId)
{
return _dataManager.GetExcelSheet<Item>().GetRowOrDefault(itemId)?.LevelItem.RowId ?? 0;
}
[MethodImpl(MethodImplOptions.NoInlining)]
public unsafe bool IsLoadingScreenVisible()
{
AtkUnitBase* addonPtr;
int num = ((!_gameGui.TryGetAddonByName<AtkUnitBase>(global::_003CModule_003E._200E_206F_206C_206C_200E_202A_206D_206B_200B_202D_202B_200F_200F_206B_206C_206F_202D_206F_206A_202D_206A_200B_200B_202B_202D_202C_200F_200D_202E_200E_200D_202A_202B_206F_202E_200E_200B_206B_200E_202E_202E<string>(108265439), out addonPtr)) ? (-1210184014) : (-1210184015));
while (true)
{
int num2 = num;
int num3 = -1210184006;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 10:
return true;
case 4:
num = ((!LAddon.IsAddonReady(addonPtr)) ? (-1210184004) : (-1210184003));
break;
case 0:
num = ((!LAddon.IsAddonReady(addonPtr)) ? (-1210184008) : (-1210184013));
break;
case 6:
return false;
case 5:
return true;
case 3:
num = -1210184015;
break;
case 8:
num = ((!_gameGui.TryGetAddonByName<AtkUnitBase>(global::_003CModule_003E._202E_202C_206D_206B_202B_202D_206D_202E_206F_202E_202A_206A_206A_202B_206A_202D_202C_206C_206B_202C_206E_202B_200E_206E_206A_206C_200D_200D_200F_200B_202C_200B_200E_206F_202C_200F_202D_202A_206E_202B_202E<string>(-342678724), out addonPtr)) ? (-1210184008) : (-1210184006));
break;
case 9:
num = ((!addonPtr->IsVisible) ? (-1210184008) : (-1210184016));
break;
case 2:
num = ((!_gameGui.TryGetAddonByName<AtkUnitBase>(global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(190562947), out addonPtr)) ? (-1210184004) : (-1210184002));
break;
case 11:
num = ((!LAddon.IsAddonReady(addonPtr)) ? (-1210184014) : (-1210184005));
break;
case 7:
num = ((!addonPtr->IsVisible) ? (-1210184004) : (-1210184010));
break;
case 12:
return true;
case 1:
num = ((!addonPtr->IsVisible) ? (-1210184014) : (-1210184001));
break;
}
}
}
private unsafe bool HasStatusPreventingMountOrSprint()
{
IPlayerCharacter playerCharacter = _200F_206D_206D_202B_202B_200E_200D_200F_200C_202C_200E_202A_200E_202A_206D_202D_206D_200E_202B_200E_202C_202A_200D_206D_202E_202E_202A_202D_206D_206B_206A_202D_202D_200D_202C_206C_206B_200F_202B_202B_202E(_objectTable);
int num = ((playerCharacter != null) ? 509350324 : 509350327);
StatusManager* statusManager = default(StatusManager*);
while (true)
{
int num2 = num;
int num3 = 509350321;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
num = (statusManager->HasStatus(404u) ? 509350322 : 509350323);
break;
case 1:
return statusManager->HasStatus(2730u);
case 7:
num = (statusManager->HasStatus(2729u) ? 509350322 : 509350320);
break;
case 4:
num = 509350327;
break;
case 6:
return false;
case 2:
num = (statusManager->HasStatus(416u) ? 509350322 : 509350326);
break;
case 5:
{
BattleChara* ptr = (BattleChara*)_202B_206A_206C_202B_206B_202C_202C_206B_206F_206E_206D_206F_202E_200B_206D_202E_206A_206A_206A_200C_206E_200B_206C_200C_200D_206D_202C_206E_206D_202E_200B_202B_206C_202A_202E_206A_202E_206B_202E_202B_202E((IGameObject)playerCharacter);
statusManager = ptr->GetStatusManager();
num = (statusManager->HasStatus(565u) ? 509350322 : 509350321);
break;
}
case 3:
return true;
}
}
}
static uint _206E_200D_200F_206A_202B_200B_206B_206B_200E_200D_202A_206A_200D_206F_200E_200E_200E_206D_202A_206E_206C_200F_200D_206A_200D_200F_200E_206D_206E_206B_200E_200F_202E_200E_202C_200C_202A_206E_200F_206E_202E(IClientState P_0)
{
return P_0.TerritoryType;
}
static IPlayerCharacter _200F_206D_206D_202B_202B_200E_200D_200F_200C_202C_200E_202A_200E_202A_206D_202D_206D_200E_202B_200E_202C_202A_200D_206D_202E_202E_202A_202D_206D_206B_206A_202D_202D_200D_202C_206C_206B_200F_202B_202B_202E(IObjectTable P_0)
{
return P_0.LocalPlayer;
}
static nint _202B_206A_206C_202B_206B_202C_202C_206B_206F_206E_206D_206F_202E_200B_206D_202E_206A_206A_206A_200C_206E_200B_206C_200C_200D_206D_202C_206E_206D_202E_200B_202B_206C_202A_202E_206A_202E_206B_202E_202B_202E(IGameObject P_0)
{
return P_0.Address;
}
static bool _202D_206E_206A_206C_206E_202D_200B_200D_200B_202E_200B_206E_200E_200D_200B_200E_202C_206F_206A_206C_202C_202B_200D_206E_202A_202D_202C_202D_200B_200F_200E_206E_200F_206E_206C_202A_206A_202D_202C_202E(ICondition P_0, ConditionFlag P_1)
{
return P_0[P_1];
}
static void _202D_202E_206F_202A_206D_206A_206B_200C_202A_200D_206B_202C_202C_202C_206E_202E_206F_202E_200B_206C_206E_202A_206A_202D_200F_206B_200D_202D_206D_200F_202D_202C_206E_206D_200D_202B_202B_200C_202D_206A_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static void _200B_206F_202B_202C_200E_206D_206A_202A_202C_200B_202B_206D_206F_200D_206D_206A_206A_202E_200F_202C_200E_202E_200C_202E_206D_202C_200D_206E_200B_200E_206B_202C_200B_200E_206F_202E_202D_206C_202D_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogInformation(P_1, P_2);
}
}

View file

@ -0,0 +1,62 @@
using FFXIVClientStructs.FFXIV.Client.Game.UI;
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
namespace LLib.GameData;
public static class GrandCompanyHelper
{
public static GrandCompany GetGrandCompany()
{
return (GrandCompany)GetGrandCompanyId();
}
public unsafe static byte GetGrandCompanyId()
{
PlayerState* ptr = PlayerState.Instance();
int num = ((ptr != null) ? (-333040930) : (-333040931));
while (true)
{
int num2 = num;
int num3 = -333040929;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
goto IL_004b;
case 1:
return ptr->GrandCompany;
case 2:
return 0;
}
continue;
IL_004b:
num = -333040931;
}
}
public unsafe static byte GetGrandCompanyRank()
{
PlayerState* ptr = PlayerState.Instance();
int num = ((ptr != null) ? 871865385 : 871865386);
while (true)
{
int num2 = num;
int num3 = 871865387;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
goto IL_0049;
case 2:
return ptr->GetGrandCompanyRank();
case 1:
return 0;
}
continue;
IL_0049:
num = 871865386;
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,175 @@
using System;
using System.Collections.Generic;
using System.Numerics;
using System.Runtime.CompilerServices;
using System.Text;
namespace LLib.GameData;
public readonly record struct PublicEvent(EPublicEventType Type, uint Id, string Name, Vector3 Position, float Radius, byte Level, byte MaxLevel, float Progress, float Duration, float TimeRemaining, bool IsActive, bool IsPending, bool HasBonus, byte FateRule, uint MotivationNpcDataId, ushort ChainFateId)
{
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
public override string ToString()
{
StringBuilder stringBuilder = _206D_206E_202C_202E_206E_202B_200B_206C_200C_206A_206D_202D_202D_200D_200C_206F_200B_200C_206D_206A_200B_202D_200F_206B_206A_206E_202A_202C_206E_206B_206E_202C_200E_206E_202A_206D_202B_200D_202B_200F_202E();
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(stringBuilder, global::_003CModule_003E._206A_206D_202C_206E_206D_206E_202A_200F_200D_206A_200F_206C_202C_202D_206D_206A_200D_200F_206A_206C_202C_206D_206E_200F_200F_200C_206B_200B_206B_206E_202B_206B_200E_200E_200B_206F_200F_202E_200C_200C_202E<string>(-1204097607));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(stringBuilder, global::_003CModule_003E._200E_206F_206C_206C_200E_202A_206D_206B_200B_202D_202B_200F_200F_206B_206C_206F_202D_206F_206A_202D_206A_200B_200B_202B_202D_202C_200F_200D_202E_200E_200D_202A_202B_206F_202E_200E_200B_206B_200E_202E_202E<string>(579144622));
int num = ((!PrintMembers(stringBuilder)) ? 1670321463 : 1670321462);
while (true)
{
int num2 = num;
int num3 = 1670321463;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 2:
num = 1670321462;
break;
case 1:
_202D_206C_206C_200D_202B_202A_202C_202A_200F_206D_206D_202C_206F_202D_206A_202B_200B_200C_202D_202C_200E_206B_200D_206F_206F_206C_206E_200C_200D_200E_206A_200B_202C_200C_202A_206D_202B_200C_202E_200E_202E(stringBuilder, ' ');
num = 1670321463;
break;
case 0:
_202D_206C_206C_200D_202B_202A_202C_202A_200F_206D_206D_202C_206F_202D_206A_202B_200B_200C_202D_202C_200E_206B_200D_206F_206F_206C_206E_200C_200D_200E_206A_200B_202C_200C_202A_206D_202B_200C_202E_200E_202E(stringBuilder, '}');
return _202C_202D_206B_206A_206C_206B_206C_206B_206C_200E_206E_200E_202B_206B_200B_200D_202C_202D_206E_206F_206F_200B_206A_200B_206D_202E_200D_200C_202E_200E_200B_200E_200B_202E_202D_200F_206B_200B_202E_202E_202E((object)stringBuilder);
}
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
[CompilerGenerated]
private bool PrintMembers(StringBuilder builder)
{
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._206E_202B_206C_202A_202A_200E_202B_202B_206D_200B_200C_206B_200B_206D_202E_202D_206C_202B_200B_206A_202D_206C_202A_200F_202D_200C_200B_200B_200B_200D_202C_206E_206D_202E_200C_206B_206A_206D_202D_202C_202E<string>(1703345461));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, Type.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._206A_206D_202C_206E_206D_206E_202A_200F_200D_206A_200F_206C_202C_202D_206D_206A_200D_200F_206A_206C_202C_206D_206E_200F_200F_200C_206B_200B_206B_206E_202B_206B_200E_200E_200B_206F_200F_202E_200C_200C_202E<string>(1294221790));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, Id.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._206A_206D_202C_206E_206D_206E_202A_200F_200D_206A_200F_206C_202C_202D_206D_206A_200D_200F_206A_206C_202C_206D_206E_200F_200F_200C_206B_200B_206B_206E_202B_206B_200E_200E_200B_206F_200F_202E_200C_200C_202E<string>(-596371270));
_202D_206C_202B_202E_202D_202D_202C_206E_202D_202C_202D_202E_202E_206F_202A_200C_206A_206B_206A_200E_206D_202A_202A_202E_202B_200F_202D_200D_202D_200D_200B_206F_200F_206D_206A_200D_202B_202C_206B_202D_202E(builder, (object)Name);
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._202E_202C_206D_206B_202B_202D_206D_202E_206F_202E_202A_206A_206A_202B_206A_202D_202C_206C_206B_202C_206E_202B_200E_206E_206A_206C_200D_200D_200F_200B_202C_200B_200E_206F_202C_200F_202D_202A_206E_202B_202E<string>(-1841021490));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, Position.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(-1574188482));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, Radius.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._206E_202B_206C_202A_202A_200E_202B_202B_206D_200B_200C_206B_200B_206D_202E_202D_206C_202B_200B_206A_202D_206C_202A_200F_202D_200C_200B_200B_200B_200D_202C_206E_206D_202E_200C_206B_206A_206D_202D_202C_202E<string>(-1538801490));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, Level.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._206A_206D_202C_206E_206D_206E_202A_200F_200D_206A_200F_206C_202C_202D_206D_206A_200D_200F_206A_206C_202C_206D_206E_200F_200F_200C_206B_200B_206B_206E_202B_206B_200E_200E_200B_206F_200F_202E_200C_200C_202E<string>(1645586278));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, MaxLevel.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._206A_206D_202C_206E_206D_206E_202A_200F_200D_206A_200F_206C_202C_202D_206D_206A_200D_200F_206A_206C_202C_206D_206E_200F_200F_200C_206B_200B_206B_206E_202B_206B_200E_200E_200B_206F_200F_202E_200C_200C_202E<string>(-1015149807));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, Progress.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._206E_202B_206C_202A_202A_200E_202B_202B_206D_200B_200C_206B_200B_206D_202E_202D_206C_202B_200B_206A_202D_206C_202A_200F_202D_200C_200B_200B_200B_200D_202C_206E_206D_202E_200C_206B_206A_206D_202D_202C_202E<string>(1063554664));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, Duration.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._206E_202B_206C_202A_202A_200E_202B_202B_206D_200B_200C_206B_200B_206D_202E_202D_206C_202B_200B_206A_202D_206C_202A_200F_202D_200C_200B_200B_200B_200D_202C_206E_206D_202E_200C_206B_206A_206D_202D_202C_202E<string>(-1641383873));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, TimeRemaining.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._206A_206D_202C_206E_206D_206E_202A_200F_200D_206A_200F_206C_202C_202D_206D_206A_200D_200F_206A_206C_202C_206D_206E_200F_200F_200C_206B_200B_206B_206E_202B_206B_200E_200E_200B_206F_200F_202E_200C_200C_202E<string>(-889184607));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, IsActive.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._202E_202C_206D_206B_202B_202D_206D_202E_206F_202E_202A_206A_206A_202B_206A_202D_202C_206C_206B_202C_206E_202B_200E_206E_206A_206C_200D_200D_200F_200B_202C_200B_200E_206F_202C_200F_202D_202A_206E_202B_202E<string>(-1150615736));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, IsPending.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._202E_202C_206D_206B_202B_202D_206D_202E_206F_202E_202A_206A_206A_202B_206A_202D_202C_206C_206B_202C_206E_202B_200E_206E_206A_206C_200D_200D_200F_200B_202C_200B_200E_206F_202C_200F_202D_202A_206E_202B_202E<string>(-460512089));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, HasBonus.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(-713893414));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, FateRule.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._206E_202B_206C_202A_202A_200E_202B_202B_206D_200B_200C_206B_200B_206D_202E_202D_206C_202B_200B_206A_202D_206C_202A_200F_202D_200C_200B_200B_200B_200D_202C_206E_206D_202E_200C_206B_206A_206D_202D_202C_202E<string>(-1765562739));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, MotivationNpcDataId.ToString());
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(1235406246));
_202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(builder, ChainFateId.ToString());
return true;
}
[CompilerGenerated]
public bool Equals(PublicEvent other)
{
int num = ((!EqualityComparer<EPublicEventType>.Default.Equals(Type, other.Type)) ? (-285443445) : (-285443439));
while (true)
{
int num2 = num;
int num3 = -285443429;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 3:
num = ((!EqualityComparer<Vector3>.Default.Equals(Position, other.Position)) ? (-285443445) : (-285443431));
break;
case 6:
num = ((!EqualityComparer<bool>.Default.Equals(HasBonus, other.HasBonus)) ? (-285443445) : (-285443435));
break;
case 4:
num = ((!EqualityComparer<byte>.Default.Equals(Level, other.Level)) ? (-285443445) : (-285443437));
break;
case 5:
num = -285443439;
break;
case 2:
num = ((!EqualityComparer<float>.Default.Equals(Radius, other.Radius)) ? (-285443445) : (-285443425));
break;
case 14:
num = ((!EqualityComparer<byte>.Default.Equals(FateRule, other.FateRule)) ? (-285443445) : (-285443434));
break;
case 15:
return EqualityComparer<ushort>.Default.Equals(ChainFateId, other.ChainFateId);
case 10:
num = ((!EqualityComparer<uint>.Default.Equals(Id, other.Id)) ? (-285443445) : (-285443429));
break;
case 1:
num = ((!EqualityComparer<float>.Default.Equals(Progress, other.Progress)) ? (-285443445) : (-285443433));
break;
case 16:
return false;
case 8:
num = ((!EqualityComparer<byte>.Default.Equals(MaxLevel, other.MaxLevel)) ? (-285443445) : (-285443430));
break;
case 7:
num = ((!EqualityComparer<float>.Default.Equals(TimeRemaining, other.TimeRemaining)) ? (-285443445) : (-285443438));
break;
case 9:
num = ((!EqualityComparer<bool>.Default.Equals(IsActive, other.IsActive)) ? (-285443445) : (-285443440));
break;
case 13:
num = ((!EqualityComparer<uint>.Default.Equals(MotivationNpcDataId, other.MotivationNpcDataId)) ? (-285443445) : (-285443436));
break;
case 12:
num = ((!EqualityComparer<float>.Default.Equals(Duration, other.Duration)) ? (-285443445) : (-285443428));
break;
case 11:
num = ((!EqualityComparer<bool>.Default.Equals(IsPending, other.IsPending)) ? (-285443445) : (-285443427));
break;
case 0:
num = ((!EqualityComparer<string>.Default.Equals(Name, other.Name)) ? (-285443445) : (-285443432));
break;
}
}
}
bool IEquatable<PublicEvent>.Equals(PublicEvent other)
{
//ILSpy generated this explicit interface implementation from .override directive in Equals
return this.Equals(other);
}
static StringBuilder _206D_206E_202C_202E_206E_202B_200B_206C_200C_206A_206D_202D_202D_200D_200C_206F_200B_200C_206D_206A_200B_202D_200F_206B_206A_206E_202A_202C_206E_206B_206E_202C_200E_206E_202A_206D_202B_200D_202B_200F_202E()
{
return new StringBuilder();
}
static StringBuilder _202E_200D_202E_202A_206C_202E_200C_200B_202B_200F_200D_200F_202C_202B_200C_200F_202A_200D_200C_202C_202A_202D_206D_206F_202D_206F_202C_202E_206B_202D_202A_206F_200E_200E_202E_202E_202B_206E_202C_202A_202E(StringBuilder P_0, string P_1)
{
return P_0.Append(P_1);
}
static StringBuilder _202D_206C_206C_200D_202B_202A_202C_202A_200F_206D_206D_202C_206F_202D_206A_202B_200B_200C_202D_202C_200E_206B_200D_206F_206F_206C_206E_200C_200D_200E_206A_200B_202C_200C_202A_206D_202B_200C_202E_200E_202E(StringBuilder P_0, char P_1)
{
return P_0.Append(P_1);
}
static string _202C_202D_206B_206A_206C_206B_206C_206B_206C_200E_206E_200E_202B_206B_200B_200D_202C_202D_206E_206F_206F_200B_206A_200B_206D_202E_200D_200C_202E_200E_200B_200E_200B_202E_202D_200F_206B_200B_202E_202E_202E(object P_0)
{
return P_0.ToString();
}
static StringBuilder _202D_206C_202B_202E_202D_202D_202C_206E_202D_202C_202D_202E_202E_206F_202A_200C_206A_206B_206A_200E_206D_202A_202A_202E_202B_200F_202D_200D_202D_200D_200B_206F_200F_206D_206A_200D_202B_202C_206B_202D_202E(StringBuilder P_0, object P_1)
{
return P_0.Append(P_1);
}
}

View file

@ -0,0 +1,731 @@
using System;
using System.Collections.Generic;
using System.Numerics;
using FFXIVClientStructs.FFXIV.Client.Game.Fate;
using FFXIVClientStructs.FFXIV.Client.Game.InstanceContent;
using FFXIVClientStructs.FFXIV.Client.Game.WKS;
namespace LLib.GameData;
public sealed class PublicEventHelper
{
public unsafe IReadOnlyList<PublicEvent> GetActiveFates()
{
FateManager* ptr = FateManager.Instance();
int num = ((ptr != null) ? (-2066813597) : (-2066813594));
List<PublicEvent> list = default(List<PublicEvent>);
int num5 = default(int);
FateContext* value = default(FateContext*);
bool flag = default(bool);
while (true)
{
int num2 = num;
int num3 = -2066813595;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 6:
list = new List<PublicEvent>();
num5 = 0;
num = -2066813588;
break;
case 5:
value = ptr->Fates[num5].Value;
num = ((value == null) ? (-2066813587) : (-2066813595));
break;
case 7:
num = -2066813594;
break;
case 10:
num = ((!flag) ? (-2066813587) : (-2066813586));
break;
case 0:
{
FateState state = value->State;
num = ((state - 3 > FateState.Unk1) ? (-2066813599) : (-2066813596));
break;
}
case 8:
{
int num6 = num5;
num3 = 1;
num4 = num6;
int num7 = num4 ^ num3;
int num8 = num4 & num3;
num5 = num7 + (num8 + num8);
num = -2066813588;
break;
}
case 1:
flag = true;
num = -2066813585;
break;
case 2:
return list;
case 4:
flag = false;
num = -2066813585;
break;
case 11:
list.Add(ToPublicEvent(value));
num = -2066813587;
break;
case 3:
return Array.Empty<PublicEvent>();
case 9:
num = ((num5 < ptr->Fates.Count) ? (-2066813600) : (-2066813593));
break;
}
}
}
public unsafe IReadOnlyList<PublicEvent> GetActiveDynamicEvents()
{
DynamicEventContainer* instance = DynamicEventContainer.GetInstance();
int num = ((instance != null) ? (-104590452) : (-104590451));
int num7 = default(int);
Span<DynamicEvent> events = default(Span<DynamicEvent>);
ref DynamicEvent reference = default(ref DynamicEvent);
List<PublicEvent> list = default(List<PublicEvent>);
while (true)
{
int num2 = num;
int num3 = -104590454;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 3:
num = ((num7 < events.Length) ? (-104590450) : (-104590456));
break;
case 7:
return Array.Empty<PublicEvent>();
case 5:
num = -104590451;
break;
case 4:
reference = ref events[num7];
num = ((reference.State == DynamicEventState.Inactive) ? (-104590454) : (-104590453));
break;
case 2:
return list;
case 1:
list.Add(ToPublicEvent(ref reference));
num = -104590454;
break;
case 0:
{
int num8 = num7;
num3 = 1;
num4 = num8;
num7 = (num4 | num3) + (num4 & num3);
num = -104590455;
break;
}
case 6:
list = new List<PublicEvent>();
events = instance->Events;
num7 = 0;
num = -104590455;
break;
}
}
}
public unsafe IReadOnlyList<PublicEvent> GetActiveMechaEvents()
{
WKSManager* ptr = WKSManager.Instance();
int num = ((ptr != null) ? 1500071953 : 1500071952);
ref WKSMechaEvent reference = default(ref WKSMechaEvent);
Span<WKSMechaEvent> events = default(Span<WKSMechaEvent>);
int num7 = default(int);
List<PublicEvent> list = default(List<PublicEvent>);
WKSMechaEventModule* mechaEventModule = default(WKSMechaEventModule*);
while (true)
{
int num2 = num;
int num3 = 1500071954;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 8:
reference = ref events[num7];
num = (((reference.Flags & WKSMechaEventFlag.IsEventActive) == 0) ? 1500071957 : 1500071955);
break;
case 5:
return list;
case 2:
return Array.Empty<PublicEvent>();
case 6:
return Array.Empty<PublicEvent>();
case 7:
{
int num8 = num7;
num3 = 1;
num4 = num8;
num7 = (num4 | num3) + (num4 & num3);
num = 1500071958;
break;
}
case 0:
num = 1500071952;
break;
case 4:
num = ((num7 < events.Length) ? 1500071962 : 1500071959);
break;
case 1:
list.Add(ToPublicEvent(ref reference));
num = 1500071957;
break;
case 3:
mechaEventModule = ptr->MechaEventModule;
num = ((mechaEventModule != null) ? 1500071963 : 1500071956);
break;
case 9:
list = new List<PublicEvent>();
events = mechaEventModule->Events;
num7 = 0;
num = 1500071958;
break;
}
}
}
public IReadOnlyList<PublicEvent> GetAllActiveEvents()
{
List<PublicEvent> list = new List<PublicEvent>();
list.AddRange(GetActiveFates());
list.AddRange(GetActiveDynamicEvents());
list.AddRange(GetActiveMechaEvents());
return list;
}
public PublicEvent? GetEventById(EPublicEventType type, uint id)
{
int num;
PublicEvent? result = default(PublicEvent?);
switch (type)
{
default:
num = 1438969819;
goto IL_001d;
case EPublicEventType.Fate:
result = GetFateById((ushort)id);
num = 1438969820;
goto IL_001d;
case EPublicEventType.DynamicEvent:
goto IL_006b;
case EPublicEventType.MechaEvent:
goto IL_00aa;
IL_001d:
while (true)
{
int num2 = num;
int num3 = 1438969816;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 6:
goto end_IL_001d;
case 4:
return result;
case 1:
goto IL_006b;
case 5:
num = 1438969819;
break;
case 0:
result = null;
num = 1438969820;
break;
case 3:
num = 1438969816;
break;
case 2:
goto IL_00aa;
}
continue;
end_IL_001d:
break;
}
goto case EPublicEventType.Fate;
IL_00aa:
result = GetMechaEventById(id);
num = 1438969820;
goto IL_001d;
IL_006b:
result = GetDynamicEventById((ushort)id);
num = 1438969820;
goto IL_001d;
}
}
public unsafe PublicEvent? GetCurrentPlayerEvent()
{
FateManager* ptr = FateManager.Instance();
int num = ((ptr == null) ? 2074475056 : 2074475058);
while (true)
{
int num2 = num;
int num3 = 2074475059;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
num = 2074475058;
break;
case 1:
num = ((ptr->CurrentFate != null) ? 2074475057 : 2074475056);
break;
case 3:
return null;
case 2:
return ToPublicEvent(ptr->CurrentFate);
}
}
}
public unsafe PublicEvent? GetCurrentDynamicEvent()
{
DynamicEventContainer* instance = DynamicEventContainer.GetInstance();
int num = ((instance != null) ? 285703707 : 285703710);
DynamicEvent* currentEvent = default(DynamicEvent*);
while (true)
{
int num2 = num;
int num3 = 285703707;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
currentEvent = instance->GetCurrentEvent();
num = ((currentEvent == null) ? 285703704 : 285703711);
break;
case 4:
num = ((currentEvent->State != DynamicEventState.Inactive) ? 285703706 : 285703704);
break;
case 2:
num = 285703710;
break;
case 3:
return null;
case 5:
return null;
case 1:
return ToPublicEvent(ref *currentEvent);
}
}
}
public unsafe PublicEvent? GetCurrentMechaEvent()
{
WKSManager* ptr = WKSManager.Instance();
int num = ((ptr != null) ? 599849311 : 599849304);
WKSMechaEvent* currentEvent = default(WKSMechaEvent*);
WKSMechaEventModule* mechaEventModule = default(WKSMechaEventModule*);
while (true)
{
int num2 = num;
int num3 = 599849305;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 3:
return ToPublicEvent(ref *currentEvent);
case 6:
mechaEventModule = ptr->MechaEventModule;
num = ((mechaEventModule != null) ? 599849308 : 599849307);
break;
case 7:
num = (((currentEvent->Flags & WKSMechaEventFlag.IsEventActive) != 0) ? 599849306 : 599849309);
break;
case 0:
num = 599849304;
break;
case 2:
return null;
case 4:
return null;
case 1:
return null;
case 5:
currentEvent = mechaEventModule->CurrentEvent;
num = ((currentEvent == null) ? 599849309 : 599849310);
break;
}
}
}
public unsafe bool IsFateActive(ushort fateId)
{
int num = ((fateId != 0) ? 1838657614 : 1838657615);
FateContext* fateById = default(FateContext*);
FateManager* ptr = default(FateManager*);
while (true)
{
int num2 = num;
int num3 = 1838657612;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 1:
return fateById->State == FateState.Running;
case 6:
return false;
case 3:
return false;
case 4:
fateById = ptr->GetFateById(fateId);
num = ((fateById != null) ? 1838657613 : 1838657610);
break;
case 2:
ptr = FateManager.Instance();
num = ((ptr != null) ? 1838657608 : 1838657609);
break;
case 5:
return false;
case 0:
num = 1838657615;
break;
}
}
}
private unsafe PublicEvent? GetFateById(ushort fateId)
{
int num = ((fateId != 0) ? (-1398838121) : (-1398838127));
FateContext* fateById = default(FateContext*);
FateManager* ptr = default(FateManager*);
while (true)
{
int num2 = num;
int num3 = -1398838126;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 1:
fateById = ptr->GetFateById(fateId);
num = ((fateById != null) ? (-1398838124) : (-1398838122));
break;
case 4:
return null;
case 3:
return null;
case 2:
return null;
case 6:
return ToPublicEvent(fateById);
case 5:
ptr = FateManager.Instance();
num = ((ptr != null) ? (-1398838125) : (-1398838128));
break;
case 0:
num = -1398838127;
break;
}
}
}
private unsafe PublicEvent? GetDynamicEventById(ushort dynamicEventId)
{
int num = ((dynamicEventId != 0) ? 190075853 : 190075849);
Span<DynamicEvent> events = default(Span<DynamicEvent>);
DynamicEventContainer* instance = default(DynamicEventContainer*);
int num5 = default(int);
ref DynamicEvent reference = default(ref DynamicEvent);
while (true)
{
int num2 = num;
int num3 = 190075855;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 1:
events = instance->Events;
num5 = 0;
num = 190075847;
break;
case 2:
instance = DynamicEventContainer.GetInstance();
num = ((instance != null) ? 190075854 : 190075852);
break;
case 10:
reference = ref events[num5];
num = ((reference.DynamicEventId != dynamicEventId) ? 190075851 : 190075848);
break;
case 0:
num = 190075849;
break;
case 4:
{
int num6 = num5;
num3 = 1;
num4 = num6;
num5 = (num4 | num3) + (num4 & num3);
num = 190075847;
break;
}
case 7:
num = ((reference.State == DynamicEventState.Inactive) ? 190075851 : 190075846);
break;
case 5:
return null;
case 9:
return ToPublicEvent(ref reference);
case 3:
return null;
case 6:
return null;
case 8:
num = ((num5 < events.Length) ? 190075845 : 190075850);
break;
}
}
}
private unsafe PublicEvent? GetMechaEventById(uint mechaEventDataRowId)
{
int num = ((mechaEventDataRowId != 0) ? 1662115952 : 1662115954);
int num5 = default(int);
Span<WKSMechaEvent> events = default(Span<WKSMechaEvent>);
WKSMechaEventModule* mechaEventModule = default(WKSMechaEventModule*);
WKSManager* ptr = default(WKSManager*);
ref WKSMechaEvent reference = default(ref WKSMechaEvent);
while (true)
{
int num2 = num;
int num3 = 1662115957;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 12:
{
int num6 = num5;
num3 = 1;
num4 = num6;
num5 = (num4 | num3) + (num4 & num3);
num = 1662115955;
break;
}
case 10:
events = mechaEventModule->Events;
num5 = 0;
num = 1662115955;
break;
case 5:
ptr = WKSManager.Instance();
num = ((ptr != null) ? 1662115956 : 1662115964);
break;
case 0:
return ToPublicEvent(ref reference);
case 9:
return null;
case 8:
return null;
case 2:
reference = ref events[num5];
num = ((reference.WKSMechaEventDataRowId != mechaEventDataRowId) ? 1662115961 : 1662115953);
break;
case 6:
num = ((num5 < events.Length) ? 1662115959 : 1662115965);
break;
case 11:
return null;
case 3:
num = 1662115954;
break;
case 1:
mechaEventModule = ptr->MechaEventModule;
num = ((mechaEventModule != null) ? 1662115967 : 1662115966);
break;
case 7:
return null;
case 4:
num = (((reference.Flags & WKSMechaEventFlag.IsEventActive) == 0) ? 1662115961 : 1662115957);
break;
}
}
}
private unsafe static PublicEvent ToPublicEvent(FateContext* fate)
{
float num = fate->Duration;
float timeRemaining = 0f;
int num2 = ((!(num > 0f)) ? (-597185620) : (-597185618));
while (true)
{
int num3 = num2;
int num4 = -597185619;
int num5 = num3;
switch ((num5 | num4) - (num5 & num4))
{
case 1:
return new PublicEvent(EPublicEventType.Fate, fate->FateId, fate->Name.ToString(), fate->Location, fate->Radius, fate->Level, fate->MaxLevel, (int)fate->Progress, num, timeRemaining, fate->State == FateState.Running, fate->State == FateState.Preparing, fate->IsBonus, fate->Rule, fate->MotivationNpc, fate->FATEChain);
case 2:
{
float num6 = DateTimeOffset.UtcNow.ToUnixTimeSeconds() - fate->StartTimeEpoch;
timeRemaining = _206C_202D_202E_202E_200C_206F_206B_202C_206F_202E_206E_202A_206C_202E_206B_200D_202A_202A_202A_200C_200E_202C_206C_202B_200F_202C_206F_206E_206B_202E_206D_202D_202C_206F_200E_202D_206B_200E_206B_206B_202E(0f, num - num6);
num2 = -597185620;
break;
}
case 3:
num2 = ((fate->StartTimeEpoch <= 0) ? (-597185620) : (-597185617));
break;
case 0:
num2 = -597185618;
break;
}
}
}
private static PublicEvent ToPublicEvent(ref DynamicEvent dynamicEvent)
{
float num = dynamicEvent.SecondsDuration;
float num2 = dynamicEvent.SecondsLeft;
uint dynamicEventId = dynamicEvent.DynamicEventId;
string name = dynamicEvent.Name.ToString();
Vector3 position = dynamicEvent.MapMarker.Position;
float radius = dynamicEvent.MapMarker.Radius;
float progress = (int)dynamicEvent.Progress;
float duration = num;
float timeRemaining = num2;
bool isActive = dynamicEvent.State == DynamicEventState.Battle;
DynamicEventState state = dynamicEvent.State;
int num3 = ((state - 1 > DynamicEventState.Register) ? 1959810557 : 1959810558);
bool isPending = default(bool);
while (true)
{
int num4 = num3;
int num5 = 1959810556;
int num6 = num4;
switch ((num6 | num5) - (num6 & num5))
{
case 3:
num3 = 1959810558;
break;
case 1:
isPending = false;
num3 = 1959810556;
break;
case 2:
isPending = true;
num3 = 1959810556;
break;
case 0:
return new PublicEvent(EPublicEventType.DynamicEvent, dynamicEventId, name, position, radius, 0, 0, progress, duration, timeRemaining, isActive, isPending, HasBonus: false, 0, 0u, 0);
}
}
}
private unsafe static PublicEvent ToPublicEvent(ref WKSMechaEvent mechaEvent)
{
long num = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
int num2 = ((mechaEvent.EventEndTimestamp > mechaEvent.EventStartTimestamp) ? 783714395 : 783714386);
string name = default(string);
WKSMechaEventMapMarker* value = default(WKSMechaEventMapMarker*);
Vector3 position = default(Vector3);
float radius = default(float);
float progress = default(float);
float duration = default(float);
float timeRemaining = default(float);
while (true)
{
int num3 = num2;
int num4 = 783714385;
int num5 = num3;
int num6 = num5 + num4;
int num7 = num5 & num4;
int num10;
float num14;
float num8;
float num9;
bool isPending;
switch (num6 - (num7 + num7))
{
default:
continue;
case 11:
num10 = 0;
goto IL_008f;
case 5:
num14 = 0f;
goto IL_0149;
case 1:
num2 = (((mechaEvent.Flags & WKSMechaEventFlag.IsEventActive) == 0) ? 783714394 : 783714397);
continue;
case 2:
num8 = 0f;
break;
case 0:
num2 = 783714386;
continue;
case 3:
num9 = 0f;
goto IL_024c;
case 8:
{
long num11 = mechaEvent.EventEndTimestamp;
long num12 = num;
long num13 = num11;
num14 = ~(~num13 + num12);
goto IL_0149;
}
case 12:
num10 = ((mechaEvent.EventProgress == 0) ? 1 : 0);
goto IL_008f;
case 9:
num2 = ((mechaEvent.EventProgressMax > 0) ? 783714390 : 783714387);
continue;
case 4:
name = value->Name.ToString();
position = value->MapMarkerData.Position;
radius = value->MapMarkerData.Radius;
num2 = 783714392;
continue;
case 6:
value = mechaEvent.MapMarkerPtrs[0].Value;
num2 = ((value == null) ? 783714392 : 783714389);
continue;
case 10:
{
int eventEndTimestamp = mechaEvent.EventEndTimestamp;
num4 = mechaEvent.EventStartTimestamp;
num5 = eventEndTimestamp;
num9 = ~(~num5 + num4);
goto IL_024c;
}
case 7:
{
num8 = (float)mechaEvent.EventProgress / (float)mechaEvent.EventProgressMax * 100f;
break;
}
IL_008f:
isPending = (byte)num10 != 0;
return new PublicEvent(EPublicEventType.MechaEvent, mechaEvent.WKSMechaEventDataRowId, name, position, radius, 0, 0, progress, duration, timeRemaining, (mechaEvent.Flags & WKSMechaEventFlag.IsEventActive) != 0, isPending, HasBonus: false, 0, 0u, 0);
IL_024c:
duration = num9;
num2 = ((mechaEvent.EventEndTimestamp > num) ? 783714393 : 783714388);
continue;
IL_0149:
timeRemaining = num14;
position = Vector3.Zero;
radius = 0f;
name = string.Empty;
num2 = ((mechaEvent.MapMarkerPtrs.Count <= 0) ? 783714392 : 783714391);
continue;
}
progress = num8;
num2 = (((mechaEvent.Flags & WKSMechaEventFlag.PilotRegistrationOpen) == 0) ? 783714394 : 783714384);
}
}
static float _206C_202D_202E_202E_200C_206F_206B_202C_206F_202E_206E_202A_206C_202E_206B_200D_202A_202A_202A_200C_200E_202C_206C_202B_200F_202C_206F_206E_206B_202E_206D_202D_202C_206F_200E_202D_206B_200E_206B_206B_202E(float P_0, float P_1)
{
return Math.Max(P_0, P_1);
}
}

View file

@ -0,0 +1,294 @@
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using Dalamud.Plugin.Services;
using Lumina.Excel;
using Lumina.Excel.Sheets;
namespace LLib.GameData;
public sealed class SatisfactionSupplyHelper
{
private readonly IDataManager _dataManager;
public SatisfactionSupplyHelper(IDataManager dataManager)
{
_dataManager = dataManager;
}
public uint[] CalculateRequestedItems(uint supplyIndex, uint seed)
{
List<SatisfactionSupply> list = new List<SatisfactionSupply>();
int num;
int num3;
int num4;
using (SubrowExcelSheet<SatisfactionSupply>.FlatEnumerator flatEnumerator = _dataManager.GetSubrowExcelSheet<SatisfactionSupply>().Flatten().GetEnumerator())
{
num = -1981977636;
SatisfactionSupply current = default(SatisfactionSupply);
while (true)
{
int num2 = num;
num3 = -1981977636;
num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 2:
list.Add(current);
num = -1981977636;
break;
case 1:
current = flatEnumerator.Current;
num = ((current.RowId != supplyIndex) ? (-1981977636) : (-1981977634));
break;
case 4:
num = -1981977636;
break;
case 0:
num = (flatEnumerator.MoveNext() ? (-1981977635) : (-1981977633));
break;
case 3:
goto end_IL_0038;
}
continue;
end_IL_0038:
break;
}
}
uint num7 = 63874652 * supplyIndex;
num3 = (int)(437113358 * seed);
num4 = (int)num7;
int num8 = num4 + num3;
int num9 = num4 & num3;
uint num10 = (uint)(num8 - (num9 + num9));
int num11 = -547857059 * (int)supplyIndex;
num3 = (int)(811033966 * seed);
num4 = num11;
uint num12 = (uint)((num4 | num3) - (num4 & num3));
int num13 = -311827390 * (int)supplyIndex;
num3 = (int)(570616410 * seed);
num4 = num13;
int num14 = num4 + num3;
int num15 = num4 & num3;
uint num16 = (uint)(num14 - (num15 + num15));
int num17 = -1359202047 * (int)supplyIndex;
num3 = -418962442 * (int)seed;
num4 = num17;
int num18 = num4 + num3;
int num19 = num4 & num3;
uint num20 = (uint)(num18 - (num19 + num19));
uint[] array = new uint[3];
_206C_202C_202B_202D_202E_200F_200B_202E_202C_202D_202C_206D_206A_200D_206C_200E_200F_206A_202A_200C_200E_200D_200D_206A_206F_202C_202B_206F_200B_200F_206C_206D_202C_206C_200B_206B_206C_202B_200F_200C_202E((Array)array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
uint[] array2 = array;
uint num21 = num10;
int num22 = 1;
num = 1311110073;
int num33 = default(int);
SatisfactionSupply satisfactionSupply2 = default(SatisfactionSupply);
int num46 = default(int);
int num34 = default(int);
long num43 = default(long);
SatisfactionSupply satisfactionSupply = default(SatisfactionSupply);
while (true)
{
int num23 = num;
num3 = 1311110070;
num4 = num23;
int num24 = num4 + num3;
int num25 = num4 & num3;
switch (num24 - (num25 + num25))
{
case 7:
{
uint num26 = num21;
num3 = (int)(num21 << 11);
num4 = (int)num26;
int num27 = num4 + num3;
int num28 = num4 & num3;
uint num29 = (uint)(num27 - (num28 + num28));
num10 = num16;
num16 = num20;
num21 = num12;
uint num30 = num20;
num3 = (int)(num20 >> 11);
num4 = (int)num29;
num3 = (num4 | num3) - (num4 & num3) >>> 8;
num4 = (int)num29;
int num31 = num4 + num3;
int num32 = num4 & num3;
num3 = num31 - (num32 + num32);
num4 = (int)num30;
num20 = (uint)((num4 | num3) - (num4 & num3));
num12 = num10;
num = ((num33 <= 0) ? 1311110072 : 1311110071);
break;
}
case 12:
satisfactionSupply2 = list[num46];
num = ((satisfactionSupply2.Slot != num22) ? 1311110064 : 1311110078);
break;
case 10:
num = ((num34 < list.Count) ? 1311110070 : 1311110072);
break;
case 4:
num = ((num43 >= satisfactionSupply.ProbabilityPercent) ? 1311110075 : 1311110077);
break;
case 2:
num = ((num46 < list.Count) ? 1311110074 : 1311110065);
break;
case 0:
satisfactionSupply = list[num34];
num = ((satisfactionSupply.Slot != num22) ? 1311110067 : 1311110066);
break;
case 6:
{
int num47 = num46;
num3 = 1;
num4 = num47;
int num48 = num4 ^ num3;
int num49 = num4 & num3;
num46 = num48 + (num49 + num49);
num = 1311110068;
break;
}
case 8:
num33 += satisfactionSupply2.ProbabilityPercent;
num = 1311110064;
break;
case 16:
num = 1311110073;
break;
case 9:
num33 = 0;
num46 = 0;
num = 1311110068;
break;
case 1:
num43 = num20 % num33;
num34 = 0;
num = 1311110076;
break;
case 3:
return array2;
case 13:
{
long num42 = num43;
long num44 = satisfactionSupply.ProbabilityPercent;
long num45 = num42;
num43 = ~(~num45 + num44);
num = 1311110067;
break;
}
case 5:
{
int num39 = num34;
num3 = 1;
num4 = num39;
int num40 = num4 ^ num3;
int num41 = num4 & num3;
num34 = num40 + (num41 + num41);
num = 1311110076;
break;
}
case 11:
{
int num38 = num22;
num3 = 1;
num4 = num38;
array2[~(~num4 + num3)] = (uint)num34;
num = 1311110072;
break;
}
case 14:
{
int num35 = num22;
num3 = 1;
num4 = num35;
int num36 = num4 ^ num3;
int num37 = num4 & num3;
num22 = num36 + (num37 + num37);
num = 1311110073;
break;
}
case 15:
num = ((num22 < 4) ? 1311110079 : 1311110069);
break;
}
}
}
public int CalculateBonusGuaranteeIndex(int timestamp)
{
int count = _dataManager.GetExcelSheet<SatisfactionBonusGuarantee>().Count;
int num = ((count != 0) ? 473391985 : 473391984);
while (true)
{
int num2 = num;
int num3 = 473391985;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
goto IL_005f;
case 1:
return -1;
case 0:
num3 = 1657008000;
num4 = timestamp;
return ~(~num4 + num3) / 604800 % count;
}
continue;
IL_005f:
num = 473391984;
}
}
public static int CalculateTurnInsToNextRank(ushort currentSatisfaction, ushort maxSatisfaction, int maxTurnIns)
{
int num = ((currentSatisfaction < maxSatisfaction) ? 423147797 : 423147794);
int num5 = default(int);
int num6 = default(int);
while (true)
{
int num2 = num;
int num3 = 423147798;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
num = 423147794;
break;
case 3:
num3 = currentSatisfaction;
num4 = maxSatisfaction;
num5 = ~(~num4 + num3);
num6 = maxSatisfaction / maxTurnIns;
num = ((num6 != 0) ? 423147799 : 423147796);
break;
case 4:
return maxTurnIns;
case 2:
return maxTurnIns;
case 1:
return _200D_202D_206D_206C_206D_202A_202A_200D_202E_200B_200B_200C_206E_202E_200D_200B_206B_206C_206F_202C_200B_200C_202D_200B_206C_200F_200B_202E_200C_206F_206F_206D_200D_200E_202A_206E_202C_206F_202D_206E_202E((int)_202E_200D_206F_200C_200B_206B_202E_206E_206D_206D_200E_206B_202D_206D_206D_200E_206B_200E_206A_202B_206F_206A_202D_202B_202C_202D_206E_202B_200D_206F_200F_206D_200D_200B_200F_200C_200F_202B_206B_200D_202E((double)num5 / (double)num6), maxTurnIns);
}
}
}
static void _206C_202C_202B_202D_202E_200F_200B_202E_202C_202D_202C_206D_206A_200D_206C_200E_200F_206A_202A_200C_200E_200D_200D_206A_206F_202C_202B_206F_200B_200F_206C_206D_202C_206C_200B_206B_206C_202B_200F_200C_202E(Array P_0, RuntimeFieldHandle P_1)
{
RuntimeHelpers.InitializeArray(P_0, P_1);
}
static double _202E_200D_206F_200C_200B_206B_202E_206E_206D_206D_200E_206B_202D_206D_206D_200E_206B_200E_206A_202B_206F_206A_202D_202B_202C_202D_206E_202B_200D_206F_200F_206D_200D_200B_200F_200C_200F_202B_206B_200D_202E(double P_0)
{
return Math.Ceiling(P_0);
}
static int _200D_202D_206D_206C_206D_202A_202A_200D_202E_200B_200B_200C_206E_202E_200D_200B_206B_206C_206F_202C_200B_200C_202D_200B_206C_200F_200B_202E_200C_206F_206F_206D_200D_200E_202A_206E_202C_206F_202D_206E_202E(int P_0, int P_1)
{
return Math.Min(P_0, P_1);
}
}

View file

@ -0,0 +1,198 @@
using System.Runtime.CompilerServices;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.Game.UI;
using Lumina.Excel.Sheets;
using Microsoft.Extensions.Logging;
namespace LLib.GameData;
public sealed class TeleportHelper
{
private const uint TeleportAction = 5u;
private readonly GameStateHelper _gameState;
private readonly ILogger<TeleportHelper> _logger;
private readonly uint _teleportUnlockLink;
public TeleportHelper(IDataManager dataManager, GameStateHelper gameState, ILogger<TeleportHelper> logger)
{
_gameState = gameState;
_logger = logger;
_teleportUnlockLink = dataManager.GetExcelSheet<Action>().GetRow(5u).UnlockLink.RowId;
}
public unsafe bool IsAetheryteUnlocked(uint aetheryteId)
{
UIState* ptr = UIState.Instance();
int num = ((ptr == null) ? 2130643281 : 2130643280);
while (true)
{
int num2 = num;
int num3 = 2130643281;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
return false;
case 1:
return ptr->IsAetheryteUnlocked(aetheryteId);
case 2:
goto IL_0055;
}
continue;
IL_0055:
num = 2130643280;
}
}
public unsafe bool CanTeleport()
{
ActionManager* ptr = ActionManager.Instance();
int num = ((ptr == null) ? 978178038 : 978178037);
while (true)
{
int num2 = num;
int num3 = 978178036;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 0:
goto IL_004b;
case 1:
return ptr->GetActionStatus(ActionType.Action, 5u, 3758096384uL, checkRecastActive: true, checkCastingActive: true, null) == 0;
case 2:
return false;
}
continue;
IL_004b:
num = 978178037;
}
}
public unsafe bool IsTeleportUnlocked()
{
UIState* ptr = UIState.Instance();
int num = ((ptr == null) ? 249650035 : 249650034);
while (true)
{
int num2 = num;
int num3 = 249650035;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 0:
return false;
case 1:
return ptr->IsUnlockLinkUnlocked(_teleportUnlockLink);
case 2:
goto IL_0058;
}
continue;
IL_0058:
num = 249650034;
}
}
public unsafe bool IsFreeAetheryte(uint aetheryteId)
{
PlayerState* ptr = PlayerState.Instance();
int num = ((ptr == null) ? 1806053406 : 1806053402);
while (true)
{
int num2 = num;
int num3 = 1806053406;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 2:
return ptr->FreeAetheryteNSO == aetheryteId;
case 4:
num = ((ptr->FreeAetheryteId == aetheryteId) ? 1806053405 : 1806053407);
break;
case 5:
num = 1806053402;
break;
case 3:
return true;
case 1:
num = ((ptr->FreeAetherytePSPlus == aetheryteId) ? 1806053405 : 1806053404);
break;
case 0:
return false;
}
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
public unsafe bool Teleport(uint aetheryteId, byte subIndex = 0)
{
int num = (IsTeleportUnlocked() ? 1160662395 : 1160662390);
Telepo* ptr = default(Telepo*);
while (true)
{
int num2 = num;
int num3 = 1160662396;
int num4 = num2;
switch ((num4 | num3) - (num4 & num3))
{
case 2:
ptr = Telepo.Instance();
num = ((ptr != null) ? 1160662397 : 1160662396);
break;
case 5:
_206C_202B_206D_200E_200D_200C_206E_206A_200F_206D_206A_206A_206E_206D_206E_206D_206A_202A_200F_206B_200D_200F_206E_200C_202A_202D_202C_202C_202D_206E_200D_206D_206A_200B_206F_200D_206C_202E_206D_202E((ILogger)_logger, global::_003CModule_003E._206E_202B_206C_202A_202A_200E_202B_202B_206D_200B_200C_206B_200B_206D_202E_202D_206C_202B_200B_206A_202D_206C_202A_200F_202D_200C_200B_200B_200B_200D_202C_206E_206D_202E_200C_206B_206A_206D_202D_202C_202E<string>(-979996593), new object[1] { aetheryteId });
return false;
case 9:
num = (IsAetheryteUnlocked(aetheryteId) ? 1160662388 : 1160662394);
break;
case 7:
num = (CanTeleport() ? 1160662389 : 1160662392);
break;
case 0:
return false;
case 8:
num = ((!_gameState.IsLoadingScreenVisible()) ? 1160662398 : 1160662393);
break;
case 3:
num = 1160662390;
break;
case 1:
_206A_200F_200F_206F_200B_206F_206D_206B_200C_202E_200F_202B_206E_200B_200E_200E_202A_200C_200D_202B_202A_206F_200D_206A_200B_200E_202D_206B_206A_202A_206D_206B_206F_200D_202E_206B_200B_206B_200F_206B_202E((ILogger)_logger, global::_003CModule_003E._206A_206D_202C_206E_206D_206E_202A_200F_200D_206A_200F_206C_202C_202D_206D_206A_200D_200F_206A_206C_202C_206D_206E_200F_200F_200C_206B_200B_206B_206E_202B_206B_200E_200E_200B_206F_200F_202E_200C_200C_202E<string>(2083148089), new object[1] { aetheryteId });
return ptr->Teleport(aetheryteId, subIndex);
case 6:
_202C_206E_200D_200E_206D_200D_202B_200F_200C_202B_206A_206B_206D_202C_202B_202B_202C_200F_200B_206A_200D_200E_206A_200B_206E_202E_206B_206C_202C_200C_202E_206B_200D_206F_200D_206A_206A_202A_206B_206D_202E((ILogger)_logger, global::_003CModule_003E._200E_206F_206C_206C_200E_202A_206D_206B_200B_202D_202B_200F_200F_206B_206C_206F_202D_206F_206A_202D_206A_200B_200B_202B_202D_202C_200F_200D_202E_200E_200D_202A_202B_206F_202E_200E_200B_206B_200E_202E_202E<string>(-1264034910), new object[1] { aetheryteId });
return false;
case 4:
_206C_202B_206D_200E_200D_200C_206E_206A_200F_206D_206A_206A_206E_206D_206E_206D_206A_202A_200F_206B_200D_200F_206E_200C_202A_202D_202C_202C_202D_206E_200D_206D_206A_200B_206F_200D_206C_202E_206D_202E((ILogger)_logger, global::_003CModule_003E._206A_202C_200C_206F_202A_200C_200F_206F_202B_202B_200D_206F_206D_200E_206A_206B_202A_200F_200B_206C_202B_202A_202B_206C_200F_206C_202C_202C_200C_206C_206F_200C_200B_202D_200E_202A_202A_206B_206B_200F_202E<string>(1137941263), new object[1] { aetheryteId });
return false;
case 10:
_202C_206E_200D_200E_206D_200D_202B_200F_200C_202B_206A_206B_206D_202C_202B_202B_202C_200F_200B_206A_200D_200E_206A_200B_206E_202E_206B_206C_202C_200C_202E_206B_200D_206F_200D_206A_206A_202A_206B_206D_202E((ILogger)_logger, global::_003CModule_003E._206A_206D_202C_206E_206D_206E_202A_200F_200D_206A_200F_206C_202C_202D_206D_206A_200D_200F_206A_206C_202C_206D_206E_200F_200F_200C_206B_200B_206B_206E_202B_206B_200E_200E_200B_206F_200F_202E_200C_200C_202E<string>(-637254207), new object[1] { aetheryteId });
return false;
}
}
}
static void _202C_206E_200D_200E_206D_200D_202B_200F_200C_202B_206A_206B_206D_202C_202B_202B_202C_200F_200B_206A_200D_200E_206A_200B_206E_202E_206B_206C_202C_200C_202E_206B_200D_206F_200D_206A_206A_202A_206B_206D_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogWarning(P_1, P_2);
}
static void _206C_202B_206D_200E_200D_200C_206E_206A_200F_206D_206A_206A_206E_206D_206E_206D_206A_202A_200F_206B_200D_200F_206E_200C_202A_202D_202C_202C_202D_206E_200D_206D_206A_200B_206F_200D_206C_202E_206D_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogDebug(P_1, P_2);
}
static void _206A_200F_200F_206F_200B_206F_206D_206B_200C_202E_200F_202B_206E_200B_200E_200E_202A_200C_200D_202B_202A_206F_200D_206A_200B_200E_202D_206B_206A_202A_206D_206B_206F_200D_202E_206B_200B_206B_200F_206B_202E(ILogger P_0, string P_1, object[] P_2)
{
P_0.LogInformation(P_1, P_2);
}
}

View file

@ -0,0 +1,157 @@
using System;
using Dalamud.Plugin.Services;
using Lumina.Excel;
using Lumina.Excel.Sheets;
namespace LLib.GameData;
public sealed class WeatherHelper
{
public const double WeatherPeriodSeconds = 1400.0;
private readonly IDataManager _dataManager;
public WeatherHelper(IDataManager dataManager)
{
_dataManager = dataManager;
}
public Weather? GetCurrentWeather(uint territoryId)
{
return GetWeatherAtTime(territoryId, DateTimeOffset.UtcNow.ToUnixTimeSeconds());
}
public Weather? GetPreviousWeather(uint territoryId)
{
return GetWeatherAtTime(territoryId, DateTimeOffset.UtcNow.ToUnixTimeSeconds() - 1400);
}
public Weather? GetNextWeather(uint territoryId)
{
return GetWeatherAtTime(territoryId, DateTimeOffset.UtcNow.ToUnixTimeSeconds() + 1400);
}
public static double GetSecondsUntilWeatherChange()
{
long num = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
return 1400.0 - (double)(num % 1400);
}
public Weather? GetWeatherAtTime(uint territoryId, long unixSeconds)
{
TerritoryType? rowOrDefault = _dataManager.GetExcelSheet<TerritoryType>().GetRowOrDefault(territoryId);
int num = (rowOrDefault.HasValue ? 1395957685 : 1395957681);
while (true)
{
int num2 = num;
int num3 = 1395957685;
int num4 = num2;
int num5 = num4 + num3;
int num6 = num4 & num3;
switch (num5 - (num6 + num6))
{
case 1:
{
WeatherRate value = rowOrDefault.Value.WeatherRate.Value;
uint target = CalculateTarget(unixSeconds);
return ResolveWeather(value, target);
}
case 0:
num = (rowOrDefault.Value.WeatherRate.IsValid ? 1395957684 : 1395957687);
break;
case 4:
return null;
case 3:
num = 1395957681;
break;
case 2:
return null;
}
}
}
internal static uint CalculateTarget(long unixSeconds)
{
long num = unixSeconds / 175;
long num2 = 8L;
long num3 = num;
long num4 = num3 ^ num2;
long num5 = num3 & num2;
uint num6 = (uint)((num4 + (num5 + num5) - num % 8) % 24);
int num7 = (int)(unixSeconds / 4200) * 100;
int num8 = (int)num6;
int num9 = num7;
int num10 = num9 ^ num8;
int num11 = num9 & num8;
uint num12 = (uint)(num10 + (num11 + num11));
uint num13 = num12 << 11;
num8 = (int)num12;
num9 = (int)num13;
int num14 = num9 + num8;
int num15 = num9 & num8;
uint num16 = (uint)(num14 - (num15 + num15));
uint num17 = num16 >> 8;
num8 = (int)num16;
num9 = (int)num17;
return (uint)((num9 | num8) - (num9 & num8)) % 100u;
}
private static Weather? ResolveWeather(WeatherRate weatherRate, uint target)
{
Weather? result = null;
int num = 0;
int num2 = 0;
int num3 = -1371049026;
RowRef<Weather> rowRef = default(RowRef<Weather>);
while (true)
{
int num4 = num3;
int num5 = -1371049029;
int num6 = num4;
int num7 = num6 + num5;
int num8 = num6 & num5;
switch (num7 - (num8 + num8))
{
case 0:
return rowRef.Value;
case 4:
num3 = (rowRef.IsValid ? (-1371049029) : (-1371049027));
break;
case 2:
result = rowRef.Value;
num3 = -1371049030;
break;
case 6:
return null;
case 7:
rowRef = weatherRate.Weather[num2];
num3 = ((!rowRef.IsValid) ? (-1371049030) : (-1371049031));
break;
case 9:
num3 = ((weatherRate.Rate[num2] <= 0) ? (-1371049039) : (-1371049028));
break;
case 8:
num3 = -1371049026;
break;
case 1:
num += weatherRate.Rate[num2];
num3 = ((target >= num) ? (-1371049039) : (-1371049025));
break;
case 10:
{
int num9 = num2;
num5 = 1;
num6 = num9;
num2 = (num6 | num5) + (num6 & num5);
num3 = -1371049026;
break;
}
case 3:
return result;
case 5:
num3 = ((num2 < weatherRate.Rate.Count) ? (-1371049038) : (-1371049032));
break;
}
}
}
}