Do not iterate through remaining followers when item is found
This commit is contained in:
parent
8d6db7e045
commit
8039f6315f
Binary file not shown.
@ -418,7 +418,7 @@ namespace ArtifactTracker
|
||||
}
|
||||
|
||||
// NB: During OnContainerChanged, InventoryChanges do not have the current change included yet
|
||||
if ((GetItemCount(RE::PlayerCharacter::GetSingleton(), form->formID) - a_event->itemCount <= 0) && GetFollowerItemCount(form->formID) <= 0) {
|
||||
if ((GetItemCount(RE::PlayerCharacter::GetSingleton(), form->formID) - a_event->itemCount <= 0) && !FollowersHaveItem(form->formID)) {
|
||||
ListRemoveItem(g_listFound, form);
|
||||
ListRemoveItem(g_listNew, form);
|
||||
g_listNew->AddForm(form);
|
||||
@ -457,7 +457,7 @@ namespace ArtifactTracker
|
||||
}
|
||||
|
||||
// NB: During OnContainerChanged, InventoryChanges do not have the current change included yet
|
||||
} else if (g_listFound->HasForm(form) && (GetItemCount(RE::PlayerCharacter::GetSingleton(), form->formID) - a_event->itemCount <= 0) && GetFollowerItemCount(form->formID) <= 0) {
|
||||
} else if (g_listFound->HasForm(form) && (GetItemCount(RE::PlayerCharacter::GetSingleton(), form->formID) - a_event->itemCount <= 0) && !FollowersHaveItem(form->formID)) {
|
||||
ListRemoveItem(g_listFound, form);
|
||||
g_listNew->AddForm(form);
|
||||
}
|
||||
|
@ -72,19 +72,19 @@ inline bool RefHasItem(RE::TESForm* a_refOrList, RE::FormID a_formID)
|
||||
return false;
|
||||
}
|
||||
|
||||
inline std::uint32_t GetFollowerItemCount(RE::FormID a_formID)
|
||||
inline bool FollowersHaveItem(RE::FormID a_formID)
|
||||
{
|
||||
std::int32_t iResult = 0;
|
||||
|
||||
if (const auto processLists = RE::ProcessLists::GetSingleton(); processLists) {
|
||||
for (auto& actorHandle : processLists->highActorHandles) {
|
||||
if (auto actor = actorHandle.get(); actor && actor->IsPlayerTeammate()) {
|
||||
|
||||
iResult += GetItemCount(actor->As<RE::TESObjectREFR>(), a_formID);
|
||||
if (GetItemCount(actor->As<RE::TESObjectREFR>(), a_formID) > 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return iResult;
|
||||
return false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user