心灵终结3.3.6地图编辑器萌新教程第17篇:在内置ini中新建建筑与单位
本篇应该是和ini相关的最后一篇,讲如何在战役制作中新建建筑与单位,就是说创造一个原本在游戏中没有的建筑与单位。
为什么要新建建筑与单位?原因大致可以分为两种。第一种是因为剧情需要或者为了丰富游戏体验,用全新的模型、动画、武器等创造一个全新的建筑或单位,或者用已有的模型等“组装”出一个全新的建筑或单位;第二种是出于一些特殊的需求,需要在一张地图中同时出现两种或更多“长得一样”,但是属性有所差别的建筑或单位。我们这篇专栏只讨论相对简单的第二种。
新建建筑与单位有两步:第一是在内置ini中新注册一个建筑或单位,第二是在内置ini中写关于此建筑或单位的各项属性。由于要在ini中写的内容比较多,所以推荐使用“记事本”打开地图文件,直接在里面编辑,方便复制粘贴。否则在地编中编辑ini需要一条一条地新建。
注册新建筑或单位的方法:如果要新建步兵/载具/建筑/战机单位,就在内置ini中新建[InfantryTypes] / [VehicleTypes] / [BuildingTypes] / [AircraftTypes](注意:“战机”单位指的是像风暴之子、狐步舞者这样从机场里造出来的单位,像战鹰、猎狼犬这样从重工里造出的单位算“载具”),然后按照“序号=注册名”的格式在下面进行注册就可以了。注意,序号只需要和已有的单位注册序号不同就可以了,没有必要照着rulesmo.ini中的数字往下依次注册,比如心灵终结3.3.6的rulesmo.ini中[InfantryTypes]小节中最后一条是150=xxx,在内置地图ini中注册两个新的步兵单位时,没有必要非得在[InfantryTypes]小节中依次写151=xxx和152=xxx,实际上我并不推荐这样写,否则如果某一天3.3.7出来了,又新添了几个步兵单位,那么你在内置ini中的注册序号就和官方ini的序号重复了,可能会出现问题。你完全可以写成1314=xxx和114514=xxx.
第二部是写各种具体的属性。注意这里和之前“修改某个单位的属性值”不同,这里我们创造了一个新的单位,虽然是以已有的单位(后面称之为“原型”)为基础,但这个单位在rulesmo.ini中是没有的,因此我们需要把它的每一条属性都写在内置ini中,而不是只写修改的内容。我们在rulesmo.ini中把这个新建单位的“原型”的ini找到,复制粘贴到内置ini中,在此基础上作修改就可以了。另外,如果“原型”的ini中没有Image=xxx这一条,就需要在新建单位的ini中写“Image=原型的注册名”,这样新建单位看起来就和原型一样了,否则新建单位是看不见的。当然,如果“原型”的ini中有Image这一条就不用管了。(英文单词image意思是“图像,形象”,ini中的是大写的i而不是小写的L,不要问我为什么要强调这个。。。)
下面举一些我在自制战役《守护》当中用到的一些例子。
例1:第9关“星辰大海(下)”中新建驱逐舰
在第9关中,会有敌军的“航母编队”通过,航母编队由航空母舰、驱逐舰、巡洋舰等组成。为了保持队形,需要让编队中的所有单位有相同的速度。我选择以航空母舰和巡洋舰的速度Speed=4为准,此时就需要将驱逐舰的速度也改为4。然而我并不想因此而影响从船厂中正常造出的驱逐舰,因此选择新建一个驱逐舰,在内置ini里写:
[VehicleTypes]
6666 = DEST2
[DEST2]
复制rulesmo.ini中[DEST]小节下的所有内容,并将Speed的值改为4,TechLevel的值改为11(不能建造),然后添加:Image=DEST
然后保存地图,用地图编辑器重新打开这张地图,就可以在盟军的“载具”栏和“特遣部队”的列表中看到新建的驱逐舰了(但只显示英文名)。


