Bazaar developer reference

CvPlayerPolicies::SetPolicyBranchFinished(PolicyBranchTypes, bool)

Defined in
CvPolicyClasses.cpp, line 4155
Class
CvPlayerPolicies
Hook name
CivHooks::CvPlayerPolicies_SetPolicyBranchFinished

Hooks

static bool BeforeCvPlayerPolicies_SetPolicyBranchFinished(CvPlayerPolicies* self, PolicyBranchTypes eBranchType, bool bValue);static void AfterCvPlayerPolicies_SetPolicyBranchFinished(CvPlayerPolicies* self, PolicyBranchTypes eBranchType, bool bValue);static void ReplaceCvPlayerPolicies_SetPolicyBranchFinished(void (*original)(CvPlayerPolicies*, PolicyBranchTypes, bool), CvPlayerPolicies* self, PolicyBranchTypes eBranchType, bool bValue);CivRegisterBefore<CivHooks::CvPlayerPolicies_SetPolicyBranchFinished>(host, &BeforeCvPlayerPolicies_SetPolicyBranchFinished);CivRegisterAfter<CivHooks::CvPlayerPolicies_SetPolicyBranchFinished>(host, &AfterCvPlayerPolicies_SetPolicyBranchFinished);CivRegisterReplace<CivHooks::CvPlayerPolicies_SetPolicyBranchFinished>(host, &ReplaceCvPlayerPolicies_SetPolicyBranchFinished);

Code

4154/// Accessor: is eBranchType finished?4155void CvPlayerPolicies::SetPolicyBranchFinished(PolicyBranchTypes eBranchType, bool bValue)4156{4157	CvAssertMsg(eBranchType >= 0, "eIndex is expected to be non-negative (invalid Index)");4158	CvAssertMsg(eBranchType < m_pPolicies->GetNumPolicyBranches(), "eIndex is expected to be within maximum bounds (invalid Index)");41594160	if(bValue != IsPolicyBranchFinished(eBranchType))4161	{4162		m_pabPolicyBranchFinished[eBranchType] = bValue;416341644165#if !defined(NO_ACHIEVEMENTS)4166		bool bUsingXP1Scenario3 = gDLL->IsModActivated(CIV5_XP1_SCENARIO3_MODID);41674168		//Achievements for fulfilling branches4169		if(!GC.getGame().isGameMultiPlayer() && GET_PLAYER(GC.getGame().getActivePlayer()).isHuman())4170		{4171			//Must not be playing smokey skies scenario.4172			if(m_pPlayer->GetID() == GC.getGame().getActivePlayer() && !bUsingXP1Scenario3)4173			{4174				switch(eBranchType)4175				{4176				case 0:4177					gDLL->UnlockAchievement(ACHIEVEMENT_POLICY_TRADITION);4178					break;4179				case 1:4180					gDLL->UnlockAchievement(ACHIEVEMENT_POLICY_LIBERTY);4181					break;4182				case 2:4183					gDLL->UnlockAchievement(ACHIEVEMENT_POLICY_HONOR);4184					break;4185				case 3:4186					gDLL->UnlockAchievement(ACHIEVEMENT_POLICY_PIETY);4187					break;4188				case 4:4189					gDLL->UnlockAchievement(ACHIEVEMENT_POLICY_PATRONAGE);4190					break;4191				4192				case 5:	//Aesthetics4193					gDLL->UnlockAchievement(ACHIEVEMENT_XP2_48);4194					break;4195				case 6:4196					gDLL->UnlockAchievement(ACHIEVEMENT_POLICY_COMMERCE);4197					break;4198				case 7: //Exploration4199					gDLL->UnlockAchievement(ACHIEVEMENT_XP2_47);4200					break;4201				case 8:4202					gDLL->UnlockAchievement(ACHIEVEMENT_POLICY_RATIONALISM);4203					break;4204				}4205			}4206			if(gDLL->IsAchievementUnlocked(ACHIEVEMENT_POLICY_TRADITION) && gDLL->IsAchievementUnlocked(ACHIEVEMENT_POLICY_HONOR) && gDLL->IsAchievementUnlocked(ACHIEVEMENT_POLICY_LIBERTY) && gDLL->IsAchievementUnlocked(ACHIEVEMENT_POLICY_PIETY) && gDLL->IsAchievementUnlocked(ACHIEVEMENT_POLICY_PATRONAGE) && gDLL->IsAchievementUnlocked(ACHIEVEMENT_POLICY_ORDER) && gDLL->IsAchievementUnlocked(ACHIEVEMENT_POLICY_AUTOCRACY)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_POLICY_FREEDOM)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_POLICY_COMMERCE)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_POLICY_RATIONALISM))4207			{4208				gDLL->UnlockAchievement(ACHIEVEMENT_ALL_SOCIAL_POLICIES);4209			}4210		}4211#endif42124213	}4214}

Calls

Called by