Bazaar developer reference

CvAIOperationNavalAttack::ArmyInPosition(CvArmyAI *)

Defined in
CvAIOperation.cpp, line 5430
Class
CvAIOperationNavalAttack
Hook name
CivHooks::CvAIOperationNavalAttack_ArmyInPosition
Overrides
CvAINavalEscortedOperation::ArmyInPosition(CvArmyAI *)

Hooks

static bool BeforeCvAIOperationNavalAttack_ArmyInPosition(CvAIOperationNavalAttack* self, CvArmyAI* pArmy, bool& result);static void AfterCvAIOperationNavalAttack_ArmyInPosition(CvAIOperationNavalAttack* self, CvArmyAI* pArmy, bool& result);static bool ReplaceCvAIOperationNavalAttack_ArmyInPosition(bool (*original)(CvAIOperationNavalAttack*, CvArmyAI*), CvAIOperationNavalAttack* self, CvArmyAI* pArmy);CivRegisterBefore<CivHooks::CvAIOperationNavalAttack_ArmyInPosition>(host, &BeforeCvAIOperationNavalAttack_ArmyInPosition);CivRegisterAfter<CivHooks::CvAIOperationNavalAttack_ArmyInPosition>(host, &AfterCvAIOperationNavalAttack_ArmyInPosition);CivRegisterReplace<CivHooks::CvAIOperationNavalAttack_ArmyInPosition>(host, &ReplaceCvAIOperationNavalAttack_ArmyInPosition);

Code

5429/// If at target, found city; if at muster point, merge settler and escort and move out5430bool CvAIOperationNavalAttack::ArmyInPosition(CvArmyAI* pArmy)5431{5432	switch(m_eCurrentState)5433	{5434		// See if reached our target, if so give control of these units to the tactical AI5435	case AI_OPERATION_STATE_MOVING_TO_TARGET:5436	{5437		CvPlot *pCenterOfMass = pArmy->GetCenterOfMass(DOMAIN_SEA);54385439		// Are we within tactical range of our target? (larger than usual range for a naval attack)5440		if(pCenterOfMass && plotDistance(pCenterOfMass->getX(), pCenterOfMass->getY(), m_iTargetX, m_iTargetY) <= GC.getAI_OPERATIONAL_CITY_ATTACK_DEPLOY_RANGE() * 2)5441		{5442			// Notify Diplo AI we're in place for attack5443			GET_PLAYER(GetOwner()).GetDiplomacyAI()->SetMusteringForAttack(GetEnemy(), true);54445445			// Notify tactical AI to focus on this area5446			CvTemporaryZone zone;5447			zone.SetX(GetTargetPlot()->getX());5448			zone.SetY(GetTargetPlot()->getY());5449			zone.SetTargetType(AI_TACTICAL_TARGET_CITY);5450			zone.SetLastTurn(GC.getGame().getGameTurn() + GC.getAI_TACTICAL_MAP_TEMP_ZONE_TURNS());5451			zone.SetNavalInvasion(true);5452			GET_PLAYER(m_eOwner).GetTacticalAI()->AddTemporaryZone(zone);54535454			m_eCurrentState = AI_OPERATION_STATE_SUCCESSFUL_FINISH;5455			return true;5456		}5457	}5458	break;54595460	// In all other cases use base class version5461	case AI_OPERATION_STATE_GATHERING_FORCES:5462	case AI_OPERATION_STATE_ABORTED:5463	case AI_OPERATION_STATE_RECRUITING_UNITS:5464	case AI_OPERATION_STATE_AT_TARGET:5465		return CvAIOperation::ArmyInPosition(pArmy);5466		break;5467	};54685469	return false;5470}

Calls