mirror of
https://github.com/brues-code/pfUI.git
synced 2026-09-22 15:46:56 +00:00
46 lines
1.7 KiB
Lua
46 lines
1.7 KiB
Lua
pfUI:RegisterModule("hunterbar", "vanilla", function ()
|
|
local _,class = UnitClass("player")
|
|
if class ~= "HUNTER" or C.bars.hunterbar == "0" then return end
|
|
|
|
-- Wing Clip (any rank) and Arcane Shot (any rank) spell IDs.
|
|
-- IsSpellInRange(spellId) works with any spell ID via Nampower,
|
|
-- no actionbar slot needed.
|
|
local WINGCLIP_ID = 2974 -- melee range indicator (~5 yd)
|
|
local ARCANESHOT_ID = 3044 -- ranged range indicator (~35 yd)
|
|
|
|
-- Hysteresis: only swap TO ranged bar when Arcane Shot is actually in range.
|
|
-- Only swap BACK to melee bar when Wing Clip is actually in range.
|
|
-- This prevents rapid bar-flipping in the transition zone.
|
|
|
|
pfUI.hunterbar = CreateFrame("Frame", "pfHunterBar", UIParent)
|
|
|
|
-- track which page we last forced so we don't spam ChangeActionBarPage()
|
|
pfUI.hunterbar.lastPage = nil
|
|
|
|
pfUI.hunterbar:SetScript("OnUpdate", function()
|
|
-- only act when there is a live, attackable target
|
|
if not UnitExists("target") or not UnitCanAttack("player", "target") then
|
|
return
|
|
end
|
|
|
|
local wingclipInRange = IsSpellInRange(WINGCLIP_ID, "target")
|
|
local arcaneshotInRange = IsSpellInRange(ARCANESHOT_ID, "target")
|
|
|
|
-- swap to ranged bar: out of melee range AND arcane shot (8yd) in range
|
|
if wingclipInRange == 0 and arcaneshotInRange == 1 then
|
|
if this.lastPage ~= 2 then
|
|
this.lastPage = 2
|
|
_G.CURRENT_ACTIONBAR_PAGE = 2
|
|
ChangeActionBarPage()
|
|
end
|
|
|
|
-- swap to melee bar: in melee range AND arcane shot (8yd) out of range
|
|
elseif wingclipInRange == 1 and arcaneshotInRange == 0 then
|
|
if this.lastPage ~= 1 then
|
|
this.lastPage = 1
|
|
_G.CURRENT_ACTIONBAR_PAGE = 1
|
|
ChangeActionBarPage()
|
|
end
|
|
end
|
|
end)
|
|
end) |