2026-05-26 14:05
尝试写了个狂暴战HEKILI脚本,还请大家看看是否有什么逻辑错误
-- MoP 5.4.8 狂暴战 | 自定义优先级完整版
-- 核心优先级:巨人打击 > 嗜血 > 风暴之锤 > 怒击 > 斩杀 > 狂风打击
-- 规则:
-- 1. 鲁莽/颅骨战旗 手动开启,插件不再提示
-- 2. 监控绞肉机时长,临近断档主动补旋风斩维持层数
-- 3. 血脉喷张触发狂风打击,不提升优先级
-- 4. 巨人内怒气>50 可用英勇;巨人外怒气≥80 且无可用狂风打击 才用英勇
-- 5. 无自动姿态、无狂暴之怒、无浴血、无血性狂暴;冲锋仅判断怒气<70,无视距离
local I = Hekili.Information
local PS = Hekili.PrioritySystems
PS:Register("MoP_Fury_Final_Rotation","狂暴战-最终定制循环",function()
local acts = {}
local p = I.player
local t = I.target
local tarCount = I.targetCount
local rage = p:Power("怒气")
local meatCleaver = p:BuffStacks("绞肉机")
local meatCleaverRemain = p:BuffRemaining("绞肉机") -- 绞肉机剩余时间
local execPhase = t:HealthPercent() < 20
local hasFreeWindSlash = p:HasBuff("血脉喷张")
-- 1. 全局最高优先级:巨人打击
if p:CooldownRemaining("巨人打击") <= 0 then
acts:Add("/cast 巨人打击", 98)
end
-- 2. 巨人打击持续阶段
if t:HasDebuff("巨人打击") then
-- 嗜血(核心4.5s CD)
if p:CooldownRemaining("嗜血") <= 0 then
acts:Add("/cast 嗜血", 97)
end
-- 风暴之锤
if p:CooldownRemaining("风暴之锤") <= 0 then
acts:Add("/cast 风暴之锤", 96)
end
-- 怒击
if p:Charges("怒击") > 0 then
acts:Add("/cast 怒击", 95)
end
-- 斩杀(20%血量以下)
if execPhase and p:CooldownRemaining("斩杀") <= 0 then
acts:Add("/cast 斩杀", 94)
end
-- 狂风打击(血脉喷张触发,不提升优先级)
if hasFreeWindSlash and p:CooldownRemaining("狂风打击") <= 0 then
acts:Add("/cast 狂风打击", 93)
end
-- 巨人内泄怒:怒气>50 使用英勇打击
if rage > 50 then
acts:Add("/cast 英勇打击", 92)
end
end
-- 3. 巨人打击外阶段
if not t:HasDebuff("巨人打击") then
-- 嗜血(核心4.5s CD)
if p:CooldownRemaining("嗜血") <= 0 then
acts:Add("/cast 嗜血", 91)
end
-- 风暴之锤
if p:CooldownRemaining("风暴之锤") <= 0 then
acts:Add("/cast 风暴之锤", 90)
end
-- 怒击
if p:Charges("怒击") > 0 then
acts:Add("/cast 怒击", 89)
end
-- 斩杀(20%血量以下)
if execPhase and p:CooldownRemaining("斩杀") <= 0 then
acts:Add("/cast 斩杀", 88)
end
-- 狂风打击(血脉喷张触发,不提升优先级)
if hasFreeWindSlash and p:CooldownRemaining("狂风打击") <= 0 then
acts:Add("/cast 狂风打击", 87)
end
-- 巨人外泄怒:怒气≥80 + 无可用狂风打击,才使用英勇打击
local noWindSlash = not (hasFreeWindSlash and p:CooldownRemaining("狂风打击") <= 0)
if rage >= 80 and noWindSlash then
acts:Add("/cast 英勇打击", 86)
end
end
-- 4. AOE循环:叠层 + 维持绞肉机(剩余≤3秒主动补旋风斩防断档)
if tarCount >= 2 and p:HasBuff("激怒") then
-- 未满3层 优先叠层
if meatCleaver < 3 and p:CooldownRemaining("旋风斩") <= 0 then
acts:Add("/cast 旋风斩", 85)
end
-- 绞肉机即将断档(剩余≤3秒),强制补旋风斩维持层数
if meatCleaver >= 1 and meatCleaverRemain <= 3 and p:CooldownRemaining("旋风斩") <= 0 then
acts:Add("/cast 旋风斩", 84)
end
-- 2层及以上绞肉机 释放怒击
if p:Charges("怒击") > 0 and meatCleaver >= 2 then
acts:Add("/cast 怒击", meatCleaver >= 3 and 83 or 82)
end
-- 满3层、无怒击、高怒 顺劈斩泄怒
if meatCleaver >= 3 and p:Charges("怒击") == 0 and rage >= 80 and p:CooldownRemaining("嗜血") > 0 then
acts:Add("/cast 顺劈斩", 81)
end
end
-- 5. 冲锋/拦截:仅怒气<70,不判断距离
if rage < 70 then
if not p:InCombat() and p:CooldownRemaining("冲锋") <= 0 then
acts:Add("/cast 冲锋", 60)
end
if p:InCombat() and p:CooldownRemaining("拦截") <= 0 then
acts:Add("/cast 拦截", 60)
end
end
return acts
end)
-- 核心优先级:巨人打击 > 嗜血 > 风暴之锤 > 怒击 > 斩杀 > 狂风打击
-- 规则:
-- 1. 鲁莽/颅骨战旗 手动开启,插件不再提示
-- 2. 监控绞肉机时长,临近断档主动补旋风斩维持层数
-- 3. 血脉喷张触发狂风打击,不提升优先级
-- 4. 巨人内怒气>50 可用英勇;巨人外怒气≥80 且无可用狂风打击 才用英勇
-- 5. 无自动姿态、无狂暴之怒、无浴血、无血性狂暴;冲锋仅判断怒气<70,无视距离
local I = Hekili.Information
local PS = Hekili.PrioritySystems
PS:Register("MoP_Fury_Final_Rotation","狂暴战-最终定制循环",function()
local acts = {}
local p = I.player
local t = I.target
local tarCount = I.targetCount
local rage = p:Power("怒气")
local meatCleaver = p:BuffStacks("绞肉机")
local meatCleaverRemain = p:BuffRemaining("绞肉机") -- 绞肉机剩余时间
local execPhase = t:HealthPercent() < 20
local hasFreeWindSlash = p:HasBuff("血脉喷张")
-- 1. 全局最高优先级:巨人打击
if p:CooldownRemaining("巨人打击") <= 0 then
acts:Add("/cast 巨人打击", 98)
end
-- 2. 巨人打击持续阶段
if t:HasDebuff("巨人打击") then
-- 嗜血(核心4.5s CD)
if p:CooldownRemaining("嗜血") <= 0 then
acts:Add("/cast 嗜血", 97)
end
-- 风暴之锤
if p:CooldownRemaining("风暴之锤") <= 0 then
acts:Add("/cast 风暴之锤", 96)
end
-- 怒击
if p:Charges("怒击") > 0 then
acts:Add("/cast 怒击", 95)
end
-- 斩杀(20%血量以下)
if execPhase and p:CooldownRemaining("斩杀") <= 0 then
acts:Add("/cast 斩杀", 94)
end
-- 狂风打击(血脉喷张触发,不提升优先级)
if hasFreeWindSlash and p:CooldownRemaining("狂风打击") <= 0 then
acts:Add("/cast 狂风打击", 93)
end
-- 巨人内泄怒:怒气>50 使用英勇打击
if rage > 50 then
acts:Add("/cast 英勇打击", 92)
end
end
-- 3. 巨人打击外阶段
if not t:HasDebuff("巨人打击") then
-- 嗜血(核心4.5s CD)
if p:CooldownRemaining("嗜血") <= 0 then
acts:Add("/cast 嗜血", 91)
end
-- 风暴之锤
if p:CooldownRemaining("风暴之锤") <= 0 then
acts:Add("/cast 风暴之锤", 90)
end
-- 怒击
if p:Charges("怒击") > 0 then
acts:Add("/cast 怒击", 89)
end
-- 斩杀(20%血量以下)
if execPhase and p:CooldownRemaining("斩杀") <= 0 then
acts:Add("/cast 斩杀", 88)
end
-- 狂风打击(血脉喷张触发,不提升优先级)
if hasFreeWindSlash and p:CooldownRemaining("狂风打击") <= 0 then
acts:Add("/cast 狂风打击", 87)
end
-- 巨人外泄怒:怒气≥80 + 无可用狂风打击,才使用英勇打击
local noWindSlash = not (hasFreeWindSlash and p:CooldownRemaining("狂风打击") <= 0)
if rage >= 80 and noWindSlash then
acts:Add("/cast 英勇打击", 86)
end
end
-- 4. AOE循环:叠层 + 维持绞肉机(剩余≤3秒主动补旋风斩防断档)
if tarCount >= 2 and p:HasBuff("激怒") then
-- 未满3层 优先叠层
if meatCleaver < 3 and p:CooldownRemaining("旋风斩") <= 0 then
acts:Add("/cast 旋风斩", 85)
end
-- 绞肉机即将断档(剩余≤3秒),强制补旋风斩维持层数
if meatCleaver >= 1 and meatCleaverRemain <= 3 and p:CooldownRemaining("旋风斩") <= 0 then
acts:Add("/cast 旋风斩", 84)
end
-- 2层及以上绞肉机 释放怒击
if p:Charges("怒击") > 0 and meatCleaver >= 2 then
acts:Add("/cast 怒击", meatCleaver >= 3 and 83 or 82)
end
-- 满3层、无怒击、高怒 顺劈斩泄怒
if meatCleaver >= 3 and p:Charges("怒击") == 0 and rage >= 80 and p:CooldownRemaining("嗜血") > 0 then
acts:Add("/cast 顺劈斩", 81)
end
end
-- 5. 冲锋/拦截:仅怒气<70,不判断距离
if rage < 70 then
if not p:InCombat() and p:CooldownRemaining("冲锋") <= 0 then
acts:Add("/cast 冲锋", 60)
end
if p:InCombat() and p:CooldownRemaining("拦截") <= 0 then
acts:Add("/cast 拦截", 60)
end
end
return acts
end)
已编辑
![[a2:不明觉厉]](https://img4.nga.cn/ngabbs/post/smile/a2_36.png)