nopse0 Posted 5 hours ago Author Posted 5 hours ago (edited) On 9/15/2026 at 7:17 AM, qisexuanlv said: Hello, I'd like to know if the latest version paired with the SKSE menu has fixed this issue. In older versions, when the player opened the menu, the operable NPCs included the player character, nearby NPCs, and NPCs from the tattoo history. All of these were stored in the same array. Papyrus arrays have a limit of 128 entries. So once the player added tattoos to more than 128 characters, nearby NPCs could no longer be scanned. I’m wondering if this problem has been resolved now. Sure, this is C++, not Papyrus. The "highActorHandle" "ProcessList" of the game is filtered by "ActorTypeNPC" , and the results are put in a vector (there is also a "low" and a "mid" actor list, I think the "high" list are the most relevant actors (relatively close to the player, not at the other end of Skyrim, while the "low" list are all actors in the game): static void find_npcs(std::vector<RE::Actor*>& actors) { const auto processLists = RE::ProcessLists::GetSingleton(); if (!processLists) { return; } static const auto* ActorTypeNPC = RE::TESForm::LookupByEditorID<RE::BGSKeyword>("ActorTypeNPC"); for (auto& targetHandle : processLists->highActorHandles) { const auto actorPtr = targetHandle.get(); if (!actorPtr) { continue; } // Check if actor is NPC (leave out if you want all actors) const auto base = actorPtr->GetActorBase(); if (base && base->GetRace()->HasKeyword(ActorTypeNPC)) { actors.push_back(actorPtr.get()); } } return; } Edited 5 hours ago by nopse0
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now