FreeKill/docs/diy/06-active.rst

38 lines
2.1 KiB
ReStructuredText
Raw Permalink Normal View History

.. SPDX-License-Identifier: GFDL-1.3-or-later
技能解析:主动技
================
上篇说到的触发技是在满足某个时机之后“被动”发动的,而本文将要阐述的技能则是在出牌阶段空闲的时候主动发动的。
在技能显示页面中,主动技是有一个按钮可以按下去的,其他技能就只是文字而已。
接下先看看如何创建主动技,再来简述一下主动技是如何发挥效果的。
创建主动技
----------
创建主动技使用的是 ``fk.CreateActiveSkill`` 函数。这个函数和创建触发技一样,接收的参数也是一个表,表中可以指定 ``name````frequency````anim_type````mute`` 这四个属性,以及这些主动技特有的函数/属性:
- ``can_use`` :函数原型为 ``fun(self, player)`` ,用来判断当前空闲时间点能不能使用该技能。
- ``card_filter`` :函数原型为 ``fun(self, to_select, selected, selected_targets)`` ,用来判断某张卡牌能不能被这个技能选择。
- ``target_filter`` :函数原型为 ``fun(self, to_select, selected, selected_cards)`` ,用来判断某名角色能不能被技能选择。
- ``target_num`` :为了能点击确定键,需要选择的角色数量。
- ``card_num`` :为了能点击确定键,需要选择的卡牌数量。
- ``max_target_num`` 能点击确定键的最大选择角色数量默认999
- ``min_target_num`` 能点击确定键的最小选择角色数量默认0
- ``max_card_num`` 能点击确定键的最大选牌数量默认999
- ``min_card_num`` 能点击确定键的最小选牌数量默认0
- ``on_use`` :主动技生效部分,后面再说
主动技生效之前的流程
--------------------
首先,每当玩家即将进行出牌阶段的一次出牌之前,游戏会先做出判断,来确定按钮是否能被按下。
对于某个技能而言,判断按钮是否被点亮就是通过 ``can_use`` 。返回true的话就能点亮。
然后,当技能按钮被按下后,就需要对手牌/装备含有的所有卡牌,以及场上所有角色,都判断能不能点亮。
TODO