【旧世界/Old World】城市加速建造相关及公式

前言
视频封面与专栏内容无关,选图仅为个人喜好,原图P站ID:99666645,作者reinforced。
这几天沉迷亚述那个档,外加有空确实要去bcr季前赛了,所以可能没啥空看新公式了,就先把手头的存货发了吧。目前还剩宗教、人物属性全看完了但是没发。
这个加速建造的机制确实能看出来是文明4制作组做出来的,和4代神似。
加速建造价格目前有个小的良性BUG,不过我已经找到出错的代码并且可以自行修复了,等有空的时候写个英文小作文跟官方反馈一下了。

一、加速建造
对于开发中文化(2级)或更高等级的城市,可以消耗一定资源(市政/训练/金钱/人口/命令)以立刻填满当前建造项目的进度,弱小文化(1级)城市、盛怒的家族(-200以下)城市与未满血的城市是不能使用加速建造功能的。
加速建造会立刻在本城产生不满,并且对于每座城市,每次使用某一类型的加速建造(市政/训练/金钱/人口/命令),都会增加下次使用该类型的加速建造的花费。
由于项目只能在你的回合开始时完成,所以即使你使用加速建造在这回合填满了进度,也需要等到下回合开始时才能完成。
二、溢出
当一个项目完成后,不可避免的可能产生剩余产出——一个造价35的项目,在每回合投入8的情况下,5回合后完成项目,会剩余5*8-35=5的产出,而这些剩余产出就是溢出。
溢出只会在完成项目时产生,并且溢出只会保留1回合。
下一回合,若城市建造的项目花费的资源类型与溢出类型相同(人口增长速度、市政、训练三种类型,下文依次简称为头、锤、盾),溢出将会被积累到该项目中,若城市建造的项目花费的资源类型与溢出类型不同,溢出将会被积累进国库(头会积累给本城用于涨人口,下同)。
但是注意,使用加速建造后,城市当前建造项目的进度会变为100%,且下回合的城市产出将不会变为溢出,而是会直接积累进国库。举个例子,当你对一个造价35锤的项目使用加速建造后,这个项目的进度将会变为35/35,假设你本城的产出为8/8/8(头/锤/盾,下同),那么你下回合积累的8锤将不会进入溢出,而是直接积累到国库中,你的下一个使用锤建造的项目也将从0进度开始建造,而非8进度。这意味着使用加速建造后,城市必须空转一回合,也就相当于额外损失了1回合理事会的产出。
理解溢出机制将有助于你理解文末所提到的BUG。
三、不同类型的加速建造启用条件
不能被加速的项目
目前版本所有单位、专家均可加速建造。
不能被加速的计划有:修复损坏(城市处于受伤状态才可以启用,加速城市生命值回复)、理事会、护卫队(法典贸易联盟解锁)
市政(锤)加速
默认启用,只要满足加速建造的条件即可启用,加速对象类型不限。
训练(盾)加速
领袖原型为“狂热者”时,所有国教城市均可启用,加速对象类型不限。
金钱加速
城市所属家族类型为“资助家”时启用,只能加速计划。
启用法典“圣战”的国家的城市可启用,只能加速单位(头单位和盾单位都能加速)。
城市统治者原型为“法官”的城市可启用,只能加速专家。
人口加速
启用法典“志愿军”的国家的城市可启用,加速对象类型不限。
命令加速
启用法典“正统”的国家的国家城市才可启用,只能加速专家。
领袖原型为“指挥官”时,首都可启用,只能加速单位(头单位和盾单位都能加速)。
城市统治者原型为“演说家”的城市可启用,只能加速计划。
四、加速建造价格重要参数
项目剩余所需资源
项目剩余所需资源=项目所需资源-(项目当前积累资源+溢出资源)
顾名思义,就是项目还差多少完工,用于计算加速建造价格的基本参数。
进度加成
建造进度=(项目当前积累资源+溢出资源)/项目所需资源 向下取整,保留至1%
对于建造进度不满50%的项目,加速建造将会额外提升价格,提升的比例为:
进度加成=50%-建造进度
也就是说,对于一个建造了20%的项目,加速建造将会额外提升30%的花费。
如果建造进度已经到达50%,则进度加成始终为0。
资源类型加成
根据项目所需的资源类型(头、锤、盾)决定,其中锤和盾均为0,而头为50%,意味着加速建造使用头完成的项目需要额外花费50%。
次数加成
次数加成=10%*本城已使用该类型加速建造的次数
也就是说,每次使用某一类型的加速建造,都会增加本城下次使用该类型的加速建造10%的花费。第一次使用某一类型的加速建造时,公式中的“本城已使用该类型加速建造的次数”为0,以此类推。将鼠标放在对应的加速图标上可查看本城使用过对应类型的加速的次数。
五、加速建造价格公式
产生不满量
产生不满量=(10+项目剩余所需资源/100)*(1+不满增量加成)*(1+进度加成)*(1+资源类型加成)
目前涉及到不满增量的只有法典:货币改革(加速建造不会产生不满),此法典应用后,你的所有城市的不满增量加成为-100%,产生不满量将恒为0,符合文字描述。但一旦后续DLC或MOD出现了增加不满增量加成的手段,使用法典货币改革依旧可能在执行加速建造时产生不满,还请注意。
取整规则:
公式中每个乘/除号计算完后,向下取整,保留到小数点后1位。
最终结果向上取整,保留到个位。
例:(10+168/100)*1.5*1.3=11.6*1.5*1.3=16.9*1.3=21.9=22
注:加速建造产生的不满量并不会随着加速过的次数增加而增加。
市政(锤)加速价格
市政加速价格=(100+项目剩余所需资源*1.5)*(1+次数加成)*(1+进度加成)*(1+资源类型加成)
取整规则:
公式中每个乘号计算完后,向下取整,保留到个位。
最终结果向上取整到十位。
例:(100+111*1.5)*1.5*1.3=266*1.5*1.3=399*1.3=518=520
训练(盾)加速价格
训练加速价格=(100+项目剩余所需资源*1.5)*(1+次数加成)*(1+进度加成)*(1+资源类型加成)
取整规则:
公式中每个乘号计算完后,向下取整,保留到个位。
最终结果向上取整到十位。
例:(100+111*1.5)*1.5*1.3=266*1.5*1.3=399*1.3=518=520
注:其实盾加速公式跟锤加速公式一模一样,只是不共享使用过的次数,为了防止混淆所以单独列了出来。
金钱加速价格
金钱加速价格=(10+项目剩余所需资源*5)*(1+次数加成)*(1+进度加成)*(1+资源类型加成)
取整规则:
公式中每个乘号计算完后,向下取整,保留到个位。
最终结果向上取整到十位。
例:(10+69*5)*1.5*1.3=345*1.5*1.3=517*1.3=672=680
注:其实金钱加速公式也差不多,就是换了个系数。
人口加速价格
人口加速价格=(项目剩余所需资源*(1+次数加成)/80+1)*(1+进度加成)*(1+资源类型加成)
取整规则:
公式中每个乘/除号计算完后,向下取整,保留到个位。
例:(66*1.2/80+1)*1.5*1.3=(79/80+1)*1.5*1.3=1*1.5*1.3=1*1.3=1
注:人口加速的公式和前面差别很大,标红的范例请务必想清楚计算过程。由于公式本身和取整规则的关系,人口加速价格的浮动极大(毕竟差1资源就可能从消耗1人口变成2人口),所以请各位在使用人口加速前务必谨慎计算。
命令加速价格
命令加速价格=(2+项目剩余所需资源*0.1)*(1+次数加成)*(1+进度加成)*(1+资源类型加成)
取整规则:
公式中每个乘号计算完后,向下取整,保留到个位。
例:(2+69*0.1)*1.5*1.3=8*1.5*1.3=12*1.3=15
注:和前面公式挺像,就差个系数。别问我为啥不满是/10这里是*0.1,公式就这么写的,我也搞不懂。
六、已知购买价格BUG与修复方式
根据第四节“项目剩余所需资源”计算方式可得知,城市在计算加速建造所需价格时,是会“贴心”的帮你把溢出算进去的,也就是说一个造价100的项目,如果你有20的溢出,那么计算价格时会按照80来计算。
但是在使用加速后,当前列表正在建造的项目的进度会补到100%,而这是没有把溢出算进去的。还是上面的例子,一个造价100的项目,你有20溢出,虽然你付了80造价的款,但是系统会为你提供100点资源,进度会显示为120/100,也就是说你花了80资源的钱获得了100资源。下个回合开始项目完成时,虽然当回合的产出会被积累到国库,但你仍然会获得完成项目时120-100的溢出——也就是相当于溢出其实没有被消耗掉。
举一个极端点的例子,假如有一串造价100的项目,我有90溢出资源,如果我每回合都使用加速建造完成项目,那么我每次加速只需支付100-90=10资源的款,但是却可以获得一个完整的项目而又不消耗我的90溢出。
然而在实战中,溢出不可能积累超过1回合的产出,并且一旦你有一回合没有完成项目,这些溢出就会被消耗掉,所以暂时没发现恶性利用此BUG的手段。
如果你想手动修复此BUG,可以打开Old World\Reference\Source\Base\Game\GameCore\City.cs,然后将第8954、9008、9058、9101、9156行的函数替换为
setCurrentBuildProgress(getBuildThreshold(getCurrentBuild())-getYieldOverflow(getBuildYieldType(pData));
即可。
后记
加速费用公式算是想要认真玩旧世界比较重要的公式了。公式复杂度不高,但取整时机较多,想要熟练应用公式请务必牢记取整规则。这个加速的BUG我有机会会反馈给官方的,如果各位有什么合适的反馈渠道(以及靠谱的英文翻译)请联系我,谢谢。

喜欢本系列专栏的还望大家三连
建了个旧世界群,群号:807353476
封面PID:99666645