Bazaar developer reference

CvMilitaryAI::RequestCityStateAttack(PlayerTypes)

Defined in
CvMilitaryAI.cpp, line 659
Class
CvMilitaryAI
Hook name
CivHooks::CvMilitaryAI_RequestCityStateAttack

Hooks

static bool BeforeCvMilitaryAI_RequestCityStateAttack(CvMilitaryAI* self, PlayerTypes eEnemy, bool& result);static void AfterCvMilitaryAI_RequestCityStateAttack(CvMilitaryAI* self, PlayerTypes eEnemy, bool& result);static bool ReplaceCvMilitaryAI_RequestCityStateAttack(bool (*original)(CvMilitaryAI*, PlayerTypes), CvMilitaryAI* self, PlayerTypes eEnemy);CivRegisterBefore<CivHooks::CvMilitaryAI_RequestCityStateAttack>(host, &BeforeCvMilitaryAI_RequestCityStateAttack);CivRegisterAfter<CivHooks::CvMilitaryAI_RequestCityStateAttack>(host, &AfterCvMilitaryAI_RequestCityStateAttack);CivRegisterReplace<CivHooks::CvMilitaryAI_RequestCityStateAttack>(host, &ReplaceCvMilitaryAI_RequestCityStateAttack);

Code

658/// Request for an attack on a city state659bool CvMilitaryAI::RequestCityStateAttack(PlayerTypes eEnemy)660{661	CvMilitaryTarget target;662	CvAIOperation* pOperation = 0;663664	target = FindBestAttackTarget(AI_OPERATION_CITY_STATE_ATTACK, eEnemy);665	if(target.m_pTargetCity)666	{667		if(target.m_bAttackBySea)668		{669			if(IsAttackReady(MUFORMATION_CITY_STATE_INVASION, AI_OPERATION_CITY_STATE_NAVAL_ATTACK))670			{671				pOperation = m_pPlayer->addAIOperation(AI_OPERATION_CITY_STATE_NAVAL_ATTACK, eEnemy, target.m_pTargetCity->getArea(), target.m_pTargetCity, target.m_pMusterCity);672				if(pOperation != NULL && !pOperation->ShouldAbort())673				{674					return true;675				}676			}677			else678			{679				m_iNumNavalAttacksRequested++;680				m_eArmyTypeBeingBuilt = (m_iNumLandAttacksRequested > m_iNumNavalAttacksRequested) ? ARMY_TYPE_LAND : ARMY_TYPE_NAVAL_INVASION;681			}682		}683		else684		{685			if(IsAttackReady(MUFORMATION_CITY_STATE_ATTACK_FORCE, AI_OPERATION_CITY_STATE_ATTACK))686			{687				pOperation = m_pPlayer->addAIOperation(AI_OPERATION_CITY_STATE_ATTACK, eEnemy, target.m_pTargetCity->getArea(), target.m_pTargetCity, target.m_pMusterCity);688				if(pOperation != NULL && !pOperation->ShouldAbort())689				{690					return true;691				}692			}693			else694			{695				m_iNumLandAttacksRequested++;696				m_eArmyTypeBeingBuilt = (m_iNumLandAttacksRequested > m_iNumNavalAttacksRequested) ? ARMY_TYPE_LAND : ARMY_TYPE_NAVAL_INVASION;697			}698		}699700		return true;701	}702	return false;703}

Calls

Called by