Add priest shadowform auto-paging, sharing the druid-stealth flag

Mirror the druid-stealth page switch for priests: swap to the auto page
(8) while in Shadowform, back to the default page when it drops. Driven
by UPDATE_SHAPESHIFT_FORM (form ID 28), which fully covers shadowform on
its own -- no prowl-style stealth substate to chase.

Fold the new state into the existing prowl machinery instead of
duplicating it: prowl/shadowform are mutually exclusive by class, so one
shared `formpaging` flag and one page constant serve both, and the
OnUpdate switch collapses to a single class-gated block.
This commit is contained in:
Brues
2026-07-20 02:40:37 -05:00
parent 3deddf2b08
commit 5fae0bd459
4 changed files with 32 additions and 15 deletions
+29 -15
View File
@@ -853,16 +853,20 @@ pfUI:RegisterModule("actionbar", function ()
end
end
local cat, stealth
local inCatForm = nil
local prowlActive = nil
-- Cat Form ID per vanilla 1.12 SpellShapeshiftForm.dbc.
-- Form IDs per vanilla 1.12 SpellShapeshiftForm.dbc.
local CAT_FORM = 1
local SHADOWFORM = 28
local function HasCatForm()
return GetShapeshiftFormID() == CAT_FORM and true or nil
end
local function InShadowform()
return GetShapeshiftFormID() == SHADOWFORM and true or nil
end
local function FullScan()
if class ~= "DRUID" then return nil end
inCatForm = HasCatForm()
@@ -872,7 +876,7 @@ pfUI:RegisterModule("actionbar", function ()
-- pagemaster / meta page switch
do
local prowl, shift, ctrl, alt, default = 8, 6, 5, 3, 1
local formpage, shift, ctrl, alt, default = 8, 6, 5, 3, 1
-- set temporary pagemaster bindings keybinds
if C.bars.pagemaster == "1" then
@@ -890,8 +894,10 @@ pfUI:RegisterModule("actionbar", function ()
end)
end
-- setup page switch frame
local prowling = nil
-- setup page switch frame. `formpaging` is the shared "auto-page is
-- active" flag; druid prowl and priest shadowform each drive it, and
-- no character is ever both, so one flag covers both features.
local formpaging = nil
local pageswitch = CreateFrame("Frame", "pfActionBarPageSwitch", UIParent)
pageswitch:RegisterEvent("PLAYER_ENTERING_WORLD")
pageswitch:RegisterEvent("UPDATE_SHAPESHIFT_FORM")
@@ -905,10 +911,17 @@ pfUI:RegisterModule("actionbar", function ()
return
end
if class == "PRIEST" then
if event == "UPDATE_SHAPESHIFT_FORM" or event == "PLAYER_ENTERING_WORLD" then
formpaging = InShadowform()
end
return
end
if class ~= "DRUID" then return end
if event == "PLAYER_ENTERING_WORLD" then
prowling = FullScan()
formpaging = FullScan()
return
end
@@ -917,7 +930,7 @@ pfUI:RegisterModule("actionbar", function ()
inCatForm = HasCatForm()
if not inCatForm then
prowlActive = nil
prowling = nil
formpaging = nil
end
return
end
@@ -927,10 +940,10 @@ pfUI:RegisterModule("actionbar", function ()
if inCatForm then
if IsStealthed() then
prowlActive = true
prowling = true
formpaging = true
else
prowlActive = nil
prowling = nil
formpaging = nil
end
end
end)
@@ -946,7 +959,7 @@ pfUI:RegisterModule("actionbar", function ()
if PROWL_IDS[spellId] then
inCatForm = true
prowlActive = true
prowling = true
formpaging = true
end
end
pageswitch:SetScript("OnUpdate", function()
@@ -964,11 +977,12 @@ pfUI:RegisterModule("actionbar", function ()
SwitchBar(default)
end
-- switch actionbar page if druid stealth is detected
if C.bars.druidstealth == "1" then
if prowling and _G.CURRENT_ACTIONBAR_PAGE == 1 then
SwitchBar(prowl)
elseif not prowling and _G.CURRENT_ACTIONBAR_PAGE == 8 then
-- switch actionbar page while druid stealth / priest shadowform is active
if (class == "DRUID" and C.bars.druidstealth == "1")
or (class == "PRIEST" and C.bars.priestshadow == "1") then
if formpaging and _G.CURRENT_ACTIONBAR_PAGE == 1 then
SwitchBar(formpage)
elseif not formpaging and _G.CURRENT_ACTIONBAR_PAGE == 8 then
SwitchBar(default)
end
end