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