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;