// // Approximate how many turns this group would take to reduce pCity's defense modifier to zero // int CvSelectionGroup::getBombardTurns(CvCity* pCity) { PROFILE_FUNC(); bool bHasBomber = (area()->getNumAIUnits(getOwner(),UNITAI_ATTACK_AIR) > 0); bool bIgnoreBuildingDefense = bHasBomber; int iTotalBombardRate = (bHasBomber ? 16 : 0); CLLNode<IDInfo>* pUnitNode = headUnitNode(); while (pUnitNode != NULL) { CvUnit* pLoopUnit = ::getUnit(pUnitNode->m_data); pUnitNode = nextUnitNode(pUnitNode); if( pLoopUnit->bombardRate() > 0 ) { iTotalBombardRate += pLoopUnit->bombardRate(); bIgnoreBuildingDefense = (bIgnoreBuildingDefense || pLoopUnit->ignoreBuildingDefense()); } } int iBombardTurns = pCity->getDefenseModifier(bIgnoreBuildingDefense); if( !bIgnoreBuildingDefense ) { iBombardTurns *= 100; iBombardTurns /= std::max(25, (100 - pCity->getBuildingBombardDefense())); } iBombardTurns /= std::max(8, iTotalBombardRate); // added Sephi if (iTotalBombardRate==0) { return -1; } return iBombardTurns; }