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