diff --git a/api/config.lua b/api/config.lua index d442418e..621b5702 100644 --- a/api/config.lua +++ b/api/config.lua @@ -915,6 +915,7 @@ function pfUI:LoadConfig() pfUI:UpdateConfig("questlog", nil, "showQuestLevels", "0") pfUI:UpdateConfig("character", "inventory", "durability", "1") + pfUI:UpdateConfig("character", "reputation", "repRequired", "1") pfUI:UpdateConfig("thirdparty", nil, "chatbg", "1") pfUI:UpdateConfig("thirdparty", nil, "showmeter", "0") pfUI:UpdateConfig("thirdparty", "dpsmate", "skin", "0") diff --git a/modules/gui.lua b/modules/gui.lua index bad9acb0..6778a172 100644 --- a/modules/gui.lua +++ b/modules/gui.lua @@ -2397,6 +2397,10 @@ pfUI:RegisterModule("gui", function () CreateConfig(nil, T["Show Durability"], C.character.inventory, "durability", "checkbox") end) + CreateGUIEntry(T["Character"], T["Reputation"], function() + CreateConfig(nil, T["Show Rep Required To Next Standing"], C.character.reputation, "repRequired", "checkbox") + end) + CreateGUIEntry(T["Bags & Bank"], nil, function() CreateConfig(nil, T["Disable Item Quality Color For \"Common\" Items"], C.appearance.bags, "borderlimit", "checkbox") CreateConfig(nil, T["Enable Item Quality Color For Equipment Only"], C.appearance.bags, "borderonlygear", "checkbox") diff --git a/skins/blizzard/character.lua b/skins/blizzard/character.lua index 6e56d5ef..1e798f74 100644 --- a/skins/blizzard/character.lua +++ b/skins/blizzard/character.lua @@ -287,6 +287,31 @@ pfUI:RegisterSkin("Character", function () SkinCheckbox(ReputationDetailAtWarCheckBox) SkinCheckbox(ReputationDetailInactiveCheckBox) SkinCheckbox(ReputationDetailMainScreenCheckBox) + + -- Append "(N)" to each standing label where N is rep remaining to the + -- next reaction. Skip exalted (reaction 8) and effectively-capped bars. + -- Each bar's OnLeave handler (Blizzard's ReputationFrame.xml) restores + -- the FactionStanding text from `bar.standingText` on mouseout, so we + -- stash our augmented text there too — otherwise hovering a bar strips + -- the "(N)" suffix off. + hooksecurefunc("ReputationFrame_Update", function() + if C.character.reputation.repRequired ~= "1" then return end + local offset = FauxScrollFrame_GetOffset(ReputationListScrollFrame) + for i = 1, NUM_FACTIONS_DISPLAYED do + local standing = _G["ReputationBar"..i.."FactionStanding"] + if standing and standing:IsVisible() then + local faction = C_Reputation.GetFactionDataByIndex(offset + i) + if faction and faction.reaction and faction.reaction < 8 then + local repLeft = faction.nextReactionThreshold - faction.currentStanding + if repLeft > 1 then + local text = standing:GetText() .. string.format(" (%d)", repLeft) + standing:SetText(text) + standing:GetParent().standingText = text + end + end + end + end + end) end do -- Skills Tab