原帖由 linfeixb27 于 2011-11-3 16:51 发表
185楼这个情况我还真没注意过,难道真是bug?
楼主什么版本?确认下。
人口的粮食消耗, 参见下段代码, 是区分是否刨除愤怒人口的粮食消耗的.
- int CvCity::foodConsumption(bool bNoAngry, int iExtra) const
- {
- return ((((getPopulation() + iExtra) - ((bNoAngry) ? angryPopulation(iExtra) : 0)) * GC.getFOOD_CONSUMPTION_PER_POPULATION()) - healthRate(bNoAngry, iExtra));
- }
复制代码
而foodConsumption的声明中bNoAngry默认是false
- int foodConsumption(bool bNoAngry = false, int iExtra = 0) const;
复制代码
但是计算城市生产中 部分时, 用的是foodConsumption(true), 换句话说用的是刨除了愤怒人口的粮食消耗的粮食产出.
- int CvCity::getProductionDifference(int iProductionNeeded, int iProduction, int iProductionModifier, bool bFoodProduction, bool bOverflow) const
- {
- if (isDisorder())
- {
- return 0;
- }
- int iFoodProduction = ((bFoodProduction) ? std::max(0, (getYieldRate(YIELD_FOOD) - foodConsumption(true))) : 0);
- int iOverflow = ((bOverflow) ? (getOverflowProduction() + getFeatureProduction()) : 0);
- return (((getBaseYieldRate(YIELD_PRODUCTION) + iOverflow) * getBaseYieldRateModifier(YIELD_PRODUCTION, iProductionModifier)) / 100 + iFoodProduction);
- }
复制代码
所以说这里是个bug, 还是feature, 我们无法确定. |