Skip to content

MythicMobs 条件使用说明

重要提示: 条件(Conditions)必须在 Conditions 字段中使用,而不是在 Skills 中!

正确的用法

基本语法

yaml
MobName:
  Type: ZOMBIE
  Health: 100
  Skills:
  - skill{s=AttackSkill} @target ~onTimer:100
  
AttackSkill:
  Conditions:
  - hna-hasbuff{key="重伤"} true  # ✅ 正确:在 Conditions 中
  Skills:
  - hna-damage{amount=200} @target
  - message{m="&c重伤目标受到额外伤害!"} @target

❌ 错误示例

yaml
# 错误!条件不能直接写在 Skills 中
AttackSkill:
  Skills:
  - hna-hasbuff{key="重伤"} true  # ❌ 错误!
  - hna-damage{amount=200} @target

条件的三种使用方式

1. 内联条件(Inline Conditions)

最常用的方式,直接在技能行后面添加条件:

yaml
FireballSkill:
  Skills:
  - projectile{...} @target ~onTimer:100 ?hna-hasbuff{key="易伤"}
  # 只有目标有"易伤" Buff 时才发射火球

2. 技能级条件(Skill-Level Conditions)

在技能定义中使用 Conditions 字段:

yaml
PowerfulAttack:
  Conditions:
  - hna-hasbuff{key="力量提升"} true
  - hna-attribute{attr="attack";value=>100} true
  Skills:
  - hna-damage{amount=500} @target
  - message{m="&c强力一击!"} @target

3. 技能触发器条件(Trigger Conditions)

在怪物的技能触发器中使用:

yaml
Boss:
  Type: ZOMBIE
  Health: 1000
  Skills:
  - skill{s=EnrageSkill} @self ~onDamaged ?hna-attribute{attr="health";value=<500}
  # 只有生命值低于 500 时才触发狂暴

完整示例

示例 1:条件性伤害

yaml
ConditionalDamage:
  Conditions:
  - hna-hasbuff{key="重伤"} true
  Skills:
  - hna-damage{amount=200} @target
  - message{m="&c重伤目标受到额外伤害!"} @target

示例 2:多条件判断

yaml
ComboAttack:
  Conditions:
  - hna-hasbuff{key="眩晕"} true
  - hna-attribute{attr="health";value=>50} true
  Skills:
  - hna-damage{amount=300} @target
  - message{m="&c连击成功!"} @target

示例 3:条件分支

yaml
# 技能 A:目标有 Buff 时执行
SkillA:
  Conditions:
  - hna-hasbuff{key="重伤"} true
  Skills:
  - hna-damage{amount=200} @target

# 技能 B:目标没有 Buff 时执行
SkillB:
  Conditions:
  - hna-hasbuff{key="重伤"} false
  Skills:
  - hna-damage{amount=100} @target

# 主技能:调用分支
MainSkill:
  Skills:
  - skill{s=SkillA} @target
  - skill{s=SkillB} @target

示例 4:内联条件(推荐)

yaml
SmartAttack:
  Skills:
  # 如果目标有重伤,造成 200 伤害
  - hna-damage{amount=200} @target ?hna-hasbuff{key="重伤"}
  # 如果目标没有重伤,造成 100 伤害
  - hna-damage{amount=100} @target ?!hna-hasbuff{key="重伤"}

元素反应系统(正确版本)

yaml
# 火属性攻击
FireAttack:
  Skills:
  - hna-damage{amount=100;type=fire} @target
  - hna-buff{key="fire_mark";time=100} @target
  # 如果目标有冰标记,触发蒸发反应
  - skill{s=VaporizeReaction} @target ?hna-hasbuff{key="ice_mark"}

# 冰属性攻击
IceAttack:
  Skills:
  - hna-damage{amount=100;type=ice} @target
  - hna-buff{key="ice_mark";time=100} @target
  # 如果目标有火标记,触发蒸发反应
  - skill{s=VaporizeReaction} @target ?hna-hasbuff{key="fire_mark"}

# 蒸发反应
VaporizeReaction:
  Skills:
  - hna-damage{amount=200;type=vaporize} @target
  - hna-removebuff{key="fire_mark"} @target
  - hna-removebuff{key="ice_mark"} @target
  - effect:particles{p=EXPLOSION_LARGE;a=20} @target
  - message{m="&e⚡ 蒸发反应!"} @target

DOT 组合反应(正确版本)

yaml
# 施加中毒
ApplyPoison:
  Skills:
  # 如果目标流血,施加剧毒
  - skill{s=DeadlyPoison} @target ?hna-hasbuff{key="bleed"}
  # 如果目标不流血,施加普通中毒
  - hna-dot{key="poison";repeats=5;interval=20;amount=20} @target ?!hna-hasbuff{key="bleed"}

# 剧毒效果
DeadlyPoison:
  Skills:
  - hna-dot{key="deadly_poison";repeats=10;interval=20;amount=50} @target
  - hna-removebuff{key="bleed"} @target
  - effect:particles{p=SPELL_WITCH;a=30} @target
  - message{m="&5⚠ 剧毒侵蚀!"} @target

条件操作符

逻辑操作符

  • ?condition - 条件为真时执行
  • ?!condition - 条件为假时执行
  • ?condition1 ?condition2 - 多个条件都为真时执行(AND)

比较操作符(用于属性判断)

  • >= - 大于等于
  • > - 大于
  • <= - 小于等于
  • < - 小于
  • == - 等于
  • != - 不等于

常见错误

❌ 错误 1:在 Skills 中使用条件

yaml
# 错误!
MySkill:
  Skills:
  - hna-hasbuff{key="buff"} true
  - hna-damage{amount=100} @target

正确写法:

yaml
MySkill:
  Conditions:
  - hna-hasbuff{key="buff"} true
  Skills:
  - hna-damage{amount=100} @target

或使用内联条件:

yaml
MySkill:
  Skills:
  - hna-damage{amount=100} @target ?hna-hasbuff{key="buff"}

❌ 错误 2:条件语法错误

yaml
# 错误!缺少 true/false
Conditions:
- hna-hasbuff{key="buff"}

正确写法:

yaml
Conditions:
- hna-hasbuff{key="buff"} true

❌ 错误 3:混淆技能和条件

yaml
# 错误!hna-hasbuff 是条件,不是技能
Skills:
- hna-hasbuff{key="buff"}
- hna-damage{amount=100} @target

相关文档

HN 系列插件文档