diff --git a/Artifact Tracker.esp b/Artifact Tracker.esp index 459740f..56bfd25 100644 Binary files a/Artifact Tracker.esp and b/Artifact Tracker.esp differ diff --git a/SKSE/Plugins/ArtifactTracker.dll b/SKSE/Plugins/ArtifactTracker.dll index 9217e3a..d6252c6 100644 Binary files a/SKSE/Plugins/ArtifactTracker.dll and b/SKSE/Plugins/ArtifactTracker.dll differ diff --git a/Scripts/ArtifactTrackerPlayer.pex b/Scripts/ArtifactTrackerPlayer.pex index 7160913..7268ece 100644 Binary files a/Scripts/ArtifactTrackerPlayer.pex and b/Scripts/ArtifactTrackerPlayer.pex differ diff --git a/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp b/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp index 6fee0ed..66d0a98 100644 --- a/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp +++ b/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp @@ -253,7 +253,7 @@ namespace ArtifactTracker } } - void SyncCellStorage(RE::FormID skipRefID) + void SyncCellStorage() { if (!IsHome()) { #ifdef _DEBUG @@ -302,7 +302,7 @@ namespace ArtifactTracker continue; } - if (a_ref->IsDisabled() || a_ref->IsMarkedForDeletion() || a_ref->formID == skipRefID) { + if (a_ref->IsDisabled() || a_ref->IsMarkedForDeletion()) { continue; } @@ -375,13 +375,13 @@ namespace ArtifactTracker } else if (g_cellStorage) { // probably, picked up at home (can also be crafted, but oh well) // OnContainerChanged fires before a picked item gets marked for deletion - RE::FormID lastPickupFormID = NULL; const auto crosshairObj = RE::CrosshairPickData::GetSingleton()->target; if (crosshairObj && crosshairObj.get() && crosshairObj.get().get()->GetBaseObject()->formID == a_event->baseObj) { - lastPickupFormID = crosshairObj.get().get()->formID; + // Picked up items are handled in the perk + return; } - SyncCellStorage(lastPickupFormID); + SyncCellStorage(); return; } diff --git a/Source/ArtifactTrackerDLL/src/ArtifactTracker.h b/Source/ArtifactTrackerDLL/src/ArtifactTracker.h index 423fc54..c1b92c6 100644 --- a/Source/ArtifactTrackerDLL/src/ArtifactTracker.h +++ b/Source/ArtifactTrackerDLL/src/ArtifactTracker.h @@ -30,7 +30,7 @@ namespace ArtifactTracker void OnCellEnter(RE::BGSLocation* location, RE::TESObjectCELL* cell); - void SyncCellStorage(RE::FormID skipRefID = NULL); + void SyncCellStorage(); void OnContainerChanged(const RE::TESContainerChangedEvent* a_event, RE::TESForm* form); diff --git a/Source/ArtifactTrackerDLL/src/PapyrusFunctions.h b/Source/ArtifactTrackerDLL/src/PapyrusFunctions.h index 9a770f2..a8b1348 100644 --- a/Source/ArtifactTrackerDLL/src/PapyrusFunctions.h +++ b/Source/ArtifactTrackerDLL/src/PapyrusFunctions.h @@ -15,9 +15,9 @@ namespace Papyrus::PapyrusFunctions return ArtifactTracker::g_cellStorage; } - inline void SyncCellStorage(RE::StaticFunctionTag*, RE::FormID skipRefID = NULL) + inline void SyncCellStorage(RE::StaticFunctionTag*) { - ArtifactTracker::SyncCellStorage(skipRefID); + ArtifactTracker::SyncCellStorage(); } // From po3's Papyrus Extender diff --git a/Source/Scripts/ArtifactTrackerPlayer.psc b/Source/Scripts/ArtifactTrackerPlayer.psc index 36be0b9..36b0454 100644 --- a/Source/Scripts/ArtifactTrackerPlayer.psc +++ b/Source/Scripts/ArtifactTrackerPlayer.psc @@ -6,6 +6,8 @@ FormList Property ETR_ItemsStored Auto Keyword Property LocTypePlayerHouse Auto +Perk Property ETR_PickupPerk Auto + bool bAtHome = false int iFollowerIndex ObjectReference bookShelf = None @@ -27,6 +29,10 @@ Event OnPlayerLoadGame() return endif + if ! (GetReference() as Actor).HasPerk(ETR_PickupPerk) + (GetReference() as Actor).AddPerk(ETR_PickupPerk) + endif + if skse.GetPluginVersion("Ahzaab's moreHUD Plugin") >= 30800 ahzmorehud.RegisterIconFormList("dbmNew", ETR_ItemsNew) ahzmorehud.RegisterIconFormList("dbmFound", ETR_ItemsFound) @@ -141,7 +147,7 @@ state AtHome iLimit -= 1 Utility.wait(0.5) endwhile - SyncCellStorage(ref.GetFormID()) + SyncCellStorage() endif endevent @@ -163,6 +169,6 @@ ObjectReference function GetCellStorage() native global ObjectReference function GetCurrentContainer() native global -function SyncCellStorage(int FormID = 0) native global +function SyncCellStorage() native global Actor[] function GetPlayerFollowers() native global