Ra2map:本文转载自【教程】高级触发教程:电力连锁 - 红警任务之家
电力连锁
在战略任务制作过程中,为了方便进行条件判断、战区规划、建筑重建、超武复制等操作,使用若干个颜色相同的敌人作战方是一种常用的障眼法:地图上的敌人看起来颜色都是相同的,但它们实际上属于不同的、相互结盟的若干个作战方。
但这样也带来了一个问题:虽然它们颜色相同,但它们的一些属性没有完全共享,比如电力。在使用间谍、飞碟等方式切断其中一个作战方的电力以后,就会出现“相同颜色的敌人一半断电了,而另一半没有”的迷惑现象,玩家也难以判断“我究竟能切断哪部分敌人基地的电力”。所以从游戏体验上而言,相同颜色的作战方的电力也应该是连锁的,其中一方断电,另一方也要跟着一起断电,这样才是符合直觉的。
“电力连锁”触发组就是为解决这个问题而设计的。
首先,我们需要一种用触发让一个作战方强制停电的方法。对于原版平台,可以新增一种建筑物,我称其为“耗电负载”——它没有别的任何作用,除了极高的耗电量(比如Power=-999999),以确保哪个作战方只要拥有这样的一个建筑物,它就会当场停电。 我们要在地图可视区域之外,为每个需要进行电力连锁的作战方,摆一个自己对应的“耗电负载”。只不过它们的所属方先被设置为平民方,在需要强制断电的时候,才会把它们的所属方更改过来。 (至于Ares 3.0平台以后,增加了使用触发直接给所属方增加或者减少电力的功能。制作思路是类似的,只是方便了许多。下文以原版的设计为例。)
“电力连锁”触发组一共分为4组。需要进行电力连锁的作战方有多少个,每组触发就有几个——每一个参与连锁的作战方都需要一个。
A组:强制切断某作战方的电力
- 默认禁止,类型为2-重复
- 关联触发:B组中的本作战方的对应触发
- 条件:8 [任何事件]
- 结果:14 [更改所属方]-本作战方,54 [禁止目标触发]-本触发自身
然后将地图外的每个“耗电负载”关联到A组对应触发。
B组:结束某作战方的强制电力切断状态
- 默认禁止,类型为2-重复
- 关联触发:无
- 条件:8 [任何事件]
- 结果:14 [更改所属方]-平民方,54 [禁止目标触发]-本触发自身
C组:检测到某作战方断电
- 默认允许,类型为2-重复
- 条件:30 [电力不足]-本作战方
- 结果:54 [禁止目标触发]-所有C组触发(含自身),53 [允许目标触发]-非本作战方对应的所有A组触发,53 [允许目标触发]-本作战方对应的D组触发。
D组:检测到某作战方电力恢复
- 默认禁止,类型为2-重复
- 条件:58 [电力充足]-本作战方,13 [流逝时间]-1
- 结果:54 [禁止目标触发]-本触发自身,53 [允许目标触发]-所有B组和C组的触发
触发组的逻辑原理如下:
A组和B组提供了“强制切断/结束强制切断”某一个作战方电力的单元操作。这里用了一个多触发关联,就不赘述了。
C组触发负责检测某个作战方的电力是否不足(不是来自A组的强制切断,而是来源于地图上的其它原因);如果电力不足的话,就会强制切断其余作战方的电力,同时唤起D组中对应触发,来检测本作战方电力是否已经自然恢复。
最关键的问题还是,要把 “一个作战方的电力,是因为真的自己没电才导致电力不足,还是被触发强制断电了”给区分明白。万一一个作战方真的被触发强制断电了,别人还在眼巴巴的等着它恢复电力,那可永远也等不来了。
为此,本触发组采用的处理模式是:“因为谁的原因导致大家都强制断电了,就去检测谁的电力是否自然恢复,别人先等等。至于别人的电力不足的问题,等这轮强制断电结束以后,再进行下一轮判断。”
比如,考虑以下情况:
Russians和Confederation两个作战方进行了电力连锁,我使用飞碟吸住了Russians的电厂,此时Russians电力不足,触发了Confederation的强制断电。
然后我再用飞碟吸住了Confederation的电厂,此时触发组没有任何动作。
可在此之后,当我让吸Russians电厂的飞碟松开时,首先因为Russians电力恢复充足,触发组结束了Confederation的强制断电状态;但此时Confederation的电力仍然是不足的,于是触发组又一次运行,触发了Russians的强制断电。这两个断电状态就如此衔接上了。
D组的条件里面有一个“13 [流逝时间]-1”,这个是必需的。根据实际测试,判断来电与断电的触发之间,必须要有一个延时,否则条件判断会出现误判。
这就结束了吗?
其实还有一个极端情况下的小bug:飞碟吸电的内部原理是“把所有发电厂的电力降到0”,而不是真正的“强制断电”。如果把一个作战方拆到只剩电厂,没有任何耗电的玩意(蜜蜂狼牛:“这是碳基生物能做出来的活吗??”)再去用飞碟吸住它的电厂,此时这个作战方的电力=0,负载=0,电力≥负载,触发的条件判断会认为它电力充足,从而不去强制连锁断电……于是,“我用飞碟吸住了电厂,但是没有断电,这是怎么回事?”
解决的方法也很简单:为每个需要连锁断电的作战方,在地图可视区域外面放置等量的发电建筑和耗电建筑;或者更简单一点,放一个耗电量为1的建筑。
(不过这个bug实现条件有点阴间,不处理也就算了……)
另一个bug是没法解决的,就是拿间谍同时渗透2座不同所属方的电厂,右下角一定有2个“电力恢复时间”倒计时。不过实际上的断电表现,和向同一个作战方的电厂中塞2个间谍的效果是相同的,都是按照后进入的时间来,因此本触发组在这里的表现还算马马虎虎合格。