Code
14986void CvCity::doDecay()14987{14988 VALIDATE_OBJECT14989 AI_PERF_FORMAT("City-AI-perf.csv", ("CvCity::doDecay, Turn %03d, %s, %s", GC.getGame().getElapsedGameTurns(), GetPlayer()->getCivilizationShortDescription(), getName().c_str()) );14990 int iI;1499114992 int iBuildingProductionDecayTime = GC.getBUILDING_PRODUCTION_DECAY_TIME();14993 int iBuildingProductionDecayPercent = GC.getBUILDING_PRODUCTION_DECAY_PERCENT();1499414995 int iNumBuildingInfos = GC.getNumBuildingInfos();14996 for(iI = 0; iI < iNumBuildingInfos; iI++)14997 {14998 if(getProductionBuilding() != ((BuildingTypes)iI))14999 {15000 if(m_pCityBuildings->GetBuildingProduction((BuildingTypes)iI) > 0)15001 {15002 m_pCityBuildings->ChangeBuildingProductionTime(((BuildingTypes)iI), 1);1500315004 if(isHuman())15005 {15006 if(m_pCityBuildings->GetBuildingProductionTime((BuildingTypes)iI) > iBuildingProductionDecayTime)15007 {15008 m_pCityBuildings->SetBuildingProduction(((BuildingTypes)iI), ((m_pCityBuildings->GetBuildingProduction((BuildingTypes)iI) * iBuildingProductionDecayPercent) / 100));15009 }15010 }15011 }15012 else15013 {15014 m_pCityBuildings->SetBuildingProductionTime(((BuildingTypes)iI), 0);15015 }15016 }15017 }1501815019 int iUnitProductionDecayTime = GC.getUNIT_PRODUCTION_DECAY_TIME();15020 int iUnitProductionDecayPercent = GC.getUNIT_PRODUCTION_DECAY_PERCENT();1502115022 int iNumUnitInfos = GC.getNumUnitInfos();15023 for(iI = 0; iI < iNumUnitInfos; iI++)15024 {15025 const UnitTypes eUnit = static_cast<UnitTypes>(iI);15026 CvUnitEntry* pkUnitInfo = GC.getUnitInfo(eUnit);15027 if(pkUnitInfo)15028 {15029 if(getProductionUnit() != eUnit)15030 {15031 if(getUnitProduction(eUnit) > 0)15032 {15033 changeUnitProductionTime(eUnit, 1);1503415035 if(isHuman())15036 {15037 if(getUnitProductionTime(eUnit) > iUnitProductionDecayTime)15038 {15039 setUnitProduction(eUnit, ((getUnitProduction(eUnit) * iUnitProductionDecayPercent) / 100));15040 }15041 }15042 }15043 else15044 {15045 setUnitProductionTime(eUnit, 0);15046 }15047 }15048 }15049 }15050}