Bazaar developer reference

CityStrategyAIHelpers::IsTestCityStrategy_EnoughTileImprovers(AICityStrategyTypes, CvCity *)

Defined in
CvCityStrategyAI.cpp, line 2595
Hook name
CivHooks::CityStrategyAIHelpers_IsTestCityStrategy_EnoughTileImprovers

Hooks

static bool BeforeCityStrategyAIHelpers_IsTestCityStrategy_EnoughTileImprovers(AICityStrategyTypes eStrategy, CvCity* pCity, bool& result);static void AfterCityStrategyAIHelpers_IsTestCityStrategy_EnoughTileImprovers(AICityStrategyTypes eStrategy, CvCity* pCity, bool& result);static bool ReplaceCityStrategyAIHelpers_IsTestCityStrategy_EnoughTileImprovers(bool (*original)(AICityStrategyTypes, CvCity*), AICityStrategyTypes eStrategy, CvCity* pCity);CivRegisterBefore<CivHooks::CityStrategyAIHelpers_IsTestCityStrategy_EnoughTileImprovers>(host, &BeforeCityStrategyAIHelpers_IsTestCityStrategy_EnoughTileImprovers);CivRegisterAfter<CivHooks::CityStrategyAIHelpers_IsTestCityStrategy_EnoughTileImprovers>(host, &AfterCityStrategyAIHelpers_IsTestCityStrategy_EnoughTileImprovers);CivRegisterReplace<CivHooks::CityStrategyAIHelpers_IsTestCityStrategy_EnoughTileImprovers>(host, &ReplaceCityStrategyAIHelpers_IsTestCityStrategy_EnoughTileImprovers);

Code

2594/// "Enough Tile Improvers" City Strategy: This is not a Player Strategy because we only want to prevent the training of new Builders, not nullify new Techs or Policies, which could still be very useful2595bool CityStrategyAIHelpers::IsTestCityStrategy_EnoughTileImprovers(AICityStrategyTypes eStrategy, CvCity* pCity)2596{2597	CvPlayer& kPlayer = GET_PLAYER(pCity->getOwner());2598	int iLastTurnWorkerDisbanded = kPlayer.GetEconomicAI()->GetLastTurnWorkerDisbanded();2599	if(iLastTurnWorkerDisbanded >= 0 && GC.getGame().getGameTurn() - iLastTurnWorkerDisbanded <= 10)2600	{2601		return true;2602	}26032604	AICityStrategyTypes eNeedImproversStrategy = (AICityStrategyTypes) GC.getInfoTypeForString("AICITYSTRATEGY_NEED_TILE_IMPROVERS");26052606	if(eNeedImproversStrategy != NO_ECONOMICAISTRATEGY)2607	{2608		if(pCity->GetCityStrategyAI()->IsUsingCityStrategy(eNeedImproversStrategy))2609			return false;2610	}26112612	int iNumBuilders = kPlayer.GetNumUnitsWithUnitAI(UNITAI_WORKER, true, false);26132614	// If it's a minor with at least 1 worker per city, always return true2615	if(GET_PLAYER(pCity->getOwner()).isMinorCiv())2616	{2617		if(iNumBuilders >= kPlayer.getNumCities())2618			return true;2619	}26202621	CvAICityStrategyEntry* pCityStrategy = pCity->GetCityStrategyAI()->GetAICityStrategies()->GetEntry(eStrategy);26222623	int iWeightThresholdModifier = GetWeightThresholdModifier(eStrategy, pCity);	// 10 Extra Weight per TILE_IMPROVEMENT Flavor2624	int iPerCityThreshold = pCityStrategy->GetWeightThreshold() + iWeightThresholdModifier;	// 10026252626	int iModdedNumCities = kPlayer.getNumCities() + kPlayer.countCitiesFeatureSurrounded();2627	int iWeightThreshold = (iPerCityThreshold * iModdedNumCities);26282629	// Average Player wants no more than 1.50 Builders per City [150 Weight is Average; range is 100 to 200]2630	if((iNumBuilders * 100) >= iWeightThreshold)2631	{2632		return true;2633	}26342635	return false;2636}

Calls

Called by