技能分类
立即触发类
火球、飞弹类
需要经过一定的飞行距离:
火球术
冰箭术触发相应的状态
(如:战吼、施放后增加自身的攻击力)
回城类
骑乘类
捕捉宠物
采集类等生活技能
复活类
飞行类
(施放成功后传送到指定的地点或者召唤某人到自己身边)
基本属性定义
所属职业(战士、法师)
技能自我否定类型
- 魔法是否足够
- 是否冷却中
- 是否被沉默
- 是否被致盲
- …
技能目标否定类型
- 施法距离是否合法
- 宠物否决
- 公会成员否决
- BOSS否决
- …
关系过滤
- 对所有关系都有效
- 只对夫妻有效
- 只对队友有效果
- …
技能施放目标
- 自己
- 宠物技能跳向主人
- 夫妻传送
- …
技能种类
打断方式
- 移动
- 死亡
- 普通攻击
- 技能攻击
- 被攻击
- 使用物品
- …
移动锁定
技能主被动类型
- 主动攻击技能
- 主动辅助(加BUFFER)
- 攻击时触发的技能
- 被击时触发的技能
- 被动辅助
- 替宠物施放技能
- …
等级属性
- 冷却时间
- 吟唱时间
- 触发机率
- 结算公式
施放基础
基类
基础方法:开始施放,施放过程每次循环触发,施放完成,被打断
基础属性:打断方式、延迟时间,基础属性通过上面的读表获取
例子
复活技能:CSkill_Relive:public cSkillBase
施放前触发DoStart()通知目标玩家是否同意被复活;
DoFinish复活目标玩家飞行技能:class CSkill_FlytoOther : public cSkillBase
施放前触发DoStart()检查目标玩家和施放源是否存在;
DoFinish根据目标玩家的位置,传送到目标玩家身边
技能状态
状态属性
最大个数
状态效果
- 不能移动
- 禁魔不能施法
- 隐身
- 不能攻击
- 无敌
- GM无敌
- 强行攻击状态的释放者
- 变身状态
- 次数盾
- 伤害盾
- 附加伤害
- 附加被伤
- 魔法盾
- 完全闪避
- …
是否允许打断
是否需要保存
打断方式
效果类型
- 一般技能
- DOT(damage over time 持续伤害法术)状态
- 控制状态
- 经验
- 挂机BUFF
- 骑乘BUFF
- 回血
- 回魔
- 嘲讽
- 盾
- 法器BUFF
- 沉默
- 怪物一般技能
- DOTHOT状态
- 控制状态
- 经验
- 挂机BUFF
- 骑乘BUFF
- 变身BUFF
- 回血
- 回魔
- 无敌
- 嘲讽
- 盾
- 沉默
- 隐身
- 公会技能
- …
持续时间
持续次数
间隔时间
结算方式
- 下标结算
- 公式结算
- 间隔释放技能
- …
属性变化
- 状态改变人物的属性
- …
状态管理(定时轮循)
定时刷新人物身上的状态,根据状态的间隔时间计算触发每次状态的结算,并且根据结算的类型进行相应的计算:
每次触发EachTime例如(目标玩家踩到了陷阱则中了陷阱状态,每隔5秒钟扣取5%的血量),状态结束触发DoFinish
技能施放
有了技能的施放和状态属性之后,可以进行技能的施放。
DoSkill基本的检查(例如:职业匹配、读者技能表格基础属性、寻找范围内目标、触发打断其他技能)
检查通过后,加入技能施放管理状态(根据DoSkill搜寻的目标设置状态的目标群、设置状态的表格数据、持续次数等)