Bazaar developer reference

CvTacticalAI::IsHighPriorityCivilianTarget(CvTacticalTarget *)

Defined in
CvTacticalAI.cpp, line 11593
Class
CvTacticalAI
Hook name
CivHooks::CvTacticalAI_IsHighPriorityCivilianTarget

Hooks

static bool BeforeCvTacticalAI_IsHighPriorityCivilianTarget(CvTacticalAI* self, CvTacticalTarget* pTarget, bool& result);static void AfterCvTacticalAI_IsHighPriorityCivilianTarget(CvTacticalAI* self, CvTacticalTarget* pTarget, bool& result);static bool ReplaceCvTacticalAI_IsHighPriorityCivilianTarget(bool (*original)(CvTacticalAI*, CvTacticalTarget*), CvTacticalAI* self, CvTacticalTarget* pTarget);CivRegisterBefore<CivHooks::CvTacticalAI_IsHighPriorityCivilianTarget>(host, &BeforeCvTacticalAI_IsHighPriorityCivilianTarget);CivRegisterAfter<CivHooks::CvTacticalAI_IsHighPriorityCivilianTarget>(host, &AfterCvTacticalAI_IsHighPriorityCivilianTarget);CivRegisterReplace<CivHooks::CvTacticalAI_IsHighPriorityCivilianTarget>(host, &ReplaceCvTacticalAI_IsHighPriorityCivilianTarget);

Code

11592/// Is this civilian target of high priority?11593bool CvTacticalAI::IsHighPriorityCivilianTarget(CvTacticalTarget* pTarget)11594{11595	bool bRtnValue = false;11596	CvUnit* pUnit = (CvUnit*)pTarget->GetAuxData();11597	if(pUnit)11598	{11599		CvUnitEntry* pkUnitInfo = GC.getUnitInfo(pUnit->getUnitType());11600		int iEstimatedEndTurn = GC.getGame().getEstimateEndTurn();11601		if(pkUnitInfo)11602		{11603			// Priorities defined in XML11604			if(pkUnitInfo->GetCivilianAttackPriority() == CIVILIAN_ATTACK_PRIORITY_HIGH)11605			{11606				bRtnValue = true;11607			}11608			else if(pkUnitInfo->GetCivilianAttackPriority() == CIVILIAN_ATTACK_PRIORITY_HIGH_EARLY_GAME_ONLY)11609			{11610				if(GC.getGame().getGameTurn() < (iEstimatedEndTurn / 3))11611				{11612					bRtnValue =  true;11613				}11614			}11615			if(!bRtnValue && pUnit->AI_getUnitAIType() == UNITAI_SETTLE)11616			{11617				//Settlers11618				if(GET_PLAYER(pUnit->getOwner()).getNumCities() < 5)  //small player?11619				{11620					bRtnValue = true;11621				}11622				else if(GC.getGame().getGameTurn() < (iEstimatedEndTurn / 3))  //early game?11623				{11624					bRtnValue =  true;11625				}11626				else if(GET_PLAYER(pUnit->getOwner()).IsCramped())  //player really needs to expand?11627				{11628					bRtnValue = true;11629				}11630			}11631			if(!bRtnValue && m_pPlayer->isBarbarian())11632			{11633				bRtnValue = true; //always high priority for barbs11634			}11635		}11636	}11637	return bRtnValue;11638}

Calls

Called by