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
- CvGame::getEstimateEndTurn() const
- CvGame::getGameTurn()
- CvGlobals::getGame()
- CvGlobals::getUnitInfo(UnitTypes)
- CvPlayer::getNumCities() const
- CvPlayer::isBarbarian() const
- CvPlayer::IsCramped() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvTacticalTarget::GetAuxData()
- CvUnit::AI_getUnitAIType() const
- CvUnit::getOwner() const
- CvUnit::getUnitType() const
- CvUnitEntry::GetCivilianAttackPriority() const