Bazaar developer reference

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

Called by