随手记-技能拆分

技能分类

  1. 立即触发类

  2. 火球、飞弹类

    需要经过一定的飞行距离:
    火球术
    冰箭术

  3. 触发相应的状态

    (如:战吼、施放后增加自身的攻击力)

  4. 回城类

  5. 骑乘类

  6. 捕捉宠物

  7. 采集类等生活技能

  8. 复活类

  9. 飞行类

    (施放成功后传送到指定的地点或者召唤某人到自己身边)

基本属性定义

  • 所属职业(战士、法师)

  • 技能自我否定类型

    1. 魔法是否足够
    2. 是否冷却中
    3. 是否被沉默
    4. 是否被致盲
  • 技能目标否定类型

    1. 施法距离是否合法
    2. 宠物否决
    3. 公会成员否决
    4. BOSS否决
  • 关系过滤

    1. 对所有关系都有效
    2. 只对夫妻有效
    3. 只对队友有效果
  • 技能施放目标

    1. 自己
    2. 宠物技能跳向主人
    3. 夫妻传送
  • 技能种类

  • 打断方式

    1. 移动
    2. 死亡
    3. 普通攻击
    4. 技能攻击
    5. 被攻击
    6. 使用物品
  • 移动锁定

  • 技能主被动类型

    1. 主动攻击技能
    2. 主动辅助(加BUFFER)
    3. 攻击时触发的技能
    4. 被击时触发的技能
    5. 被动辅助
    6. 替宠物施放技能

等级属性

  • 冷却时间
  • 吟唱时间
  • 触发机率
  • 结算公式

施放基础

基类

基础方法:开始施放,施放过程每次循环触发,施放完成,被打断
基础属性:打断方式、延迟时间,基础属性通过上面的读表获取

例子

复活技能:CSkill_Relive:public cSkillBase

施放前触发DoStart()通知目标玩家是否同意被复活;
DoFinish复活目标玩家

飞行技能:class CSkill_FlytoOther : public cSkillBase

施放前触发DoStart()检查目标玩家和施放源是否存在;
DoFinish根据目标玩家的位置,传送到目标玩家身边

技能状态

状态属性

  • 最大个数

  • 状态效果

    1. 不能移动
    2. 禁魔不能施法
    3. 隐身
    4. 不能攻击
    5. 无敌
    6. GM无敌
    7. 强行攻击状态的释放者
    8. 变身状态
    9. 次数盾
    10. 伤害盾
    11. 附加伤害
    12. 附加被伤
    13. 魔法盾
    14. 完全闪避
  • 是否允许打断

  • 是否需要保存

  • 打断方式

  • 效果类型

    1. 一般技能
    2. DOT(damage over time 持续伤害法术)状态
    3. 控制状态
    4. 经验
    5. 挂机BUFF
    6. 骑乘BUFF
    7. 回血
    8. 回魔
    9. 嘲讽
    10. 法器BUFF
    11. 沉默
    12. 怪物一般技能
    13. DOTHOT状态
    14. 控制状态
    15. 经验
    16. 挂机BUFF
    17. 骑乘BUFF
    18. 变身BUFF
    19. 回血
    20. 回魔
    21. 无敌
    22. 嘲讽
    23. 沉默
    24. 隐身
    25. 公会技能
  • 持续时间

  • 持续次数

  • 间隔时间

  • 结算方式

    1. 下标结算
    2. 公式结算
    3. 间隔释放技能
  • 属性变化

    1. 状态改变人物的属性

状态管理(定时轮循)

定时刷新人物身上的状态,根据状态的间隔时间计算触发每次状态的结算,并且根据结算的类型进行相应的计算:
每次触发EachTime例如(目标玩家踩到了陷阱则中了陷阱状态,每隔5秒钟扣取5%的血量),状态结束触发DoFinish

技能施放

有了技能的施放和状态属性之后,可以进行技能的施放。
DoSkill基本的检查(例如:职业匹配、读者技能表格基础属性、寻找范围内目标、触发打断其他技能)
检查通过后,加入技能施放管理状态(根据DoSkill搜寻的目标设置状态的目标群、设置状态的表格数据、持续次数等)

v-model 是 Vue.js 框架中常用的双向绑定指令,用于将表单元素的值与数据模型进行双向绑定。以下是三种常见的拆分写法: 1. 使用 v-bind 和 v-on 指令拆分: ``` <input :value="message" @input="message = $event.target.value" /> ``` 上述代码中,使用 v-bind 指令将输入框的值绑定到 message 变量,使用 v-on 指令监听输入框的 input 事件,将输入的值更新到 message 变量。 2. 使用计算属性拆分: ``` <input :value="computedMessage" @input="updateMessage" /> computed: { computedMessage: { get() { return this.message; }, set(value) { this.message = value; } } }, methods: { updateMessage(event) { this.message = event.target.value; } } ``` 上述代码中,通过计算属性 computedMessage 实现了对 message 变量的双向绑定。在计算属性的 get 方法中返回 message 的值,在 set 方法中更新 message 的值。同时,通过监听 input 事件,调用 updateMessage 方法更新 message 的值。 3. 使用自定义组件拆分: ``` <my-input v-model="message"></my-input> // MyInput.vue <template> <input :value="value" @input="$emit('input', $event.target.value)" /> </template> <script> export default { props: ['value'] }; </script> ``` 上述代码中,通过自定义组件 MyInput 实现了对 v-model 的拆分。在组件中,使用 props 属性接收父组件传递的值,并将值绑定到 input 元素的 value 属性上,同时通过 $emit 方法触发 input 事件,将输入的值传递给父组件。 以上三种拆分写法都可以实现 v-model 的功能,开发者可以根据需求和个人偏好选择适合的写法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值