Hooks
static bool BeforeCvPlayer_changeTerrainYieldChange(CvPlayer* self, TerrainTypes eIndex1, YieldTypes eIndex2, int iChange);static void AfterCvPlayer_changeTerrainYieldChange(CvPlayer* self, TerrainTypes eIndex1, YieldTypes eIndex2, int iChange);static void ReplaceCvPlayer_changeTerrainYieldChange(void (*original)(CvPlayer*, TerrainTypes, YieldTypes, int), CvPlayer* self, TerrainTypes eIndex1, YieldTypes eIndex2, int iChange);CivRegisterBefore<CivHooks::CvPlayer_changeTerrainYieldChange>(host, &BeforeCvPlayer_changeTerrainYieldChange);CivRegisterAfter<CivHooks::CvPlayer_changeTerrainYieldChange>(host, &AfterCvPlayer_changeTerrainYieldChange);CivRegisterReplace<CivHooks::CvPlayer_changeTerrainYieldChange>(host, &ReplaceCvPlayer_changeTerrainYieldChange);
Code
21086void CvPlayer::changeTerrainYieldChange(TerrainTypes eIndex1, YieldTypes eIndex2, int iChange)21087{21088 CvAssertMsg(eIndex1 >= 0, "eIndex1 is expected to be non-negative (invalid Index)");21089 CvAssertMsg(eIndex1 < GC.getNumTerrainInfos(), "eIndex1 is expected to be within maximum bounds (invalid Index)");21090 CvAssertMsg(eIndex2 >= 0, "eIndex2 is expected to be non-negative (invalid Index)");21091 CvAssertMsg(eIndex2 < NUM_YIELD_TYPES, "eIndex2 is expected to be within maximum bounds (invalid Index)");2109221093 if(iChange != 0)21094 {21095 CvAssertMsg(iChange > -50 && iChange < 50, "GAMEPLAY: Yield for a plot is either negative or a ridiculously large number. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");2109621097 Firaxis::Array<int, NUM_YIELD_TYPES> yields = m_ppiTerrainYieldChange[eIndex1];21098 yields[eIndex2] = (m_ppiTerrainYieldChange[eIndex1][eIndex2] + iChange);21099 m_ppiTerrainYieldChange[eIndex1] = yields;21100 CvAssert(getTerrainYieldChange(eIndex1, eIndex2) >= 0);2110121102 updateYield();21103 }21104}