Hooks
static bool BeforeCvMinorCivAI_DoAcquire(CvMinorCivAI* self, PlayerTypes eMajor, int & iNumUnits, int& iCapitalX, int& iCapitalY, bool bKeepResources);static void AfterCvMinorCivAI_DoAcquire(CvMinorCivAI* self, PlayerTypes eMajor, int & iNumUnits, int& iCapitalX, int& iCapitalY, bool bKeepResources);static void ReplaceCvMinorCivAI_DoAcquire(void (*original)(CvMinorCivAI*, PlayerTypes, int &, int&, int&, bool), CvMinorCivAI* self, PlayerTypes eMajor, int & iNumUnits, int& iCapitalX, int& iCapitalY, bool bKeepResources);CivRegisterBefore<CivHooks::CvMinorCivAI_DoAcquire>(host, &BeforeCvMinorCivAI_DoAcquire);CivRegisterAfter<CivHooks::CvMinorCivAI_DoAcquire>(host, &AfterCvMinorCivAI_DoAcquire);CivRegisterReplace<CivHooks::CvMinorCivAI_DoAcquire>(host, &ReplaceCvMinorCivAI_DoAcquire);
Code
8893#if defined(MOD_GLOBAL_VENICE_KEEPS_RESOURCES) || defined(MOD_GLOBAL_CS_MARRIAGE_KEEPS_RESOURCES)8894void CvMinorCivAI::DoAcquire(PlayerTypes eMajor, int &iNumUnits, int& iCapitalX, int& iCapitalY, bool bKeepResources)8895#else8896void CvMinorCivAI::DoAcquire(PlayerTypes eMajor, int &iNumUnits, int& iCapitalX, int& iCapitalY)8897#endif8898{8899 // Take their units8900 CvUnit* pLoopUnit = NULL;8901 int iLoopUnit;8902 iNumUnits = 0;8903 for(pLoopUnit = GetPlayer()->firstUnit(&iLoopUnit); pLoopUnit != NULL; pLoopUnit = GetPlayer()->nextUnit(&iLoopUnit))8904 {8905 GET_PLAYER(eMajor).DoDistanceGift(GetPlayer()->GetID(), pLoopUnit);8906 iNumUnits++;8907 }89088909 // Take all their cities, don't show notifications8910 SetDisableNotifications(true);8911 iCapitalX = -1;8912 iCapitalY = -1;8913 FStaticVector<CvCity*, 16, false, c_eCiv5GameplayDLL, 0> vpCitiesToAcquire;8914 int iLoopCity;8915 for (CvCity* pLoopCity = GetPlayer()->firstCity(&iLoopCity, true); pLoopCity != NULL; pLoopCity = GetPlayer()->nextCity(&iLoopCity, true))8916 {8917 vpCitiesToAcquire.push_back(pLoopCity);8918 }8919 for (uint iI = 0; iI < vpCitiesToAcquire.size(); iI++)8920 {8921 CvCity* pCity = vpCitiesToAcquire[iI];8922 CvAssertMsg(pCity, "pCity should not be NULL. Please send Anton your save file and version.");8923 if (pCity)8924 {8925 if (pCity->isCapital())8926 {8927 iCapitalX = pCity->getX();8928 iCapitalY = pCity->getY();8929 }8930#if defined(MOD_GLOBAL_VENICE_KEEPS_RESOURCES) || defined(MOD_GLOBAL_CS_MARRIAGE_KEEPS_RESOURCES)8931 GET_PLAYER(eMajor).acquireCity(pCity, false, true, bKeepResources); // deletes pCity, don't reuse the pointer8932#else8933 GET_PLAYER(eMajor).acquireCity(pCity, false, true); // deletes pCity, don't reuse the pointer8934#endif8935 }8936 }8937 SetDisableNotifications(false);89388939 SetMajorBoughtOutBy(eMajor);89408941 GC.getGame().DoUpdateDiploVictory();89428943 GC.GetEngineUserInterface()->setDirty(GameData_DIRTY_BIT, true);89448945}