FreeKill/docs/diy/06-active.rst

38 lines
2.1 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.. 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