CvPlayerTechs::CheckForTechAchievement() const
- Defined in
- CvTechClasses.cpp, line 1343
- Class
- CvPlayerTechs
- Hook name
CivHooks::CvPlayerTechs_CheckForTechAchievement
Hooks
static bool BeforeCvPlayerTechs_CheckForTechAchievement(const CvPlayerTechs* self);static void AfterCvPlayerTechs_CheckForTechAchievement(const CvPlayerTechs* self);static void ReplaceCvPlayerTechs_CheckForTechAchievement(void (*original)(const CvPlayerTechs*), const CvPlayerTechs* self);CivRegisterBefore<CivHooks::CvPlayerTechs_CheckForTechAchievement>(host, &BeforeCvPlayerTechs_CheckForTechAchievement);CivRegisterAfter<CivHooks::CvPlayerTechs_CheckForTechAchievement>(host, &AfterCvPlayerTechs_CheckForTechAchievement);CivRegisterReplace<CivHooks::CvPlayerTechs_CheckForTechAchievement>(host, &ReplaceCvPlayerTechs_CheckForTechAchievement);
Code
1342///Check for Achievement1343void CvPlayerTechs::CheckForTechAchievement() const1344{1345#if !defined(NO_ACHIEVEMENTS)1346 if(m_pPlayer->isHuman() && !GC.getGame().isGameMultiPlayer())1347 {1348 //Check for Catherine Achievement1349 if((CvString)m_pPlayer->getLeaderTypeKey() == "LEADER_CATHERINE")1350 {1351 for(int iI = 0; iI < GC.getNumTechInfos(); iI++)1352 {1353 const TechTypes eTech = static_cast<TechTypes>(iI);1354 CvTechEntry* pkTechInfo = GC.getTechInfo(eTech);1355 if(pkTechInfo)1356 {1357 CvString szCurrentTech = (CvString) pkTechInfo->GetType();1358 if(szCurrentTech == "TECH_HORSEBACK_RIDING")1359 {1360 if(GET_TEAM(m_pPlayer->getTeam()).GetTeamTechs()->HasTech(eTech))1361 {1362 int iJ;1363 int iNumPlayersWith = 0;1364 for(iJ = 0; iJ < MAX_MAJOR_CIVS; iJ++)1365 {1366 if(!GET_PLAYER((PlayerTypes)iJ).isBarbarian() && !GET_PLAYER((PlayerTypes)iJ).isMinorCiv())1367 {1368 if(GET_TEAM(GET_PLAYER((PlayerTypes)iJ).getTeam()).GetTeamTechs()->HasTech(eTech))1369 {1370 iNumPlayersWith++;1371 }1372 }1373 }1374 if(iNumPlayersWith <= 1) //For only the human player1375 {1376 gDLL->UnlockAchievement(ACHIEVEMENT_SPECIAL_PONY);1377 }1378 }1379 }1380 }1381 }1382 }1383 //Check for all achievements1384 if(m_pPlayer->GetPlayerTechs()->IsCurrentResearchRepeat())1385 {1386 for(int iI = 0; iI < GC.getNumTechInfos() - 1; iI++)1387 {1388 const TechTypes eTech = static_cast<TechTypes>(iI);1389 CvTechEntry* pkTechInfo = GC.getTechInfo(eTech);1390 if(pkTechInfo)1391 {1392 if(!GET_TEAM(m_pPlayer->getTeam()).GetTeamTechs()->HasTech(eTech))1393 {1394 return;1395 }1396 }13971398 }13991400 if(GET_TEAM(m_pPlayer->getTeam()).GetTeamTechs()->GetTechCount((TechTypes)m_pPlayer->GetPlayerTechs()->GetCurrentResearch()) < 1)1401 {1402 return;1403 }1404 gDLL->UnlockAchievement(ACHIEVEMENT_ALL_TECHS);1405 }1406 }1407#endif1408}