Fixed book filtering, added a few comments
This commit is contained in:
parent
7c1a934d4e
commit
238d00a816
Binary file not shown.
@ -24,21 +24,21 @@ namespace ArtifactTracker
|
|||||||
const auto dataHandler = RE::TESDataHandler::GetSingleton();
|
const auto dataHandler = RE::TESDataHandler::GetSingleton();
|
||||||
|
|
||||||
if (!dataHandler) {
|
if (!dataHandler) {
|
||||||
SKSE::log::warn("Failed to call RE::TESDataHandler::GetSingleton()");
|
SKSE::log::error("Failed to call RE::TESDataHandler::GetSingleton()");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_cellContainer = dataHandler->LookupForm(0x800, "Artifact Tracker.esp")->As<RE::TESBoundObject>();
|
g_cellContainer = dataHandler->LookupForm(0x800, "Artifact Tracker.esp")->As<RE::TESBoundObject>(); // ETR_CellStorageContainer
|
||||||
|
|
||||||
g_listNew = dataHandler->LookupForm<RE::BGSListForm>(0x803, "Artifact Tracker.esp");
|
g_listNew = dataHandler->LookupForm<RE::BGSListForm>(0x803, "Artifact Tracker.esp"); // ETR_ItemsNew
|
||||||
g_listStored = dataHandler->LookupForm<RE::BGSListForm>(0x805, "Artifact Tracker.esp");
|
g_listStored = dataHandler->LookupForm<RE::BGSListForm>(0x805, "Artifact Tracker.esp"); // ETR_ItemsStored
|
||||||
g_listFound = dataHandler->LookupForm<RE::BGSListForm>(0x806, "Artifact Tracker.esp");
|
g_listFound = dataHandler->LookupForm<RE::BGSListForm>(0x806, "Artifact Tracker.esp"); // ETR_ItemsFound
|
||||||
g_persistentStorage = dataHandler->LookupForm<RE::BGSListForm>(0x807, "Artifact Tracker.esp");
|
g_persistentStorage = dataHandler->LookupForm<RE::BGSListForm>(0x807, "Artifact Tracker.esp"); // ETR_PersistentStorageList
|
||||||
|
|
||||||
g_homeKeyword = dataHandler->LookupForm<RE::BGSKeyword>(0xFC1A3, "Skyrim.esm");
|
g_homeKeyword = dataHandler->LookupForm<RE::BGSKeyword>(0xFC1A3, "Skyrim.esm"); // LocTypePlayerHouse
|
||||||
|
|
||||||
const RE::BGSKeyword* recipeKeyword = dataHandler->LookupForm<RE::BGSKeyword>(0xF5CB0, "Skyrim.esm"); // VendorItemRecipe
|
const auto recipeKeyword = dataHandler->LookupForm<RE::BGSKeyword>(0xF5CB0, "Skyrim.esm"); // VendorItemRecipe
|
||||||
RE::BGSListForm* excludeKeywords = dataHandler->LookupForm<RE::BGSListForm>(0x801, "Artifact Tracker.esp"); // ETR_ExcludeMiscKeywords
|
const auto excludeKeywords = dataHandler->LookupForm<RE::BGSListForm>(0x801, "Artifact Tracker.esp"); // ETR_ExcludeMiscKeywords
|
||||||
|
|
||||||
if (!g_cellContainer || !g_listNew || !g_listStored || !g_listFound || !g_persistentStorage || !g_homeKeyword || !recipeKeyword || !excludeKeywords) {
|
if (!g_cellContainer || !g_listNew || !g_listStored || !g_listFound || !g_persistentStorage || !g_homeKeyword || !recipeKeyword || !excludeKeywords) {
|
||||||
SKSE::log::warn("Failed to load data from Artifact Tracker.esp");
|
SKSE::log::warn("Failed to load data from Artifact Tracker.esp");
|
||||||
@ -49,7 +49,7 @@ namespace ArtifactTracker
|
|||||||
// Preloading item lists
|
// Preloading item lists
|
||||||
|
|
||||||
for (const auto& form : dataHandler->GetFormArray<RE::TESObjectBOOK>()) {
|
for (const auto& form : dataHandler->GetFormArray<RE::TESObjectBOOK>()) {
|
||||||
if (form && !form->TeachesSpell() && (!form->HasKeyword(recipeKeyword) || BookCheck::IsBook(form))) {
|
if (form && !form->TeachesSpell() && (form->HasKeyword(recipeKeyword) || BookCheck::IsBook(form))) {
|
||||||
g_artifactMap[form->formID] = form;
|
g_artifactMap[form->formID] = form;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -130,7 +130,7 @@ namespace ArtifactTracker
|
|||||||
g_bHomeContainer = IsHome()
|
g_bHomeContainer = IsHome()
|
||||||
&& refr
|
&& refr
|
||||||
&& refr.get()->GetParentCell() == RE::PlayerCharacter::GetSingleton()->GetParentCell()
|
&& refr.get()->GetParentCell() == RE::PlayerCharacter::GetSingleton()->GetParentCell()
|
||||||
&& !g_persistentStorage->HasForm(refr.get());
|
&& !g_persistentMap.contains(refr.get()->formID);
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
if (g_bHomeContainer) {
|
if (g_bHomeContainer) {
|
||||||
@ -248,7 +248,7 @@ namespace ArtifactTracker
|
|||||||
g_persistentMap[cellStorage->formID] = cellStorage;
|
g_persistentMap[cellStorage->formID] = cellStorage;
|
||||||
ToggleHomeMode(cellStorage);
|
ToggleHomeMode(cellStorage);
|
||||||
} else {
|
} else {
|
||||||
SKSE::log::warn("Failed to create cell storage in OnCellEnter");
|
SKSE::log::error("Failed to create cell storage in OnCellEnter");
|
||||||
ToggleHomeMode(nullptr);
|
ToggleHomeMode(nullptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -410,8 +410,8 @@ namespace ArtifactTracker
|
|||||||
if (!RefHasItem(g_cellStorage, form->formID)) {
|
if (!RefHasItem(g_cellStorage, form->formID)) {
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
SKSE::log::info("Added dropped {} to cell storage", form->GetName());
|
SKSE::log::info("Added dropped {} to cell storage", form->GetName());
|
||||||
|
RE::DebugNotification("Adding to cell storage");
|
||||||
#endif
|
#endif
|
||||||
RE::DebugNotification("adding to cell storage");
|
|
||||||
g_cellStorage->AddObjectToContainer(form->As<RE::TESBoundObject>(), nullptr, 1, nullptr);
|
g_cellStorage->AddObjectToContainer(form->As<RE::TESBoundObject>(), nullptr, 1, nullptr);
|
||||||
}
|
}
|
||||||
ListRemoveItem(g_listFound, form);
|
ListRemoveItem(g_listFound, form);
|
||||||
|
@ -33,7 +33,14 @@ auto EventListener::ProcessEvent(
|
|||||||
RE::BSTEventSource<RE::BGSActorCellEvent>* a_eventSource)
|
RE::BSTEventSource<RE::BGSActorCellEvent>* a_eventSource)
|
||||||
-> RE::BSEventNotifyControl
|
-> RE::BSEventNotifyControl
|
||||||
{
|
{
|
||||||
|
// Fires on every cell change, loaded or not.
|
||||||
|
// If it's new and not loaded, we can't add a new cell storage.
|
||||||
|
// In this case, it registers TESCellFullyLoadedEvent, which ensures a new ref can be added.
|
||||||
if (a_event->flags == RE::BGSActorCellEvent::CellFlag::kEnter) {
|
if (a_event->flags == RE::BGSActorCellEvent::CellFlag::kEnter) {
|
||||||
|
#ifdef _DEBUG
|
||||||
|
SKSE::log::info("BGSActorCellEvent");
|
||||||
|
#endif
|
||||||
|
|
||||||
ArtifactTracker::OnCellEnter(a_event->cellID);
|
ArtifactTracker::OnCellEnter(a_event->cellID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,7 +66,11 @@ auto EventListener::ProcessEvent(
|
|||||||
RE::BSTEventSource<RE::MenuOpenCloseEvent>* a_eventSource)
|
RE::BSTEventSource<RE::MenuOpenCloseEvent>* a_eventSource)
|
||||||
-> RE::BSEventNotifyControl
|
-> RE::BSEventNotifyControl
|
||||||
{
|
{
|
||||||
|
// This listener is expected to be unregistered outside of home.
|
||||||
if (ArtifactTracker::IsHome() && a_event->menuName == "ContainerMenu") {
|
if (ArtifactTracker::IsHome() && a_event->menuName == "ContainerMenu") {
|
||||||
|
#ifdef _DEBUG
|
||||||
|
SKSE::log::info("MenuOpenCloseEvent");
|
||||||
|
#endif
|
||||||
ArtifactTracker::SetContainerMode(a_event->opening);
|
ArtifactTracker::SetContainerMode(a_event->opening);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#include "Papyrus.h"
|
#include "Papyrus.h"
|
||||||
#include "ArtifactTracker.h"
|
#include "ArtifactTracker.h"
|
||||||
|
|
||||||
using namespace ArtifactTracker;
|
|
||||||
using namespace RE::BSScript;
|
using namespace RE::BSScript;
|
||||||
using namespace SKSE;
|
using namespace SKSE;
|
||||||
using namespace SKSE::log;
|
using namespace SKSE::log;
|
||||||
|
Loading…
Reference in New Issue
Block a user