diff --git a/SKSE/Plugins/ArtifactTracker.dll b/SKSE/Plugins/ArtifactTracker.dll index 4cb0634..adcf37b 100644 Binary files a/SKSE/Plugins/ArtifactTracker.dll and b/SKSE/Plugins/ArtifactTracker.dll differ diff --git a/Source/ArtifactTrackerDLL/CMakeLists.txt b/Source/ArtifactTrackerDLL/CMakeLists.txt index 0bf8af5..4dae75c 100644 --- a/Source/ArtifactTrackerDLL/CMakeLists.txt +++ b/Source/ArtifactTrackerDLL/CMakeLists.txt @@ -6,7 +6,7 @@ message("Using toolchain file ${CMAKE_TOOLCHAIN_FILE}.") ######################################################################################################################## project( ArtifactTracker - VERSION 1.0.5 + VERSION 1.0.6 DESCRIPTION "Artifact Tracker" LANGUAGES CXX) set(CMAKE_CXX_STANDARD 23) diff --git a/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp b/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp index ba77424..ff229ea 100644 --- a/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp +++ b/Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp @@ -14,6 +14,7 @@ namespace ArtifactTracker bool g_bBookShelf = false; bool g_bTakeAll = false; bool g_bNotifyNewArtifact = false; + bool g_bWarnMissingMoreHUD = true; std::uint32_t g_bTakeAllCount = 0; std::int32_t g_iFollowerIndex = 0; RE::TESBoundObject* g_cellContainer; @@ -67,10 +68,13 @@ namespace ArtifactTracker std::map settings{ { "DumpItemList", false }, { "NewArtifactNotifications", false }, + { "WarnMissingMoreHUD", true }, + { "WarnMissingKID", true }, }; LoadINI(&settings, "Data/SKSE/Plugins/ArtifactTracker.ini"); g_bNotifyNewArtifact = settings.at("NewArtifactNotifications"); + g_bWarnMissingMoreHUD = settings.at("WarnMissingMoreHUD"); // Preloading item lists @@ -145,6 +149,12 @@ namespace ArtifactTracker OnGameLoad(); // covers new game and coc'ing from the main menu g_bLoaded = true; + if (bKID) { + log::info("Keyword Item Distributor is detected."); + } else { + log::info("Keyword Item Distributor has NOT been detected, using the baseline configuration."); + } + RE::ConsoleLog::GetSingleton()->Print(std::format("Artifact Tracker registered {} items.", g_artifactMap.size()).c_str()); log::info("Total artifacts: {}", g_artifactMap.size()); @@ -155,6 +165,14 @@ namespace ArtifactTracker } } + if (dataHandler->LookupLoadedModByName("DBM_RelicNotifications.esp")) { + RE::DebugMessageBox("Artifact Tracker is incompatible with The Curator's Companion."); + } + + if (!bKID && settings.at("WarnMissingKID")) { + RE::DebugMessageBox("Artifact Tracker requires Keyword Item Distributor. If its absence is intentional, set WarnMissingKID=false in ArtifactTracker.ini."); + } + return true; } @@ -199,6 +217,7 @@ namespace ArtifactTracker const auto vm = RE::BSScript::Internal::VirtualMachine::GetSingleton(); RE::BSTSmartPointer stackCallback; + bool bMoreHUDInstalled = false; if (const auto pluginInfo = g_loadInterface->GetPluginInfo("Ahzaab's moreHUD Plugin"); pluginInfo) { if (!g_bLoaded) log::info("Detected {} v{}", pluginInfo->name, pluginInfo->version); if (pluginInfo->version == 0) { @@ -210,6 +229,7 @@ namespace ArtifactTracker vm->DispatchStaticCall("AhzMoreHud", "RegisterIconFormList", RE::MakeFunctionArguments("dbmNew", std::move(g_listNew)), stackCallback); vm->DispatchStaticCall("AhzMoreHud", "RegisterIconFormList", RE::MakeFunctionArguments("dbmFound", std::move(g_listFound)), stackCallback); vm->DispatchStaticCall("AhzMoreHud", "RegisterIconFormList", RE::MakeFunctionArguments("dbmDisp", std::move(g_listStored)), stackCallback); + bMoreHUDInstalled = true; } else { log::error("MoreHUD has not been installed correctly."); } @@ -217,6 +237,7 @@ namespace ArtifactTracker log::error("MoreHUD has not been detected."); } + bool bMoreHUDInvInstalled = false; if (const auto pluginInfo = g_loadInterface->GetPluginInfo("Ahzaab's moreHUD Inventory Plugin"); pluginInfo) { if (!g_bLoaded) log::info("Detected {} v{}", pluginInfo->name, pluginInfo->version); if (pluginInfo->version == 0) { @@ -228,6 +249,7 @@ namespace ArtifactTracker vm->DispatchStaticCall("AhzMoreHudIE", "RegisterIconFormList", RE::MakeFunctionArguments("dbmNew", std::move(g_listNew)), stackCallback); vm->DispatchStaticCall("AhzMoreHudIE", "RegisterIconFormList", RE::MakeFunctionArguments("dbmFound", std::move(g_listFound)), stackCallback); vm->DispatchStaticCall("AhzMoreHudIE", "RegisterIconFormList", RE::MakeFunctionArguments("dbmDisp", std::move(g_listStored)), stackCallback); + bool bMoreHUDInvInstalled = true; } else { log::error("MoreHUD Inventory Edition has not been installed correctly."); } @@ -235,6 +257,10 @@ namespace ArtifactTracker log::error("MoreHUD Inventory Edition has not been detected."); } + if (g_bWarnMissingMoreHUD && !bMoreHUDInstalled && !bMoreHUDInvInstalled) { + RE::DebugMessageBox("Artifact Tracker requires up-to-date MoreHUD and/or MoreHUD Inventory Edition. If their absence is intentional, set WarnMissingMoreHUD=false in ArtifactTracker.ini."); + } + // TODO: Uncomment when/if QuickLoot EE brings back registering formlists /* if (const auto pluginInfo = g_loadInterface->GetPluginInfo("QuickLootEE"); pluginInfo) { diff --git a/Source/ArtifactTrackerDLL/src/Util.h b/Source/ArtifactTrackerDLL/src/Util.h index 27fd10e..781c49b 100644 --- a/Source/ArtifactTrackerDLL/src/Util.h +++ b/Source/ArtifactTrackerDLL/src/Util.h @@ -178,7 +178,7 @@ inline void LoadINI(std::map* settings, const char* iniPath) } } catch (const std::exception& e) { - log::error(e.what()); + log::error("{}", e.what()); } } diff --git a/Source/ArtifactTrackerDLL/vcpkg.json b/Source/ArtifactTrackerDLL/vcpkg.json index 0dabd77..3ba5d3a 100644 --- a/Source/ArtifactTrackerDLL/vcpkg.json +++ b/Source/ArtifactTrackerDLL/vcpkg.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json", "name": "artifact-tracker", - "version-string": "1.0.5", + "version-string": "1.0.6", "port-version": 0, "description": "Artifact Tracker", "homepage": "https://eddoursul.win/mods/artifact-tracker/",