//------------------------------------------------------------------------------ void CvDllNetMessageHandler::ResponseUpdateCityCitizens(PlayerTypes ePlayer, int iCityID) { CvCity* pCity = GET_PLAYER(ePlayer).getCity(iCityID); if(NULL != pCity && pCity->GetCityCitizens()) { CvCityCitizens* pkCitizens = pCity->GetCityCitizens(); if(pkCitizens != NULL) { pkCitizens->DoVerifyWorkingPlots(); pkCitizens->DoReallocateCitizens(); } } }
//------------------------------------------------------------------------------ void CvDllNetMessageHandler::ResponseFaithGreatPersonChoice(PlayerTypes ePlayer, UnitTypes eGreatPersonUnit) { CvPlayerAI& kPlayer = GET_PLAYER(ePlayer); CvCity* pCity = kPlayer.GetGreatPersonSpawnCity(eGreatPersonUnit); if(pCity) { #if defined(MOD_GLOBAL_TRULY_FREE_GP) pCity->GetCityCitizens()->DoSpawnGreatPerson(eGreatPersonUnit, true, true, false); #else pCity->GetCityCitizens()->DoSpawnGreatPerson(eGreatPersonUnit, true, true); #endif } kPlayer.ChangeNumFaithGreatPeople(-1); }
//------------------------------------------------------------------------------ void CvDllNetMessageHandler::ResponseMayaBonusChoice(PlayerTypes ePlayer, UnitTypes eGreatPersonUnit) { CvPlayerAI& kPlayer = GET_PLAYER(ePlayer); CvCity* pCity = kPlayer.GetGreatPersonSpawnCity(eGreatPersonUnit); if(pCity) { #if defined(MOD_GLOBAL_TRULY_FREE_GP) pCity->GetCityCitizens()->DoSpawnGreatPerson(eGreatPersonUnit, true, false, MOD_GLOBAL_TRULY_FREE_GP); #else pCity->GetCityCitizens()->DoSpawnGreatPerson(eGreatPersonUnit, true, false); #endif } kPlayer.ChangeNumMayaBoosts(-1); kPlayer.GetPlayerTraits()->SetUnitBaktun(eGreatPersonUnit); }
//------------------------------------------------------------------------------ void CvDllNetMessageHandler::ResponseUpdateCityCitizens(PlayerTypes ePlayer, int iCityID) { //there was a crash when this was called while the map is uninitialized if (GC.getMap().numPlots()==0) return; CvCity* pCity = GET_PLAYER(ePlayer).getCity(iCityID); if(NULL != pCity && pCity->GetCityCitizens()) { CvCityCitizens* pkCitizens = pCity->GetCityCitizens(); if(pkCitizens != NULL) { pkCitizens->DoVerifyWorkingPlots(); pkCitizens->DoReallocateCitizens(); } } }
//------------------------------------------------------------------------------ void CvDllNetMessageHandler::ResponseFaithGreatPersonChoice(PlayerTypes ePlayer, UnitTypes eGreatPersonUnit) { CvPlayerAI& kPlayer = GET_PLAYER(ePlayer); CvCity* pCity = kPlayer.GetGreatPersonSpawnCity(eGreatPersonUnit); if(pCity) { pCity->GetCityCitizens()->DoSpawnGreatPerson(eGreatPersonUnit, true, true); } kPlayer.ChangeNumFaithGreatPeople(-1); }
//------------------------------------------------------------------------------ void CvDllNetMessageHandler::ResponseSetCityAvoidGrowth(PlayerTypes ePlayer, int iCityID, bool bAvoidGrowth) { CvCity* pCity = GET_PLAYER(ePlayer).getCity(iCityID); if(pCity != NULL) { CvCityCitizens* pkCitizens = pCity->GetCityCitizens(); if(pkCitizens != NULL) { pkCitizens->SetForcedAvoidGrowth(bAvoidGrowth); } } }
//------------------------------------------------------------------------------ void CvDllNetMessageHandler::ResponseSetCityAIFocus(PlayerTypes ePlayer, int iCityID, CityAIFocusTypes eFocus) { CvCity* pCity = GET_PLAYER(ePlayer).getCity(iCityID); if(pCity != NULL) { CvCityCitizens* pkCitizens = pCity->GetCityCitizens(); if(pkCitizens != NULL) { pkCitizens->SetFocusType(eFocus); } } }
void CvPlayerAI::AI_chooseFreeGreatPerson() { while(GetNumFreeGreatPeople() > 0) { UnitTypes eDesiredGreatPerson = NO_UNIT; // Highly wonder competitive and still early in game? if(GetDiplomacyAI()->GetWonderCompetitiveness() >= 8 && GC.getGame().getGameTurn() <= (GC.getGame().getEstimateEndTurn() / 2)) { eDesiredGreatPerson = (UnitTypes)GC.getInfoTypeForString("UNIT_ENGINEER"); } else { // Pick the person based on our victory method AIGrandStrategyTypes eVictoryStrategy = GetGrandStrategyAI()->GetActiveGrandStrategy(); if(eVictoryStrategy == (AIGrandStrategyTypes) GC.getInfoTypeForString("AIGRANDSTRATEGY_CONQUEST")) { eDesiredGreatPerson = (UnitTypes)GC.getInfoTypeForString("UNIT_GREAT_GENERAL"); } else if(eVictoryStrategy == (AIGrandStrategyTypes) GC.getInfoTypeForString("AIGRANDSTRATEGY_CULTURE")) { eDesiredGreatPerson = (UnitTypes)GC.getInfoTypeForString("UNIT_ARTIST"); } else if(eVictoryStrategy == (AIGrandStrategyTypes) GC.getInfoTypeForString("AIGRANDSTRATEGY_UNITED_NATIONS")) { eDesiredGreatPerson = (UnitTypes)GC.getInfoTypeForString("UNIT_MERCHANT"); } else if(eVictoryStrategy == (AIGrandStrategyTypes) GC.getInfoTypeForString("AIGRANDSTRATEGY_SPACESHIP")) { eDesiredGreatPerson = (UnitTypes)GC.getInfoTypeForString("UNIT_SCIENTIST"); } } if(eDesiredGreatPerson != NO_UNIT) { CvCity* pCapital = getCapitalCity(); if(pCapital) { pCapital->GetCityCitizens()->DoSpawnGreatPerson(eDesiredGreatPerson, true, false); } ChangeNumFreeGreatPeople(-1); } else { break; } } }