FreeKill/docs/fkp/usr/status_skill.rst

103 lines
4.0 KiB
ReStructuredText

.. SPDX-License-Identifier: GFDL-1.3-or-later
状态技
======
最后一种技能类型:状态技。所谓状态技就是那种既不被动也不主动就能产生影响的技能。所有的状态技都是全局生效的。
创建一个状态技的格式为:
::
状态技
[禁止指定目标:<代码块>]
[选牌规则:<代码块> 视为规则:<代码块>]
[距离修正:<代码块>]
[手牌上限修正:<代码块>]
[手牌上限固定:<代码块>]
[出牌次数修正:<代码块>]
[出牌距离修正:<代码块>]
[出牌目标数量修正:<代码块>]
[攻击范围修正:<代码块>]
[攻击范围固定:<代码块>]
可以看出,除了“状态技”三个字之外,所有的都是可选的要素,但语法规定至少要有一个可选要素。这些可选要素又分为许多个大类,具体为以下几种:
卡牌禁止类
----------
卡牌禁止类就是让某人不能成为某种卡牌的目标,比如空城、帷幕等技能。(注意这与毅重这种令卡牌无效的技能有本质区别)
控制这种东西的代码块是\ ``禁止指定目标:``\ 之后的。在这个代码块中,你可以使用以下的预定义变量:
- ``'目标'``\ :可能成为这张卡牌的目标的玩家。
- ``'来源'``\ :可能打算使用这张卡牌的玩家。
- ``'卡牌'``\ :可能会被使用的卡牌。
在这个代码块中返回真的话,那么就意味着这个目标被禁止成为来源使用此牌的目标。
注意,你不能在这个代码块中使用预定义变量“你”。这是因为,每当某人将手牌区的牌点亮后,禁止技就会在此时发挥作用,也就是说禁止技对所有人皆有效。
锁定视为类
----------
锁定视为就是像红颜这样的技能,某一类卡牌直接被视为另一种卡牌。
控制锁定视为的代码块是\ ``选牌规则:``\ 和\ ``视为规则:``\ 这两种。二者缺一不可。
在这两个代码块中,你都可以使用以下的预定义变量:
- ````\ :玩家自己。
- ``'备选卡牌'``\ :每一张未被选择的卡牌,类型为卡牌类型。
注意到预定义变量只剩两个了。这是因为锁定视为技一次只会影响到一张牌,没有像“锁定技,你的两张杀均视为桃。”这种不合理的锁定视为技存在。
距离修改类
----------
这种技能指的是像马术、飞影这样影响距离计算的技能。
控制其代码块是\ ``距离修正:``\ 之后的。在这个代码块中,你可以使用以下的预定义变量:
- ``'目标'``\ :位于本次距离计算终点的玩家。
- ``'来源'``\ :位于本次距离计算起点的玩家。
在这个函数中返回正数的话,就会导致来源到目标计算距离增加相应的数值。同理,返回负数的话,会导致来源到目标计算距离减少。
手牌上限修改类
--------------
诸如慎拒、界英姿这类能修改手牌上限的技能。
控制锁定视为的代码块是\ ``手牌上限修正:``\ 和\ ``手牌上限固定:``\ 这两种。
在这两个代码块中,你都可以使用以下的预定义变量:
- ``'玩家'``\ :将要计算手牌上限的玩家。
在\ ``手牌上限修正:``\ 中返回正数或负数可以修正手牌上限。另一个中则是直接返回想要的手牌上限。
两个代码块不允许同时存在。如果共存的话,手牌上限固定将会被忽略。
卡牌效果增强类
--------------
诸如咆哮、天义这种能打破规则使用卡牌的技能。
控制卡牌增强的代码块是\ ``出牌次数修正:``\ 、\ ``出牌距离修正:``\ 、\ ``出牌目标数量修正:``\ 。根据返回值,第一个影响出牌次数限制,第二个影响出牌距离限制,第三个影响这张牌能选择的最大目标数量。
在这些代码块中能使用以下预定义变量:
- ``'玩家'``\ :将要使用此牌的玩家。
- ``'卡牌'``\ :将要使用的卡牌。
攻击范围修改类
--------------
和修改手牌上限一样,区别就是这个修改的是攻击范围。