Bazaar developer reference

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}