Bazaar developer reference

CvCityCitizens::GetSpecialistUpgradeThreshold(UnitClassTypes)

Defined in
CvCityCitizens.cpp, line 2684
Class
CvCityCitizens
Hook name
CivHooks::CvCityCitizens_GetSpecialistUpgradeThreshold

Hooks

static bool BeforeCvCityCitizens_GetSpecialistUpgradeThreshold(CvCityCitizens* self, UnitClassTypes eUnitClass, int& result);static void AfterCvCityCitizens_GetSpecialistUpgradeThreshold(CvCityCitizens* self, UnitClassTypes eUnitClass, int& result);static int ReplaceCvCityCitizens_GetSpecialistUpgradeThreshold(int (*original)(CvCityCitizens*, UnitClassTypes), CvCityCitizens* self, UnitClassTypes eUnitClass);CivRegisterBefore<CivHooks::CvCityCitizens_GetSpecialistUpgradeThreshold>(host, &BeforeCvCityCitizens_GetSpecialistUpgradeThreshold);CivRegisterAfter<CivHooks::CvCityCitizens_GetSpecialistUpgradeThreshold>(host, &AfterCvCityCitizens_GetSpecialistUpgradeThreshold);CivRegisterReplace<CivHooks::CvCityCitizens_GetSpecialistUpgradeThreshold>(host, &ReplaceCvCityCitizens_GetSpecialistUpgradeThreshold);

Code

2683/// What upgrade progress does a Specialist need to level up?2684int CvCityCitizens::GetSpecialistUpgradeThreshold(UnitClassTypes eUnitClass)2685{2686	int iThreshold = /*100*/ GC.getGREAT_PERSON_THRESHOLD_BASE();2687	int iNumCreated;26882689	if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_WRITER", true))2690	{2691#if defined(MOD_GLOBAL_TRULY_FREE_GP)2692		iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatWritersCreated(MOD_GLOBAL_TRULY_FREE_GP);2693#else2694		iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatWritersCreated();2695#endif2696	}2697	else if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_ARTIST", true))2698	{2699#if defined(MOD_GLOBAL_TRULY_FREE_GP)2700		iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatArtistsCreated(MOD_GLOBAL_TRULY_FREE_GP);2701#else2702		iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatArtistsCreated();2703#endif2704	}2705	else if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_MUSICIAN", true))2706	{2707#if defined(MOD_GLOBAL_TRULY_FREE_GP)2708		iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatMusiciansCreated(MOD_GLOBAL_TRULY_FREE_GP);2709#else2710		iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatMusiciansCreated();2711#endif2712	}2713	else2714	{2715#if defined(MOD_GLOBAL_SEPARATE_GP_COUNTERS)2716		if (MOD_GLOBAL_SEPARATE_GP_COUNTERS) {2717			if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_MERCHANT", true)) {2718#if defined(MOD_GLOBAL_TRULY_FREE_GP)2719				iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatMerchantsCreated(MOD_GLOBAL_TRULY_FREE_GP);2720#else2721				iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatMerchantsCreated();2722#endif2723			} else if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_SCIENTIST", true)) {2724#if defined(MOD_GLOBAL_TRULY_FREE_GP)2725				iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatScientistsCreated(MOD_GLOBAL_TRULY_FREE_GP);2726#else2727				iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatScientistsCreated();2728#endif2729			} else {2730#if defined(MOD_GLOBAL_TRULY_FREE_GP)2731				iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatEngineersCreated(MOD_GLOBAL_TRULY_FREE_GP);2732#else2733				iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatEngineersCreated();2734#endif2735			}2736		} else2737#endif2738#if defined(MOD_GLOBAL_TRULY_FREE_GP)2739		iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatPeopleCreated(MOD_GLOBAL_TRULY_FREE_GP);2740#else2741		iNumCreated = GET_PLAYER(GetCity()->getOwner()).getGreatPeopleCreated();2742#endif2743	}27442745	// Increase threshold based on how many GP have already been spawned2746	iThreshold += (/*50*/ GC.getGREAT_PERSON_THRESHOLD_INCREASE() * iNumCreated);27472748	// Game Speed mod2749	iThreshold *= GC.getGame().getGameSpeedInfo().getGreatPeoplePercent();2750	iThreshold /= 100;27512752	// Start era mod2753	iThreshold *= GC.getGame().getStartEraInfo().getGreatPeoplePercent();2754	iThreshold /= 100;27552756	return iThreshold;2757}

Calls

Called by