@Silu,
the decay is scaled, I think it was finally patched
the decay is scaled, I think it was finally patched
Spoiler :
Code:
void CvCity::doDecay()
{
int iI;
for (iI = 0; iI < GC.getNumBuildingInfos(); iI++)
{
BuildingTypes eBuilding = (BuildingTypes) iI;
if (getProductionBuilding() != eBuilding)
{
if (getBuildingProduction(eBuilding) > 0)
{
changeBuildingProductionTime(eBuilding, 1);
if (isHuman())
{
int iGameSpeedPercent = GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getConstructPercent();
if (100 * getBuildingProductionTime(eBuilding) > GC.getDefineINT("BUILDING_PRODUCTION_DECAY_TIME") * iGameSpeedPercent)
{
int iProduction = getBuildingProduction(eBuilding);
setBuildingProduction(eBuilding, iProduction - (iProduction * (100 - GC.getDefineINT("BUILDING_PRODUCTION_DECAY_PERCENT")) + iGameSpeedPercent - 1) / iGameSpeedPercent);
}
}
}
else
{
setBuildingProductionTime(eBuilding, 0);
}
}
}
for (iI = 0; iI < GC.getNumUnitInfos(); iI++)
{
UnitTypes eUnit = (UnitTypes) iI;
if (getProductionUnit() != eUnit)
{
if (getUnitProduction(eUnit) > 0)
{
changeUnitProductionTime(eUnit, 1);
if (isHuman())
{
int iGameSpeedPercent = GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getTrainPercent();
if (100 * getUnitProductionTime(eUnit) > GC.getDefineINT("UNIT_PRODUCTION_DECAY_TIME") * iGameSpeedPercent)
{
int iProduction = getUnitProduction(eUnit);
setUnitProduction(eUnit, iProduction - (iProduction * (100 - GC.getDefineINT("UNIT_PRODUCTION_DECAY_PERCENT")) + iGameSpeedPercent - 1) / iGameSpeedPercent);
}
}
}
else
{
setUnitProductionTime(eUnit, 0);
}
}
}
}