作两点说明:第一,新建的单位可以在地编左边的单位栏和特遣部队的列表中显示,但不会在“所属方存在科技类型”这一类触发中“科技类型”的参数列表中显示;第二,在给新建单位写注册代码的时候,最好先在rulesmo.ini中查一下这个注册代码有没有被使用,比如要是把上面的驱逐舰换成潜艇,就不能命名为SUB2,因为SUB2已经被用了,是潜艇部署后的第二形态。
顺带一提,在第11关“孤岛”中为了保持空中舰队的队形,也新建了一些单位并调整了移动速度,但是像小碟子、毒蜥这样的飞行类单位的速度是由JumpjetSpeed属性而不是Speed属性决定的。
例2:第10关“归舟”中新建盟军防御建筑
在第10关中,一个路口的盟军防御建筑被力场护盾保护了起来,当摧毁了三个防御指挥部之后,护盾就会消失,并且防御建筑会卖掉。我本来想学“天赐”那关里面的力场护盾的实现方法,但没学会……于是我就想新建光棱塔和闸门,改成无敌的。(没错,护盾就是个动画,一点儿用都没有,所以摧毁防御指挥部之后不仅要让护盾消失还要把建筑卖掉。)以光棱塔为例,在内置ini中写:
[BuildingTypes]
6666 = NewATESLA
[NewATESLA]
复制rulesmo.ini中所有光棱塔的内容。由于光棱塔[ATESLA]本身有Image属性,所以不需要再在新建的光棱塔ini中写这一条。只需要在NewATESLA中添加Immune=yes即可。
例3:第10关“归舟”中新建沃尔科夫
在第10关中,选择不同难度时“沃尔科夫”的数据是不同的。在简单难度下,只是对原来的沃尔科夫进行了一些数据上的修改(详见第14片专栏),因此只需要在内置ini里写出要改动的数据就可以了。但在简单难度下,想让沃尔科夫变得比简单难度稍弱一些,那么就需要新注册一个“沃尔科夫”。另外,我也想让新的沃尔科夫武器变弱一些,所以需要新建一个武器。
以下是简单难度对原来的沃尔科夫的修改:
[VOLKOV]
Strength=2600 (血量,原来是600)
SelfHealing.Rate=0.02 (自动回血间隔,越小回血越快)
SelfHealing.Amoint=12 (自动回血量,越大回血越快)
[VolkovBoltE] (简单难度精英主武器,由于本关沃尔科夫出场就是三星,所以不需要改普通等级的武器)
ROF=15 (开火间隔,原来是30)
Range=12 (射程,原来是8)
Damage=180 (伤害,原来是60)
[VolkovBombE] (简单难度精英副武器)
ROF=30 (原来是50)
Range=12 (原来是8)
Damage=250 (原来是150)
以下是终结难度新建沃尔科夫及其武器的数值:
[InfantryTypes]
6666 = VolkovHard
新建武器不需要像新建单位那样注册,只需要写上相应小节即可。
[VolkovBoltHardE] (终结难度精英主武器)
复制所有rulesmo.ini中[VolkovBoltE]中的内容,并将部分属性作以下修改:
ROF = 22
Damage = 140
Range = 9
[VolkovBombHardE] (终结难度精英副武器)
复制所有rulesmo.ini中[VolkovBombE]中的内容,并将部分属性作以下修改:
ROF = 40
Damage = 180
Range = 9
[VolkovHard] (终结难度的沃尔科夫)
复制所有rulesmo.ini中[VOLKOV]的内容,并将部分属性作以下修改:
Strength=2000
ElitePrimary = VolkovBoltHardE
EliteSecondary = VolkovBombHardE
新添加以下属性:
Image = VOLKOV
SelfHealing.Amount = 8
SelfHealing.Rate = 0.02
这样在游戏中在终结难度下刷出VolkovHard的作战小队,在简单难度下刷出VOLKOV的作战小队,就可以实现难度分级。
不过要说明一点:由于新建单位不会出现在某些触发的“科技类型”参数列表中,所以要想实现“沃尔科夫阵亡则任务失败”,不能将条件设为“所属方不存在科技类型沃尔科夫”,本关中的解决办法是给沃尔科夫一个单独的所属方(并且设置该所属方可以由玩家控制),采用“所属方被摧毁X个单位”作为失败条件。当然也可以将沃尔科夫作战小队设为关联对象,用“关联对象被摧毁”作为条件。

