Bazaar developer reference

MilitaryAIHelpers::IsTestStrategy_NeedAntiAirUnits(CvPlayer *, int, int)

Defined in
CvMilitaryAI.cpp, line 4906
Hook name
CivHooks::MilitaryAIHelpers_IsTestStrategy_NeedAntiAirUnits

Hooks

static bool BeforeMilitaryAIHelpers_IsTestStrategy_NeedAntiAirUnits(CvPlayer* pPlayer, int iNumAA, int iNumMelee, bool& result);static void AfterMilitaryAIHelpers_IsTestStrategy_NeedAntiAirUnits(CvPlayer* pPlayer, int iNumAA, int iNumMelee, bool& result);static bool ReplaceMilitaryAIHelpers_IsTestStrategy_NeedAntiAirUnits(bool (*original)(CvPlayer*, int, int), CvPlayer* pPlayer, int iNumAA, int iNumMelee);CivRegisterBefore<CivHooks::MilitaryAIHelpers_IsTestStrategy_NeedAntiAirUnits>(host, &BeforeMilitaryAIHelpers_IsTestStrategy_NeedAntiAirUnits);CivRegisterAfter<CivHooks::MilitaryAIHelpers_IsTestStrategy_NeedAntiAirUnits>(host, &AfterMilitaryAIHelpers_IsTestStrategy_NeedAntiAirUnits);CivRegisterReplace<CivHooks::MilitaryAIHelpers_IsTestStrategy_NeedAntiAirUnits>(host, &ReplaceMilitaryAIHelpers_IsTestStrategy_NeedAntiAirUnits);

Code

4905/// "Need Anti-Air" Player Strategy: If a player has too many AA units4906bool MilitaryAIHelpers::IsTestStrategy_NeedAntiAirUnits(CvPlayer* pPlayer, int iNumAA, int iNumMelee)4907{4908	bool bAnyAirforce = false;4909	PlayerTypes eLoopPlayer;4910	for(int iPlayerLoop = 0; iPlayerLoop < MAX_MAJOR_CIVS; iPlayerLoop++)4911	{4912		eLoopPlayer = (PlayerTypes) iPlayerLoop;4913		if(eLoopPlayer != pPlayer->GetID() && pPlayer->GetDiplomacyAI()->IsPlayerValid(eLoopPlayer))4914		{4915			if(GET_PLAYER(eLoopPlayer).GetMilitaryAI()->HasAirforce())4916			{4917				bAnyAirforce = true;4918				break;4919			}4920		}4921	}49224923	if(bAnyAirforce)4924	{4925#if defined(MOD_CONFIG_AI_IN_XML)4926		// This original code simplifies to 4*iNumAA <= iNumMelee4927		return (GD_INT_GET(AI_CONFIG_MILITARY_MELEE_PER_AA)*iNumAA <= iNumMelee);4928#else4929		int iRatio = (iNumAA * 10) / max(1,iNumMelee+iNumAA);4930		return (iRatio <= 2);4931#endif4932	}4933	else4934	{4935		return false;4936	}4937}

Calls

Called by