84 lines
2.4 KiB
C#
84 lines
2.4 KiB
C#
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;
|
|
}
|
|
}
|