首要条件是从“requires”开始到首次出现“and”结束的中间的条件语句,如 ……requires A or B or C and D and E
这一句里“A or B or C”是首要条件。附加条件是首要条件后的所有条件,上面一句里的附加条件是“D and E”。再比如
……requires A and B or C,这里“A”是首要条件,“B or C”是附加条件。首要条件与附加条件间总是“与”的关系,
即 (首要条件)and(附加条件)。
附加条件内部逻辑运算并非遵循通常的逻辑优先顺序,它遵循“从后向前,两两运算”的关系。举例说明如下:
……requires A or B and C or D and E or F and G
首先将首要条件“A or B”分离出来暂且放在一边,附加条件是“C or D and E or F and G”。这个附加条件的
运算逻辑按照“从后向前,两两运算”的原则相当于“C or (D and (E or (F and G)))”,不论逻辑词是什么,系统
总是这么运算。再如附加条件是“H and I or J or K and L or M and N”,那么相当于“H and (I or (J or (K and (L or (M and N)))))”。
关于“not”,系统总把紧跟“not”的条件看作一个整体来处理,即“not”的运算优先度最高。举例说明如下:
……requires A or B and C or D and E or not F and G
分离首要条件“A or B”,附加条件里的“not F”是一个整体,因此附加条件的运算逻辑是“C or (D and (E or ((not F) and G)))”。
再如 ……requires A or not B or C and D or E and not F
首要条件“A or (not B) or C”,附加条件“D or (E and (not F))”。
再次强调首要条件和附加条件间总是“and”的关系。“……requires A or B and C or D and E or not F and G”的
关系就是“(A or B) and (C or (D and (E or ((not F) and G))))”
三、独立性
我不知道该怎么表达这个现象,暂且叫“独立性”,说明如下。
1、unit独立性
在某一兵营的征募列表中有一个unit(包括刺客,间谍,外交官,船只等等只要可以recruit的都是unit)比如A,假设B国家
和C国家都可以征募A,希望对B国家而言需要马略改革才能征募A,而对C国家而言需要铁资源才可以征募A,那么可以在征募列表中这样写:
recruit "A" 0 requires factions { B, } and marian_reforms
recruit "A" 0 requires factions { C, } and resource iron
虽然是同一个单位A,但它们之间完全独立,按照各自的条件去执行,互不干扰。
再如D国家可以征募A单位,准备设定两种不同的征募情况,希望在马略改革之前征募0经验的A,马略改革之后征募3经验的A,则可如下:
recruit "A" 0 requires factions { D, } and not marian_reforms
recruit "A" 3 requires factions { D, } and marian_reforms
对于同一个国家的同一个兵种,如果设定了几种不同的征募情况,一般几种条件应该互斥。条件间重叠的情况我没有测试过,可以简单的测试一下,比如
recruit "A" 0 requires factions { D, }
recruit "A" 3 requires factions { D, }
看看这样设定兵营是否出现两个A单位,一个0经验,一个3经验;还是只出现一个最高经验的。不过一般情况下条件要互斥,不要出现这种情况,设定时要注意。
具体的设定方法可以看一看3.0的export_descr_buildings文件,因为内容比较多,我只说一下原理。基本的想法是针对同一个文化圈设定好几个兵营,比如对于文明国家文化圈,可以设定5个兵营,1个基本兵营,4个加速兵营。当城市中的所有他类兵营(当然也可以没有他类兵营)都低于2级并且没有自身文化圈的其他4个兵营(注意这个很重要,要排除掉本文化圈的其他几个兵营,保证一个城市里只能建造一个自身文化圈兵营,语句export_descr_buildings里可以看到)时可以建造基本兵营;当所有他类兵营的级别中最高级的为2级,那么可以建造第一种快速兵营,这种兵营在升级到2级的过程中为加速状态,然后恢复正常;......后面依此类推。在export_descr_buildings里可以看得很清楚,由于快速兵营的条件是需要其他文化圈的兵营,因此不能首先拆除城市中已经存在的其他文化圈的兵营,否则将失去建造快速建造兵营的条件,至少要保留已经存在的他类文化兵营中级别最高的那个。当然也不需要一直保留,只要自己的第一级兵营修建好,就可以拆除所有其他种类兵营了,它们会造成文化差异。因为一旦自己的兵营建好第一级,以后就会在这个基础上升级,包括升级的回合数和花费都会按export_descr_buildings设定的这个兵营的参数运作。具体的兵营条件设定看一看export_descr_buildings,结合“and or not”的规则想很容易明白,虽然条件语句比较长但逻辑结构简单,比马匹资源限制简单得多。
2、建筑限制
骑兵兵营也要有相应的骑兵资源才可修建,如果不这样做对电脑来说就不公平,电脑会在一个不能招募任何骑兵的地区仍然修建骑兵兵营因为它没有办法知道哪里该修建马房哪里不该。具体针对到某个国家,增加的限制条件要依据这个国家可以征募的骑兵兵种类型,如seleucid,它可以征募马匹类骑兵和象类骑兵,那么建造骑兵兵营的限制条件即“and hidden_resource horses or hidden_resource warhorses or resource elephants”,其它依此类推。需要依据可征募骑兵兵种对国家分类:
另外说一个技巧性的东西,在设置普通马匹和良马资源的时候,应该在所有有良马资源的地区也都放置普通马匹资源。这样做有两个好处,第一,如果独立区分这两种资源,在有良马的地方仅仅设置良马资源,在有普通马匹的地方仅仅放置普通马匹资源,那么轻骑兵轻战车的征募条件要写成“and hidden_resource horses or hidden_reource warhorses”;相反如果在凡是有良马资源的地方也设置普通马匹资源,那条件会简化为“and hidden_resource horses”;第二,相应的建造马房的限制条件也会变得简单一些,比如seleucid,建造骑兵兵营的限制就可以简化为“and hidden_resource horses or resource elephants”
达成以上目标还要将补给线结合起来考虑,以目前的柱子3.0为例,最终确定骑兵的补给线文化圈为:1.文明国家(罗马三家及元老院,希腊城邦,色雷斯,马其顿,塞琉西);2.蛮族国家(所有的蛮族国家);3.北非及东方诸国(迦太基,努米底亚,埃及,本都,亚美尼亚,帕提亚)。确定这样的文化圈有很多原因,首先是因为为了实现步兵兵营拥有特殊的加速建造功能占用了过多的建筑,export_descr_buildings里允许的总的建筑数目是64个,所剩无几,只能给骑兵设定这样一种补给线范围,数目比较少;其次是为保证增
加符合要求的限制条件,也就是说考虑“and or not”的规律以及要达成的骑兵限制的目标,补给线的文化圈是不能随便分配的,分在某个文化圈内的国家必须满足一定的条件,否则没有办法增加符合要求的限制条件(至少我的能力如此),现在说明如下:
等效的基本结构就是“国家群1 and 资源限制1 or 国家群2 and 资源限制2......”。最前面的国家群是上面分类中国家数目最多的群,然后紧跟这个群的限制;后面的群则是国家数目少一些的群,再紧跟相应的群限制;后面类推。注意资源限制当前面出现了某个限制后,后面就不要再出现了,比如上面的例子中第一个国家群后的条件中有hidden_resource horses,后面就不用再出现了,只要写出新增的限制就行。再有就是资源限制可能不仅仅是一个,比如第一个国家群如果是3类和4类的混合,那么限制就是and hidden_resource horses or resource elephants
再举个例子,比如设定了一个补给线文化圈,是2类和4类国家的混合,包括埃及,亚美尼亚,帕提亚这三个国家。
先按照可征募兵种对国家分类
可征募马匹类骑兵和骆驼类骑兵的国家:埃及,亚美尼亚,帕提亚(因为不存在只能征募马匹类骑兵的国家,所以没必要把马匹单独列出来)
可征募马匹类、骆驼类和象类骑兵的国家:帕提亚
这样就可以写成:......requires factions { egypt, armenia, parthia, } and hidden_resource horses or resource camels or factions { parthia, } and resource elephants。
如果仔细研究源文件的话可以发现原来的神殿的解说大都是如
[#PLACEHOLDER DEFAULT Base description for building and effects#]
[#Short Description PLACEHOLDER DEFAULT text#]之类的
这是为了各个派系对同一神庙的不同称呼准备的,这时的截获则写道temple_of_wing_dark_shrine_barbarian_desc_short之列的地方,barbarian得地方可以写不同的派系
2、用Xpak解压罗马packs文件夹下面的所有×.pak文件。这时就会在Rome - Total War\Data\ 下出现 “ITEMS”文件夹,里面全部是*.item文件。这个就是罗马所有的建筑模型。对应的贴图在Rome - Total War\Data\models_building\TEXTURES下