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}