2023-04-09 13:35:35 +08:00
|
|
|
|
.. SPDX-License-Identifier: GFDL-1.3-or-later
|
|
|
|
|
|
2023-03-29 23:27:11 +08:00
|
|
|
|
技能解析:主动技
|
|
|
|
|
================
|
|
|
|
|
|
|
|
|
|
上篇说到的触发技是在满足某个时机之后“被动”发动的,而本文将要阐述的技能则是在出牌阶段空闲的时候主动发动的。
|
|
|
|
|
|
|
|
|
|
在技能显示页面中,主动技是有一个按钮可以按下去的,其他技能就只是文字而已。
|
|
|
|
|
|
|
|
|
|
接下先看看如何创建主动技,再来简述一下主动技是如何发挥效果的。
|
|
|
|
|
|
|
|
|
|
创建主动技
|
|
|
|
|
----------
|
|
|
|
|
|
|
|
|
|
创建主动技使用的是 ``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!
|