diff --git a/Artifact Tracker.esp b/Artifact Tracker.esp index ac24f3e..c2044ca 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 ab367bf..b6bb337 100644 Binary files a/SKSE/Plugins/ArtifactTracker.dll and b/SKSE/Plugins/ArtifactTracker.dll differ diff --git a/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp b/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp index f0b3ed9..f7116ef 100644 --- a/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp +++ b/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp @@ -22,8 +22,6 @@ namespace ArtifactTracker RE::BGSListForm* g_listStored; RE::BGSListForm* g_listFound; RE::BGSListForm* g_persistentStorage; - RE::BGSListForm* g_persistentCells; - RE::BGSListForm* g_persistentCellStorageList; RE::BGSKeyword* g_homeKeyword; std::unordered_map g_artifactMap; std::unordered_set g_artifactFormTypes; @@ -54,8 +52,6 @@ namespace ArtifactTracker g_listStored = dataHandler->LookupForm(0x801, "Artifact Tracker.esp"); // ETR_ItemsStored g_listFound = dataHandler->LookupForm(0x802, "Artifact Tracker.esp"); // ETR_ItemsFound g_persistentStorage = dataHandler->LookupForm(0x803, "Artifact Tracker.esp"); // ETR_PersistentStorageList - g_persistentCells = dataHandler->LookupForm(0x805, "Artifact Tracker.esp"); // ETR_PersistentCellList - g_persistentCellStorageList = dataHandler->LookupForm(0x806, "Artifact Tracker.esp"); // ETR_PersistentCellStorageList g_homeKeyword = dataHandler->LookupForm(0xFC1A3, "Skyrim.esm"); // LocTypePlayerHouse @@ -63,7 +59,7 @@ namespace ArtifactTracker const auto notArtifactKeyword = dataHandler->LookupForm(0xAFC111, "Update.esm"); // ETR_NotArtifact const auto npcRaceKeyword = dataHandler->LookupForm(0x13794, "Skyrim.esm"); // ActorTypeNPC - if (!g_cellContainer || !g_listNew || !g_listStored || !g_listFound || !g_persistentStorage || !g_persistentCells || !g_persistentCellStorageList || !g_homeKeyword || !extraArtifactKeyword || !notArtifactKeyword || !npcRaceKeyword) { + if (!g_cellContainer || !g_listNew || !g_listStored || !g_listFound || !g_persistentStorage || !g_homeKeyword || !extraArtifactKeyword || !notArtifactKeyword || !npcRaceKeyword) { log::warn("Unable to load data from Artifact Tracker.esp"); RE::DebugMessageBox("Unable to load data from Artifact Tracker.esp, the mod is disabled."); return false; @@ -210,26 +206,6 @@ namespace ArtifactTracker return RE::BSContainer::ForEachResult::kContinue; }); - const auto parentCell = RE::PlayerCharacter::GetSingleton()->GetParentCell(); - - ListRevert(g_persistentCellStorageList); - g_persistentCells->ForEachForm([&](RE::TESForm& a_exform) { - if (&a_exform) { - const auto cell = a_exform.As(); - if (cell && cell != parentCell) { - cell->ForEachReference([&parentCell](RE::TESObjectREFR& a_ref) { - if (&a_ref && (a_ref.formFlags & RE::TESObjectREFR::RecordFlags::kPersistent) != 0 && a_ref.GetBaseObject()->Is(RE::FormType::Container)) { - //RE::DebugNotification(a_ref.GetBaseObject()->GetName()); - g_persistentMap[a_ref.formID] = &a_ref; - g_persistentCellStorageList->AddForm(&a_ref); - } - return RE::BSContainer::ForEachResult::kContinue; - }); - } - } - return RE::BSContainer::ForEachResult::kContinue; - }); - std::uint32_t savedCount = g_listStored->forms.size() + g_listFound->forms.size() + g_listNew->forms.size(); if (savedCount != g_artifactMap.size()) { ListRevert(g_listNew); @@ -387,7 +363,7 @@ namespace ArtifactTracker RE::TESObjectCELL* cell = RE::TESForm::LookupByID(a_formID); RE::BGSLocation* location = cell ? cell->GetLocation() : nullptr; - if (!cell || !location || !cell->IsInteriorCell() || !location->HasKeyword(g_homeKeyword) || g_persistentCells->HasForm(cell)) { + if (!cell || !location || !cell->IsInteriorCell() || !location->HasKeyword(g_homeKeyword)) { if (IsHome()) { RE::ScriptEventSourceHolder::GetSingleton()->RemoveEventSink(EventListener::GetSingleton()); ToggleHomeMode(nullptr); @@ -433,7 +409,7 @@ namespace ArtifactTracker return; } - if (!location || !cell->IsInteriorCell() || cell != RE::PlayerCharacter::GetSingleton()->GetParentCell() || !location->HasKeyword(g_homeKeyword) || g_persistentCells->HasForm(cell)) { + if (!location || !cell->IsInteriorCell() || cell != RE::PlayerCharacter::GetSingleton()->GetParentCell() || !location->HasKeyword(g_homeKeyword)) { ToggleHomeMode(nullptr); return; } @@ -575,7 +551,7 @@ namespace ArtifactTracker if (count > 0 && !cellItems.contains(item->formID)) { g_cellStorage->RemoveItem(item, count, RE::ITEM_REMOVE_REASON::kRemove, nullptr, nullptr); - if (IsArtifact(item) && !RefListHasItem(g_persistentStorage, item->formID) && !RefListHasItem(g_persistentCellStorageList, item->formID)) { + if (IsArtifact(item) && !RefListHasItem(g_persistentStorage, item->formID)) { ListRemoveItem(g_listStored, item); if (GetItemCount(RE::PlayerCharacter::GetSingleton(), item) || FollowersHaveItem(item)) { ListRemoveItem(g_listNew, item); @@ -851,7 +827,6 @@ namespace ArtifactTracker { ListRevert(g_listStored); AddRefArtifactsToList(g_persistentStorage, g_listStored); - AddRefArtifactsToList(g_persistentCellStorageList, g_listStored); } void RescanNewArtifacts() diff --git a/Source/ArtifactTrackerDLL/src/Util.h b/Source/ArtifactTrackerDLL/src/Util.h index 25666f0..878b389 100644 --- a/Source/ArtifactTrackerDLL/src/Util.h +++ b/Source/ArtifactTrackerDLL/src/Util.h @@ -182,6 +182,7 @@ inline void LoadINI(std::map* settings, const char* iniPath) } } +/* inline void RunBenchmark(std::function benchmark, std::string desc) { const auto start = std::chrono::high_resolution_clock::now(); @@ -191,6 +192,7 @@ inline void RunBenchmark(std::function benchmark, std::string desc) const auto elapsed = std::chrono::duration(end - start); log::info("{}: Elapsed time: {} seconds", desc, elapsed.count()); } +*/ inline std::vector GetPlayerFollowers() {