FreeKill/docs/fkp/usr/active_skill.rst

101 lines
4.7 KiB
ReStructuredText
Raw Normal View History

.. SPDX-License-Identifier: GFDL-1.3-or-later
主动技能
========
主动技能概述
------------
所谓主动技能,就是那些可以在出牌阶段时主动发动的技能,例如制衡、仁德、强袭等等。在三国杀移动版中,主动技能通常在技能列表中显示为一个可以按下的按钮。
在fkparse中创建主动技能的语法格式为
::
主动技 条件:<代码块> 选牌规则:<代码块> 选目标规则:<代码块>
可以点确定:<代码块> 使用后:<代码块>
这里需要注意的是,上面所描述的格式,隶属于前面所说过的\ ``<技能主体内容>``\ 中,也就是说要创建主动技能的话,仍然需要补充前面的“导语部分”。
下面来一一叙述各个\ ``代码块``\ 的意义。
条件
~~~~
条件指的是主动技能不能被使用。更加确切的说,“条件”是指技能按钮需要被点亮的一系列条件,如果这些条件不能满足的话,技能按钮就会显示为灰色。例如技能“制衡”是出牌阶段限发动一次,那么在没有发动之前它是绿色按钮,发动之后就变成灰色按钮了,需要等待到下一个出牌阶段。
在\ ``条件:``\ 后面跟随的\ ``<代码块>``\ 中,玩家可以使用以下预定义的变量名:
- ````\ :玩家自己。
选牌规则
~~~~~~~~
选牌规则指的是技能按钮按下之后,哪些手牌/装备区的牌可以被选择,哪些不能。“选牌规则”会在玩家每次点击技能按钮,或者点选一张卡牌后,对每张未被选择的卡牌各自进行一次判断,根据判断的结果来确定要不要将卡牌点亮。
在\ ``选牌规则:``\ 后面跟随的\ ``<代码块>``\ 中,玩家可以使用以下预定义的变量名:
- ````\ :玩家自己。
- ``'已选卡牌'``\ :已经被选中的卡牌,类型为卡牌数组。
- ``'备选卡牌'``\ :每一张未被选择的卡牌,类型为卡牌类型。
选目标规则
~~~~~~~~~~
选目标规则指的是,在技能按钮被按下,或者卡牌/目标的被选择状态改变后,对场上的每名角色(包括你自己)分别进行的一次判断。根据判断结果,游戏程序会决定要不要将对应的角色点亮/暗淡。
在\ ``选目标规则:``\ 后面跟随的\ ``<代码块>``\ 中,玩家可以使用以下预定义的变量名:
- ````\ :玩家自己。
- ``'已选目标'``\ :已经被选中的角色,类型为玩家数组。
- ``'备选目标'``\ :每一名未被选择的角色,类型为玩家类型。
- ``'已选卡牌'``\ :已经被选中的卡牌,类型为卡牌数组。在判断目标是否可选时,已选卡牌是判断的必要依据之一。比如“缔盟”就需要选择两名角色的手牌差值等于自己已经选择的卡牌的数量。
可以点确定
~~~~~~~~~~
顾名思义,“可以点确定”指的是技能按钮已经被激活后的某一个时刻下,确定按钮能否被点击。
在\ ``可以点确定:``\ 后面跟随的\ ``<代码块>``\ 中,玩家可以使用以下预定义的变量名:
- ````\ :玩家自己。
- ``'已选目标'``\ :已经被选中的角色,类型为玩家数组。
- ``'已选卡牌'``\ :已经被选中的卡牌,类型为卡牌数组。
使用后
~~~~~~
使用后,自然就是技能本身的效果了。玩家可以在这里编写自己想要执行的种种代码。
在\ ``使用后:``\ 后面跟随的\ ``<代码块>``\ 中,玩家可以使用以下预定义的变量名:
- ````\ :玩家自己。
- ``'选择的目标'``\ :已经被选中的角色,类型为玩家数组。
- ``'选择的卡牌'``\ :已经被选中的卡牌,类型为卡牌数组。
为什么和前面的不太相同,这个我也不太懂 = =
有一点需要注意的是,在技能效果中,用来发动技能的卡牌不会被自动弃置掉。可以使用动作语句“因发动技能而弃牌”去手动选择弃掉的卡牌数量。
主动技中部分判断的局限性
------------------------
主动技和触发技不同有一部分判断是在玩家的视角下进行的而非像触发技那样全知全能。也就是说如果你试图在“选目标规则”中判断目标的身份时游戏可能会对你报错。同样的在自己视角下也不能执行摸牌、回血之类的动作尽管fkparse不会给你指出来。
| 其实就是ServerPlayer和ClientPlayer的区别懒得展开说了
| (记住在除了“使用后”的其他代码块里面别去做一些奇怪的事情就行,到时候写个附录)
主动技和触发技同时使用
----------------------
有些技能既有主动部分也有被动部分,对于这样的技能,可以在技能下面同时定义触发技和主动技。参见示例文本。