心灵终结3.3.6地图编辑器萌新教程第16篇:科技类型的封锁与解锁
本篇专栏要解决的问题是如何在一场战役中允许或禁止玩家生产一种单位或建造一种建筑。
一、是否可以建造一种建筑/生产一种单位与哪些因素有关?
1、要有相应的生产建筑。建造一种建筑的必要条件是有建造场,生产一种步兵的必要条件是有兵营,生产载具要有战车工厂,生产飞机要有机场。
2、Prerequisite. 建筑和单位都有。这句代码就是指明“前置条件”。比如:在[ABRM]下可以找到代码:Prerequisite=GAWEAP,GAMERC,GATECH,说明生产艾布拉姆斯的条件是盟军重工、墨丘利和科技中心。
注意上面的第一条中只是说明了“要有相应生产建筑”,并没有说明“一定要有相应阵营的生产建筑”。比如,如果我们将艾布拉姆斯建造条件中的GAWEAP删去,只要求有墨丘利和科技中心,那么艾布拉姆斯的生产条件就会改为“墨丘利+科技中心+任一阵营的重工”。
另外,这句代码的键值也可能并不是具体某一个建筑的注册代码,而是指某一类建筑,比如Barracks,它指的是“兵营类建筑”,具体包含的建筑种类可以在rulesmo.ini中[General]小节里的PrerequisiteBarracks属性查到。比如盟军围墙[GAWALL],建造条件是:Preresiquite=GACNST,BARRACKS,指的是盟军建造场+任意兵营。
3、建筑的FactoryOwners. 这是我们在上一篇专栏中所说的“国家特色科技建筑”的建造条件。例如,只有美国可以造墨丘利是因为该建筑的代码中有FactoryOwners=UnitedStates.
4、Owner. 建筑和单位都有。这句代码比较令人迷惑,在游戏中似乎没什么用,但也不是完全没用。经本人试验,发现的现象如下:如果没有这句代码,或者Owner的键值不是所属方的名称,那么任何阵营都不能造相应的单位或建筑。但如果有这句代码且键值是所属方的名称,那么实际效果与键值究竟是哪一所属方无关。
比如,我们知道斗牛犬坦克(ETNK)是美国专属的T1单位。在[ETNK]下可以看到这样一行代码:Owner=UnitedStates. 但是不是这句代码决定了只有美国可以生产它呢?上一篇专栏中已经说明不是,真正起决定作用的代码是RequiredHouses=UnitedStates. 如果改成Owner=Chinese,或者其他任何一个阵营名称,都没有任何作用,美国仍然可以生产斗牛犬;然而如果写一个非阵营名称的键值,比如Owner=abcd,或者Owner=None,那么美国就不能再生产斗牛犬了。
5、单位的RequiredHouses和ForbiddenHouses,前者规定“只有谁能造”,后者规定“谁不能造”。详见上一篇专栏。
6、TechLevel与游戏中选择的科技等级。某一所属方的科技等级可以在地图编辑器中的“所属方”中设置,范围是1到10之间的一个整数。TechLevel是单位和建筑的一个属性,一般也填1到10中的一个整数。所属方可以建造或生产某一建筑或单位的一个必要条件就是所属方的科技等级大于等于该建筑或单位的TechLevel. 特别地,如果TechLevel=-1,则玩家游戏中玩家不能建造或生产该建筑或单位,但电脑可以;如果TechLevel=11,则玩家和电脑都不可以。
7、PrerequisiteOverride. 键值填建筑代码。它的含义是:只要有该建筑,那么前面的第2、3、5、6条的限制全部无效,只要有相应生产建筑且Owner值符合要求就可以建造或生产该建筑或单位。
比如,风暴之子战机[STORM]有以下代码
[STORM]
Prerequisite=GAAIRC(盟军机场)
PrerequisiteOverride=GAMERC(墨丘利)
RequiredHouses=UnitedStates
对于美国来说,如果它有盟军机场,就可以生产风暴之子,而对于其他所属方,拥有盟军机场之后并不能造风暴之子,这是由第一条和第三条代码决定的;然而,任何所属方(包括美国),只要拥有墨丘利和任何一座机场类建筑,不一定是盟军机场,甚至可以是占领的中立科技机场,都可以生产风暴之子。假如在内置ini中写如下代码:
[STORM]
RequiredHouses=Pacific
ForbiddenHouses=UnitedStates
TechLevel=11
并且地图上美国没有盟军机场,但有厄普西隆停机坪。即使是在上述条件的限制下,美国只要有墨丘利,都可以生产风暴之子。
二、解锁或封锁科技的方法
有了上面的准备,那么如何实现解锁或封锁科技就很容易了:只需要在内置ini中作相应修改即可。我们一般会针对上面的第2、3、5、6条进行修改。不过,在上面的所有属性中,可以在游戏过程中修改的只有“建筑和单位的TechLevel”这一项。方法为触发结果106:“设置科技等级”。
例1:整场游戏禁止生产某种单位
包括“禁止玩家和电脑生产基地车”“禁止玩家和电脑生产英雄单位”等,只需要改变该单位的TechLevel属性即可。
[TANY](谭雅)
TechLevel=11
[AMCV](盟军基地车)
TechLevel=11
如果允许电脑生产但不许玩家生产,改为TechLevel=-1即可。
例2:游戏过程中解锁某科技类型
在官方苏军战役“主宰”中,游戏开始一段时间后才会给玩家解锁生产猎狼犬的权限。
之前已经提到,前面7条中能在游戏过程中改变的只有建筑或单位的TechLevel,因此如果要在游戏过程中解锁或封锁某一科技类型,一般通过改变科技类型的TechLevel来实现。
首先在内置ini中设置猎狼犬直升机的初始科技等级:
[WOLF]
TechLevel=11
这样游戏开始后玩家不能生产猎狼犬
然后,在要解锁猎狼犬时,使用触发结果106:设置科技等级,科技类型填WOLF,数值填9(就是猎狼犬直升机本来的TechLevel)。
例3:“同盟国联军”的实现
在之前的专栏中讲过,一些官方关卡介绍中有“玩家:同盟国联军”,但地编中的“玩家所属方”并没有“同盟国联军”这一阵营,实际上玩家所属方还是美国,只不过是解锁了欧盟和太平洋阵线的科技。
根据上一篇专栏的内容,需要解锁的欧盟和太平洋阵线的特色科技类型主要分为三种:科技建筑,由科技建筑解锁的单位,不由科技建筑解锁的单位。首先需要解锁“特色科技建筑”,即欧盟的“防御指挥部”和太平洋的“控制中心”:
[GASCEA]
FactoryOwners=UnitedStates
[GASCPF]
FactoryOwners=UnitedStates
解锁了特色科技建筑后,由科技建筑解锁的单位自然也就解锁了(详见上一篇专栏)。然后再考虑解锁不由科技建筑解锁的单位,例如骑士坦克(MTNK)和河童坦克(KTNK)。
[MTNK]
ForbiddenHouses=Pacific(本来是Pacific,UnitedStates,也就是去掉了美国)
[KTNK]
RequiredHouses=UnitedStates(本来是Pacific)
例4:解锁渗透单位
例如在一场战役中解锁天启坦克。在rulesmo.ini中,天启坦克(MAMM)下面没有Owner和Prerequisite代码,“渗透后可以建造”是在另一个ini文件中规定的。在战役中只需要加上这两条代码就可以解锁天启坦克。例如,玩家所属方是苏俄,天启坦克解锁条件设置为苏军重工+宫殿。
[MAMM]
Owner=USSR(随便填一个所属方就可以)
Prerequisite=NAWEAP,NATECHR
例5:秘密科技实验室
在官方厄普西隆战役“海难”中,玩家占领秘密科技实验室后可以解锁西风火炮(实验室被摧毁后当然也会失去该科技)。在遭遇战中,玩家占领秘密科技实验室后获得随机某种科技类型,而在该战役中要固定解锁西风火炮。实现方法如下:
[CASLAB](秘密科技实验室)
SecretLab=no
本来rulesmo.ini中这一条是SecretLab=yes,改成no后就不会再随机解锁科技了。
[HOWI](西风火炮)
PrerequisiteOverride=CASLAB
这一条就是说只要有秘密科技实验室和任一重工,就可以无视其他限制,直接生产西风火炮。实际上这两句代码只不过就是把“秘密科技实验室”变成了一个“普通建筑”,然后又用该建筑解锁西风火炮而已。