void HornOfValere::DoTurn() { if (!m_bFound) { for(int iX = -m_iDiscoveryRange; iX <= m_iDiscoveryRange; iX++) { for(int iY = -m_iDiscoveryRange; iY <= m_iDiscoveryRange; iY++) { CvPlot* pkPlot = plotXYWithRangeCheck(GetX(), GetY(), iX, iY, m_iDiscoveryRange); if(pkPlot != NULL) { IDInfoVector currentUnits; if (pkPlot->getUnits(¤tUnits) > 0) { for (IDInfoVector::const_iterator itr = currentUnits.begin(); itr != currentUnits.end(); ++itr) { CvUnit* pUnit = ::getUnit(*itr); if(pUnit && pUnit->CanDiscoverHornOfValere()) { FindHorn(pUnit); return; } } } } } } } IncrementTurnsSinceHornBlown(); }