技能系统
1. 数值系统
数值Numeric 的计算公式 = 【战斗总数值 = 基础数值 + 额外加成 + buff加成】
- 第一层攻击力 = 角色等级基础攻击力
- 第二层攻击力 =(一层攻击力+固定装备加成)*(1+百分比装备加成)
- 第三层攻击力 =(二层攻击力+固定buff加成)*(1+ 百分比buff加成)
- 英雄总攻击力 = 第三层攻击力
2. 战斗行动
- 行动类型
- 释放技能
- 造成伤害
- 给予治疗
- 赋给效果
- 行动点
- 造成伤害行动点
- 承受伤害行动点
3. 战斗实体
- 数值组件
- 战斗实体
4. 战斗能力Ability
- AbilityEntity
这里存储着角色某个能力的数据和状态,比如技能,被动,buff,debuff等等 - AbilityExecution
技能执行器,出发效果时执行 - SkillAbilityExecution
具体的技能执行效果,比如目标战斗实体信息,位置,方向等。 - AbilityTask
播放动作,创建特效,创建触发器等一系列相关操作
5. Status
- 状态效果类型
- 属性修饰
- 修改角色的属性数值
- 行为禁止
- 眩晕
- 移动禁止
- 攻击禁止
- 施法禁止
- 沉默
- 施法禁止
- 恐惧
- 施法禁止
- 攻击禁止
- 移动控制
- 眩晕
- 逻辑触发
- 时间触发
- 按时间触发有几秒后触发伤害
- 每间隔多少秒造成伤害
- 条件触发
- 当生命值低于多少时怎么样
- 当收到伤害大于多少时怎么样
- 距离目标多远有什么效果
- 行为动作触发
- 条件机制比较复杂些,基本每种类型的条件需要单独些代码判断,这个最好是通过抽象分离和事件解耦来减少代码的侵入性
- 其他等等
- 时间触发
- 属性修饰
- 状态配置
- Buff和被动
- StatusAbility(状态能力)
- StatusAbilityExecution(状态能力执行体)
- ConditionEntity
6.Skill技能配置
7.战斗行动应用效果
- 修改属性数值(永久)
- 修改生命值(造成伤害/基于治疗)
- 修改其他属性(属性增强/属性削弱)
- 施加短暂状态
- 属性修饰
- 逻辑触发
- 修改永久属性数值
- 施加短暂状态
- 移除短暂状态
- 移除短暂状态