主题
概述
hna-hasbuff 用于判断目标是否拥有指定的 Buff。
⚠️ 重要: 这是一个条件(Condition),必须在 Conditions 字段或使用内联条件语法 ?condition,不能直接写在 Skills 中!
基本语法
方式 1:技能级条件
yaml
SkillName:
Conditions:
- hna-hasbuff{参数} true/false
Skills:
- ...方式 2:内联条件(推荐)
yaml
SkillName:
Skills:
- 技能行 @target ?hna-hasbuff{参数}参数列表
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
key | 字符串 | - | Buff 的 key(必填) |
level | 字符串 | - | 等级判断(可选) |
remaining | 字符串 | - | 剩余时间判断(可选) |
基本示例
使用技能级条件
yaml
# 检查目标是否有"重伤" Buff
CheckHeavyWound:
Conditions:
- hna-hasbuff{key="重伤"} true
Skills:
- hna-damage{amount=200} @target
- message{m="&c重伤目标受到额外伤害!"} @target
# 检查目标是否有"力量提升" Buff
CheckStrengthBuff:
Conditions:
- hna-hasbuff{key="力量提升"} true
Skills:
- message{m="&a目标拥有力量提升!"} @target使用内联条件(推荐)
yaml
SmartAttack:
Skills:
# 如果目标有重伤,造成 200 伤害
- hna-damage{amount=200} @target ?hna-hasbuff{key="重伤"}
# 如果目标没有重伤,造成 100 伤害
- hna-damage{amount=100} @target ?!hna-hasbuff{key="重伤"}等级判断
可以判断 Buff 的等级:
yaml
# 检查"重伤" Buff 等级是否 >= 2
CheckHeavyLevel:
Conditions:
- hna-hasbuff{key="重伤";level=>=2} true
Skills:
- hna-damage{amount=300} @target
# 或使用内联条件
SmartSkill:
Skills:
- hna-damage{amount=300} @target ?hna-hasbuff{key="重伤";level=>=2}
- hna-damage{amount=150} @target ?hna-hasbuff{key="力量提升";level==3}剩余时间判断
可以判断 Buff 的剩余时间(单位:tick):
yaml
# 检查"重伤" Buff 剩余时间是否 > 20 tick
CheckBuffTime:
Conditions:
- hna-hasbuff{key="重伤";remaining=>20} true
Skills:
- message{m="&c重伤还有很长时间!"} @target
# 或使用内联条件
RefreshBuff:
Skills:
# 如果 Buff 剩余时间 <= 40 tick,刷新它
- hna-buff{key="护体";time=100} @target ?hna-hasbuff{key="护体";remaining=<=40}实际应用场景
场景 1:条件性伤害
yaml
ConditionalDamage:
Skills:
# 如果目标有"重伤" Buff,造成额外伤害
- hna-damage{amount=200} @target ?hna-hasbuff{key="重伤"}
- message{m="&c重伤目标受到额外伤害!"} @target ?hna-hasbuff{key="重伤"}
# 如果目标没有"重伤" Buff,造成普通伤害
- hna-damage{amount=100} @target ?!hna-hasbuff{key="重伤"}场景 2:Buff 刷新
yaml
BuffRefresh:
Skills:
# 如果目标已有"力量提升" Buff,刷新时长
- hna-buff{key="力量提升";time=200;level=1} @target ?hna-hasbuff{key="力量提升"}
- message{m="&a力量提升已刷新!"} @target ?hna-hasbuff{key="力量提升"}
# 如果目标没有"力量提升" Buff,施加新的
- hna-buff{key="力量提升";time=100;level=1} @target ?!hna-hasbuff{key="力量提升"}
- message{m="&a获得力量提升!"} @target ?!hna-hasbuff{key="力量提升"}场景 3:Buff 叠加
yaml
StackBuff:
Skills:
# 如果目标有"连击" Buff 且等级 < 5,提升等级
- hna-buff{key="连击";time=100;level=2} @target ?hna-hasbuff{key="连击";level=<5}
# 如果目标有"连击" Buff 且等级 >= 5,触发特殊效果
- hna-damage{amount=500} @target ?hna-hasbuff{key="连击";level=>=5}
- hna-removebuff{key="连击"} @target ?hna-hasbuff{key="连击";level=>=5}
- message{m="&c连击爆发!"} @target ?hna-hasbuff{key="连击";level=>=5}场景 4:Buff 驱散
yaml
Dispel:
Skills:
# 检查并驱散增益 Buff
- hna-removebuff{key="力量提升"} @target ?hna-hasbuff{key="力量提升"}
- message{m="&e力量提升被驱散!"} @target ?hna-hasbuff{key="力量提升"}
- hna-removebuff{key="护体"} @target ?hna-hasbuff{key="护体"}
- message{m="&e护体被驱散!"} @target ?hna-hasbuff{key="护体"}场景 5:Buff 时间判断
yaml
BuffTimeCheck:
Skills:
# 如果"重伤" Buff 剩余时间 <= 20 tick,延长时间
- hna-buff{key="重伤";time=100;level=1} @target ?hna-hasbuff{key="重伤";remaining=<=20}
- message{m="&c重伤时间延长!"} @target ?hna-hasbuff{key="重伤";remaining=<=20}完整技能示例
yaml
ComboSystem:
Skills:
# 没有连击,施加 1 级连击
- hna-buff{key="连击";time=60;level=1} @Self ?!hna-hasbuff{key="连击"}
- hna-damage{amount=100} @target ?!hna-hasbuff{key="连击"}
- message{m="&e连击 x1"} @Self ?!hna-hasbuff{key="连击"}
# 有连击且等级 < 3
- hna-buff{key="连击";time=60;level=2} @Self ?hna-hasbuff{key="连击";level=<3}
- hna-damage{amount=150} @target ?hna-hasbuff{key="连击";level=<3}
- message{m="&e连击 x2"} @Self ?hna-hasbuff{key="连击";level=<3}
# 有连击且等级 >= 3
- hna-damage{amount=300} @target ?hna-hasbuff{key="连击";level=>=3}
- hna-removebuff{key="连击"} @Self ?hna-hasbuff{key="连击";level=>=3}
- message{m="&c连击终结!"} @Self ?hna-hasbuff{key="连击";level=>=3}
- effect:particles{p=EXPLOSION_LARGE;a=20} @target ?hna-hasbuff{key="连击";level=>=3}注意事项
- 这是条件,不是技能:必须在
Conditions字段或使用内联条件?condition key参数必须与目标身上的 Buff key 完全匹配- 不写
key参数时条件永远为 false level和remaining参数可选- 等级和时间判断支持
>=,>,<=,<,==,!=操作符 - 需要明确的目标选择器
- 推荐使用内联条件:代码更简洁,逻辑更清晰
内联条件语法
?condition- 条件为真时执行?!condition- 条件为假时执行(注意感叹号)?condition1 ?condition2- 多个条件都为真时执行(AND)
与其他条件的区别
| 条件 | 用途 |
|---|---|
hna-hasbuff | 判断是否有某个 Buff |
hna-hasot | 判断是否有某个 周期效果 |
hna-attribute | 判断任意属性的值 |
调试方法
text
/hnattr buffs
/hnattr source