1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-25 06:35:30 +00:00

Ignore containers, when we search for owner

This commit is contained in:
Andrei Kortunov 2019-05-06 23:06:13 +04:00
parent abe1009e98
commit 7214f24f5c
4 changed files with 11 additions and 8 deletions

View File

@ -176,7 +176,7 @@ namespace MWBase
///< Return a pointer to a liveCellRef with the given name.
/// \param activeOnly do non search inactive cells.
virtual MWWorld::Ptr searchPtr (const std::string& name, bool activeOnly) = 0;
virtual MWWorld::Ptr searchPtr (const std::string& name, bool activeOnly, bool searchInContainers = true) = 0;
///< Return a pointer to a liveCellRef with the given name.
/// \param activeOnly do non search inactive cells.

View File

@ -994,7 +994,7 @@ namespace MWMechanics
}
if (!cellref.getOwner().empty())
victim = MWBase::Environment::get().getWorld()->searchPtr(cellref.getOwner(), true);
victim = MWBase::Environment::get().getWorld()->searchPtr(cellref.getOwner(), true, false);
return (!isOwned && !isFactionOwned);
}

View File

@ -679,7 +679,7 @@ namespace MWWorld
mLocalScripts.remove (ref);
}
Ptr World::searchPtr (const std::string& name, bool activeOnly)
Ptr World::searchPtr (const std::string& name, bool activeOnly, bool searchInContainers)
{
Ptr ret;
// the player is always in an active cell.
@ -706,11 +706,14 @@ namespace MWWorld
return ret;
}
for (CellStore* cellstore : mWorldScene->getActiveCells())
if (searchInContainers)
{
Ptr ptr = cellstore->searchInContainer(lowerCaseName);
if (!ptr.isEmpty())
return ptr;
for (CellStore* cellstore : mWorldScene->getActiveCells())
{
Ptr ptr = cellstore->searchInContainer(lowerCaseName);
if (!ptr.isEmpty())
return ptr;
}
}
Ptr ptr = mPlayer->getPlayer().getClass()

View File

@ -285,7 +285,7 @@ namespace MWWorld
///< Return a pointer to a liveCellRef with the given name.
/// \param activeOnly do non search inactive cells.
Ptr searchPtr (const std::string& name, bool activeOnly) override;
Ptr searchPtr (const std::string& name, bool activeOnly, bool searchInContainers = true) override;
///< Return a pointer to a liveCellRef with the given name.
/// \param activeOnly do non search inactive cells.