Bazaar developer reference

CvCity::getExtraSpecialistYield(YieldTypes, SpecialistTypes) const

Defined in
CvCity.cpp, line 10999
Class
CvCity
Hook name
CivHooks::CvCity_getExtraSpecialistYield_with_YieldTypes_SpecialistTypes_const

Hooks

static bool BeforeCvCity_getExtraSpecialistYield_with_YieldTypes_SpecialistTypes_const(const CvCity* self, YieldTypes eIndex, SpecialistTypes eSpecialist, int& result);static void AfterCvCity_getExtraSpecialistYield_with_YieldTypes_SpecialistTypes_const(const CvCity* self, YieldTypes eIndex, SpecialistTypes eSpecialist, int& result);static int ReplaceCvCity_getExtraSpecialistYield_with_YieldTypes_SpecialistTypes_const(int (*original)(const CvCity*, YieldTypes, SpecialistTypes), const CvCity* self, YieldTypes eIndex, SpecialistTypes eSpecialist);CivRegisterBefore<CivHooks::CvCity_getExtraSpecialistYield_with_YieldTypes_SpecialistTypes_const>(host, &BeforeCvCity_getExtraSpecialistYield_with_YieldTypes_SpecialistTypes_const);CivRegisterAfter<CivHooks::CvCity_getExtraSpecialistYield_with_YieldTypes_SpecialistTypes_const>(host, &AfterCvCity_getExtraSpecialistYield_with_YieldTypes_SpecialistTypes_const);CivRegisterReplace<CivHooks::CvCity_getExtraSpecialistYield_with_YieldTypes_SpecialistTypes_const>(host, &ReplaceCvCity_getExtraSpecialistYield_with_YieldTypes_SpecialistTypes_const);

Code

10999int CvCity::getExtraSpecialistYield(YieldTypes eIndex, SpecialistTypes eSpecialist) const11000{11001	VALIDATE_OBJECT11002	CvAssertMsg(eIndex >= 0, "eIndex expected to be >= 0");11003	CvAssertMsg(eIndex < NUM_YIELD_TYPES, "eIndex expected to be < NUM_YIELD_TYPES");11004	CvAssertMsg(eSpecialist >= 0, "eSpecialist expected to be >= 0");11005	CvAssertMsg(eSpecialist < GC.getNumSpecialistInfos(), "GC.getNumSpecialistInfos expected to be >= 0");1100611007	if (eSpecialist == GC.getDEFAULT_SPECIALIST())11008	{11009		return 0;11010	}1101111012	int iYieldMultiplier = GET_PLAYER(getOwner()).getSpecialistExtraYield(eSpecialist, eIndex) +11013	                       GET_PLAYER(getOwner()).getSpecialistExtraYield(eIndex) +11014	                       GET_PLAYER(getOwner()).GetPlayerTraits()->GetSpecialistYieldChange(eSpecialist, eIndex);11015#if defined(MOD_API_UNIFIED_YIELDS)11016	iYieldMultiplier += GET_PLAYER(getOwner()).getSpecialistYieldChange(eSpecialist, eIndex);1101711018	ReligionTypes eMajority = GetCityReligions()->GetReligiousMajority();11019	if(eMajority >= RELIGION_PANTHEON)11020	{11021		const CvReligion* pReligion = GC.getGame().GetGameReligions()->GetReligion(eMajority, getOwner());11022		if(pReligion)11023		{11024			iYieldMultiplier += pReligion->m_Beliefs.GetSpecialistYieldChange(eSpecialist, eIndex);11025			BeliefTypes eSecondaryPantheon = GetCityReligions()->GetSecondaryReligionPantheonBelief();11026			if (eSecondaryPantheon != NO_BELIEF)11027			{11028				iYieldMultiplier += GC.GetGameBeliefs()->GetEntry(eSecondaryPantheon)->GetSpecialistYieldChange(eSpecialist, eIndex);11029			}11030		}11031	}11032#endif11033	int iExtraYield = GetCityCitizens()->GetSpecialistCount(eSpecialist) * iYieldMultiplier;1103411035	return iExtraYield;11036}

Calls

Called by