Hooks
static bool BeforeCvPlayer_changeSpecialistYieldChange(CvPlayer* self, SpecialistTypes eIndex1, YieldTypes eIndex2, int iChange);static void AfterCvPlayer_changeSpecialistYieldChange(CvPlayer* self, SpecialistTypes eIndex1, YieldTypes eIndex2, int iChange);static void ReplaceCvPlayer_changeSpecialistYieldChange(void (*original)(CvPlayer*, SpecialistTypes, YieldTypes, int), CvPlayer* self, SpecialistTypes eIndex1, YieldTypes eIndex2, int iChange);CivRegisterBefore<CivHooks::CvPlayer_changeSpecialistYieldChange>(host, &BeforeCvPlayer_changeSpecialistYieldChange);CivRegisterAfter<CivHooks::CvPlayer_changeSpecialistYieldChange>(host, &AfterCvPlayer_changeSpecialistYieldChange);CivRegisterReplace<CivHooks::CvPlayer_changeSpecialistYieldChange>(host, &ReplaceCvPlayer_changeSpecialistYieldChange);
Code
21146void CvPlayer::changeSpecialistYieldChange(SpecialistTypes eIndex1, YieldTypes eIndex2, int iChange)21147{21148 CvAssertMsg(eIndex1 >= 0, "eIndex1 is expected to be non-negative (invalid Index)");21149 CvAssertMsg(eIndex1 < GC.getNumSpecialistInfos(), "eIndex1 is expected to be within maximum bounds (invalid Index)");21150 CvAssertMsg(eIndex2 >= 0, "eIndex2 is expected to be non-negative (invalid Index)");21151 CvAssertMsg(eIndex2 < NUM_YIELD_TYPES, "eIndex2 is expected to be within maximum bounds (invalid Index)");2115221153 if(iChange != 0)21154 {21155 Firaxis::Array<int, NUM_YIELD_TYPES> yields = m_ppiSpecialistYieldChange[eIndex1];21156 yields[eIndex2] = (m_ppiSpecialistYieldChange[eIndex1][eIndex2] + iChange);21157 m_ppiSpecialistYieldChange[eIndex1] = yields;21158 CvAssert(getSpecialistYieldChange(eIndex1, eIndex2) >= 0);2115921160 updateYield();21161 }21162}