Hooks
static bool BeforeCvPlayer_changeCityYieldFromUnimprovedFeature(CvPlayer* self, FeatureTypes eIndex1, YieldTypes eIndex2, int iChange);static void AfterCvPlayer_changeCityYieldFromUnimprovedFeature(CvPlayer* self, FeatureTypes eIndex1, YieldTypes eIndex2, int iChange);static void ReplaceCvPlayer_changeCityYieldFromUnimprovedFeature(void (*original)(CvPlayer*, FeatureTypes, YieldTypes, int), CvPlayer* self, FeatureTypes eIndex1, YieldTypes eIndex2, int iChange);CivRegisterBefore<CivHooks::CvPlayer_changeCityYieldFromUnimprovedFeature>(host, &BeforeCvPlayer_changeCityYieldFromUnimprovedFeature);CivRegisterAfter<CivHooks::CvPlayer_changeCityYieldFromUnimprovedFeature>(host, &AfterCvPlayer_changeCityYieldFromUnimprovedFeature);CivRegisterReplace<CivHooks::CvPlayer_changeCityYieldFromUnimprovedFeature>(host, &ReplaceCvPlayer_changeCityYieldFromUnimprovedFeature);
Code
20993void CvPlayer::changeCityYieldFromUnimprovedFeature(FeatureTypes eIndex1, YieldTypes eIndex2, int iChange)20994{20995 CvAssertMsg(eIndex1 >= 0, "eIndex1 is expected to be non-negative (invalid Index)");20996 CvAssertMsg(eIndex1 < GC.getNumFeatureInfos(), "eIndex1 is expected to be within maximum bounds (invalid Index)");20997 CvAssertMsg(eIndex2 >= 0, "eIndex2 is expected to be non-negative (invalid Index)");20998 CvAssertMsg(eIndex2 < NUM_YIELD_TYPES, "eIndex2 is expected to be within maximum bounds (invalid Index)");2099921000 if(iChange != 0)21001 {21002 CvAssertMsg(iChange > -50 && iChange < 50, "GAMEPLAY: Yield for a plot is either negative or a ridiculously large number.");2100321004 Firaxis::Array<int, NUM_YIELD_TYPES> yields = m_ppiCityYieldFromUnimprovedFeature[eIndex1];21005 yields[eIndex2] = (m_ppiCityYieldFromUnimprovedFeature[eIndex1][eIndex2] + iChange);21006 m_ppiCityYieldFromUnimprovedFeature[eIndex1] = yields;21007 CvAssert(getCityYieldFromUnimprovedFeature(eIndex1, eIndex2) >= 0);2100821009 updateYield();21010 }21011}