diff --git a/Dalamud/Game/ItemActionType.cs b/Dalamud/Game/ItemActionType.cs
deleted file mode 100644
index 3f2ac5f17..000000000
--- a/Dalamud/Game/ItemActionType.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-using Lumina.Excel.Sheets;
-
-namespace Dalamud.Game;
-
-///
-/// Enum for .
-///
-public enum ItemActionType : ushort
-{
- ///
- /// Used to unlock a companion (minion).
- ///
- Companion = 853,
-
- ///
- /// Used to unlock a chocobo companion barding.
- ///
- BuddyEquip = 1013,
-
- ///
- /// Used to unlock a mount.
- ///
- Mount = 1322,
-
- ///
- /// Used to unlock recipes from a crafting recipe book.
- ///
- SecretRecipeBook = 2136,
-
- ///
- /// Used to unlock various types of content (e.g. Riding Maps, Blue Mage Totems, Emotes, Hairstyles).
- ///
- UnlockLink = 2633,
-
- ///
- /// Used to unlock a Triple Triad Card.
- ///
- TripleTriadCard = 3357,
-
- ///
- /// Used to unlock gathering nodes of a Folklore Tome.
- ///
- FolkloreTome = 4107,
-
- ///
- /// Used to unlock an Orchestrion Roll.
- ///
- OrchestrionRoll = 25183,
-
- ///
- /// Used to unlock portrait designs.
- ///
- FramersKit = 29459,
-
- ///
- /// Used to unlock Bozjan Field Notes. These are server-side but are cached client-side.
- ///
- FieldNotes = 19743,
-
- ///
- /// Used to unlock an Ornament (fashion accessory).
- ///
- Ornament = 20086,
-
- ///
- /// Used to unlock glasses.
- ///
- Glasses = 37312,
-
- ///
- /// Used for Company Seal Vouchers, which convert the item into Company Seals when used.
- /// Can be used only if in a Grand Company.
- /// IsUnlocked always returns false.
- ///
- CompanySealVouchers = 41120,
-}
diff --git a/Dalamud/Game/UnlockState/ItemActionType.cs b/Dalamud/Game/UnlockState/ItemActionType.cs
new file mode 100644
index 000000000..741dcd31b
--- /dev/null
+++ b/Dalamud/Game/UnlockState/ItemActionType.cs
@@ -0,0 +1,97 @@
+using Lumina.Excel.Sheets;
+
+namespace Dalamud.Game.UnlockState;
+
+// TODO: Switch to FFXIVClientStructs.FFXIV.Client.Enums.ItemActionType.
+
+///
+/// Enum for .
+///
+internal enum ItemActionType : ushort
+{
+ ///
+ /// No item action.
+ ///
+ None = 0,
+
+ ///
+ /// Unlocks a companion (minion).
+ ///
+ Companion = 853,
+
+ ///
+ /// Unlocks a chocobo companion barding.
+ ///
+ BuddyEquip = 1013,
+
+ ///
+ /// Unlocks a mount.
+ ///
+ Mount = 1322,
+
+ ///
+ /// Unlocks recipes from a crafting recipe book.
+ ///
+ SecretRecipeBook = 2136,
+
+ ///
+ /// Unlocks various types of content (e.g. Riding Maps, Blue Mage Totems, Emotes, Hairstyles).
+ ///
+ UnlockLink = 2633,
+
+ ///
+ /// Unlocks a Triple Triad Card.
+ ///
+ TripleTriadCard = 3357,
+
+ ///
+ /// Unlocks gathering nodes of a Folklore Tome.
+ ///
+ FolkloreTome = 4107,
+
+ ///
+ /// Unlocks an Orchestrion Roll.
+ ///
+ OrchestrionRoll = 25183,
+
+ ///
+ /// Unlocks portrait designs.
+ ///
+ FramersKit = 29459,
+
+ ///
+ /// Unlocks Bozjan Field Notes.
+ ///
+ /// These are server-side but are cached client-side.
+ FieldNotes = 19743,
+
+ ///
+ /// Unlocks an Ornament (fashion accessory).
+ ///
+ Ornament = 20086,
+
+ ///
+ /// Unlocks Glasses.
+ ///
+ Glasses = 37312,
+
+ ///
+ /// Company Seal Vouchers, which convert the item into Company Seals when used.
+ ///
+ CompanySealVouchers = 41120,
+
+ ///
+ /// Unlocks Occult Records in Occult Crescent.
+ ///
+ OccultRecords = 43141,
+
+ ///
+ /// Unlocks Phantom Jobs in Occult Crescent.
+ ///
+ SoulShards = 43142,
+
+ ///
+ /// Star Contributor Certificate, which grants the Star Contributor status in Cosmic Exploration.
+ ///
+ StarContributorCertificate = 45189,
+}
diff --git a/Dalamud/Game/UnlockState/UnlockState.cs b/Dalamud/Game/UnlockState/UnlockState.cs
index ae8fc4f86..e2528c7e7 100644
--- a/Dalamud/Game/UnlockState/UnlockState.cs
+++ b/Dalamud/Game/UnlockState/UnlockState.cs
@@ -263,6 +263,7 @@ internal unsafe class UnlockState : IInternalDisposableService, IUnlockState
return PlayerState.Instance()->IsSecretRecipeBookUnlocked(row.ItemAction.Value.Data[0]);
case ItemActionType.UnlockLink:
+ case ItemActionType.OccultRecords:
return UIState.Instance()->IsUnlockLinkUnlocked(row.ItemAction.Value.Data[0]);
case ItemActionType.TripleTriadCard when row.AdditionalData.Is():
@@ -387,18 +388,19 @@ internal unsafe class UnlockState : IInternalDisposableService, IUnlockState
if (row.ItemAction.RowId == 0)
return false;
- return (ItemActionType)row.ItemAction.Value.Type is
- ItemActionType.Companion or
- ItemActionType.BuddyEquip or
- ItemActionType.Mount or
- ItemActionType.SecretRecipeBook or
- ItemActionType.UnlockLink or
- ItemActionType.TripleTriadCard or
- ItemActionType.FolkloreTome or
- ItemActionType.OrchestrionRoll or
- ItemActionType.FramersKit or
- ItemActionType.Ornament or
- ItemActionType.Glasses;
+ return (ItemActionType)row.ItemAction.Value.Type
+ is ItemActionType.Companion
+ or ItemActionType.BuddyEquip
+ or ItemActionType.Mount
+ or ItemActionType.SecretRecipeBook
+ or ItemActionType.UnlockLink
+ or ItemActionType.TripleTriadCard
+ or ItemActionType.FolkloreTome
+ or ItemActionType.OrchestrionRoll
+ or ItemActionType.FramersKit
+ or ItemActionType.Ornament
+ or ItemActionType.Glasses
+ or ItemActionType.OccultRecords;
}
///