Bazaar developer reference

CvMinorCivAI::DoAddStartingResources(CvPlot *)

Defined in
CvMinorCivAI.cpp, line 3061
Class
CvMinorCivAI
Hook name
CivHooks::CvMinorCivAI_DoAddStartingResources

Hooks

static bool BeforeCvMinorCivAI_DoAddStartingResources(CvMinorCivAI* self, CvPlot* pCityPlot);static void AfterCvMinorCivAI_DoAddStartingResources(CvMinorCivAI* self, CvPlot* pCityPlot);static void ReplaceCvMinorCivAI_DoAddStartingResources(void (*original)(CvMinorCivAI*, CvPlot*), CvMinorCivAI* self, CvPlot* pCityPlot);CivRegisterBefore<CivHooks::CvMinorCivAI_DoAddStartingResources>(host, &BeforeCvMinorCivAI_DoAddStartingResources);CivRegisterAfter<CivHooks::CvMinorCivAI_DoAddStartingResources>(host, &AfterCvMinorCivAI_DoAddStartingResources);CivRegisterReplace<CivHooks::CvMinorCivAI_DoAddStartingResources>(host, &ReplaceCvMinorCivAI_DoAddStartingResources);

Code

3060/// We have a new city! Add any special starting resources we get.3061void CvMinorCivAI::DoAddStartingResources(CvPlot* pCityPlot)3062{3063	CvAssertMsg(pCityPlot != NULL, "City's plot should not be NULL. Please send Anton your save file and version.");3064	if (pCityPlot == NULL) return;30653066	MinorCivTraitTypes eTrait = GetTrait();30673068	// Mercantile3069	if (eTrait == MINOR_CIV_TRAIT_MERCANTILE)3070	{3071		bool bAddUniqueLuxury = true;3072		3073		// Only for our first city3074		if (GetPlayer()->getNumCities() > 1)3075		{3076			bAddUniqueLuxury = false;3077		}3078	3079		// Only if there isn't already a unique luxury on this plot3080		ResourceTypes ePlotResource = pCityPlot->getResourceType();3081		if (ePlotResource != NO_RESOURCE)3082		{3083			CvResourceInfo* pkPlotResourceInfo = GC.getResourceInfo(ePlotResource);3084			if (pkPlotResourceInfo && pkPlotResourceInfo->isOnlyMinorCivs())3085			{3086				bAddUniqueLuxury = false;3087			}3088		}30893090		// Pick and add a unique luxury3091		if (bAddUniqueLuxury)3092		{3093			FStaticVector< ResourceTypes, 64, true, c_eCiv5GameplayDLL > veUniqueLuxuries;3094			for(int iResourceLoop = 0; iResourceLoop < GC.getNumResourceInfos(); iResourceLoop++)3095			{3096				const ResourceTypes eResourceLoop = (ResourceTypes) iResourceLoop;3097				CvResourceInfo* pkResourceInfo = GC.getResourceInfo(eResourceLoop);3098				if(pkResourceInfo)3099				{3100					if(pkResourceInfo->isOnlyMinorCivs())3101					{3102						veUniqueLuxuries.push_back(eResourceLoop);3103					}3104				}3105			}31063107			pCityPlot->setResourceType(NO_RESOURCE, 0, true);3108			if (veUniqueLuxuries.size() > 0)3109			{3110				int iRoll = GC.getGame().getJonRandNum(veUniqueLuxuries.size(), "Rolling for Mercantile city-state special luxury"); // range = [0, size - 1]3111				int iQuantity = GC.getMINOR_CIV_MERCANTILE_RESOURCES_QUANTITY();3112				ResourceTypes eSpecialLuxury = veUniqueLuxuries[iRoll];31133114				pCityPlot->setResourceType(eSpecialLuxury, iQuantity, true);3115			}3116		}3117	}3118}

Calls

Called by