CvPlayerAchievements::AlliedWithCityState(PlayerTypes)
- Defined in
- CvAchievementUnlocker.cpp, line 215
- Class
- CvPlayerAchievements
- Hook name
CivHooks::CvPlayerAchievements_AlliedWithCityState
Hooks
static bool BeforeCvPlayerAchievements_AlliedWithCityState(CvPlayerAchievements* self, PlayerTypes eNewCityStateAlly);static void AfterCvPlayerAchievements_AlliedWithCityState(CvPlayerAchievements* self, PlayerTypes eNewCityStateAlly);static void ReplaceCvPlayerAchievements_AlliedWithCityState(void (*original)(CvPlayerAchievements*, PlayerTypes), CvPlayerAchievements* self, PlayerTypes eNewCityStateAlly);CivRegisterBefore<CivHooks::CvPlayerAchievements_AlliedWithCityState>(host, &BeforeCvPlayerAchievements_AlliedWithCityState);CivRegisterAfter<CivHooks::CvPlayerAchievements_AlliedWithCityState>(host, &AfterCvPlayerAchievements_AlliedWithCityState);CivRegisterReplace<CivHooks::CvPlayerAchievements_AlliedWithCityState>(host, &ReplaceCvPlayerAchievements_AlliedWithCityState);
Code
215void CvPlayerAchievements::AlliedWithCityState(PlayerTypes eNewCityStateAlly)216{217#if !defined(NO_ACHIEVEMENTS)218 if(m_kPlayer.GetID() != GC.getGame().getActivePlayer())219 return;220221 //Cache value if needed222 if(m_ePapalPrimacyType == UNDEFINED_TYPE)223 {224 m_ePapalPrimacyType = (BeliefTypes)GC.getInfoTypeForString("BELIEF_PAPAL_PRIMACY", true);225 }226 227 if(m_ePapalPrimacyType != NO_BELIEF)228 {229 const ReligionTypes eReligion = m_kPlayer.GetReligions()->GetReligionCreatedByPlayer();230 if(eReligion != NO_RELIGION)231 {232 const CvReligion* pReligion = GC.getGame().GetGameReligions()->GetReligion(eReligion, m_kPlayer.GetID());233 if(pReligion != NULL)234 {235 if(pReligion->m_Beliefs.HasBelief(m_ePapalPrimacyType))236 {237 int iNumAllies = 0;238 //We've got the belief! How many city state Allies do we have??239 for(int i = 0; i < MAX_CIV_PLAYERS; ++i)240 {241 const PlayerTypes ePlayer = static_cast<PlayerTypes>(i);242 CvPlayerAI& kPlayer = GET_PLAYER(ePlayer);243 if(kPlayer.isAlive() && kPlayer.isMinorCiv())244 {245 const PlayerTypes eAlly = kPlayer.GetMinorCivAI()->GetAlly();246 if(eAlly == m_kPlayer.GetID())247 iNumAllies++;248 }249 }250251 if(iNumAllies >= 12)252 {253 gDLL->UnlockAchievement(ACHIEVEMENT_XP1_27);254 }255 }256 }257 }258 }259#endif260}