diff --git a/Pawn/PawnUI.lua b/Pawn/PawnUI.lua
index ad66dff..a2f307e 100644
--- a/Pawn/PawnUI.lua
+++ b/Pawn/PawnUI.lua
@@ -1801,8 +1801,11 @@ function PawnInterfaceOptionsFrame_OnLoad()
-- NOTE: If you need anything from PawnCommon in the future, you should call PawnInitializeOptions first.
-- Register the Interface Options page.
+ -- CoA/3.3.5a: InterfaceOptions_AddCategory is a retail-only global; guard it.
PawnInterfaceOptionsFrame.name = "Pawn"
- InterfaceOptions_AddCategory(PawnInterfaceOptionsFrame)
+ if InterfaceOptions_AddCategory then
+ InterfaceOptions_AddCategory(PawnInterfaceOptionsFrame)
+ end
-- Update the version display.
local Version = GetAddOnMetadata("Pawn", "Version")
if Version then
diff --git a/Pawn/PawnUI.xml b/Pawn/PawnUI.xml
index c3b5422..bedff5e 100644
--- a/Pawn/PawnUI.xml
+++ b/Pawn/PawnUI.xml
@@ -1405,7 +1405,8 @@
- InterfaceOptionsFrameOkay_OnClick()
+ -- CoA/3.3.5a: InterfaceOptionsFrameOkay_OnClick is retail-only; guard it.
+ if InterfaceOptionsFrameOkay_OnClick then InterfaceOptionsFrameOkay_OnClick() end
HideUIPanel(GameMenuFrame)
PawnUIShow()
diff --git a/Pawn/Textures/CompareBanner.blp b/Pawn/Textures/CompareBanner.blp
new file mode 100644
index 0000000..d62e886
Binary files /dev/null and b/Pawn/Textures/CompareBanner.blp differ
diff --git a/Pawn/Textures/CompareBanner.tga b/Pawn/Textures/CompareBanner.tga
deleted file mode 100644
index 32879db..0000000
Binary files a/Pawn/Textures/CompareBanner.tga and /dev/null differ
diff --git a/Pawn/Textures/CompareBar.blp b/Pawn/Textures/CompareBar.blp
new file mode 100644
index 0000000..fefef4a
Binary files /dev/null and b/Pawn/Textures/CompareBar.blp differ
diff --git a/Pawn/Textures/CompareBar.tga b/Pawn/Textures/CompareBar.tga
deleted file mode 100644
index 91b08d5..0000000
Binary files a/Pawn/Textures/CompareBar.tga and /dev/null differ
diff --git a/Pawn/Textures/CompareBarLeft.blp b/Pawn/Textures/CompareBarLeft.blp
new file mode 100644
index 0000000..1935456
Binary files /dev/null and b/Pawn/Textures/CompareBarLeft.blp differ
diff --git a/Pawn/Textures/CompareBarLeft.tga b/Pawn/Textures/CompareBarLeft.tga
deleted file mode 100644
index cdd63d0..0000000
Binary files a/Pawn/Textures/CompareBarLeft.tga and /dev/null differ
diff --git a/Pawn/Textures/CompareBarRight.blp b/Pawn/Textures/CompareBarRight.blp
new file mode 100644
index 0000000..665e4f3
Binary files /dev/null and b/Pawn/Textures/CompareBarRight.blp differ
diff --git a/Pawn/Textures/CompareBarRight.tga b/Pawn/Textures/CompareBarRight.tga
deleted file mode 100644
index f98eadb..0000000
Binary files a/Pawn/Textures/CompareBarRight.tga and /dev/null differ
diff --git a/Pawn/Textures/HorizontalBar.blp b/Pawn/Textures/HorizontalBar.blp
new file mode 100644
index 0000000..d36b3ba
Binary files /dev/null and b/Pawn/Textures/HorizontalBar.blp differ
diff --git a/Pawn/Textures/HorizontalBar.tga b/Pawn/Textures/HorizontalBar.tga
deleted file mode 100644
index c030279..0000000
Binary files a/Pawn/Textures/HorizontalBar.tga and /dev/null differ
diff --git a/Pawn/Textures/PawnButton.blp b/Pawn/Textures/PawnButton.blp
new file mode 100644
index 0000000..fe2d6b3
Binary files /dev/null and b/Pawn/Textures/PawnButton.blp differ
diff --git a/Pawn/Textures/PawnButton.tga b/Pawn/Textures/PawnButton.tga
deleted file mode 100644
index e1d5596..0000000
Binary files a/Pawn/Textures/PawnButton.tga and /dev/null differ
diff --git a/Pawn/Textures/PawnLogo.blp b/Pawn/Textures/PawnLogo.blp
new file mode 100644
index 0000000..aeaa7a1
Binary files /dev/null and b/Pawn/Textures/PawnLogo.blp differ
diff --git a/Pawn/Textures/PawnLogo.tga b/Pawn/Textures/PawnLogo.tga
deleted file mode 100644
index 4936d80..0000000
Binary files a/Pawn/Textures/PawnLogo.tga and /dev/null differ
diff --git a/Pawn/Textures/PawnUIHeader.blp b/Pawn/Textures/PawnUIHeader.blp
new file mode 100644
index 0000000..c4b3d3f
Binary files /dev/null and b/Pawn/Textures/PawnUIHeader.blp differ
diff --git a/Pawn/Textures/PawnUIHeader.tga b/Pawn/Textures/PawnUIHeader.tga
deleted file mode 100644
index b9b10fd..0000000
Binary files a/Pawn/Textures/PawnUIHeader.tga and /dev/null differ
diff --git a/Pawn/Textures/Question.blp b/Pawn/Textures/Question.blp
new file mode 100644
index 0000000..2ac3ff9
Binary files /dev/null and b/Pawn/Textures/Question.blp differ
diff --git a/Pawn/Textures/Question.tga b/Pawn/Textures/Question.tga
deleted file mode 100644
index b6903f1..0000000
Binary files a/Pawn/Textures/Question.tga and /dev/null differ
diff --git a/Pawn/Textures/UpgradeArrowBig.blp b/Pawn/Textures/UpgradeArrowBig.blp
new file mode 100644
index 0000000..4c4567b
Binary files /dev/null and b/Pawn/Textures/UpgradeArrowBig.blp differ
diff --git a/Pawn/Textures/UpgradeArrowBig.tga b/Pawn/Textures/UpgradeArrowBig.tga
deleted file mode 100644
index 641658d..0000000
Binary files a/Pawn/Textures/UpgradeArrowBig.tga and /dev/null differ
diff --git a/Pawn/Wowhead.lua b/Pawn/Wowhead.lua
index d6a3559..d6c2e4c 100644
--- a/Pawn/Wowhead.lua
+++ b/Pawn/Wowhead.lua
@@ -420,62 +420,67 @@ PawnAddPluginScale(
if not PawnWowheadScaleProviderOptions then PawnWowheadScaleProviderOptions = { } end
if not PawnWowheadScaleProviderOptions.LastAdded then PawnWowheadScaleProviderOptions.LastAdded = 0 end
-local _, Class = UnitClass("player")
-if PawnWowheadScaleProviderOptions.LastAdded < 1 then
- -- Enable round one of scales based on the player's class.
- if Class == "WARRIOR" then
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarriorFury"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarriorTank"), true)
- elseif Class == "PALADIN" then
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PaladinHoly"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PaladinTank"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PaladinRetribution"), true)
- elseif Class == "HUNTER" then
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "HunterBeastMastery"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "HunterMarksman"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "HunterSurvival"), true)
- elseif Class == "ROGUE" then
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "RogueAssassination"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "RogueCombat"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "RogueSubtlety"), true)
- elseif Class == "PRIEST" then
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PriestDiscipline"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PriestHoly"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PriestShadow"), true)
- elseif Class == "DEATHKNIGHT" then
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightBloodDps"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightBloodTank"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightFrostDps"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightFrostTank"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightUnholyDps"), true)
- elseif Class == "SHAMAN" then
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "ShamanElemental"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "ShamanEnhancement"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "ShamanRestoration"), true)
- elseif Class == "MAGE" then
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "MageArcane"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "MageFire"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "MageFrost"), true)
- elseif Class == "WARLOCK" then
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarlockAffliction"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarlockDemonology"), true)
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarlockDestruction"), 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)
+-- CoA/3.3.5a: UnitClass("player") returns nil at file-load and even at VARIABLES_LOADED on this client.
+-- Defer the class-based auto-enable one frame so the unit is fully initialised.
+local _PawnWowheadLastAdded = PawnWowheadScaleProviderOptions.LastAdded
+C_Timer.After(0, function()
+ local _, Class = UnitClass("player")
+ if _PawnWowheadLastAdded < 1 then
+ -- Enable round one of scales based on the player's class.
+ if Class == "WARRIOR" then
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarriorFury"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarriorTank"), true)
+ elseif Class == "PALADIN" then
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PaladinHoly"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PaladinTank"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PaladinRetribution"), true)
+ elseif Class == "HUNTER" then
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "HunterBeastMastery"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "HunterMarksman"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "HunterSurvival"), true)
+ elseif Class == "ROGUE" then
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "RogueAssassination"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "RogueCombat"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "RogueSubtlety"), true)
+ elseif Class == "PRIEST" then
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PriestDiscipline"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PriestHoly"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "PriestShadow"), true)
+ elseif Class == "DEATHKNIGHT" then
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightBloodDps"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightBloodTank"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightFrostDps"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightFrostTank"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "DeathKnightUnholyDps"), true)
+ elseif Class == "SHAMAN" then
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "ShamanElemental"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "ShamanEnhancement"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "ShamanRestoration"), true)
+ elseif Class == "MAGE" then
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "MageArcane"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "MageFire"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "MageFrost"), true)
+ elseif Class == "WARLOCK" then
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarlockAffliction"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarlockDemonology"), true)
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarlockDestruction"), 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
-if PawnWowheadScaleProviderOptions.LastAdded < 2 then
- if Class == "WARRIOR" then
- PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarriorArms"), true)
+ if _PawnWowheadLastAdded < 2 then
+ if Class == "WARRIOR" then
+ PawnSetScaleVisible(PawnGetProviderScaleName(ScaleProviderName, "WarriorArms"), true)
+ end
end
-end
--- Don't reenable those scales again after the user has disabled them previously.
-PawnWowheadScaleProviderOptions.LastAdded = 2
+ -- Don't reenable those scales again after the user has disabled them previously.
+ PawnWowheadScaleProviderOptions.LastAdded = 2
+end)
-- After this function terminates there's no need for it anymore, so cause it to self-destruct to save memory.
PawnWowheadScaleProvider_AddScales = nil