CityStrategyAIHelpers::IsTestCityStrategy_GoodGPCity(CvCity *)
- Defined in
- CvCityStrategyAI.cpp, line 3230
- Hook name
CivHooks::CityStrategyAIHelpers_IsTestCityStrategy_GoodGPCity
Hooks
static bool BeforeCityStrategyAIHelpers_IsTestCityStrategy_GoodGPCity(CvCity* pCity, bool& result);static void AfterCityStrategyAIHelpers_IsTestCityStrategy_GoodGPCity(CvCity* pCity, bool& result);static bool ReplaceCityStrategyAIHelpers_IsTestCityStrategy_GoodGPCity(bool (*original)(CvCity*), CvCity* pCity);CivRegisterBefore<CivHooks::CityStrategyAIHelpers_IsTestCityStrategy_GoodGPCity>(host, &BeforeCityStrategyAIHelpers_IsTestCityStrategy_GoodGPCity);CivRegisterAfter<CivHooks::CityStrategyAIHelpers_IsTestCityStrategy_GoodGPCity>(host, &AfterCityStrategyAIHelpers_IsTestCityStrategy_GoodGPCity);CivRegisterReplace<CivHooks::CityStrategyAIHelpers_IsTestCityStrategy_GoodGPCity>(host, &ReplaceCityStrategyAIHelpers_IsTestCityStrategy_GoodGPCity);
Code
3230bool CityStrategyAIHelpers::IsTestCityStrategy_GoodGPCity(CvCity* pCity)3231{3232 // if this city is producing at least 8 GP points a turn (since most GP mod buildings increase by 25% this will yield 2 extra GP points a turn)32333234 int iTotalGPPChange = 0;32353236 for (int iSpecialistLoop = 0; iSpecialistLoop < GC.getNumSpecialistInfos(); iSpecialistLoop++)3237 {3238 const SpecialistTypes eSpecialist = static_cast<SpecialistTypes>(iSpecialistLoop);3239 CvSpecialistInfo* pkSpecialistInfo = GC.getSpecialistInfo(eSpecialist);3240 if(pkSpecialistInfo)3241 {3242 // Does this Specialist spawn a GP?3243 if (pkSpecialistInfo->getGreatPeopleUnitClass() != NO_UNITCLASS)3244 {3245 int iCount = pCity->GetCityCitizens()->GetSpecialistCount(eSpecialist);32463247 // GPP from Specialists3248 int iGPPChange = pkSpecialistInfo->getGreatPeopleRateChange() * iCount * 100;32493250 // GPP from Buildings3251 iGPPChange += pCity->GetCityCitizens()->GetBuildingGreatPeopleRateChanges(eSpecialist) * 100;32523253 if (iGPPChange > 0)3254 {3255 int iMod = 0;32563257 // City mod3258 iMod += pCity->getGreatPeopleRateModifier();32593260 // Player mod3261 iMod += pCity->GetPlayer()->getGreatPeopleRateModifier();32623263 // Trait mod to this specific class3264 if ((UnitClassTypes)pkSpecialistInfo->getGreatPeopleUnitClass() == GC.getInfoTypeForString("UNITCLASS_SCIENTIST"))3265 {3266 iMod += pCity->GetPlayer()->GetPlayerTraits()->GetGreatScientistRateModifier();3267 iMod += pCity->GetPlayer()->getGreatScientistRateModifier();3268 }3269 else if((UnitClassTypes)pkSpecialistInfo->getGreatPeopleUnitClass() == GC.getInfoTypeForString("UNITCLASS_WRITER"))3270 {3271 iMod += pCity->GetPlayer()->getGreatWriterRateModifier();3272 } 3273 else if((UnitClassTypes)pkSpecialistInfo->getGreatPeopleUnitClass() == GC.getInfoTypeForString("UNITCLASS_ARTIST"))3274 {3275 iMod += pCity->GetPlayer()->getGreatArtistRateModifier();3276 } 3277 else if((UnitClassTypes)pkSpecialistInfo->getGreatPeopleUnitClass() == GC.getInfoTypeForString("UNITCLASS_MUSICIAN"))3278 {3279 iMod += pCity->GetPlayer()->getGreatMusicianRateModifier();3280 }3281 else if((UnitClassTypes)pkSpecialistInfo->getGreatPeopleUnitClass() == GC.getInfoTypeForString("UNITCLASS_MERCHANT"))3282 {3283 iMod += pCity->GetPlayer()->getGreatMerchantRateModifier();3284 }3285 else if((UnitClassTypes)pkSpecialistInfo->getGreatPeopleUnitClass() == GC.getInfoTypeForString("UNITCLASS_ENGINEER"))3286 {3287 iMod += pCity->GetPlayer()->getGreatEngineerRateModifier();3288 }32893290 iGPPChange *= (100 + iMod);3291 iGPPChange /= 100;32923293 iTotalGPPChange += iGPPChange;3294 }3295 }3296 }3297 }32983299 if (iTotalGPPChange >= 800)3300 {3301 return true;3302 }33033304 return false;3305}
Calls
- CvCity::GetCityCitizens() const
- CvCity::getGreatPeopleRateModifier() const
- CvCity::GetPlayer()
- CvCityCitizens::GetBuildingGreatPeopleRateChanges(SpecialistTypes) const
- CvCityCitizens::GetSpecialistCount(SpecialistTypes) const
- CvGlobals::getInfoTypeForString(const char *, bool) const
- CvGlobals::getNumSpecialistInfos()
- CvGlobals::getSpecialistInfo(SpecialistTypes)
- CvPlayer::getGreatArtistRateModifier() const
- CvPlayer::getGreatEngineerRateModifier() const
- CvPlayer::getGreatMerchantRateModifier() const
- CvPlayer::getGreatMusicianRateModifier() const
- CvPlayer::getGreatPeopleRateModifier() const
- CvPlayer::getGreatScientistRateModifier() const
- CvPlayer::getGreatWriterRateModifier() const
- CvPlayer::GetPlayerTraits() const
- CvPlayerTraits::GetGreatScientistRateModifier() const
- CvSpecialistInfo::getGreatPeopleRateChange() const
- CvSpecialistInfo::getGreatPeopleUnitClass() const