特效字符串
“特效字符串”由“子特效字符串”组合拼接而成。每个“子特效字符串”都能独立的实现自己的功能。
标准参数
一个标准的“子特效字符串”(如子特效字符串(集结)
)具有4个参数:
发动时间
指何时触发该子特效字符串。
所有发动时间
- 自身注卵时:此卡牌注卵单位到任意卡牌时触发。如何才算“注卵”单位,请参考奖励效果中的“奖励效果(单位)”。
- 自身升级完成时:此卡牌获得升级的时候触发。
- 自身任务重置时。
- 自身任务完成时(处于任意任务完成之后):括号中文字的意思是任意任务完成时,先触发“发动条件为‘任意任务完成时’”的子特效字符串,再触发“发动条件为此条件”的子特效字符串。
- 自身任务完成时:与4相反,先触发“发动条件为此条件”的子特效字符串,再触发“发动条件为‘任意任务完成时’”的子特效字符串。
- 自身快速生产时。
自身空投时:已废弃。自身进入战场时:已废弃。- 自身进场时:只算进场,三连不会触发该特效。
- 自身进场和出售时。
自身交换时:已废弃。- 自身集结时:此卡牌的“子特效字符串(集结)”发动的时候触发,每轮集结仅生效一次(比如集结(2),你有4能量也只触发一次,你有卡牌「阿塔尼斯」也只触发一次。)
- 自身获得黑暗值时:无论一次性获得多少黑暗值,只触发一次。
- 自身更换挂件时。
- 自身出售时。
自身被征募时:已废弃。- 自身被移动时:移动指通过各种方式使得此卡牌位置发生改变。
- 自身被夺取时。
- 折跃到自身时:指任意单位折跃到此卡牌时触发。如何才算“折跃”单位,请参考奖励效果中的“奖励效果(单位)”。
- 提升酒馆等级时。
- 刷新完成时:指刷新酒馆,在完成刷新后触发。
- 刷新时:也是刷新酒馆,与“刷新完成时”相比,触发时间更早。晚于扣除刷新费用,早于商店陈列的卡牌进行更新。
- 任意注卵时:任意卡牌注卵单位到任意卡牌时触发。如何才算“注卵”单位,请参考奖励效果中的“奖励效果(单位)”。
- 任意折跃时:任意卡牌折跃单位到任意卡牌时触发。如何才算“折跃”单位,请参考奖励效果中的“奖励效果(单位)”。
- 任意我方卡牌进入战场时:不保证可行。
- 任意三连时。
- 任意任务重置时。
- 任意任务完成时。
任意其他种族卡牌获得虚空投影时(废弃):因为某个bug而废弃。- 任意快速生产时。
- 任意空投时:已废弃。
任意卡牌获得虚空投影时(废弃):因为某个bug而废弃。任意进化时:已废弃。- 任意进场时:指任意卡牌进场时,三连不会触发。
任意交换时:已废弃。- 任意集结时:任意卡牌的“子特效字符串(集结)”发动的时候触发,每轮集结仅生效一次(比如集结(2),你有4能量也只触发一次,你有卡牌「阿塔尼斯」也只触发一次;但如果是多张卡牌各自触发集结,则算多次)。
- 任意获得黑暗值时:一张卡牌无论一次性获得多少黑暗值,只触发一次;但如果是多张卡牌各自获得黑暗值,则算多次。
- 任意更换挂件时。
- 任意孵化时:任意卡牌孵化单位到任意卡牌时触发。如何才算“孵化”单位,请参考奖励效果中的“奖励效果(单位)”。
- 任意敌方卡牌进入战场时:不保证可行。
- 任意出售时。
- 任意变异时:任意卡牌单位发生“变异”时触发。如何才算单位发生“变异”,请参考奖励效果中的“奖励效果(变更单位)”。
- 任意被夺取时。
- 每回合开始时。
- 每回合结束时。
- 获得水晶塔时:无论一次性获得多少水晶塔,只触发一次。
- 辅助卡部署时。请参考诺娃的辅助卡设计。
- 孵化到自身时:指任意单位孵化到此卡牌时触发。如何才算“孵化”单位,请参考“所奖励效果”中的“奖励效果(单位)”。
自制发动时间
若你想做一个“任意卡牌被摧毁时”的发动时间,可以参考以下步骤:
- 找到预设类型
发动时间
,在其中新增一个值,命名为“任意卡牌被摧毁时”。
位置
玩家卡牌特效>特效字符串>发动时间>发动时间
- 创建一个常量用于储存发动时间字符串。参考已有的常量
_发动时间 - 任意集结时
,创建一个常量_发动时间 - 任意卡牌被摧毁时
值为WhenAnyDestroyed
。
位置
玩家卡牌特效>特效字符串>发动时间
- 修改函数
发动时间字符串
,如下图所示,在其中将前两步创建的东西进行绑定。
位置
玩家卡牌特效>特效字符串>发动时间>发动时间字符串
- 在文件夹“特效检验”中创建动作
任意卡牌被摧毁特效检验
,如下图所示直接复制动作任意卡牌集结特效检验
然后改名即可。
你还需要把里面的任意集结时
全部改为任意卡牌被摧毁时
。
位置
玩家卡牌特效>特效检验
- 在前四步完成之后,你已经实际上创建完成了。现在你需要在合适的时间去调用我们创建的动作
任意卡牌被摧毁特效检验
。显然,我们应该在任意一张卡牌被摧毁的时候调用。修改动作失去卡牌时
,如下图所示,在最后调用动作任意卡牌被摧毁特效检验
。
位置
卡牌>失去卡牌时
通过这5步,自制发动时间就完成了。这是“任意XXX”的制作步骤,而“自身XXX”步骤基本相同。
发动条件
所有发动条件
- 发动条件(资源)
- 发动条件(制定任务完成条件):参考任务。
- 发动条件(拥有单位类型):卡牌中具有改单位类型的单位时满足条件。
- 发动条件(与):在条件A和条件B中填写“发动条件”,A和B需要同时满足,可以进行嵌套。
- 发动条件(需要某种族的卡牌):参考卡牌「混合体巨兽」。
- 发动条件(无条件)。
- 发动条件(是具有该光环的第一张卡牌):请参考光环。
- 发动条件(是否具有三连效果):用于限定此子特效字符串只在三连后其作用,参考卡牌「阿塔尼斯」。
发动条件(生物质兑换):废弃- 发动条件(任务完成):需要卡牌处于任务完成状态。
- 发动条件(能量):也就是判断卡牌的能量强度。
- 发动条件(零件):判断卡牌的零件数量。
- 发动条件(科技挂件数量)
v3.7.8.7更新
发动条件(科技挂件数量)
被修改为发动条件(挂件数量)
,可以判断“反应堆”,“高级科技挂件”的数量。
发动条件(科技点数|满足自动扣除):废弃- 发动条件(卡牌种类计数)
- 发动条件(卡牌位置):判断此卡牌的位置
- 发动条件(卡牌排布):判断目前场上卡牌的位置情况
- 发动条件(卡牌计数)
- 发动条件(或):在条件A和条件B中填写“发动条件”,A和B只需满足其一,可以进行嵌套。
- 发动条件(回合数):参数
回合数
类型为字符串。填写数字时表示第几回合时满足条件。填写字符串ThisRound
表示仅卡牌进场后的当前回合满足条件,EvenRound
表示仅偶数回合满足条件,OddRound
表示仅奇数回合满足条件。 - 发动条件(黑暗值):卡牌总黑暗值满足要求即可。
- 发动条件(黑暗值-单次):需要卡牌一次性获得的黑暗值满足要求。
- 发动条件(关联卡牌要求):所谓“关联卡牌”,就是发起特效检验的卡牌。若子特效字符串的“发动时间”为“任意出售时”,那发起特效检验的卡牌就是那张“被出售的卡牌”。
例如
你想实现“任意虫族卡牌出售时”,那么你不但需要“发动时间”为“任意出售时”,还需要用“发动条件(关联卡牌要求)”,判断关联卡牌是不是虫族卡牌。
- 发动条件(关联卡牌过滤):另一种方式限制“关联卡牌”,如果你想同时限制,你需要使用“发动条件(与)”。它的第四个参数
价值要求(-1为任意/-2为高于/-3为低于)
是与此卡牌进行比较。 - 发动条件(挂件类型)
- 发动条件(概率):一定概率满足条件。
0.5
表示50%概率。 - 发动条件(非):条件不满足的时候满足,满足的时候不满足,可以进行嵌套。
- 发动条件(单位数量)
自制发动条件
若你想做一个“卡牌内单位的种类的数量大于/小于/等于某个值”的发动条件,可以参考以下步骤:
- 在文件夹“发动条件”中创建一个新的文件夹“条件(单位种类数量)”。
位置
玩家卡牌特效>特效字符串>发动条件
- 参考函数
发动条件(单位数量)
。在文件夹“条件(单位种类数量)”中新建一个函数发动条件(单位种类数量)
(返回类型为字符串)。为其增加两个参数比较方式
(类型为预设中的大于/等于/少于)和比较值
(类型为整数)和一个局部变量String
(类型为字符串)。String
以TypeCount
(这是需要你自定义的)打头,然后将参数拼接到String
中。最后返回String
。最终代码如图:
各个参数需要用.
隔开。实际使用中,我们需判断一张卡牌的种类数量需要等于5时,该函数返回的值将为:TypeCount.Equal.5
。该字符串将储存在子特效字符串中。
- 参考函数
判断条件(单位数量)
。在文件夹“条件(单位种类数量)”中新建一个函数判断条件(单位种类数量)
(返回类型为布尔)。你需要3个参数:玩家
、卡牌索引
、条件字符串
。这里的条件字符串
就是形如前面TypeCount.Equal.5
的字符串。你需要使用函数子特效字符串的关键词第n个内部
,将条件字符串
进行拆分。例如将Equal
和5
拆出来存在局部变量中。因此,我们首先算出卡牌中的种类数量,然后返回比较结果即可。比较用到的函数为根据比较运算符比较的结果
(其功能可以右键跳至该字符串一探究竟)。最终代码如图:
上图省略了计算种类数量的步骤。
- 找到函数
条件关键字是否满足条件
,在其最下面添加一个如图所示的条件分支。其作用为调用步骤3的函数判断条件(单位种类数量)
进行判断。
位置
玩家卡牌特效>特效字符串>发动条件>条件关键字是否满足条件
通过这4步,自制发动条件就完成了。可以明显看出,“发动条件”本质上是一个字符串。我们是先生成字符串,然后需要时,对字符串进行判断。
作用位置
作用位置有4个参数,作用是筛选出有效的卡牌供奖励效果使用。筛选出的卡牌可以是多张、1张或者无卡牌。子特效字符串运作时,作用位置筛选顺序为:作用位置B
->最低星级
->最高星级
->作用位置A
。最低星级
和最高星级
为-1
时,表示不受限制。筛选的结果将会是位置组成的字符串,例如结果为136
时,指的就是1号位、3号位、6号位的卡牌。这些筛选出的卡牌被称为“作用卡牌”。
例如
我想筛选出最右侧的、不低于3星的人族卡牌,我需要这样填参数:
这样会先找到所有人族卡牌,然后再剔除低于3星的卡牌,最后才选择所处位置最靠右的卡牌。
新增作用位置B的筛选
若你想筛选出价值超过10000的卡牌,可以参考以下步骤:
- 找到预设类型“作用位置B”,为其添加新的值
价值超过10000
.
位置
玩家卡牌特效>特效字符串>作用位置>作用位置B
- 找到函数
作用位置
中的综合 - 根据作用位置B切换(动作)
,添加如下条件:
位置
玩家卡牌特效>特效字符串>作用位置>作用位置
- 找到函数
寻找对应的卡牌2
,在第一个If Then Else Multiple
语句块中添加如下代码:
位置
玩家卡牌特效>特效字符串>作用位置>寻找对应的卡牌2
通过这3步,就能实现筛选价值超过10000的卡牌了。然后你可以用来筛出所有价值超过10000的卡牌:
此时函数作用位置
返回的值为All.Over10000.-1.-1
。作用位置A
与作用位置B
的实现方式类似。
奖励效果
奖励效果是子特效字符串最重要的部分。它决定了“子特效字符串”的最终功能。
所有奖励效果
- 奖励效果(资源)
- 奖励效果(转移单位)
- 奖励效果(重置任务进度)
- 奖励效果(重复):用于将多个相同的奖励效果重复拼接。
- 奖励效果(运行触发器):为了应对各种特殊的效果,你可以选择通过“奖励效果触发器”自制奖励效果。后面会说明“奖励效果触发器”如何使用。
奖励效果(移除首次记录器):废弃奖励效果(研究完成):废弃- 奖励效果(且):你需要多个奖励效果时使用,可以嵌套。
奖励效果(空投交换):废弃- 奖励效果(升级):为“作用卡牌”添加升级,参数值
升级索引
为-1
时,获得随机升级。 - 奖励效果(发现卡牌):为玩家发现卡牌某个星级的卡牌。参数值
卡牌星级
为-1
时,发现星级等于玩家当前酒馆等级的卡牌。 - 奖励效果(酒馆等级和升级费用)
- 奖励效果(精英化):将“作用卡牌”内的单位变为精英单位。参数
精英类型的数量
值小于0
时,精英化所有该类型的单位。参数精英化类型(S)
兼容前缀为(S)
的特殊单位类型,比如(S)生物单位
。 - 奖励效果(获得黑暗值)
- 奖励效果(更新任务进度):参考任务。
- 奖励效果(复制单位):将
被复制的卡牌位置
的单位复制到作用位置
的卡牌中。参数复制数量
为-1
时,复制所有单位;为-2
时,所有单位50%概率复制;为-3
时,随机复制1个单位;为-4
时,复制一个卡牌内数量最多的单位。 - 奖励效果(夺取卡牌):参数
触发夺取效果
值为真
时,响应发动条件自身被夺取时
和任意被夺取时
。 - 奖励效果(夺取单位):参数
夺取的数量
值为-1
时,夺取所有单位;值为-3
时,随机夺取1个单位。 - 奖励效果(兑换单位):将“作用卡牌”内所有
从单位类型
的单位兑换为到单位类型
,参数兑换比
值为2.0
表示二换一。 - 奖励效果(单位):为“作用卡牌”添加单位。
获得方式
获得方式不同会触发不同的效果
- 注卵:可以触发动作
卡牌自身注卵特效检验
和任意卡牌注卵特效检验
,从而具有发动时间自身注卵时
和任意注卵时
的子特效字符串会被触发。 - 折跃:与
注卵
相同,触发卡牌自身折跃特效检验
和任意卡牌折跃特效检验
。 招募:废弃- 随机三选一折跃:另一种折跃,会从
单位类型A
、单位类型B
、单位类型C
中随机挑一个进行折跃,也会触发折跃相关的“特效检验”。 - 普通:单纯获得单位,不触发
特效检验
。 空投:废弃附属建筑:废弃- 孵化:与
注卵
相同,触发卡牌自身孵化特效检验
和任意卡牌孵化特效检验
。 补员:废弃
- 奖励效果(摧毁卡牌):摧毁“作用卡牌”。
击杀效果
值为真
时,“作用卡牌”展示的单位会被击杀而不是被移除。 - 奖励效果(变更卡牌):将“作用卡牌”变更。除了卡牌的单位和升级,卡牌所有属性都变为指定卡牌模板的属性。
- 奖励效果(变更单位):参数
从类型
值为无游戏链接
时,将任意类型单位变为到类型
。参数变更的数量
值为-1
时,变更所有该类型的单位;值为-2
时,变更一半。参数变更方式
值为变异
时,会触发任意卡牌变异特效检验
(角色进化腔的技能就是使用奖励效果(变更单位)
,且变更方式
值为变异
,即使它被写作“进化”)。
自制奖励效果
虽然新的效果都可以通过奖励效果(运行触发器)
解决,但是自制奖励效果是一种一劳永逸的方法。若你想做“奖励效果(获得暂存卡牌的单位)”,可以参考以下步骤:
位置
玩家卡牌特效>特效字符串>奖励效果
- 在文件夹”奖励效果“中新建函数
奖励效果(获得暂存卡牌的单位)
(返回类型为字符串)。添加5个参数:
参数说明
暂存卡牌索引
:类型为整数,表示从哪张暂存牌获取单位。单位类型
:类型为单位类型,获取的单位类型。单位过滤
:为了过滤一些单位,比如只想要”生物单位“。数量
:获得的数量。三连后效果倍率
:三连后获得的数量为数量
与三连后效果倍率
的积。
再创建一个局部变量String
,String
以GainUnitsInSavedCards
(这是需要你自定义的)打头,然后用.
将5个参数拼接到String
中(形如GainUnitsInSavedCards.a.b.c.d.e
)。最后函数返回String
。
我们计划暂存卡牌索引
值为-1
时,将从每张暂存卡牌获得单位,否则从特定某一张暂存卡牌获得单位。单位类型
值为无游戏链接
时,获取任意类型的单位,否则获得指定类型的单位。数量
值为-1
时,获取暂存卡牌的所有单位,否则获得固定数量的单位。
如果我们在实际使用中,想让”作用卡牌“获得每张暂存卡牌的1个生物单位(三连后获得2)。返回的String
应该为GainUnitsInSavedCards.-1..Bio.1.[2.0]
。其中三连后效果倍率
为2.0
,为了防止其中的.
被误认,实数需要放在[]
中;单位类型
为无游戏链接
,所以在String
中是空的。
最终代码如图:
2.在文件夹”奖励效果“中新建动作应用奖励效果(获得暂存卡牌的单位)
。添加4个参数:
参数说明
玩家
:类型为整数,触发的玩家。卡牌索引
:类型为整数,触发子特效字符串
的卡牌的索引。每一个效果的字符串
:也就是函数奖励效果(获得暂存卡牌的单位)
返回的字符串(如GainUnitsInSavedCards.-1..Bio.1.[2.0]
)。子特效字符串
:奖励效果所处于的子特效字符串
。我们主要是为了获得其中的作用位置
,从而获得”作用卡牌“。已三连
:值为真
触发三连效果。
第一步是将每一个效果的字符串
拆开。你可以使用函数子特效字符串的关键词第n个内部
来获得各个部分的字符串。如GainUnitsInSavedCards.-1..Bio.1.[2.0]
中第4个内部为Bio
,第6个内部为[2.0]
,对于有[]
的字符串,你还需要使用函数去掉包裹的括号
。
如上图,我们创建了5个局部变量并赋了值。你需要使用形如将字符串转换为XXX
的函数来将字符串转换为整数或者其他类型。下面我们来具体实现获得暂存卡牌的单位。
- 找到暂存卡牌。在这之前,确保你理解商店卡牌和暂存区卡牌
通过以上代码我们将有效的暂存卡牌索引存在有效暂存卡牌索引
中。
- 找到获取的数量。
- 遍历”作用卡牌“。你需要用到函数
寻找对应的卡牌
。作用位置
是一个字符串,如果其值为137
,则表示1号位、3号位、7号位的卡牌。
- 为每张”作用卡牌“从暂存卡牌中添加单位。
- 。。。
- 。。。
奖励效果触发器
函数奖励效果(运行触发器)
,有4个参数。第一个参数触发器
运行的就是“奖励效果触发器”。第二个参数需要选择队友
值为真
时,“奖励效果触发器”可以获取玩家的盟友,仅在玩家存在盟友时生效。
对于“奖励效果触发器”,你可以使用全局变量获得类似“触发的玩家”、“触发的卡牌”等数据。你可以在下图的文件夹中找到“奖励效果触发器”可以使用的变量。
位置
玩家卡牌特效>奖励效果触发器>可能用到的变量
我们可以看一下上图最下方的触发器示例
:
你可以以此为模板制作自己的奖励效果触发器。
注意
尽量不直接使用奖励效果的全局变量,而是把它们存在局部变量中,再使用局部变量。因为触发器执行过程中,全局变量的值可能会发生更改。
各种子特效字符串
大多数“子特效字符串”进行区分,只是为了便于自动生成描述。本质上跟“子特效字符串(一般)”没有区别。因此“子特效字符串”可以分为两类:
- 一般子特效字符串
- 子特效字符串(一般):万能。
- 子特效字符串(一般|不自动生成描述):除了不会自动生成描述,其他跟子特效字符串(一般)一模一样。
- 子特效字符串(孵化):不会触发“孵化”的检验。而是需要
奖励效果(单位)
的获得方式为孵化
。 - 子特效字符串(注卵):不会触发“注卵”的检验。而是需要
奖励效果(单位)
的获得方式为注卵
。其中,”作用位置B“值为虫卵
时,场上没有“虫卵”时,会自动创建“虫卵”。 - 子特效字符串(折跃):不会触发“折跃”的检验。而是需要
奖励效果(单位)
的获得方式为折跃
。 - 子特效字符串(集结):能触发特效检验:
卡牌自身集结特效检验
和任意卡牌集结特效检验
。 - 子特效字符串(变异):不会触发“变异”的检验。而是需要
奖励效果(变更)
的变更方式为变异
。 - 子特效字符串(制造):虽然只有两个参数,但是只是默认把
发动时间
设为了每回合结束时
,作用位置
设为了自身
。 - 子特效字符串(快速生产):只是把
发动时间
默认设为了自身快速生产时
。 - 子特效字符串(快速光环特效):只是在前面加了“子特效字符串(光环)”,并且
发动条件
默认包含发动条件(是具有该光环的第一张卡牌)
。
- 特殊子特效字符串
- 子特效字符串(无特效):毫无用处,返回空字符串。
- 子特效字符串(任务制定):只起制定作用,具体怎么完成任务需要另行设置。参考任务。
- 子特效字符串(辅助卡牌):辅助卡牌只对指定卡牌起作用,所以“作用卡牌”就是辅助卡牌指定的那张卡牌。(“辅助卡牌”的实际作用是:选择一张卡牌,然后让那张卡牌执行“辅助卡牌”上的“特效字符串”,因此,实际上是被选择的卡牌自己执行“特效字符串”,“辅助卡牌”完全不会参与。)
- 子特效字符串(总是折跃到此卡牌):早期设计的“子特效字符串”,虽然没有废弃。但现在完全可以用“光环”解决问题,因此如今有点多余。
- 子特效字符串(定点部署):能让卡牌有定点部署功能。
- 子特效字符串(简易快速生产):跟子特效字符串(快速生产)一样,只是将一些参数设为默认值。
- 子特效字符串(反应堆生产变更):让卡牌的“反应堆”可以生产此单位。
- 子特效字符串(科技生产变更):类似“子特效字符串(反应堆生产变更)”,但不确定如今是否起作用。
- 子特效字符串(佣兵信标):不确定如今是否起作用。
- 子特效字符串(光环):给卡牌标记一个光环,你可以随意设置光环字符串。你还可以结合
发动条件(是具有该光环的第一张卡牌)
,实现“唯一”的效果。具体请参考光环。 - 子特效字符串(黑暗容器):让卡牌可以获得“黑暗值”。
- 子特效字符串(黑暗印记):让卡牌“黑暗值”达到
兑换比
时,可以复活。 - 子特效字符串(提供能量):充当“水晶塔”的效果,参数
光环
为null
时,多张卡牌都起效,否则多张相同光环
卡牌只有一张起效。
- 废弃的
子特效字符串(空投):废弃子特效字符串(采集):废弃子特效字符串(科研):废弃子特效字符串(空投交换):废弃子特效字符串(接口):废弃子特效字符串(空降):废弃
任务
光环
直接执行
我们知道“子特效字符串”本质上就是一个字符串,即使一张卡牌不具备某个“子特效字符串”,我们可以调用动作直接执行子特效字符串
,来无视发动时间直接执行这个“子特效字符串”。
强制执行次数
用来设置子特效字符串重复执行的次数。若值为-1则按照默认次数执行。通常子特效字符串默认只执行一次,但例如“子特效字符串(集结)”会根据能量强度确定执行次数。可以参考卡牌「战斗号角」。
字符串?
这是卡牌「」Normal_
的特效字符串。