fix: defer UnitClass + guard InterfaceOptions for CoA; port Textures/*.tga to BLP (raw3)
release / release (push) Successful in 3s

This commit is contained in:
2026-05-29 10:43:54 +02:00
parent db09f308e2
commit 914658af36
23 changed files with 63 additions and 54 deletions
+4 -1
View File
@@ -1801,8 +1801,11 @@ function PawnInterfaceOptionsFrame_OnLoad()
-- NOTE: If you need anything from PawnCommon in the future, you should call PawnInitializeOptions first. -- NOTE: If you need anything from PawnCommon in the future, you should call PawnInitializeOptions first.
-- Register the Interface Options page. -- Register the Interface Options page.
-- CoA/3.3.5a: InterfaceOptions_AddCategory is a retail-only global; guard it.
PawnInterfaceOptionsFrame.name = "Pawn" PawnInterfaceOptionsFrame.name = "Pawn"
InterfaceOptions_AddCategory(PawnInterfaceOptionsFrame) if InterfaceOptions_AddCategory then
InterfaceOptions_AddCategory(PawnInterfaceOptionsFrame)
end
-- Update the version display. -- Update the version display.
local Version = GetAddOnMetadata("Pawn", "Version") local Version = GetAddOnMetadata("Pawn", "Version")
if Version then if Version then
+2 -1
View File
@@ -1405,7 +1405,8 @@
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="40" y="-155" /></Offset></Anchor></Anchors> <Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="40" y="-155" /></Offset></Anchor></Anchors>
<Scripts> <Scripts>
<OnClick> <OnClick>
InterfaceOptionsFrameOkay_OnClick() -- CoA/3.3.5a: InterfaceOptionsFrameOkay_OnClick is retail-only; guard it.
if InterfaceOptionsFrameOkay_OnClick then InterfaceOptionsFrameOkay_OnClick() end
HideUIPanel(GameMenuFrame) HideUIPanel(GameMenuFrame)
PawnUIShow() PawnUIShow()
</OnClick> </OnClick>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+57 -52
View File
@@ -420,62 +420,67 @@ PawnAddPluginScale(
if not PawnWowheadScaleProviderOptions then PawnWowheadScaleProviderOptions = { } end if not PawnWowheadScaleProviderOptions then PawnWowheadScaleProviderOptions = { } end
if not PawnWowheadScaleProviderOptions.LastAdded then PawnWowheadScaleProviderOptions.LastAdded = 0 end if not PawnWowheadScaleProviderOptions.LastAdded then PawnWowheadScaleProviderOptions.LastAdded = 0 end
local _, Class = UnitClass("player") -- CoA/3.3.5a: UnitClass("player") returns nil at file-load and even at VARIABLES_LOADED on this client.
if PawnWowheadScaleProviderOptions.LastAdded < 1 then -- Defer the class-based auto-enable one frame so the unit is fully initialised.
-- Enable round one of scales based on the player's class. local _PawnWowheadLastAdded = PawnWowheadScaleProviderOptions.LastAdded
if Class == "WARRIOR" then C_Timer.After(0, function()
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarriorFury"), true) local _, Class = UnitClass("player")
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarriorTank"), true) if _PawnWowheadLastAdded < 1 then
elseif Class == "PALADIN" then -- Enable round one of scales based on the player's class.
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PaladinHoly"), true) if Class == "WARRIOR" then
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PaladinTank"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarriorFury"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PaladinRetribution"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarriorTank"), true)
elseif Class == "HUNTER" then elseif Class == "PALADIN" then
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "HunterBeastMastery"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PaladinHoly"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "HunterMarksman"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PaladinTank"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "HunterSurvival"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PaladinRetribution"), true)
elseif Class == "ROGUE" then elseif Class == "HUNTER" then
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "RogueAssassination"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "HunterBeastMastery"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "RogueCombat"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "HunterMarksman"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "RogueSubtlety"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "HunterSurvival"), true)
elseif Class == "PRIEST" then elseif Class == "ROGUE" then
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PriestDiscipline"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "RogueAssassination"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PriestHoly"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "RogueCombat"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PriestShadow"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "RogueSubtlety"), true)
elseif Class == "DEATHKNIGHT" then elseif Class == "PRIEST" then
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightBloodDps"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PriestDiscipline"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightBloodTank"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PriestHoly"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightFrostDps"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PriestShadow"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightFrostTank"), true) elseif Class == "DEATHKNIGHT" then
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightUnholyDps"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightBloodDps"), true)
elseif Class == "SHAMAN" then PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightBloodTank"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "ShamanElemental"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightFrostDps"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "ShamanEnhancement"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightFrostTank"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "ShamanRestoration"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightUnholyDps"), true)
elseif Class == "MAGE" then elseif Class == "SHAMAN" then
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "MageArcane"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "ShamanElemental"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "MageFire"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "ShamanEnhancement"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "MageFrost"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "ShamanRestoration"), true)
elseif Class == "WARLOCK" then elseif Class == "MAGE" then
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarlockAffliction"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "MageArcane"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarlockDemonology"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "MageFire"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarlockDestruction"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "MageFrost"), true)
elseif Class == "DRUID" then elseif Class == "WARLOCK" then
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DruidBalance"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarlockAffliction"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DruidFeralDps"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarlockDemonology"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DruidFeralTank"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarlockDestruction"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DruidRestoration"), true) elseif Class == "DRUID" then
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DruidBalance"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DruidFeralDps"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DruidFeralTank"), true)
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DruidRestoration"), true)
end
end end
end
if PawnWowheadScaleProviderOptions.LastAdded < 2 then if _PawnWowheadLastAdded < 2 then
if Class == "WARRIOR" then if Class == "WARRIOR" then
PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarriorArms"), true) PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarriorArms"), true)
end
end end
end
-- Don't reenable those scales again after the user has disabled them previously. -- Don't reenable those scales again after the user has disabled them previously.
PawnWowheadScaleProviderOptions.LastAdded = 2 PawnWowheadScaleProviderOptions.LastAdded = 2
end)
-- After this function terminates there's no need for it anymore, so cause it to self-destruct to save memory. -- After this function terminates there's no need for it anymore, so cause it to self-destruct to save memory.
PawnWowheadScaleProvider_AddScales = nil PawnWowheadScaleProvider_AddScales = nil