这是本文档旧的修订版!
技能框架
技能表现
技能表现主要分为 释放(Cast) 和 结果(Result) 两个大类
释放中又细分为 施放者效果(Cast) 和 全局效果(Show)
结果分为 飞行(Fly) 和 (Hit命中)
一个技能至少有一个释放体, 但有若干个结果
释放的表现预制体为 EffectBattleSkillCast 的 Clone
结果表现预制体为 EffectBattleSkillResult 的 Clone
其中几个主要控件的位置:
Cast | 绑定在施放者上 |
Show | 自由摆放 |
Fly | 绑定在施放者,指向目标 |
Hit | 绑定在目标上 |
几个时机
* 开始结果表现的时机,配置在释放结果中,释放结果是有类型区别的 参考SKILL_RESULT_TYPE
* 技能结算可以触发 OnTargetHurt(执行目标受伤动画,可能多套) 和 OnResult(跳数字,变血条)
事件绑定的方法
技能扩展
— 沈默 2019/05/05 17:07
枚举改动
ATTRIB 属性部分增加
[44] | DMG_RESIST | 免伤率 |
[45] | NORMAL_RESIST | 普攻免伤率 |
[46] | SKILL_RESIST | 技能免伤率 |
[47] | SKILL_CRITICAL | 技能额外暴击率 |
[51] | RED_RESIST_R | 红色抗性(可以是负数) |
[52] | GREEN_RESIST_R | 绿色抗性(可以是负数) |
[53] | BLUE_RESIST_R | 蓝色抗性(可以是负数) |
[54] | YELLOW_RESIST_R | 黄色抗性(可以是负数) |
[55] | PURPLE_RESIST_R | 紫色抗性(可以是负数) |
[61] | RED_EXTRA_R | 对红色伤害额外提高 |
[62] | GREEN_EXTRA_R | 对绿色伤害额外提高 |
[63] | BLUE_EXTRA_R | 对蓝色伤害额外提高 |
[64] | YELLOW_EXTRA_R | 对黄色伤害额外提高 |
[65] | PURPLE_EXTRA_R | 对紫色伤害额外提高 |
SKILL_TARGET_TYPE 做出了调整
1 | ALL_ENEMY | 敌方全体 |
2 | SINGLE_ENEMY | 敌方目标单体 |
3 | GROUP_ENEMY | 敌方目标以及附近(三个) |
4 | NEAR_BY_ENEMY | 敌方目标的左右(两个) |
6 | OTHER_ENEMY | 敌方目标以外的所有(四个) |
7 | RANDOM_ENEMY | 敌方随机目标 |
11 | ALL_FRIEND | 全部我方 |
12 | SINGLE_FRIEND | 我方单体(道具用) |
13 | GROUP_FRIEND | 我方目标以及附近(三个) |
14 | NEAR_BY_FRIEND | 我方目标的左右(两个) |
15 | SELF | 我方施法者 |
16 | OTHER_FRIEND | 我方目标以外的(四个) |
17 | RANDOM_FRIEND | 我方随机队友(优先其他人而不是自己) |
新增 枚举 SKILL_ARG_SOURCE 技能来源参数,主要是采集一些过程参数,然后纳入后面的结算
0 | NONE | 技能参数来源(无) |
1 | TOTAL_DAMAGE | 前面所有行为的伤害 |
2 | TOTAL_CRITICAL_DAMAGE | 前面所有行为的暴击伤害 |
3 | TOTAL_COUNT | 前面所有行为的击中数量 |
4 | TOTAL_CRITICAL_COUNT | 前面所有行为的暴击数量 |
5 | TOTAL_KILL_COUNT | 前面所有行为的击杀数量 |
6 | HP_COMPARE_TARGET | 敌我HP百分比比较(敌方多为1) |
7 | HP_COMPARE_SELF | 敌我HP百分比比较(我方的多为1) |
8 | HP_LOST | 我方损失血量百分比 |
技能效果方法。
SKILL_EFFECT_TYPE 调整了部分枚举,其中前3个关联到了 SKILL_ARG_SOURCE
[1] | DAMAGE_PERCENT | 百分比伤害(参数1 百分比填正数,参数2 根据ArgSource的追加系数) |
[11] | HEAL_PERCENT | 百分比治疗(参数2大于0时候 可以乘以 ArgSource的追加系数) |
[12] | HEAL_NUM | 绝对值治疗(参数2大于0时候 可以乘以 ArgSource的追加系数) |
[44] | CAST_SKILL | 几率性触发某后续技能(参数1:技能id(8开头) 参数2:几率) |
[45] | ROLL_SKILL | 权重性触发某后续技能(参数1:技能id(8开头) 参数2:权重) |
[46] | PICK_SKILL | 选择性触发某后续技能(参数1:技能id(8开头)要独立UI) |
BUFF_GROUP 新增[0] FOREVER 永久持续类(不可驱散,不会覆盖), 内部实现是用一个自增的大数字
BUFF_EFFECT 新增
[12] | HEAL 吸血(参数2,恢复的血量百分比) |
[13] | FEEDBACK 反噬(参数2,反噬的比例) |
[14] | SKILL_FEEDBACK 技能反噬(参数2,技能反噬的比例) |
[15] | OWNER_HEAL 造成伤害时给释放buff的人回血(参数2,回血比例) |
[16] | NO_BUFF 不能获得增益 |
[17] | SKILL_DAMAGE 技能增伤(参数2: buff类型(0/1/2), 参数3:单个增加技能伤害的数值) |
[21] | TURN_SKILL 回合结束的时候释放某个技能(参数2:技能id 参数3:技能参数, 参数4:技能参数) |
[22] | END_SKILL BUFF结束的时候释放某个技能(参数2:技能id 参数3:技能参数, 参数5:技能参数) |
[23] | DEAD_SKILL 死亡的时候释放某个技能(参数2:技能id 参数3:技能参数, 参数4:技能参数) |
[24] | DEAD_OWNER_SKILL 死亡的时候由施法者释放某个技能(参数2:技能id 参数3:技能参数, 参数4:技能参数) |
[25] | HURT_SKILL 受到伤害时触发 |
[26] | DISPELL_SKILL 驱散时触发技能 |
[27] | DODGE_SKILL 躲闪后触发技能 |
[31] | SHIELD 护盾(参数2,护盾值,参数3 是否被击穿) |
[32] | SKILL_BLOCK 禁止释放技能 |
[33] | MANA_BLOCK 禁止回魔(用于表现) |
[34] | TIME_MACHINE 时光标记 |
原型表改动
skill_config 新增 7:buff技能 8:连带技能(behavior 触发)
[effect_condition] 生效条件 ATTRIB的条件表达式,比如(7>0.5)表示血量大于50% 颜色过滤也可以这样用
[buff_condition] 如果目标身上有该id的buff才生效,用于buff叠加,0表示不判断,负数表示仅在buff不存在的时候才能触发
[arg_source] 技能额外来源参数 SKILL_ARG_SOURCE
[arg_source_max] 技能额外来源参数最大值
buff_config.display_mode 显示模式 1:正常显示 0:不显示icon和长按 tips
制作/填表技巧
* 在这个回合实现 死亡后如何如何,或者临时增加技能属性,可以增加一个0回合的buff, 回合结束的时候会被移除
* 可以使用 arg_source / arg_source_max 来进行 特定输入的整合,主要在 按照暴击吸血,按照伤害回血,按照是否暴击来增加伤害等。arg_source_max 可以控制最大生效次数。
* buff叠加机制,可以通过skill_behavior_config.buff_condition 来判断 是否包含某个buff,如果是一个连续破甲之类的buff。
我们可以通过 多个behavior + 多个buff的机制,进行buff替换。把不同堆叠的buff做成不同的buff
* behavior可以对目标进行条件判断,从而达到一些过滤目的。 比如血量低于多少执行 behavior 1,高于则 behavior 2
还能配置不同的 技能表现
* 条件还可以用于颜色过滤 ,比如 (41=3)表示 ,只有 蓝色可以生效
* 一定概率 触发,可以通过 ROLL_SKILL权重性触发 来进行 抽奖
* 卡牌大师需要使用 PICK_SKILL选择性触发
* 回合结束时 需要回血等功能,配置成 TURN_SKILL 回合结束的时候释放某个技能 这样。配置合理的受击特效。
* 禁止回魔 、禁止施法、护盾 ,技能选择,这几个功能需要特别的UI逻辑
* OWNER_HEAL造成伤害时给释放buff的人回血 和 DEAD_OWNER_SKILL 死亡的时候由施法者释放某个技能 这两个需要记住buff的释放者
* 死亡后触发技能、回合结束触发技能、攻击躲闪后触发技能等,都是buff的很自由的扩展方式