CvTeam::DoBarbarianTech()
- Defined in
- CvTeam.cpp, line 843
- Class
- CvTeam
- Hook name
CivHooks::CvTeam_DoBarbarianTech
Hooks
static bool BeforeCvTeam_DoBarbarianTech(CvTeam* self);static void AfterCvTeam_DoBarbarianTech(CvTeam* self);static void ReplaceCvTeam_DoBarbarianTech(void (*original)(CvTeam*), CvTeam* self);CivRegisterBefore<CivHooks::CvTeam_DoBarbarianTech>(host, &BeforeCvTeam_DoBarbarianTech);CivRegisterAfter<CivHooks::CvTeam_DoBarbarianTech>(host, &AfterCvTeam_DoBarbarianTech);CivRegisterReplace<CivHooks::CvTeam_DoBarbarianTech>(host, &ReplaceCvTeam_DoBarbarianTech);
Code
842/// Barbarian Tech Progress843void CvTeam::DoBarbarianTech()844{845 int iCount;846847 TechTypes eTech;848 TeamTypes eTeam;849850 int iPossibleCount = 0;851852 // See how many majors are still around853 int iTeamLoop;854 for(iTeamLoop = 0; iTeamLoop < MAX_CIV_TEAMS; iTeamLoop++)855 {856 eTeam = (TeamTypes) iTeamLoop;857858 if(GET_TEAM(eTeam).isAlive())859 {860 if(!GET_TEAM(eTeam).isMinorCiv())861 {862 iPossibleCount++;863 }864 }865 }866867 CvAssertMsg(iPossibleCount > 0, "Zero possible players? Uhhh...");868869 // 75% of majors (rounded down) need the tech for the Barbs to get it870 int iTechPercent = /*75*/ GC.getBARBARIAN_TECH_PERCENT();871 int iTeamsNeeded = max(1, iPossibleCount * iTechPercent / 100);872873 for(int iTechLoop = 0; iTechLoop < GC.getNumTechInfos(); iTechLoop++)874 {875 eTech = (TechTypes) iTechLoop;876877 if(!GetTeamTechs()->HasTech(eTech))878 {879 iCount = 0;880881 for(iTeamLoop = 0; iTeamLoop < MAX_CIV_TEAMS; iTeamLoop++)882 {883 eTeam = (TeamTypes) iTeamLoop;884885 if(GET_TEAM(eTeam).isAlive())886 {887 // Only look at Majors, as the City States will lag behind888 if(!GET_TEAM(eTeam).isMinorCiv())889 {890 if(GET_TEAM(eTeam).GetTeamTechs()->HasTech(eTech))891 {892 iCount++;893 }894 }895 }896 }897898 // Do enough majors have this tech?899 if(iCount >= iTeamsNeeded)900 {901 setHasTech(eTech, true, getLeaderID(), false, false);902 }903 }904 }905}
Calls
- CvGlobals::getBARBARIAN_TECH_PERCENT()
- CvGlobals::getNumTechInfos()
- CvTeam::getLeaderID() const
- CvTeam::getTeam(TeamTypes)
- CvTeam::GetTeamTechs() const
- CvTeam::isAlive() const
- CvTeam::isMinorCiv() const
- CvTeam::setHasTech(TechTypes, bool, PlayerTypes, bool, bool)
- CvTeamTechs::HasTech(TechTypes) const
std::max