From a7229e0beadd675a6eadea73f942e12c31e667d2 Mon Sep 17 00:00:00 2001 From: Eddoursul Date: Mon, 27 Jun 2022 13:38:49 +0200 Subject: [PATCH] Moved most synchronous operations to DLL; decoded Formlist.Revert and FormList.RemoveAddedForm --- Artifact Tracker.esp | Bin 6670 -> 6101 bytes SKSE/Plugins/ArtifactTrackerFunctions.dll | Bin 420352 -> 420864 bytes Scripts/ETR_Functions.pex | Bin 1248 -> 1125 bytes Scripts/ETR_TrackFoundItems.pex | Bin 4843 -> 0 bytes Scripts/ETR_TrackNewItems.pex | Bin 2464 -> 0 bytes Scripts/ETR_TrackStoredItems.pex | Bin 4770 -> 4891 bytes Source/ArtifactTrackerDLL/CMakeLists.txt | 3 +- .../src/ArtifactTracker.cpp | 321 ++++++++++++++++++ .../ArtifactTrackerDLL/src/ArtifactTracker.h | 29 ++ Source/ArtifactTrackerDLL/src/BookCheck.cpp | 27 -- Source/ArtifactTrackerDLL/src/BookCheck.h | 4 - .../ArtifactTrackerDLL/src/EventListener.cpp | 38 +++ Source/ArtifactTrackerDLL/src/EventListener.h | 29 ++ .../src/Functions/ArtifactTracker.h | 288 ---------------- .../src/Functions/ObjectReference.h | 35 -- Source/ArtifactTrackerDLL/src/Main.cpp | 17 +- Source/ArtifactTrackerDLL/src/MiscCheck.cpp | 28 -- Source/ArtifactTrackerDLL/src/MiscCheck.h | 8 - Source/ArtifactTrackerDLL/src/Papyrus.cpp | 9 +- .../ArtifactTrackerDLL/src/PapyrusFunctions.h | 164 +++++++++ Source/ArtifactTrackerDLL/src/Util.h | 78 +++++ Source/Scripts/ETR_Functions.psc | 8 +- Source/Scripts/ETR_TrackFoundItems.psc | 168 --------- Source/Scripts/ETR_TrackNewItems.psc | 68 ---- Source/Scripts/ETR_TrackStoredItems.psc | 72 ++-- 25 files changed, 710 insertions(+), 684 deletions(-) delete mode 100644 Scripts/ETR_TrackFoundItems.pex delete mode 100644 Scripts/ETR_TrackNewItems.pex create mode 100644 Source/ArtifactTrackerDLL/src/ArtifactTracker.cpp create mode 100644 Source/ArtifactTrackerDLL/src/ArtifactTracker.h create mode 100644 Source/ArtifactTrackerDLL/src/EventListener.cpp create mode 100644 Source/ArtifactTrackerDLL/src/EventListener.h delete mode 100644 Source/ArtifactTrackerDLL/src/Functions/ArtifactTracker.h delete mode 100644 Source/ArtifactTrackerDLL/src/Functions/ObjectReference.h delete mode 100644 Source/ArtifactTrackerDLL/src/MiscCheck.cpp delete mode 100644 Source/ArtifactTrackerDLL/src/MiscCheck.h create mode 100644 Source/ArtifactTrackerDLL/src/PapyrusFunctions.h create mode 100644 Source/ArtifactTrackerDLL/src/Util.h delete mode 100644 Source/Scripts/ETR_TrackFoundItems.psc delete mode 100644 Source/Scripts/ETR_TrackNewItems.psc diff --git a/Artifact Tracker.esp b/Artifact Tracker.esp index b2cb0cb90422f391c986fbadb3cd11ecea869239..928436115c405dad152e8cabbe57e85218e7ad2e 100644 GIT binary patch delta 237 zcmeA(xvD=wjj4!tqQ*|fTN5A6VZ1fDp3zIV!QMS6G+-421B0`_UkH$5xHb6><4VR` zo7004-6Mx6iv delta 569 zcmcbr-)AyGjY)uGqQ*|f8xtSRVZ1T9p3zH~fx$f}G+-421B0`_UkH$5xH0(-<4VRG zo7W&P%sb;&KS zEpc5K6`Of^&hS6Ky=%L*IxJqbY^x6GcPrHeOXR1jV7dHsD3~cfZ3(}w|8x}?!0Ha_4P`Jf-lOUD?6C+F0+*J76_XV zaQFuTZ+&G12-=Dt5EwiH2)s9CE0JwRK!IpA0?U3iA+Qs*Y9MeBNoj2_69NI%2qc*h z*d-ck4VG{BvrjEOlMh&e1R4V#M=j^$F9FVBfq3;q zXpO$FyR!3^@r}Bng1$-gwTaK6^i6Im&FQsp1)eXS@Dz%G}jD=iesh8cO< z>>2A-$?Dh{dCB^We97>d^|8{@g4gVOt5I}ZZDz0XpnrB}fhrGo>(@$!_MqgITcpm- z1-I;453ZIt6{uFSGV2EPMlPGJ3ZdKAvR$e&RjTMGlvuEN*7dx<$g)s8RXfEi)P

N5Q7=Hq%bKxSk!~$hz%iQuS%Vk) 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 AegFUf delta 133256 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� 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 diff --git a/Scripts/ETR_Functions.pex b/Scripts/ETR_Functions.pex index 99cf80419966529d65acca91aca86c892c13276a..b4f5e984df980494e5a7b4999efb4b3daef5f2ea 100644 GIT binary patch delta 569 zcmY*U%SyvQ6g@ME+9a*5?^<6?eN{maL@Qa@g@RDp;&UMgZ5<^(qNFM4%BAa&PY_rB zfE&Rt5jU=M<>Qw9# z;RHy;M}nIsu50IwBM}OVmzIERk`v;k>ZzzXTjE&Q!m0^KWQZ zzOHv}JGN<^Krsy8WUpdFu8VW(FpO=d;s`I#7riK7@osolYc2N))zhSdTaGA04B^sj ziK?#%b68b$pgZIxNQfhW9`vG*jvos8TO`8(k$!Yyum#E(qDPX{!$hVq5(v7QUAN@O zF-nTDrk~s%CI^GY378-<-4sOH0{-tO5_#%@JI&5ulJXQm(hvi!JxwpkXJZUA#1pDA bto_1JNjn?1hgl;a`xoHkIoAeQikyA`r!iG? literal 1248 zcmb7D%W~5&6upk!Je;&8j<)9%(%5%0lQPQQEB#*TpOwXsOr;VRbMS@glKC1|KsvMb(#CCMT$JXkWp1>;g?l z*j&ulSMu!2WL8j1iUS;RVJi-$=!wMQW-LX*O-EP;)iF;J6yP5T4K;;nS!LZE&7xD5 zquD`F&J8j-R;3hbrbehs+{7PoRwQVBQnDXT&k@3$j)_UhHd1PXg{#M>-!ayoFhzwT zM(`;rG-(>ju0qr8kQLhD;6Ta@YWpz-`+5Sw2PqJm@j@5dv-DjlG~>eb>`m_ig^m=) z$S*L7CSw$l9`iiP&2>fwOt_B6q_GK`MkzHBcK^dmOQ;UC;$j5b?u}6fW|HbciJUeV z#f73XYMT{mosPYPx7R&pr5G0~OqT75v@9d!=NR*pQ=MhyP!~9{K^mQo>BVQJAjmOG zXAl4K547m%dQdSxf&sn*fdfkpR2`@}PzpybWt`6K)xESegqy+$Qo4iR<*4(VUBwYeFy=f>O9k#69xbn0eOVzRMTD z1KOCJ4=Ma3*epYbw3Y??w76m#5IM3mf;wzDq5_X8%#&ICWfGoR8#}j%c(zDX;5ls1 o32(!L9lD7vcwtEoUXq0euZZ&3sg)kQrd@eggm*|Mwza_i18pS}ZvX%Q diff --git a/Scripts/ETR_TrackFoundItems.pex b/Scripts/ETR_TrackFoundItems.pex deleted file mode 100644 index 185b2035c2d6e63da6329a557d645254bdd5fe8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4843 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 literal 4770 zcmbVPS5q9>75*9~kwg}tunf}5>#))a5FkeKYJn9J76O^Dl2-vWGZ$#h&<))^!YHg= zAx#aKM+hL@Y{a{Yfeeyl=Hhg;fZ+~xYf(8C; z{^ei)z~I%jm5nvuE>~AW&sUX&Q0)fi_JT56uU0Bv-4E)uB95pSKX>4`MSK%|ud}1m z!Zj7HhIXjXa?J}pgXWgq1=k7Dwd~%i*@wzs^z6ztdshi((JR}be2H zQoeG_YNqDc0oonoan7r|A(|KX=&jj7xXN71YR+>*+i{hT&gIQVsvIWP7%Y_->e}I+ zGC5rL>VevLZ2QPp)!~8XSCHR~0?W*LUJY-QN>ZgcRjWyH?d{aPwrgR$(P`bAD=H}4 z?k(j9P7o?a)nlx6LzdKmwkT|Q{%(y5=x>mk&S{0tQprTexHThdmw7a@o3r)c5N**h zx_ZOLMS5fua4d(`voM?~b+88um2=InR1mOpH<#ot6n4M-qls zLQ9eY+7l5=fS%7bzzp!~N{k_~O#^Sp4!PCPcie5fHD7njGBCw(#}13W3hTZbkWj^P z-RIPV#Xt{pzEm=!oLTZ*&UUFJ?+@7gOrUC8pq$gWcOgb5Vq`K#refqG3PyQ!6dCDf zESN^irsq{xcf?_=a~^N(>6H;tAfjYwg0k=Ig~&OJ&Mud$t(?wTVm^kP9C7zP+U%q+ z0W23ybqB2rf$ZAy9`~dp5eo~QD{5N?(VzEx&B#{NW_=s&OJ3+~Ic8-sU^-Zg*R<#a z#Z4Ksd_8n(PI!pSfz8+kSL&|If)`)aM;B*E=eMTp-Cf!AcG6|)a)qh^25-||ESW}8 z=U=Rw8=*sm{>E0+zW_&g@idG9I#&-mBHT18!xc&}vs_?Lf)+vZRi@%}vs2SA|ILi*CF6>YWldbv)_Mg#?>O zu*n3QO0bK_U$+DHViyAqompjNYAU)S+gX7$o}NZ(!PVKZsd7{5OH}*H6V*t;t}fRq zTrU)A(R~c^xOBpcrh6Q%4B|#~*%f3gmgExeU3dL-TB2wooAa^pXpD@ZGukb>);B)} z7{-G8nCs^Ghgao2@6cU^Yo=%3_ZQW!JaB}SXCw3 z;)1IV%o?|P?p3#9@OICgW%#b4*hjhYl5I#@FdbuK=M!u+!NwA798y(jg!#(;`LDb$ z_+_-vBwt-Ynqwp*)G^J=0v#A86bT~4J^I}ZsI1E2)D3`HNv`v+qgscnuhy$fQ?t+A#B2?hAkM_ z#x@?Iie0z_kFZDBC-@rbcuY7TJk=qyK&S96d|ShJ@ZAW$2Ls>75AZ_`Kf;eA_!uAK zC-|v`pW){b0Ig^Pj^h{jrG{VO*AaYzPw*T37QfT*d;B4SKSJP78k*2U3h9XhFvOnQ>EVNaUZcr49CQYNyb^`^uJjMh}Fl_gyQW9jBQ&X8m=3#z;+CON8H zCQkaY(9INIB5kUnpLxo<8+0YaM&0fPU5m0yqT5A3?+Vh|V__=7B|hR3pN?1J zMU%!R#6l{^O0Z(fMqjel`ngxi*MwWmy6E~OOO7P@U;Fe=6DXaQES%))qJ;r!f7QYY zd2)6}%SI^5in}W$jlycwcE(BOi1Ea@hQz9uszX^YjWr7=;$bGaPE`x<>8z+TOMF-d zJWFbh7>mPH=d=R7=}FC*oHSE{5WS)fmiBWdoDawoBdRiq6J`!SH36K7127q$e4Pb# zP8j~}$P*J2rb&#a4)bbiNw+b>3w@dwdKW(Ap55hd0r$9x_sM<0w`}JIxeuu!n`rZW ziW%LND0|q^dwL4*wrcDiCHF*<<4GLOyA1U{Urb?<(aVOJ2ZoT&!-fbs50tTo_v3lk zpx=rff`?Izcj!suEw3FF!&DY*9kcd!#}q_!WEFKS`7X3&H2QszE6xv>^Edfi6*0Lsj+Xe-T!~GZD!bYIg`W0KT6_krCfv*8KZ-W%I3qrk)VerCPk2?6 z=TLdg@6$W{rPwRp-G129|lOoS}KQ_4?ScxJ|k#?MI8Sj+Vm>1j7t+W%Ujb{c&s zPTP3YbF)M|F validMisc; + std::unordered_map validBooks; + + void Init() + { + EventListener::Install(); + + const auto dataHandler = RE::TESDataHandler::GetSingleton(); + + notifyNewArtifact = dataHandler->LookupForm(0x809, "Artifact Tracker.esp"); + cellContainer = dataHandler->LookupForm(0x800, "Artifact Tracker.esp")->As(); + + listNew = dataHandler->LookupForm(0x803, "Artifact Tracker.esp"); + listStored = dataHandler->LookupForm(0x805, "Artifact Tracker.esp"); + listFound = dataHandler->LookupForm(0x806, "Artifact Tracker.esp"); + persistentStorage = dataHandler->LookupForm(0x807, "Artifact Tracker.esp"); + + homeKeyword = dataHandler->LookupForm(0xFC1A3, "Skyrim.esm"); + + if (!cellContainer) { + SKSE::log::warn("cellContainer is empty"); + } + + if (!persistentStorage) { + SKSE::log::warn("persistentStorage is empty"); + } + + // Preloading item lists + const RE::BGSKeyword* recipeKeyword = dataHandler->LookupForm(0xF5CB0, "Skyrim.esm"); // VendorItemRecipe + + for (const auto& form : dataHandler->GetFormArray()) { + if (form && !form->TeachesSpell() && (!form->HasKeyword(recipeKeyword) || BookCheck::IsBook(form))) { + validBooks[form->formID] = form; + } + } + + RE::BGSListForm* excludeKeywords = dataHandler->LookupForm(0x801, "Artifact Tracker.esp"); // ETR_ExcludeMiscKeywords + + for (const auto& form : dataHandler->GetFormArray()) { + if (form->GetPlayable() && !form->IsGold() && !form->IsLockpick() && !form->HasKeywordInList(excludeKeywords, false)) { + validMisc[form->formID] = form; + } + } + } + + bool IsArtifact(RE::TESForm* a_form) + { + switch (a_form->GetFormType()) { + case RE::FormType::Armor: + return a_form->GetPlayable(); + case RE::FormType::Weapon: + return a_form->GetPlayable() && a_form->formID != 0x000001F4; + case RE::FormType::Book: + return validBooks.contains(a_form->formID); + case RE::FormType::Misc: + return validMisc.contains(a_form->formID); + default: + return false; + } + } + + bool SetHomeLocation(RE::BGSLocation* a_location = NULL) + { + bAtHome = a_location && a_location->HasKeyword(homeKeyword); + return bAtHome; + } + + RE::TESObjectREFR* GetCellStorage( + RE::TESObjectREFR* a_ref, + RE::BGSListForm* a_refList, + RE::TESBoundObject* a_objectToCreate, + bool a_autoCreate) + { + RE::TESObjectREFR* result = NULL; + + if (!a_ref || !a_refList || !a_objectToCreate) { + SKSE::log::warn("Invalid arguments in GetCellStorage"); + return result; + } + + RE::TESObjectCELL* cell = a_ref->GetParentCell(); + + a_refList->ForEachForm([&result, &cell, &a_objectToCreate](RE::TESForm& a_exform) { + const auto ref = a_exform.As(); + + if (ref && ref->GetParentCell() == cell && ref->GetBaseObject()->formID == a_objectToCreate->formID) { + result = ref; + return false; + } + + return true; + }); + + if (!result && a_autoCreate) { + result = a_ref->PlaceObjectAtMe(a_objectToCreate, true).get(); + result->Disable(); + a_refList->AddForm(result); + } + + if (!result) { + SKSE::log::warn("Failed to find or create cell storage in GetCellStorage"); + } + + return result; + } + + void SyncCellStorage(RE::TESObjectREFR* a_cellStorage, RE::BGSListForm* a_excludeContainers) + { + if (!a_cellStorage || !a_excludeContainers) { + SKSE::log::warn("Invalid arguments in SyncCellStorage"); + return; + } + + std::unordered_map cellItems; + + const auto cell = a_cellStorage->GetParentCell(); + const auto inv = a_cellStorage->GetInventory(); + + for (const RE::NiPointer a_ref : cell->references) { + const auto baseObj = a_ref->GetBaseObject(); + + if (baseObj->formType == RE::FormType::Container || (baseObj->formType == RE::FormType::NPC && !a_ref->IsDisabled() && baseObj->As()->GetRace()->formID == 0x0010760A)) { + if (a_excludeContainers->HasForm(a_ref->formID) || baseObj->formID == 0xDC9E7) { // skip persistent and PlayerBookShelfContainer + continue; + } + + const auto contInv = a_ref->GetInventory([&](RE::TESBoundObject& a_object) -> bool { + return !cellItems.contains(a_object.formID); + }); + + for (const auto& [item, data] : contInv) { + if (data.first > 0) { + cellItems[item->formID] = true; + if (inv.find(item) == inv.end()) { + if (IsArtifact(item)) { + a_cellStorage->AddObjectToContainer(item, nullptr, 1, nullptr); + } + } + } + } + + continue; + } + + if (a_ref->IsMarkedForDeletion()) { + SKSE::log::info("found marked for deletion"); + } + + if (a_ref->IsDisabled() || a_ref->IsMarkedForDeletion()) { + continue; + } + + if (cellItems.contains(baseObj->formID)) { + continue; + } + + cellItems[baseObj->formID] = true; + + if (!IsArtifact(baseObj)) { + continue; + } + + if (inv.find(baseObj) == inv.end()) { + a_cellStorage->AddObjectToContainer(baseObj, nullptr, 1, nullptr); + } + } + + for (const auto& [item, data] : inv) { + const auto& [count, entry] = data; + if (count > 0 && !cellItems.contains(item->formID)) { + a_cellStorage->RemoveItem(item, count, RE::ITEM_REMOVE_REASON::kRemove, nullptr, nullptr); + } + } + + cellItems.clear(); + } + + void OnItemPickup(RE::TESBoundObject* form) + { + RE::TESObjectREFR* cellStorage = GetCellStorage(RE::PlayerCharacter::GetSingleton(), persistentStorage, cellContainer, true); + + SyncCellStorage(cellStorage, persistentStorage); + + if (!RefHasItem(cellStorage, form) && !GetItemCountInList(persistentStorage, form)) { + RemoveListItem(listStored, form); + listFound->AddForm(form); + } + } + + void OnContainerChanged(const RE::TESContainerChangedEvent* a_event) + { + if (a_event->newContainer == 0x14) { + return; + RE::TESBoundObject* form = RE::TESForm::LookupByID(a_event->baseObj); + + if (!form || !IsArtifact(form)) { + return; + } + + if (listFound->HasForm(form) || listStored->HasForm(form)) { + return; + } + + if (listNew->HasForm(form)) { + + RemoveListItem(listNew, form); + + listFound->AddForm(form); + + if (notifyNewArtifact->value) { + const auto itemName = form->GetName(); + char* notificationText = new char[strlen("New artifact acquired: ") + strlen(itemName) + 1]; + strcpy(notificationText, "New artifact acquired: "); + strcat(notificationText, itemName); + RE::DebugNotification(notificationText); + delete[] notificationText; + } + + } + + } else if (a_event->oldContainer == 0x14) { + + RE::TESBoundObject* form = RE::TESForm::LookupByID(a_event->baseObj); + + SKSE::log::info("{}", form->GetName()); + if (!form || !IsArtifact(form)) { + return; + } + + if (!a_event->newContainer) { + if (bAtHome && a_event->reference) { // dropped at home + RE::TESObjectREFR* cellStorage = GetCellStorage(RE::PlayerCharacter::GetSingleton(), persistentStorage, cellContainer, true); + if (!RefHasItem(cellStorage, form)) { + cellStorage->AddObjectToContainer(form, nullptr, 1, nullptr); + } + if (listFound->HasForm(form)) { + RemoveListItem(listFound, form); + } + listStored->AddForm(form); + RE::DebugNotification("added to stored"); + return; + } + + if (listStored->HasForm(form)) { + return; + } + + if (!RefHasItem(RE::PlayerCharacter::GetSingleton(), form) && !FollowersHaveItem(form)) { + if (listFound->HasForm(form)) { + RemoveListItem(listFound, form); + } + listNew->AddForm(form); + RE::DebugNotification("added to new"); + } + + return; + } + + bool bPersistent = false; + for (const auto& ref : persistentStorage->forms) { + if (ref && ref->formID == a_event->newContainer) { + bPersistent = true; + break; + } + } + + if (!bPersistent && !bAtHome) { + if (!RefHasItem(RE::PlayerCharacter::GetSingleton(), form) && !FollowersHaveItem(form->As())) { + if (listFound->HasForm(form)) { + RemoveListItem(listFound, form); + } + listNew->AddForm(form); + RE::DebugNotification("added to new"); + } + return; + } + + if (listStored->HasForm(form)) { + return; + } + + if (!bPersistent && bAtHome) { + RE::TESObjectREFR* targetContainer = RE::TESForm::LookupByID(a_event->newContainer); + + if (!targetContainer || targetContainer->GetParentCell() != RE::PlayerCharacter::GetSingleton()->GetParentCell()) { + return; + } + + if (targetContainer->GetBaseObject()->Is(RE::FormType::NPC) && targetContainer->GetBaseObject()->As()->GetRace()->formID != 0x0010760A) { + return; + } + + RE::TESObjectREFR* cellStorage = GetCellStorage(RE::PlayerCharacter::GetSingleton(), persistentStorage, cellContainer, true); + cellStorage->AddObjectToContainer(form->As(), nullptr, 1, nullptr); + RE::DebugNotification("updated cellStorage"); + } + + if (listFound->HasForm(form)) { + RemoveListItem(listFound, form); + } + + listStored->AddForm(form); + RE::DebugNotification("added to stored"); + } + } +} diff --git a/Source/ArtifactTrackerDLL/src/ArtifactTracker.h b/Source/ArtifactTrackerDLL/src/ArtifactTracker.h new file mode 100644 index 0000000..35c2322 --- /dev/null +++ b/Source/ArtifactTrackerDLL/src/ArtifactTracker.h @@ -0,0 +1,29 @@ +#pragma once + +namespace ArtifactTracker +{ + extern RE::TESGlobal* notifyNewArtifact; + extern RE::TESBoundObject* cellContainer; + extern RE::BGSListForm* listNew; + extern RE::BGSListForm* listStored; + extern RE::BGSListForm* listFound; + extern RE::BGSListForm* persistentStorage; + extern RE::BGSKeyword* homeKeyword; + extern bool bAtHome; + extern std::unordered_map validMisc; + extern std::unordered_map validBooks; + + void Init(); + + bool IsArtifact(RE::TESForm* a_item); + + bool SetHomeLocation(RE::BGSLocation* a_location); + + RE::TESObjectREFR* GetCellStorage(RE::TESObjectREFR* a_ref, RE::BGSListForm* a_refList, RE::TESBoundObject* a_objectToCreate, bool a_autoCreate = true); + + void SyncCellStorage(RE::TESObjectREFR* a_cellStorage, RE::BGSListForm* a_excludeContainers); + + void OnItemPickup(RE::TESBoundObject* form); + + void OnContainerChanged(const RE::TESContainerChangedEvent* a_event); +} diff --git a/Source/ArtifactTrackerDLL/src/BookCheck.cpp b/Source/ArtifactTrackerDLL/src/BookCheck.cpp index 73038a1..a0d78c6 100644 --- a/Source/ArtifactTrackerDLL/src/BookCheck.cpp +++ b/Source/ArtifactTrackerDLL/src/BookCheck.cpp @@ -3,33 +3,6 @@ // Mostly borrowed from Fix Note icon for SkyUI by 0xC0000005 namespace BookCheck { - std::unordered_map validBooks; - - void PreloadBookList() - { - const auto dataHandler = RE::TESDataHandler::GetSingleton(); - - if (!dataHandler) { - return; - } - - const RE::BGSKeyword* recipeKeyword = dataHandler->LookupForm(0xF5CB0, "Skyrim.esm"); // VendorItemRecipe - - for (const auto& form : dataHandler->GetFormArray()) { - if (!form || form->TeachesSpell()) { - continue; - } - if (form->HasKeyword(recipeKeyword) || IsBook(form)) { - validBooks[form->formID] = form; - } - } - } - - std::unordered_map GetBookList() - { - return validBooks; - } - const char* ExtractFileName(const char* const path, size_t& fileNameLength) { if (!path) { diff --git a/Source/ArtifactTrackerDLL/src/BookCheck.h b/Source/ArtifactTrackerDLL/src/BookCheck.h index 475df3c..4249a60 100644 --- a/Source/ArtifactTrackerDLL/src/BookCheck.h +++ b/Source/ArtifactTrackerDLL/src/BookCheck.h @@ -3,10 +3,6 @@ // Mostly borrowed from Fix Note icon for SkyUI by 0xC0000005 namespace BookCheck { - void PreloadBookList(); - - std::unordered_map GetBookList(); - const char* ExtractFileName(const char* const path, size_t& fileNameLength); // Performs a case-sensitive search for 'needle' in the specified string, diff --git a/Source/ArtifactTrackerDLL/src/EventListener.cpp b/Source/ArtifactTrackerDLL/src/EventListener.cpp new file mode 100644 index 0000000..961a59a --- /dev/null +++ b/Source/ArtifactTrackerDLL/src/EventListener.cpp @@ -0,0 +1,38 @@ +#include "EventListener.h" +#include "ArtifactTracker.h" + + +auto EventListener::GetSingleton() -> EventListener* +{ + static EventListener singleton{}; + return std::addressof(singleton); +} + +void EventListener::Install() +{ + const auto eventSource = RE::ScriptEventSourceHolder::GetSingleton(); + eventSource->AddEventSink(EventListener::GetSingleton()); + eventSource->AddEventSink(EventListener::GetSingleton()); +} + +auto EventListener::ProcessEvent( + const RE::TESActorLocationChangeEvent* a_event, + RE::BSTEventSource* a_eventSource) + -> RE::BSEventNotifyControl +{ + if (a_event->actor && a_event->actor->IsPlayerRef()) { + ArtifactTracker::SetHomeLocation(a_event->newLoc); + } + + return RE::BSEventNotifyControl::kContinue; +} + +auto EventListener::ProcessEvent( + const RE::TESContainerChangedEvent* a_event, + RE::BSTEventSource* a_eventSource) + -> RE::BSEventNotifyControl +{ + ArtifactTracker::OnContainerChanged(a_event); + + return RE::BSEventNotifyControl::kContinue; +} \ No newline at end of file diff --git a/Source/ArtifactTrackerDLL/src/EventListener.h b/Source/ArtifactTrackerDLL/src/EventListener.h new file mode 100644 index 0000000..fce8778 --- /dev/null +++ b/Source/ArtifactTrackerDLL/src/EventListener.h @@ -0,0 +1,29 @@ +#pragma once + +class EventListener : + public RE::BSTEventSink, + public RE::BSTEventSink +{ +public: + ~EventListener() = default; + EventListener(const EventListener&) = delete; + EventListener& operator=(const EventListener&) = delete; + EventListener& operator=(EventListener&&) = delete; + + static auto GetSingleton() -> EventListener*; + + static void Install(); + + auto ProcessEvent( + const RE::TESActorLocationChangeEvent* a_event, + RE::BSTEventSource* a_eventSource) + -> RE::BSEventNotifyControl override; + + auto ProcessEvent( + const RE::TESContainerChangedEvent* a_event, + RE::BSTEventSource* a_eventSource) + -> RE::BSEventNotifyControl override; + +private: + EventListener() = default; +}; \ No newline at end of file diff --git a/Source/ArtifactTrackerDLL/src/Functions/ArtifactTracker.h b/Source/ArtifactTrackerDLL/src/Functions/ArtifactTracker.h deleted file mode 100644 index 9cd09ac..0000000 --- a/Source/ArtifactTrackerDLL/src/Functions/ArtifactTracker.h +++ /dev/null @@ -1,288 +0,0 @@ -#pragma once - -namespace Papyrus::ArtifactTracker -{ - inline bool is_artifact(RE::TESForm* a_form) - { - switch (a_form->GetFormType()) { - case RE::FormType::Armor: - return a_form->GetPlayable(); - case RE::FormType::Weapon: - return a_form->GetPlayable() && a_form->formID != 0x000001F4; - case RE::FormType::Book: - return BookCheck::GetBookList().contains(a_form->formID); - case RE::FormType::Misc: - return MiscCheck::GetMiscList().contains(a_form->formID); - default: - return false; - } - } - - inline std::int32_t AddAllFormsToList(RE::StaticFunctionTag*, - RE::BGSListForm* a_targetList, - short a_formType, - RE::BGSListForm* a_storedList, - RE::BGSListForm* a_foundList) - { - const auto formType = static_cast(a_formType); - - switch (formType) { - - case RE::FormType::Book: - for (auto const& item : BookCheck::GetBookList()) { - if (!a_storedList->HasForm(item.second) && !a_foundList->HasForm(item.second)) { - a_targetList->AddForm(item.second); - } - } - break; - - case RE::FormType::Misc: - for (auto const& item : MiscCheck::GetMiscList()) { - if (!a_storedList->HasForm(item.second) && !a_foundList->HasForm(item.second)) { - a_targetList->AddForm(item.second); - } - } - break; - - case RE::FormType::None: - break; - - default: - const auto dataHandler = RE::TESDataHandler::GetSingleton(); - - if (!dataHandler) { - return a_targetList->forms.size(); - } - - for (const auto& form : dataHandler->GetFormArray(formType)) { - if (!form || !form->GetPlayable()) { - continue; - } - if (a_storedList->HasForm(form) || a_foundList->HasForm(form)) { - continue; - } - a_targetList->AddForm(form); - } - } - - return a_targetList->forms.size(); - } - - inline std::int32_t AddArtifactsToList(VM* a_vm, StackID a_stackID, RE::StaticFunctionTag*, - RE::TESForm* a_refOrList, - RE::BGSListForm* a_targetList, - RE::BGSListForm* a_excludeList = NULL) - { - if (!a_refOrList) { - a_vm->TraceStack("a_refOrList in AddArtifactsToList is None", a_stackID); - return 0; - } - if (!a_targetList) { - a_vm->TraceStack("a_targetList in AddArtifactsToList is None", a_stackID); - return 0; - } - - if (a_refOrList->Is(RE::FormType::FormList)) { - a_refOrList->As()->ForEachForm([&](RE::TESForm& a_exform) { - const auto refrItem = a_exform.As(); - if (refrItem) { - AddArtifactsToList(a_vm, a_stackID, nullptr, refrItem, a_targetList, a_excludeList); - } - return true; - }); - return a_targetList->forms.size(); - } - - const auto containerRef = a_refOrList->As(); - - if (!containerRef) { - a_vm->TraceStack("containerRef in AddArtifactsToList is not a reference", a_stackID); - return 0; - } - - const auto inv = containerRef->GetInventory([&](RE::TESBoundObject& a_exform) { - return is_artifact(&a_exform) && (!a_excludeList || !a_excludeList->HasForm(&a_exform)); - }); - - for (const auto& item : inv) { - if (item.second.first > 0) { - a_targetList->AddForm(item.first); - } - } - - return a_targetList->forms.size(); - } - - inline RE::TESObjectREFR* GetCellStorage(RE::StaticFunctionTag*, - RE::TESObjectREFR* a_ref, - RE::BGSListForm* a_refList, - RE::TESBoundObject* a_objectToCreate, - bool a_autoCreate = true) - { - RE::TESObjectREFR* result = NULL; - - if (!a_ref || !a_refList || !a_objectToCreate) { - return result; - } - - RE::TESObjectCELL* cell = a_ref->GetParentCell(); - - a_refList->ForEachForm([&result, &cell, &a_objectToCreate](RE::TESForm& a_exform) { - const auto ref = a_exform.As(); - - if (ref && ref->GetParentCell() == cell && ref->GetBaseObject()->formID == a_objectToCreate->formID) { - result = ref; - return false; - } - - return true; - }); - - if (!result && a_autoCreate) { - result = a_ref->PlaceObjectAtMe(a_objectToCreate, true).get(); - result->Disable(); - a_refList->AddForm(result); - } - - return result; - } - - inline void SyncCellStorage(VM* a_vm, StackID a_stackID, RE::StaticFunctionTag*, - RE::TESObjectREFR* a_cellStorage, - RE::BGSListForm* a_excludeContainers) - { - if (!a_cellStorage) { - return; - } - - std::unordered_map cellItems; - - const auto cell = a_cellStorage->GetParentCell(); - const auto inv = a_cellStorage->GetInventory(); - - for (const RE::NiPointer a_ref : cell->references) { - const auto baseObj = a_ref->GetBaseObject(); - - if (baseObj->formType == RE::FormType::Container || (baseObj->formType == RE::FormType::NPC && !a_ref->IsDisabled() && baseObj->As()->GetRace()->formID == 0x0010760A)) { - if (a_excludeContainers->HasForm(a_ref->formID) || baseObj->formID == 0xDC9E7) { // skip persistent and PlayerBookShelfContainer - continue; - } - - const auto contInv = a_ref->GetInventory([&](RE::TESBoundObject& a_object) -> bool { - return !cellItems.contains(a_object.formID); - }); - - for (const auto& [item, data] : contInv) { - if (data.first > 0) { - cellItems[item->formID] = true; - if (inv.find(item) == inv.end()) { - if (is_artifact(item)) { - a_cellStorage->AddObjectToContainer(item, nullptr, 1, nullptr); - } - } - } - } - - continue; - } - - if (a_ref->IsDisabled() || a_ref->IsMarkedForDeletion()) { - continue; - } - - if (cellItems.contains(baseObj->formID)) { - continue; - } - - cellItems[baseObj->formID] = true; - - if (!is_artifact(baseObj)) { - continue; - } - - if (inv.find(baseObj) == inv.end()) { - a_cellStorage->AddObjectToContainer(baseObj, nullptr, 1, nullptr); - } - } - - for (const auto& [item, data] : inv) { - const auto& [count, entry] = data; - if (count > 0 && !cellItems.contains(item->formID)) { - a_cellStorage->RemoveItem(item, count, RE::ITEM_REMOVE_REASON::kRemove, nullptr, nullptr); - } - } - - cellItems.clear(); - } - - // From po3's Papyrus Extender - inline std::vector GetPlayerFollowers(RE::StaticFunctionTag*) - { - std::vector result; - - if (const auto processLists = RE::ProcessLists::GetSingleton(); processLists) { - for (auto& actorHandle : processLists->highActorHandles) { - if (auto actor = actorHandle.get(); actor && actor->IsPlayerTeammate()) { - result.push_back(actor.get()); - } - } - } - - return result; - } - - inline std::int32_t AddArtifactsFromFollowersToList(RE::StaticFunctionTag*, - RE::BGSListForm* a_targetList, - RE::BGSListForm* a_excludeList = NULL) - { - for (const auto& actor : GetPlayerFollowers(nullptr)) { - const auto inv = actor->GetInventory([&](RE::TESBoundObject& a_exform) { - return is_artifact(&a_exform) && (!a_excludeList || !a_excludeList->HasForm(&a_exform)); - }); - - for (const auto& item : inv) { - if (item.second.first > 0) { - a_targetList->AddForm(item.first); - } - } - } - - return a_targetList->forms.size(); - } - - inline bool FollowersHaveItem(RE::StaticFunctionTag*, - RE::TESBoundObject* a_form) - { - for (const auto& actor : GetPlayerFollowers(nullptr)) { - const auto inv = actor->GetInventory([&](RE::TESBoundObject& a_object) -> bool { - return a_form->formID == a_object.formID; - }); - const auto it = inv.find(a_form); - const auto iCount = it != inv.end() ? it->second.first : 0; - - if (iCount > 0) { - return true; - } - } - - return false; - } - - inline void Bind(VM& a_vm) - { - BIND(AddAllFormsToList); - logger::info("Registered AddAllFormsToList"sv); - BIND(AddArtifactsToList); - logger::info("Registered AddArtifactsToList"sv); - BIND(AddArtifactsFromFollowersToList); - logger::info("Registered AddArtifactsFromFollowersToList"sv); - BIND(GetCellStorage); - logger::info("Registered GetCellStorage"sv); - BIND(SyncCellStorage); - logger::info("Registered SyncCellStorage"sv); - BIND(FollowersHaveItem); - logger::info("Registered FollowersHaveItem"sv); - BIND(GetPlayerFollowers); - logger::info("Registered GetPlayerFollowers"sv); - } -} diff --git a/Source/ArtifactTrackerDLL/src/Functions/ObjectReference.h b/Source/ArtifactTrackerDLL/src/Functions/ObjectReference.h deleted file mode 100644 index 271f880..0000000 --- a/Source/ArtifactTrackerDLL/src/Functions/ObjectReference.h +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -namespace Papyrus::ObjectReference -{ - inline std::uint32_t GetItemCountInList(RE::StaticFunctionTag*, - RE::BGSListForm* a_containerList, - RE::TESBoundObject* a_form) - { - if (!a_containerList || !a_form) { - return 0; - } - - std::uint32_t iResult = 0; - - a_containerList->ForEachForm([&](RE::TESForm& a_container) { - const auto refrItem = a_container.As(); - if (refrItem) { - const auto inv = refrItem->GetInventory([&](RE::TESBoundObject& a_object) -> bool { - return a_form->formID == a_object.formID; - }); - const auto it = inv.find(a_form); - iResult += it != inv.end() ? it->second.first : 0; - } - return true; - }); - - return iResult; - } - - inline void Bind(VM& a_vm) - { - BIND(GetItemCountInList); - logger::info("Registered GetItemCountInList"sv); - } -} diff --git a/Source/ArtifactTrackerDLL/src/Main.cpp b/Source/ArtifactTrackerDLL/src/Main.cpp index a1467eb..87b3795 100644 --- a/Source/ArtifactTrackerDLL/src/Main.cpp +++ b/Source/ArtifactTrackerDLL/src/Main.cpp @@ -1,7 +1,7 @@ #include "Papyrus.h" -#include "BookCheck.h" -#include "MiscCheck.h" +#include "ArtifactTracker.h" +using namespace ArtifactTracker; using namespace RE::BSScript; using namespace SKSE; using namespace SKSE::log; @@ -9,7 +9,7 @@ using namespace SKSE::stl; namespace { - void InitializeLogging() { + void InitializeLogging() { auto path = logger::log_directory(); if (!path) { stl::report_and_fail("Failed to find standard logging directory"sv); @@ -27,14 +27,14 @@ namespace { spdlog::set_pattern("[%l] %v"s); } - void InitializeMessaging() { + void InitializeMessaging() + { GetMessagingInterface()->RegisterListener([](MessagingInterface::Message* message) { if (message->type == MessagingInterface::kDataLoaded) { - BookCheck::PreloadBookList(); - MiscCheck::PreloadMiscList(); + ArtifactTracker::Init(); } }); - } + } } SKSEPluginLoad(const LoadInterface* skse) { @@ -45,7 +45,8 @@ SKSEPluginLoad(const LoadInterface* skse) { log::info("{} {} is loading...", plugin->GetName(), version); Init(skse); - InitializeMessaging(); + InitializeMessaging(); + SKSE::GetPapyrusInterface()->Register(Papyrus::Bind); log::info("{} has finished loading.", plugin->GetName()); diff --git a/Source/ArtifactTrackerDLL/src/MiscCheck.cpp b/Source/ArtifactTrackerDLL/src/MiscCheck.cpp deleted file mode 100644 index 3b8f484..0000000 --- a/Source/ArtifactTrackerDLL/src/MiscCheck.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "MiscCheck.h" - -namespace MiscCheck -{ - std::unordered_map validMisc; - - void PreloadMiscList() - { - const auto dataHandler = RE::TESDataHandler::GetSingleton(); - - if (!dataHandler) { - return; - } - - RE::BGSListForm* excludeKeywords = dataHandler->LookupForm(0x801, "Artifact Tracker.esp"); // ETR_ExcludeMiscKeywords - - for (const auto& form : dataHandler->GetFormArray()) { - if (form->GetPlayable() && !form->IsGold() && !form->IsLockpick() && !form->HasKeywordInList(excludeKeywords, false)) { - validMisc[form->formID] = form; - } - } - } - - std::unordered_map GetMiscList() - { - return validMisc; - } -} diff --git a/Source/ArtifactTrackerDLL/src/MiscCheck.h b/Source/ArtifactTrackerDLL/src/MiscCheck.h deleted file mode 100644 index c0db170..0000000 --- a/Source/ArtifactTrackerDLL/src/MiscCheck.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once - -namespace MiscCheck -{ - void PreloadMiscList(); - - std::unordered_map GetMiscList(); -} diff --git a/Source/ArtifactTrackerDLL/src/Papyrus.cpp b/Source/ArtifactTrackerDLL/src/Papyrus.cpp index 6fcf0ef..918b1d7 100644 --- a/Source/ArtifactTrackerDLL/src/Papyrus.cpp +++ b/Source/ArtifactTrackerDLL/src/Papyrus.cpp @@ -1,9 +1,5 @@ #include "Papyrus.h" -#include "BookCheck.h" -#include "MiscCheck.h" - -#include "Functions/ObjectReference.h" -#include "Functions/ArtifactTracker.h" +#include "PapyrusFunctions.h" namespace Papyrus { @@ -16,8 +12,7 @@ namespace Papyrus logger::info("{:*^30}", "FUNCTIONS"sv); - ObjectReference::Bind(*a_vm); - ArtifactTracker::Bind(*a_vm); + PapyrusFunctions::Bind(*a_vm); return true; } diff --git a/Source/ArtifactTrackerDLL/src/PapyrusFunctions.h b/Source/ArtifactTrackerDLL/src/PapyrusFunctions.h new file mode 100644 index 0000000..4159bb2 --- /dev/null +++ b/Source/ArtifactTrackerDLL/src/PapyrusFunctions.h @@ -0,0 +1,164 @@ +#pragma once + +#include "ArtifactTracker.h" + +namespace Papyrus::PapyrusFunctions +{ + inline std::int32_t AddAllFormsToList(RE::StaticFunctionTag*, + RE::BGSListForm* a_targetList, + short a_formType, + RE::BGSListForm* a_storedList, + RE::BGSListForm* a_foundList) + { + const auto formType = static_cast(a_formType); + + switch (formType) { + + case RE::FormType::Book: + for (auto const& item : ArtifactTracker::validBooks) { + if (!a_storedList->HasForm(item.second) && !a_foundList->HasForm(item.second)) { + a_targetList->AddForm(item.second); + } + } + break; + + case RE::FormType::Misc: + for (auto const& item : ArtifactTracker::validMisc) { + if (!a_storedList->HasForm(item.second) && !a_foundList->HasForm(item.second)) { + a_targetList->AddForm(item.second); + } + } + break; + + case RE::FormType::None: + break; + + default: + const auto dataHandler = RE::TESDataHandler::GetSingleton(); + + if (!dataHandler) { + return a_targetList->forms.size(); + } + + for (const auto& form : dataHandler->GetFormArray(formType)) { + if (!form || !form->GetPlayable()) { + continue; + } + if (a_storedList->HasForm(form) || a_foundList->HasForm(form)) { + continue; + } + a_targetList->AddForm(form); + } + } + + return a_targetList->forms.size(); + } + + inline std::int32_t AddArtifactsToList(VM* a_vm, StackID a_stackID, RE::StaticFunctionTag*, + RE::TESForm* a_refOrList, + RE::BGSListForm* a_targetList, + RE::BGSListForm* a_excludeList = NULL) + { + if (!a_refOrList) { + a_vm->TraceStack("a_refOrList in AddArtifactsToList is None", a_stackID); + return 0; + } + if (!a_targetList) { + a_vm->TraceStack("a_targetList in AddArtifactsToList is None", a_stackID); + return 0; + } + + if (a_refOrList->Is(RE::FormType::FormList)) { + a_refOrList->As()->ForEachForm([&](RE::TESForm& a_exform) { + const auto refrItem = a_exform.As(); + if (refrItem) { + AddArtifactsToList(a_vm, a_stackID, nullptr, refrItem, a_targetList, a_excludeList); + } + return true; + }); + return a_targetList->forms.size(); + } + + const auto containerRef = a_refOrList->As(); + + if (!containerRef) { + a_vm->TraceStack("containerRef in AddArtifactsToList is not a reference", a_stackID); + return 0; + } + + const auto inv = containerRef->GetInventory([&](RE::TESBoundObject& a_exform) { + return ArtifactTracker::IsArtifact(&a_exform) && (!a_excludeList || !a_excludeList->HasForm(&a_exform)); + }); + + for (const auto& item : inv) { + if (item.second.first > 0) { + a_targetList->AddForm(item.first); + } + } + + return a_targetList->forms.size(); + } + + inline RE::TESObjectREFR* GetCellStorage(RE::StaticFunctionTag*, + RE::TESObjectREFR* a_ref, + RE::BGSListForm* a_refList, + RE::TESBoundObject* a_objectToCreate, + bool a_autoCreate = true) + { + return ArtifactTracker::GetCellStorage(a_ref, a_refList, a_objectToCreate, a_autoCreate); + } + + inline void SyncCellStorage(RE::StaticFunctionTag*, + RE::TESObjectREFR* a_cellStorage, + RE::BGSListForm* a_excludeContainers) + { + ArtifactTracker::SyncCellStorage(a_cellStorage, a_excludeContainers); + } + + inline std::int32_t AddArtifactsFromFollowersToList(RE::StaticFunctionTag*, + RE::BGSListForm* a_targetList, + RE::BGSListForm* a_excludeList = NULL) + { + if (const auto processLists = RE::ProcessLists::GetSingleton(); processLists) { + for (auto& actorHandle : processLists->highActorHandles) { + if (auto actor = actorHandle.get(); actor && actor->IsPlayerTeammate()) { + + const auto inv = actor->GetInventory([&](RE::TESBoundObject& a_exform) { + return ArtifactTracker::IsArtifact(&a_exform) && (!a_excludeList || !a_excludeList->HasForm(&a_exform)); + }); + + for (const auto& item : inv) { + if (item.second.first > 0) { + a_targetList->AddForm(item.first); + } + } + + } + } + } + + return a_targetList->forms.size(); + } + + inline void OnItemPickup(RE::StaticFunctionTag*, + RE::TESBoundObject* a_item) + { + ArtifactTracker::OnItemPickup(a_item); + } + + inline void Bind(VM& a_vm) + { + BIND(AddAllFormsToList); + logger::info("Registered AddAllFormsToList"sv); + BIND(AddArtifactsToList); + logger::info("Registered AddArtifactsToList"sv); + BIND(AddArtifactsFromFollowersToList); + logger::info("Registered AddArtifactsFromFollowersToList"sv); + BIND(GetCellStorage); + logger::info("Registered GetCellStorage"sv); + BIND(SyncCellStorage); + logger::info("Registered SyncCellStorage"sv); + BIND(OnItemPickup); + logger::info("Registered OnItemPickup"sv); + } +} diff --git a/Source/ArtifactTrackerDLL/src/Util.h b/Source/ArtifactTrackerDLL/src/Util.h new file mode 100644 index 0000000..63adbef --- /dev/null +++ b/Source/ArtifactTrackerDLL/src/Util.h @@ -0,0 +1,78 @@ +#pragma once + +void RemoveListItem(RE::BGSListForm* a_List, RE::TESForm* a_form) +{ + using func_t = decltype(&RemoveListItem); + REL::Relocation func{ REL::RelocationID(20471, 20914) }; + return func(a_List, a_form); +} + +void RevertList(RE::TESForm* a_form) +{ + using func_t = decltype(&RevertList); + REL::Relocation func{ REL::RelocationID(20469, 20912) }; + return func(a_form); +} + +inline bool RefHasItem(RE::TESObjectREFR* a_ref, RE::TESForm* a_item) +{ + if (!a_ref || !a_item) { + SKSE::log::warn("Invalid arguments in RefHasItem"); + return false; + } + + auto invChanges = a_ref->GetInventoryChanges(); + if (invChanges && invChanges->entryList) { + for (auto& entry : *invChanges->entryList) { + if (entry && entry->object && entry->object->formID == a_item->formID) { + return entry->countDelta > 0; + } + } + } + return false; +} + +inline std::uint32_t GetItemCountInList(RE::BGSListForm* a_containerList, RE::TESBoundObject* a_form) +{ + if (!a_containerList || !a_form) { + SKSE::log::warn("Invalid arguments in GetItemCountInList"); + return 0; + } + + std::uint32_t iResult = 0; + + a_containerList->ForEachForm([&](RE::TESForm& a_container) { + const auto refrItem = a_container.As(); + if (refrItem) { + const auto inv = refrItem->GetInventory([&](RE::TESBoundObject& a_object) -> bool { + return a_form->formID == a_object.formID; + }); + const auto it = inv.find(a_form); + iResult += it != inv.end() ? it->second.first : 0; + } + return true; + }); + + return iResult; +} + +inline bool FollowersHaveItem(RE::TESBoundObject* a_form) +{ + if (const auto processLists = RE::ProcessLists::GetSingleton(); processLists) { + for (auto& actorHandle : processLists->highActorHandles) { + if (auto actor = actorHandle.get(); actor && actor->IsPlayerTeammate()) { + const auto inv = actor->GetInventory([&](RE::TESBoundObject& a_object) -> bool { + return a_form->formID == a_object.formID; + }); + const auto it = inv.find(a_form); + const auto iCount = it != inv.end() ? it->second.first : 0; + + if (iCount > 0) { + return true; + } + } + } + } + + return false; +} \ No newline at end of file diff --git a/Source/Scripts/ETR_Functions.psc b/Source/Scripts/ETR_Functions.psc index 895589e..97dc4b8 100644 --- a/Source/Scripts/ETR_Functions.psc +++ b/Source/Scripts/ETR_Functions.psc @@ -4,14 +4,10 @@ int function AddAllFormsToList(FormList targetList, int formType, FormList store int function AddArtifactsToList(Form refOrList, FormList targetList, FormList excludeList = None) native global -int function GetItemCountInList(FormList refList, Form baseForm) native global - ObjectReference function GetCellStorage(ObjectReference ref, FormList refList, Form refToCreate, bool autoCreate = true) native global function SyncCellStorage(ObjectReference cellStorage, FormList excludeContainers) native global -Actor[] function GetPlayerFollowers() native global - -bool function FollowersHaveItem(Form baseForm) native global - int function AddArtifactsFromFollowersToList(FormList targetList, FormList excludeList = None) native global + +function OnItemPickup(Form item) native global diff --git a/Source/Scripts/ETR_TrackFoundItems.psc b/Source/Scripts/ETR_TrackFoundItems.psc deleted file mode 100644 index 1969160..0000000 --- a/Source/Scripts/ETR_TrackFoundItems.psc +++ /dev/null @@ -1,168 +0,0 @@ -Scriptname ETR_TrackFoundItems extends ReferenceAlias - -Actor Property PlayerRef Auto - -FormList Property ETR_ItemsNew Auto -FormList Property ETR_ItemsFound Auto -FormList Property ETR_ItemsStored Auto -FormList Property ETR_PersistentStorageList Auto - -Container Property ETR_CellStorageContainer Auto - -Keyword Property LocTypePlayerHouse Auto - -bool bBusy = false -int iFollowerIndex = 0 -bool bAtHome = false -bool bRescanHome = false -bool bRescanPersistent = false -bool bRescanFollowers = false -ObjectReference lastDestContainer = None -bool lastDestIsPersistent = false -int iUpdateCount - - -event OnInit() - OnPlayerLoadGame() -endevent - - -Event OnPlayerLoadGame() - AddInventoryEventFilter(ETR_ItemsFound) - Location currentLocation = PlayerRef.GetCurrentLocation() - bAtHome = currentLocation && currentLocation.HasKeyword(LocTypePlayerHouse) - lastDestContainer = None - bBusy = false -EndEvent - - -Event OnLocationChange(Location akOldLoc, Location akNewLoc) - - bAtHome = akNewLoc && akNewLoc.HasKeyword(LocTypePlayerHouse) - lastDestContainer = None - - bRescanFollowers = true - RegisterForSingleUpdate(3.0) - -endEvent - - -Event OnMenuClose(String MenuName) - UnregisterForUpdate() - OnUpdate() -EndEvent - - -Event OnUpdate() - - if bRescanFollowers - bRescanFollowers = false - - int iCurrentFollowers = 0; - Actor[] aFollowers = ETR_Functions.GetPlayerFollowers() - int i = aFollowers.length - while i > 0 - i -= 1 - iCurrentFollowers += aFollowers[i].GetFormID() - endwhile - - if iCurrentFollowers == iFollowerIndex - return - endif - - iFollowerIndex = iCurrentFollowers - Debug.Notification("Team changed, rescanning") - endif - - if lastDestContainer && lastDestContainer as Actor && (lastDestContainer as Actor).IsPlayerTeammate() - lastDestContainer = None - bRescanHome = false - return - endif - - if UI.IsMenuOpen("ContainerMenu") - RegisterForMenu("ContainerMenu") - return - endif - - while bBusy - Debug.Notification("Found OnUpdate is busy") - Utility.wait(0.5) - endwhile - - bBusy = true - - iUpdateCount += 1 - Debug.Notification("Running Found OnUpdate " + iUpdateCount) - - if bRescanHome - bRescanHome = false - - if lastDestContainer && lastDestContainer as PlayerBookShelfContainerScript - int iLimit = 10 - while iLimit >= 0 && (lastDestContainer as PlayerBookShelfContainerScript).GetState() == "PlacingBooks" - Debug.Notification("Waiting for shelf update") - iLimit -= 1 - Utility.wait(0.5) - endwhile - endif - - ObjectReference cellStorage = ETR_Functions.GetCellStorage(PlayerRef, ETR_PersistentStorageList, ETR_CellStorageContainer) - ETR_Functions.SyncCellStorage(cellStorage, ETR_PersistentStorageList) - if ! bRescanPersistent - ETR_Functions.AddArtifactsToList(cellStorage, ETR_ItemsStored) - endif - endif - - if bRescanPersistent - bRescanPersistent = false - Form[] aContainers = ETR_PersistentStorageList.ToArray() - int n = aContainers.length - while n > 0 - n -= 1 - ETR_Functions.AddArtifactsToList(aContainers[n], ETR_ItemsStored) - endwhile - endif - - ETR_ItemsFound.Revert() - ETR_Functions.AddArtifactsToList(PlayerRef, ETR_ItemsFound, ETR_ItemsStored) - ETR_Functions.AddArtifactsFromFollowersToList(ETR_ItemsFound, ETR_ItemsStored) - - bBusy = false - -EndEvent - - -event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) - - if akDestContainer - if lastDestContainer != akDestContainer - lastDestContainer = akDestContainer - lastDestIsPersistent = ETR_PersistentStorageList.HasForm(akDestContainer) - endif - - ; Moving items without latent functions should help with avoiding stack dumps - if lastDestIsPersistent - bRescanHome = false - bRescanPersistent = true - RegisterForSingleUpdate(0.5) - elseif bAtHome - bRescanHome = true - bRescanPersistent = false - RegisterForSingleUpdate(0.5) - elseif PlayerRef.GetItemCount(akBaseItem) == 0 && ! ETR_Functions.FollowersHaveItem(akBaseItem) - ETR_ItemsFound.RemoveAddedForm(akBaseItem) - ETR_ItemsNew.AddForm(akBaseItem) - endif - - elseif bAtHome && akItemReference - ETR_ItemsFound.RemoveAddedForm(akBaseItem) - ETR_ItemsStored.AddForm(akBaseItem) - ETR_Functions.GetCellStorage(PlayerRef, ETR_PersistentStorageList, ETR_CellStorageContainer).AddItem(akBaseItem, 1, true) - - elseif PlayerRef.GetItemCount(akBaseItem) == 0 && ! ETR_Functions.FollowersHaveItem(akBaseItem) - ETR_ItemsFound.RemoveAddedForm(akBaseItem) - ETR_ItemsNew.AddForm(akBaseItem) - endif - -endevent diff --git a/Source/Scripts/ETR_TrackNewItems.psc b/Source/Scripts/ETR_TrackNewItems.psc deleted file mode 100644 index e08e6f1..0000000 --- a/Source/Scripts/ETR_TrackNewItems.psc +++ /dev/null @@ -1,68 +0,0 @@ -Scriptname ETR_TrackNewItems extends ReferenceAlias - -Actor Property PlayerRef Auto - -FormList Property ETR_ItemsNew Auto -FormList Property ETR_ItemsFound Auto -FormList Property ETR_ItemsStored Auto -FormList Property ETR_PersistentStorageList Auto - -GlobalVariable Property ETR_NotifyNewArtifact Auto - - -event OnInit() - OnPlayerLoadGame() -endevent - - -event OnPlayerLoadGame() - - AddInventoryEventFilter(ETR_ItemsNew) - - if skse.GetPluginVersion("Ahzaab's moreHUD Plugin") >= 30800 - ahzmorehud.RegisterIconFormList("dbmNew", ETR_ItemsNew) - ahzmorehud.RegisterIconFormList("dbmFound", ETR_ItemsFound) - ahzmorehud.RegisterIconFormList("dbmDisp", ETR_ItemsStored) - endif - - if skse.GetPluginVersion("Ahzaab's moreHUD Inventory Plugin") >= 10017 - ahzmorehudie.RegisterIconFormList("dbmNew", ETR_ItemsNew) - ahzmorehudie.RegisterIconFormList("dbmFound", ETR_ItemsFound) - ahzmorehudie.RegisterIconFormList("dbmDisp", ETR_ItemsStored) - endif - - if SKSE.GetPluginVersion("QuickLootRE") >= 292 - QuickLootRE.RegisterNewItemsList(ETR_ItemsNew) - QuickLootRE.RegisterDisplayedItemsList(ETR_ItemsStored) - QuickLootRE.RegisterFoundItemsList(ETR_ItemsFound) - endif - - ; Rebuild all lists to avoid discrepancies, stale data, and broken records - - ETR_ItemsStored.Revert() - ETR_Functions.AddArtifactsToList(ETR_PersistentStorageList, ETR_ItemsStored) - - ETR_ItemsFound.Revert() - ETR_Functions.AddArtifactsToList(PlayerRef, ETR_ItemsFound, ETR_ItemsStored) - ETR_Functions.AddArtifactsFromFollowersToList(ETR_ItemsFound, ETR_ItemsStored) - - ETR_ItemsNew.Revert() - ETR_Functions.AddAllFormsToList(ETR_ItemsNew, 41, ETR_ItemsStored, ETR_ItemsFound) - ETR_Functions.AddAllFormsToList(ETR_ItemsNew, 32, ETR_ItemsStored, ETR_ItemsFound) - ETR_Functions.AddAllFormsToList(ETR_ItemsNew, 27, ETR_ItemsStored, ETR_ItemsFound) - ETR_Functions.AddAllFormsToList(ETR_ItemsNew, 26, ETR_ItemsStored, ETR_ItemsFound) - -endevent - - -event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer) - - ETR_ItemsNew.RemoveAddedForm(akBaseItem) - ETR_ItemsFound.AddForm(akBaseItem) - ETR_ItemsStored.RemoveAddedForm(akBaseItem) - - if ETR_NotifyNewArtifact.Value - Debug.Notification("New artifact acquired: " + akBaseItem.GetName()) - endif - -endevent diff --git a/Source/Scripts/ETR_TrackStoredItems.psc b/Source/Scripts/ETR_TrackStoredItems.psc index 261ffc7..ae1be62 100644 --- a/Source/Scripts/ETR_TrackStoredItems.psc +++ b/Source/Scripts/ETR_TrackStoredItems.psc @@ -29,6 +29,40 @@ endevent Event OnPlayerLoadGame() AddInventoryEventFilter(ETR_ItemsStored) + + if skse.GetPluginVersion("Ahzaab's moreHUD Plugin") >= 30800 + ahzmorehud.RegisterIconFormList("dbmNew", ETR_ItemsNew) + ahzmorehud.RegisterIconFormList("dbmFound", ETR_ItemsFound) + ahzmorehud.RegisterIconFormList("dbmDisp", ETR_ItemsStored) + endif + + if skse.GetPluginVersion("Ahzaab's moreHUD Inventory Plugin") >= 10017 + ahzmorehudie.RegisterIconFormList("dbmNew", ETR_ItemsNew) + ahzmorehudie.RegisterIconFormList("dbmFound", ETR_ItemsFound) + ahzmorehudie.RegisterIconFormList("dbmDisp", ETR_ItemsStored) + endif + + if SKSE.GetPluginVersion("QuickLootRE") >= 292 + QuickLootRE.RegisterNewItemsList(ETR_ItemsNew) + QuickLootRE.RegisterDisplayedItemsList(ETR_ItemsStored) + QuickLootRE.RegisterFoundItemsList(ETR_ItemsFound) + endif + + ; Rebuild all lists to avoid discrepancies, stale data, and broken records + + ETR_ItemsStored.Revert() + ETR_Functions.AddArtifactsToList(ETR_PersistentStorageList, ETR_ItemsStored) + + ETR_ItemsFound.Revert() + ETR_Functions.AddArtifactsToList(PlayerRef, ETR_ItemsFound, ETR_ItemsStored) + ETR_Functions.AddArtifactsFromFollowersToList(ETR_ItemsFound, ETR_ItemsStored) + + ETR_ItemsNew.Revert() + ETR_Functions.AddAllFormsToList(ETR_ItemsNew, 41, ETR_ItemsStored, ETR_ItemsFound) + ETR_Functions.AddAllFormsToList(ETR_ItemsNew, 32, ETR_ItemsStored, ETR_ItemsFound) + ETR_Functions.AddAllFormsToList(ETR_ItemsNew, 27, ETR_ItemsStored, ETR_ItemsFound) + ETR_Functions.AddAllFormsToList(ETR_ItemsNew, 26, ETR_ItemsStored, ETR_ItemsFound) + Location currentLocation = PlayerRef.GetCurrentLocation() bAtHome = currentLocation && currentLocation.HasKeyword(LocTypePlayerHouse) if bAtHome @@ -108,6 +142,7 @@ Event OnUpdate() ETR_ItemsStored.Revert() Form[] aContainers = ETR_PersistentStorageList.ToArray() + int n = aContainers.length while n > 0 n -= 1 @@ -117,7 +152,6 @@ Event OnUpdate() ETR_ItemsFound.Revert() ETR_Functions.AddArtifactsToList(PlayerRef, ETR_ItemsFound, ETR_ItemsStored) ETR_Functions.AddArtifactsFromFollowersToList(ETR_ItemsFound, ETR_ItemsStored) - endif bBusy = false @@ -139,41 +173,7 @@ event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemRefere RegisterForSingleUpdate(0.5) endif elseif bAtHome - ObjectReference cellStorage = ETR_Functions.GetCellStorage(PlayerRef, ETR_PersistentStorageList, ETR_CellStorageContainer) - if cellStorage.GetItemCount(akBaseItem) - ETR_Functions.SyncCellStorage(cellStorage, ETR_PersistentStorageList) - if ETR_Functions.GetItemCountInList(ETR_PersistentStorageList, akBaseItem) == 0 - ETR_ItemsStored.RemoveAddedForm(akBaseItem) - ETR_ItemsFound.AddForm(akBaseItem) - endif - endif + ETR_Functions.OnItemPickup(akBaseItem) endif endevent - - -state AtHome - - ; The item is already registered as stored, and we just stored more - event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) - - if akDestContainer - if lastDestContainer != akDestContainer - lastDestContainer = akDestContainer - lastDestIsPersistent = ETR_PersistentStorageList.HasForm(akDestContainer) - endif - if ! lastDestIsPersistent - bRescanHome = true - bRescanPersistent = false - RegisterForSingleUpdate(0.5) - endif - elseif akItemReference - ObjectReference cellStorage = ETR_Functions.GetCellStorage(PlayerRef, ETR_PersistentStorageList, ETR_CellStorageContainer) - if cellStorage.GetItemCount(akBaseItem) == 0 - cellStorage.AddItem(akBaseItem, 1, true) - endif - endif - - endevent - -endstate