diff --git a/docs/changelog.txt b/docs/changelog.txt index 166f55c45f..7954d9c6a0 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -78,6 +78,7 @@ Template for new versions: ## API - ``Military::removeFromSquad``: removes unit from any squad assignments - ``Buildings::checkFreeTiles``: now replaces the extents parameter for a building pointer +- ``Units::isUnitInBox``, ``Units::getUnitsInBox``: don't include inactive units ## Lua - ``dfhack.units.setAutomaticProfessions``: sets unit labors according to current work detail settings diff --git a/library/modules/Units.cpp b/library/modules/Units.cpp index 1af93c3b7d..21f39932fe 100644 --- a/library/modules/Units.cpp +++ b/library/modules/Units.cpp @@ -665,6 +665,8 @@ bool Units::isGreatDanger(df::unit *unit) { bool Units::isUnitInBox(df::unit *u, const cuboid &box) { CHECK_NULL_POINTER(u); + if (!isActive(u)) + return false; return box.containsPos(getPosition(u)); } @@ -674,7 +676,7 @@ bool Units::getUnitsInBox(vector &units, const cuboid &box, std::fun units.clear(); for (auto unit : world->units.active) - if (filter(unit) && isUnitInBox(unit, box)) + if (isUnitInBox(unit, box) && filter(unit)) units.push_back(unit); return true; }