EmperorFool
Deity
isBuildingClassRequiredToTrain() has an error. The second array is indexed by building class--not techs--and it holds a TechTypes--not booleans. Same applies to the era override array. You are looping over all techs and eras which is not necessary.
Code:
bool CvPlayer::isBuildingClassRequiredToTrain(BuildingClassTypes eBuildingClass, UnitTypes eUnit) const
{
if (GC.getUnitInfo(eUnit).getPrereqBuildingClass(eBuildingClass))
{
TechTypes eOverrideTech = (TechTypes) kUnit.getPrereqBuildingClassOverrideTech(eBuildingClass);
if (eOverrideTech != NO_TECH && GET_TEAM(getTeam()).isHasTech(TechTypes(eOverrideTech))
{
return false;
}
EraTypes eOverrideEra = (EraTypes) kUnit.getPrereqBuildingClassOverrideTech(eBuildingClass);
if (eOverrideEra != NO_ERA && GET_TEAM(getTeam()).getEra() >= eOverrideEra)
{
return false;
}
return true;
}
return false;
}