在 ra2 中,能直接实现随机的触发只有条件51 随机延时
,现在咱将依此实现随机刷兵。虽说是刷兵,换成随机刷小木箱,设置核弹目标点之类的同理。
根据需求的不同,随机刷兵也有多种方式,比如,固定时间随机兵种,随机时间与兵种,一次性/循环随机等等。咱挑选几个样例进行设计。
前置知识:当一个触发的条件同时包含“延时”([13 流逝时间]、[51随机延时])和“局部变量状态判断”([36 局部设置开启]、[37 局部设置清除])时,局部变量会对“延时”的行为产生干扰,具体表现为:相关的局部变量状态改变时,延时的计时会重置(从头重新开始计时)(by heli)。(重复允许一个未被禁止的触发也会重置其计时)
TIP提示
使用局部变量还是允许/禁止触发?局部变量让触发写法更简洁,避免写错,尤其是触发组很庞大时。而允许/禁止触发让触发的运行链路更加清晰。另外,局部变量更适合记录状态(比如将即时性条件进入事件的满足记录下来),而允许/禁止触发倾向于即时性的操作。
TIP提示
以下都基于原版 YR 平台实现,Ares 和 Phobos 下可能有更方便的做法。
固定小队随机时间
最简单的一种,条件随机延时结果刷兵即可。重复与否都可以。
一次性n选1随机
设置1个局部变量a=0
,n 个触发;触发条件1均为局部设置a=1
,条件2均为随机延时,结果1均为局部清除a=0
,其余结果自拟,然后在需要时将局部变量a
开启即可。如果想让每个触发的概率不同,可以使每个触发随机延时的数值不同(时间越短的概率越大)。
TIP提示
如果设置的随机延时时间太短,不同触发可能会在同一整数秒触发,结果将是编号靠前的触发先执行。
也可以不使用局部变量,使用允许/禁止触发,去除条件1,然后将每个触发的结果1换为禁止其他触发即可。
固定时间共 n 波随机
在某个时间点后,一共 n 波敌人分别从不同地点来袭,每个地点来一次,时间间隔固定,先后顺序随机,具体需求见 https://www.bilibili.com/read/cv17659104/
原帖的触发链路不太清晰,咱重新实现下,以2波为例。设计:分为启动触发、判断组、刷兵组。由于刷兵间隔总是固定,所以让判断与刷兵并行,到点后直接取判定结果。启用时允许“开启”触发。
TIP提示
触发三行分别为名称、条件、结果。角标 2、X 表示重复、初始禁止。箭头表示允许,红色或指向自己表示禁止,虚线表示通过局部变量允许。rdm表示随机延时。= 表示给局部变量赋值。

如有其他需求,可以自己修改,比如每波来袭前添加倒计时或中场休息,可以加在“开启”、“每波延时”、“刷兵”之间。
随机时间与小队,重复
节选自 Heli 的局部变量教程
每次随机延时 X 秒以后,随机发生 N 个事件的其中一种,循环执行。比如:敌人会随机在 N 个位置中选1个随机空降伞兵。只需要N个触发,和随机事件的数量相等。
一个局部变量:随机事件组 A。其初始值决定了这个触发组的开关状态,“0”为关,“1”为开。
每个随机事件对应 1 个触发。
每个的触发的参数是这样的:
类型“2”(重复);
条件:[51 随机延时]X 秒,[36 局部设置开启]随机事件组A;
结果:[57 局部清除]随机事件组 A,[56 局部设置]随机事件组A(“局部设置”必须在“局部清除”后面),然后加上这个事件你想要的其它结果。
想要打开这个循环,就把局部变量“随机事件组A”设为“1”;想要关掉,就设为“0”。
半随机时间,随机小队,重复
由于随机延时的时间值介于指定值的 50% 到 150%,这个随机范围可能太大,以至于任务难度出现较大波动。所以我们可以将随机延时与固定延时合用,比如固定200秒+随机200秒。
示例需求:每过 45~75 秒,在两个地点之一刷出小队。(每个地点的小队成员固定,共2种情况。如果要求成员也随机2种,则按2*2=4
种情况处理)
设计:准备 1 个固定延时触发,一组随机延时触发。对于 n 种随机情况,一共需要 1 个变量s
,n+1 个触发。使用时允许触发 0,如图。

固定时间,随机小队,重复
将上一节的随机时间设置到相对于固定的时间足够小即可(但尽量避免多个触发随机到相同的整数秒)。
如果要求完全固定时间,则需要重新设计:如图,1 为开始判断,2 为开始刷兵,A, B 为判断,A2, B2 为刷兵,rdm 表示随机延时,变量j
表示判断状态,s
表示刷兵状态。使用时允许触发 1。

对于 n 种情况,需要 n+2 个变量,2n+2 个触发。如果想用允许/禁止代替 2 个局部变量,参考https://www.bilibili.com/read/cv17503194/
测试图已附赠:todo