using Dalamud.Game.ClientState.Conditions; using Dalamud.Plugin.Services; namespace LLib.GameData; public static class ConditionHelper { public static bool IsBoundByDuty(ICondition condition) { if (!condition[ConditionFlag.BoundByDuty] && !condition[ConditionFlag.BoundByDuty56]) { return condition[ConditionFlag.BoundByDuty95]; } return true; } public static bool IsInCombat(ICondition condition) { return condition[ConditionFlag.InCombat]; } public static bool IsInCutscene(ICondition condition) { if (!condition[ConditionFlag.OccupiedInCutSceneEvent] && !condition[ConditionFlag.WatchingCutscene]) { return condition[ConditionFlag.WatchingCutscene78]; } return true; } public static bool IsBetweenAreas(ICondition condition) { if (!condition[ConditionFlag.BetweenAreas]) { return condition[ConditionFlag.BetweenAreas51]; } return true; } public static bool IsCrafting(ICondition condition) { if (!condition[ConditionFlag.Crafting] && !condition[ConditionFlag.PreparingToCraft]) { return condition[ConditionFlag.ExecutingCraftingAction]; } return true; } public static bool IsGathering(ICondition condition) { if (!condition[ConditionFlag.Gathering]) { return condition[ConditionFlag.ExecutingGatheringAction]; } return true; } public static bool IsOccupied(ICondition condition) { if (!condition[ConditionFlag.Occupied] && !condition[ConditionFlag.Occupied30] && !condition[ConditionFlag.Occupied33] && !condition[ConditionFlag.Occupied38]) { return condition[ConditionFlag.Occupied39]; } return true; } public static bool IsLockedIn(ICondition condition) { if (!IsBoundByDuty(condition) && !IsInCutscene(condition) && !IsBetweenAreas(condition) && !IsOccupied(condition) && !condition[ConditionFlag.Unconscious] && !condition[ConditionFlag.Jumping]) { return condition[ConditionFlag.Jumping61]; } return true; } public static bool IsUnavailable(ICondition condition) { if (!IsLockedIn(condition) && !IsCrafting(condition) && !IsGathering(condition) && !condition[ConditionFlag.Mounted] && !condition[ConditionFlag.Mounting] && !condition[ConditionFlag.Mounting71] && !condition[ConditionFlag.ChocoboRacing] && !condition[ConditionFlag.PlayingLordOfVerminion] && !condition[ConditionFlag.Performing] && !condition[ConditionFlag.UsingFashionAccessory]) { return condition[ConditionFlag.InFlight]; } return true; } }