FreeKill/doc/diy/02-skilltype.md

2.0 KiB
Raw Blame History

fk技能类型总览

diy > fk技能类型总览


fk的目的是便于三国杀的DIY而三国杀DIY的核心就是制作各种技能了。

fk的技能分为两大类这两大类又各自细分为更小的分类

关于这部分的源码详见lua/core/skill.lua和lua/core/skill_type下的所有文件

  • 可使用类技能UsableSkill
    • 触发技TriggerSkill在满足一定条件时能够通过被动触发发挥效果的技能
    • 主动技ActiveSkill玩家主动发动的技能
    • 视为技ViewAsSkill将一张牌当做另一张牌的技能
  • 状态技StatusSkill
    • 距离技DistanceSkill影响距离计算的技能
    • 攻击范围技DistanceSkill影响攻击范围计算的技能
    • 手牌上限技MaxCardsSkill影响手牌上限计算的技能
    • 禁止技ProhibitSkill禁止成为卡牌目标的技能
    • 卡牌增强技TargetModSkill影响卡牌使用次数上限、目标上限、距离限制等等的技能
    • 锁定视为技FilterSkill让一张牌强制视为另一张牌的技能

其中,触发技的逻辑最为复杂,但是已经在这里分析过了,故不再赘述。

主动技和状态技应该不算难,先按下不表。视为技与神杀有所区别,区别如下:

在神杀中视为技是否可响应是专门写在enabled_at_response的fk则不然看倾国的代码

local qingguo = fk.CreateViewAsSkill{
  name = "qingguo",
  anim_type = "defensive",
  pattern = "jink",
  card_filter = function(self, to_select, selected)
    -- ...
  end,
  view_as = function(self, cards)
    -- ...
  end,
}

可见并没有编写跟响应时候有关的函数也没有声明出牌阶段不可用。其中的奥妙就在于pattern中视为技可以转化的卡牌都应该写在pattern里面Fk会根据pattern的内容判断技能出牌阶段是否可用、是否能够响应等。