EconomicAIHelpers::IsTestStrategy_ConcertTour(EconomicAIStrategyTypes, CvPlayer *)
- Defined in
- CvEconomicAI.cpp, line 3741
- Hook name
CivHooks::EconomicAIHelpers_IsTestStrategy_ConcertTour
Hooks
static bool BeforeEconomicAIHelpers_IsTestStrategy_ConcertTour(EconomicAIStrategyTypes eStrategy, CvPlayer* pPlayer, bool& result);static void AfterEconomicAIHelpers_IsTestStrategy_ConcertTour(EconomicAIStrategyTypes eStrategy, CvPlayer* pPlayer, bool& result);static bool ReplaceEconomicAIHelpers_IsTestStrategy_ConcertTour(bool (*original)(EconomicAIStrategyTypes, CvPlayer*), EconomicAIStrategyTypes eStrategy, CvPlayer* pPlayer);CivRegisterBefore<CivHooks::EconomicAIHelpers_IsTestStrategy_ConcertTour>(host, &BeforeEconomicAIHelpers_IsTestStrategy_ConcertTour);CivRegisterAfter<CivHooks::EconomicAIHelpers_IsTestStrategy_ConcertTour>(host, &AfterEconomicAIHelpers_IsTestStrategy_ConcertTour);CivRegisterReplace<CivHooks::EconomicAIHelpers_IsTestStrategy_ConcertTour>(host, &ReplaceEconomicAIHelpers_IsTestStrategy_ConcertTour);
Code
3740/// "Concert Tour" Player Strategy: If there is a musician who isn't in an operation? If so, find him a major civ to target3741bool EconomicAIHelpers::IsTestStrategy_ConcertTour(EconomicAIStrategyTypes eStrategy, CvPlayer* pPlayer)3742{3743 int iUnitLoop;3744 CvUnit* pLoopUnit;3745 int iLooseMusician = 0;3746 int iStrategyWeight = 0;37473748 // Never run this strategy for a human player3749 if(!pPlayer->isHuman())3750 {3751 // Look at map for loose merchants3752 for(pLoopUnit = pPlayer->firstUnit(&iUnitLoop); pLoopUnit != NULL; pLoopUnit = pPlayer->nextUnit(&iUnitLoop))3753 {3754 if(pLoopUnit != NULL)3755 {3756 if(pLoopUnit->AI_getUnitAIType() == UNITAI_MUSICIAN && pLoopUnit->GetGreatPeopleDirective() == GREAT_PEOPLE_DIRECTIVE_TOURISM_BLAST)3757 {3758 if(pLoopUnit->getArmyID() == FFreeList::INVALID_INDEX)3759 {3760 iLooseMusician++;3761 }3762 }3763 }3764 }37653766 CvEconomicAIStrategyXMLEntry* pStrategy = pPlayer->GetEconomicAI()->GetEconomicAIStrategies()->GetEntry(eStrategy);3767 iStrategyWeight = iLooseMusician * 10; // Just one musician will trigger this3768 int iWeightThresholdModifier = GetWeightThresholdModifier(eStrategy, pPlayer);3769 int iWeightThreshold = pStrategy->GetWeightThreshold() + iWeightThresholdModifier;37703771 if(iStrategyWeight >= iWeightThreshold)3772 {3773 // Launch an operation.3774 pPlayer->addAIOperation(AI_OPERATION_CONCERT_TOUR);37753776 // Set this strategy active3777 return true;3778 }3779 }37803781 return false;3782}
Calls
- CvEconomicAI::GetEconomicAIStrategies()
- CvEconomicAIStrategyXMLEntries::GetEntry(int)
- CvEconomicAIStrategyXMLEntry::GetWeightThreshold() const
- CvPlayer::addAIOperation(int, PlayerTypes, int, CvCity *, CvCity *)
- CvPlayer::firstUnit(int *, bool)
- CvPlayer::GetEconomicAI() const
- CvPlayer::isHuman() const
- CvPlayer::nextUnit(int *, bool)
- CvUnit::AI_getUnitAIType() const
- CvUnit::getArmyID() const
- CvUnit::GetGreatPeopleDirective() const
- EconomicAIHelpers::GetWeightThresholdModifier(EconomicAIStrategyTypes, CvPlayer *)