diff --git a/lib/bonuses/Limiters.cpp b/lib/bonuses/Limiters.cpp index 47550a477..c0f49c582 100644 --- a/lib/bonuses/Limiters.cpp +++ b/lib/bonuses/Limiters.cpp @@ -287,16 +287,9 @@ ILimiter::EDecision CreatureTerrainLimiter::limit(const BonusLimitationContext & } else { - if (context.node.getNodeType() == BonusNodeType::STACK_BATTLE) + if(const auto * unit = retrieveStackInstance(&context.node)) { - const auto * unit = dynamic_cast(&context.node); - if (unit->getCurrentTerrain() == terrainType) - return ILimiter::EDecision::ACCEPT; - } - else - { - const auto * unit = dynamic_cast(&context.node); - if (unit->getCurrentTerrain() == terrainType) + if (unit->getArmy() && unit->getCurrentTerrain() == terrainType) return ILimiter::EDecision::ACCEPT; } }