心灵终结3.3.6地图编辑器萌新教程第8篇:触发的禁止与允许(二),摧毁触发事件
本篇中我们继续来看触发的禁止与允许的用法。
“允许触发”与条件“任何事件”联合使用。
“任何事件”这一条件有两种完全相同的表示方法,第一种就是“条件8:任何事件”,另一种是“条件13:流逝时间”,参数填0。它们都表示“无条件”,即只要这个触发处于允许状态,就立即执行该触发的结果。
这里所说的“允许触发”与“任何事件”条件的联合使用指的是下面这种模式:
触发1:结果中有“允许触发2”
触发2:初始状态为“禁止”,条件为“8:任何事件”或“13:流逝时间0秒”
大家肯定会问:这样写触发有什么意义?为什么不把触发2的结果直接添加到触发1中?这是因为,在一些情况下,当触发涉及一些特殊的条件和结果,涉及到不同的关联对象或触发所属方时,我们必须将它分成两个触发。举例如下:
例1:不同的关联对象。(接第4篇最后的问题5)
在“潘多拉魔盒”一关中,有一处需要我们摧毁三座发电厂以开启闸门(在教程第5篇中也提到过)。“开启闸门”就是“变卖闸门”之意,可以使用“结果60:变卖关联建筑”来实现。
那么,我们的思路就是:建立一个触发,触发类型选1(所有关联对象满足条件,单次触发),条件为“48:被任何事物摧毁”,关联到三座发电厂上;结果为“60:变卖关联建筑”,关联到闸门上。
然而,我们遇到了一个问题:正如我们在第4篇最后所提到的,我们只能把建筑、单位或单元格关联到“某个触发”上,而不能具体关联到“某个条件”或“某个结果”上。那么,如果我们把三座发电厂和一个闸门都关联到这个触发上的话,如何才能区分“摧毁谁”而“变卖谁”呢?于是,我们必须把“条件”和“结果”分开到两个触发中,解决方式如下:
触发1:摧毁发电厂
初始状态:允许
类型:1
条件:48:被任何事物摧毁
结果:53:允许触发2
该触发的关联对象为要被摧毁的三座发电厂
触发2:闸门开启
初始状态:禁止
类型:0
条件:8:任何事件
结果:60:变卖关联建筑
该触发的关联对象为要变卖的闸门
例2:不同的触发所属方
在触发编辑器的“触发选项”下,有一个“所属方”的选项。这个选项时而有用,时而没用。那么它到底什么时候有用呢?如果一个触发用到的“条件”或“结果”的说明文字中出现了“触发所属方”一词,那么它指的就是“触发选项”中的“所属方”。如果条件和结果中不涉及“触发所属方”,那么这个“所属方”选项就没有意义。

在一些条件和结果的描述中还会出现“特定所属方”一词,那么这一条件或结果下面一定会有一个名为“所属方”的参数,“特定所属方”指的就是参数里的这个所属方,与“触发选项”里面的“所属方”无关。
例如“结果36:全部更改所属”,描述为“触发所属方的所有对象更改到特定所属方”,下面有一个所属方的参数。如果参数选择“苏俄”,前面“触发选项”中的所属方选择“美国”,那么结果就是将美国的所有建筑和单位更改为苏俄所属。

由此可以看到,“触发所属方”在一些条件和结果中还是有作用的,但一个触发只能有一个触发所属方。那么,如果在一个触发中,条件和结果都涉及触发所属方,而两者又不同的时候,就必须像例1那样将条件和结果拆开。比如,要实现“当美国不再有生产建筑(基地、兵营、重工、机场等)时,将苏俄的建筑和单位全部更改为中国所属”,可以设置以下两个触发:
触发1:美国不再有生产建筑
触发所属方:美国
条件:17:不再有工厂(生产建筑)
结果:53:允许触发2
触发2:更改所属方
触发所属方:苏俄
初始状态:禁止
条件:8:任何事件
结果:36:全部更改所属,参数选“中国”
摧毁触发事件
在很多战役中,我们需要让某一个触发在正常战役中的状态变化为“禁止——允许——禁止”,即初始处于“禁止”状态,当满足条件1时,改变为“允许”状态,当又满足条件2时,又回到“禁止”状态,直到游戏结束。例如前一篇的例2,在游戏开始一段时间后允许刷基洛夫,又过一段时间后将其禁止。
在上面这种情况下,我们想实现的效果是,先满足条件1允许该触发,再满足条件2禁止该触发。然而,有时我们无法控制条件1和2的满足顺序,如果我们按照自己“理想”的情况去设计触发可能会产生问题。
例3:循环刷兵的允许和禁止
在关卡“星辰大海(上)”中,我们想实现这样的效果:当玩家占领了地图左上角的火箭发射台之后,每隔一段时间就会从地图左下角刷出一批部队进攻左上角的火箭发射台;而当玩家摧毁左下角的敌军基地之后,刷兵就会停止。
我们建立三个触发。触发1是从左下角刷兵的触发(类型为2:重复),触发2是玩家占领左上角火箭发射台后的触发,触发3是玩家摧毁左下角敌军基地的触发。
根据上面的描述,一个很自然的想法是:触发1初始为禁止状态;触发2初始为允许状态,结果为“允许触发1”;触发3初始为允许状态,结果为“禁止触发1”。这样,当占领左上角的发射台后,敌军就会刷兵;而当摧毁左下角的基地后,刷兵就会停止。
然而这样做有一个问题:如果玩家先摧毁了左下角的基地,后占领了左上角的火箭发射台呢?按照我们本来的想法,一旦左下角的基地被摧毁,就不会再刷兵了。但是按照触发的写法,初始时触发1处于禁止状态,先摧毁了左下角的基地,触发3条件被满足,执行结果“禁止触发1”,然而此时触发1的状态本身就是“禁止”,所以实际上触发1的状态并没有发生变化。然后玩家占领了左上角的火箭发射台,此时触发2的条件满足,执行结果“允许触发1”,因此左下角就会一直刷兵,直到游戏结束。
这个问题的解决方法不唯一,在此介绍两种方法。
第一种方法是在触发3的结果中加上“禁止触发2”,这样如果触发3的条件先被满足,触发2也就不会再执行了。
第二种方法是将触发3的结果“禁止触发1”改为“12:摧毁触发事件”,参数填触发1。“摧毁触发事件”相当于在战役进行中“删除触发”,可以将其理解为“永久禁止”,这样一来,当玩家摧毁左下角基地时,触发1就会被“删除”,即使此后触发2的条件被满足,其结果“允许触发1”也没有任何作用了。