From 3063fcf15dbcb47e601dc6585b74f30beab8a8b7 Mon Sep 17 00:00:00 2001 From: MidoriKami <9083275+MidoriKami@users.noreply.github.com> Date: Mon, 26 Dec 2022 13:12:46 -0800 Subject: [PATCH] Update Condition to check for island sanctuary intended use --- KamiLib.cs | 4 +++- Utilities/Condition.cs | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/KamiLib.cs b/KamiLib.cs index a04ebe5..3922ba2 100644 --- a/KamiLib.cs +++ b/KamiLib.cs @@ -1,4 +1,5 @@ -using Dalamud.Game.ClientState; +using Dalamud.Data; +using Dalamud.Game.ClientState; using Dalamud.Game.Gui; using Dalamud.IoC; using Dalamud.Logging; @@ -18,6 +19,7 @@ public class Service [PluginService] public static ChatGui Chat { get; private set; } = null!; [PluginService] public static GameGui GameGui { get; private set; } = null!; [PluginService] public static DalamudCondition Condition { get; private set; } = null!; + [PluginService] public static DataManager DataManager { get; private set; } = null!; } public static class KamiLib diff --git a/Utilities/Condition.cs b/Utilities/Condition.cs index 2edf83b..da56659 100644 --- a/Utilities/Condition.cs +++ b/Utilities/Condition.cs @@ -1,16 +1,23 @@ using Dalamud.Game.ClientState.Conditions; +using KamiLib.Caching; +using Lumina.Excel.GeneratedSheets; namespace KamiLib.Utilities; public static class Condition { + private static readonly LuminaCache<TerritoryType> TerritoryTypeCache = new(); + public static bool IsBoundByDuty() { var baseBoundByDuty = Service.Condition[ConditionFlag.BoundByDuty]; var boundBy56 = Service.Condition[ConditionFlag.BoundByDuty56]; var boundBy95 = Service.Condition[ConditionFlag.BoundByDuty95]; - if (Service.ClientState.TerritoryType == 1055) + var territoryInfo = TerritoryTypeCache.GetRow(Service.ClientState.TerritoryType); + + // Island Sanctuary + if (territoryInfo.TerritoryIntendedUse == 49) return false; return baseBoundByDuty || boundBy56 || boundBy95;