Hooks
static bool BeforeCvDiplomacyAIHelpers_GetWarmongerOffset(PlayerTypes eOriginalOwner, bool bIsCapital, int& result);static void AfterCvDiplomacyAIHelpers_GetWarmongerOffset(PlayerTypes eOriginalOwner, bool bIsCapital, int& result);static int ReplaceCvDiplomacyAIHelpers_GetWarmongerOffset(int (*original)(PlayerTypes, bool), PlayerTypes eOriginalOwner, bool bIsCapital);CivRegisterBefore<CivHooks::CvDiplomacyAIHelpers_GetWarmongerOffset>(host, &BeforeCvDiplomacyAIHelpers_GetWarmongerOffset);CivRegisterAfter<CivHooks::CvDiplomacyAIHelpers_GetWarmongerOffset>(host, &AfterCvDiplomacyAIHelpers_GetWarmongerOffset);CivRegisterReplace<CivHooks::CvDiplomacyAIHelpers_GetWarmongerOffset>(host, &ReplaceCvDiplomacyAIHelpers_GetWarmongerOffset);
Code
28439#if defined(MOD_CONFIG_AI_IN_XML)28440int CvDiplomacyAIHelpers::GetWarmongerOffset(PlayerTypes eOriginalOwner, bool bIsCapital)28441#else28442int CvDiplomacyAIHelpers::GetWarmongerOffset(int iNumCitiesRemaining, bool bIsMinor)28443#endif28444{28445 int iEstimatedCitiesOnMap = GC.getMap().getWorldInfo().GetEstimatedNumCities();28446 int iActualCitiesOnMap = GC.getGame().getNumCities();28447 int iNumCitiesRemaining = max(GET_PLAYER(eOriginalOwner).getNumCities(), 1);2844828449#if defined(MOD_CONFIG_AI_IN_XML)28450 int iWarmongerWeight = GET_PLAYER(eOriginalOwner).isMinorCiv() ? GC.getWARMONGER_THREAT_MINOR_CITY_WEIGHT() : GC.getWARMONGER_THREAT_MAJOR_CITY_WEIGHT();28451 if (bIsCapital) iWarmongerWeight *= GC.getWARMONGER_THREAT_CAPITAL_CITY_PERCENT() / 100;2845228453 // TODO - WH - WARMONGER_THREAT_CITY_SIZE_ENABLED28454 // if RemainingCities is 0, use iWarmongerWeight, otherwise28455 // (iWarmongerWeight / iNumCitiesRemaining) * (CapturedCityPop / (RemainingTotalPop/iNumCitiesRemaining))28456 int iWarmongerOffset = (iWarmongerWeight * iEstimatedCitiesOnMap) / (iNumCitiesRemaining * max(iActualCitiesOnMap, 1));28457#else28458 int iWarmongerOffset = (1000 * iEstimatedCitiesOnMap) / (max(iActualCitiesOnMap, 1) * iNumCitiesRemaining);2845928460 // Minor power targeted, half penalty28461 if (bIsMinor)28462 {28463 iWarmongerOffset = (iWarmongerOffset * GC.getWARMONGER_ON_CITY_STATE_MULTIPLIER()) / 100;28464 }28465#endif2846628467 // CUSTOMLOG("GetWarmongerOffset(owner=%i, capital=%s) = %i", ((int) eOriginalOwner), (bIsCapital ? "true" : "false"), iWarmongerOffset);28468 return iWarmongerOffset;28469}