diff --git a/Artifact Tracker_KID.ini b/Artifact Tracker_KID.ini index d094b40..af95e9a 100644 --- a/Artifact Tracker_KID.ini +++ b/Artifact Tracker_KID.ini @@ -7,5 +7,13 @@ Keyword = ETR_ExtraArtifact|Book|0xEF07A,0xF33CD,0xF33CE,0xF33CF,0xF33D0,0xF33D1 ; Soul Gem Fragments Keyword = ETR_NotArtifact|Misc Item|0x67181,0x67182,0x67183,0x67184,0x67185 +; Dummy items +Keyword = ETR_NotArtifact|Weapon|Dummy +Keyword = ETR_NotArtifact|Armor|Dummy + ; ClothingPoor Keyword = ETR_NotArtifact|Armor|ClothingPoor + +; Disenchantable items, minus daedric artifacts just in case +Keyword = ETR_NotArtifact|Weapon|-MagicDisallowEnchanting,-DaedricArtifact|E +Keyword = ETR_NotArtifact|Armor|-MagicDisallowEnchanting,-DaedricArtifact|E diff --git a/SKSE/Plugins/ArtifactTracker.dll b/SKSE/Plugins/ArtifactTracker.dll index 0772de3..ee5d156 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 7f2914b..3a474de 100644 --- a/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp +++ b/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp @@ -45,14 +45,10 @@ namespace ArtifactTracker const auto recipeKeyword = dataHandler->LookupForm(0xF5CB0, "Skyrim.esm"); // VendorItemRecipe const auto excludeKeywords = dataHandler->LookupForm(0x801, "Artifact Tracker.esp"); // ETR_ExcludeMiscKeywords - const auto dummyKeyword = dataHandler->LookupForm(0xF3E6C, "Skyrim.esm"); // Dummy - const auto disallowEnchanting = dataHandler->LookupForm(0xC27BD, "Skyrim.esm"); // MagicDisallowEnchanting - const auto daedricArtifact = dataHandler->LookupForm(0xA8668, "Skyrim.esm"); // DaedricArtifact - const auto extraArtifactKeyword = dataHandler->LookupForm(0xDE3FD3, "Update.esm"); // ETR_ExtraArtifact const auto notArtifactKeyword = dataHandler->LookupForm(0xDE3FD4, "Update.esm"); // ETR_NotArtifact - if (!g_cellContainer || !g_listNew || !g_listStored || !g_listFound || !g_persistentStorage || !g_homeKeyword || !recipeKeyword || !excludeKeywords || !dummyKeyword || !extraArtifactKeyword || !notArtifactKeyword || !disallowEnchanting || !daedricArtifact) { + if (!g_cellContainer || !g_listNew || !g_listStored || !g_listFound || !g_persistentStorage || !g_homeKeyword || !recipeKeyword || !excludeKeywords || !extraArtifactKeyword || !notArtifactKeyword) { SKSE::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; @@ -61,20 +57,15 @@ namespace ArtifactTracker // Preloading item lists std::map settings{ - { "ExcludeDisenchantableItems", true }, - { "DumpItemNames", false }, + { "DumpItemList", false }, }; LoadINI(&settings, "Data/SKSE/Plugins/ArtifactTracker.ini"); - bool bExcludeDisenchantableItems = settings.at("ExcludeDisenchantableItems"); - g_artifactFormTypes.insert(RE::FormType::Weapon); for (const auto& form : dataHandler->GetFormArray()) { - if (form->GetPlayable() && !form->IsBound() && !form->weaponData.flags.all(RE::TESObjectWEAP::Data::Flag::kCantDrop) && !form->IsDeleted() && !form->HasKeyword(dummyKeyword)) { - if (!bExcludeDisenchantableItems || !form->As()->formEnchanting || form->HasKeyword(disallowEnchanting) || form->HasKeyword(daedricArtifact) || form->HasKeyword(extraArtifactKeyword)) { - if (!form->HasKeyword(notArtifactKeyword) && strlen(form->GetName()) > 0) { - g_artifactMap[form->formID] = form; - } + if (form->GetPlayable() && !form->IsBound() && !form->weaponData.flags.all(RE::TESObjectWEAP::Data::Flag::kCantDrop) && !form->IsDeleted()) { + if ((!form->HasKeyword(notArtifactKeyword) || form->HasKeyword(extraArtifactKeyword)) && strlen(form->GetName()) > 0) { + g_artifactMap[form->formID] = form; } } } @@ -82,11 +73,9 @@ namespace ArtifactTracker g_artifactFormTypes.insert(RE::FormType::Armor); for (const auto& form : dataHandler->GetFormArray()) { - if (form->GetPlayable() && !form->IsDeleted() && !form->HasKeyword(dummyKeyword)) { - if (!bExcludeDisenchantableItems || !form->As()->formEnchanting || form->HasKeyword(disallowEnchanting) || form->HasKeyword(daedricArtifact) || form->HasKeyword(extraArtifactKeyword)) { - if (!form->HasKeyword(notArtifactKeyword) && strlen(form->GetName()) > 0) { - g_artifactMap[form->formID] = form; - } + if (form->GetPlayable() && !form->IsDeleted()) { + if ((!form->HasKeyword(notArtifactKeyword) || form->HasKeyword(extraArtifactKeyword)) && strlen(form->GetName()) > 0) { + g_artifactMap[form->formID] = form; } } } @@ -146,7 +135,7 @@ namespace ArtifactTracker SKSE::log::info("Total artifacts: {}", g_artifactMap.size()); - if (settings.at("DumpItemNames")) { + if (settings.at("DumpItemList")) { for (const auto& item : g_artifactMap) { SKSE::log::info("[{:08X}] {}", item.second->formID, item.second->GetName()); } diff --git a/Source/ArtifactTrackerDLL/src/Util.h b/Source/ArtifactTrackerDLL/src/Util.h index f031910..b2c0817 100644 --- a/Source/ArtifactTrackerDLL/src/Util.h +++ b/Source/ArtifactTrackerDLL/src/Util.h @@ -139,7 +139,7 @@ inline void LoadINI(std::map* settings, const char* iniPath) } if (!std::filesystem::exists(iniPath)) { - SKSE::log::warn("{} does not exists, using default values.", iniPath); + SKSE::log::warn("{} does not exist, using default values.", iniPath); return; }