Classic Territory Colors

This commit is contained in:
j2 2026-09-25 00:14:53 -05:00
parent 3329ac83ec
commit 7c6933fca5
8 changed files with 172 additions and 2 deletions

View File

@ -0,0 +1,156 @@
local territoryByMapID = {
-- Classic Kalimdor and Eastern Kingdoms UI map IDs.
[1411] = "Horde", -- Durotar
[1412] = "Horde", -- Mulgore
[1413] = "Horde", -- The Barrens
[1416] = "Contested", -- Alterac Mountains
[1417] = "Contested", -- Arathi Highlands
[1418] = "Contested", -- Badlands
[1419] = "Contested", -- Blasted Lands
[1420] = "Horde", -- Tirisfal Glades
[1421] = "Horde", -- Silverpine Forest
[1422] = "Contested", -- Western Plaguelands
[1423] = "Contested", -- Eastern Plaguelands
[1424] = "Contested", -- Hillsbrad Foothills
[1425] = "Contested", -- The Hinterlands
[1426] = "Alliance", -- Dun Morogh
[1427] = "Contested", -- Searing Gorge
[1428] = "Contested", -- Burning Steppes
[1429] = "Alliance", -- Elwynn Forest
[1430] = "Contested", -- Deadwind Pass
[1431] = "Contested", -- Duskwood
[1432] = "Alliance", -- Loch Modan
[1433] = "Contested", -- Redridge Mountains
[1434] = "Contested", -- Stranglethorn Vale
[1435] = "Contested", -- Swamp of Sorrows
[1436] = "Alliance", -- Westfall
[1437] = "Contested", -- Wetlands
[1438] = "Alliance", -- Teldrassil
[1439] = "Alliance", -- Darkshore
[1440] = "Contested", -- Ashenvale
[1441] = "Contested", -- Thousand Needles
[1442] = "Contested", -- Stonetalon Mountains
[1443] = "Contested", -- Desolace
[1444] = "Contested", -- Feralas
[1445] = "Contested", -- Dustwallow Marsh
[1446] = "Contested", -- Tanaris
[1447] = "Contested", -- Azshara
[1448] = "Contested", -- Felwood
[1449] = "Contested", -- Un'Goro Crater
[1450] = "Contested", -- Moonglade
[1451] = "Contested", -- Silithus
[1452] = "Contested", -- Winterspring
[1453] = "Alliance", -- Stormwind City
[1454] = "Horde", -- Orgrimmar
[1455] = "Alliance", -- Ironforge
[1456] = "Horde", -- Thunder Bluff
[1457] = "Alliance", -- Darnassus
[1458] = "Horde", -- Undercity
-- Outdoor zones added by Forever (UiMap 1.60.1.69977).
[2482] = "Contested", -- Mount Hyjal
[2521] = "Contested", -- Zephras Isle
[2548] = "Contested", -- Riverglades
[2652] = "Contested", -- Shen'dralas
[2665] = "Contested", -- Zephras Isle alternate map
}
local colors = {
friendly = { 0.1, 1, 0.1 },
contested = { 1, 0.7, 0 },
hostile = { 1, 0.1, 0.1 },
}
local playerFaction
local installed = false
local function GetTerritoryColor(mapID)
local territory = territoryByMapID[mapID]
if not territory then
return nil
end
if territory == "Contested" then
return colors.contested
end
return colors[territory == playerFaction and "friendly" or "hostile"]
end
local function UpdateMapNavBar(navBar)
for _, button in ipairs(navBar.navList or {}) do
if button.data and button.data.id and button.text then
if not button.ClassicTerritoryDefaultColor then
button.ClassicTerritoryDefaultColor = { button.text:GetTextColor() }
end
local color = GetTerritoryColor(button.data.id) or button.ClassicTerritoryDefaultColor
button.text:SetTextColor(color[1], color[2], color[3], color[4] or 1)
end
end
end
local function UpdateHoveredRegion(label)
local map = label.dataProvider and label.dataProvider:GetMap()
if not (map and map:IsCanvasMouseFocus()) then
return
end
local areaNameType = MAP_AREA_LABEL_TYPE and MAP_AREA_LABEL_TYPE.AREA_NAME
local labels = label.labelInfoByType
if not (areaNameType and labels and labels[areaNameType] and labels[areaNameType].name) then
return
end
-- Other labels, such as points of interest, take priority over a region name.
for labelType, info in pairs(labels) do
if labelType > areaNameType and info.name then
return
end
end
local x, y = map:GetNormalizedCursorPosition()
if not (x and y) then
return
end
local mapInfo = C_Map.GetMapInfoAtPosition(map:GetMapID(), x, y)
local color = mapInfo and GetTerritoryColor(mapInfo.mapID)
if color then
label.Name:SetVertexColor(color[1], color[2], color[3])
end
end
local function Install()
if installed or not (WorldMapFrame and WorldMapFrame.NavBar and WorldMapFrame.dataProviders) then
return
end
local areaLabel
for provider in pairs(WorldMapFrame.dataProviders) do
if provider.Label and provider.Label.labelInfoByType and provider.Label.EvaluateLabels then
areaLabel = provider.Label
break
end
end
if not areaLabel then
return
end
playerFaction = UnitFactionGroup("player")
if playerFaction ~= "Alliance" and playerFaction ~= "Horde" then
return
end
hooksecurefunc(areaLabel, "EvaluateLabels", UpdateHoveredRegion)
hooksecurefunc(WorldMapFrame.NavBar, "Refresh", UpdateMapNavBar)
installed = true
UpdateMapNavBar(WorldMapFrame.NavBar)
end
local events = CreateFrame("Frame")
events:RegisterEvent("ADDON_LOADED")
events:RegisterEvent("PLAYER_LOGIN")
events:SetScript("OnEvent", function()
Install()
if installed then
events:UnregisterAllEvents()
end
end)
Install()

View File

@ -0,0 +1,8 @@
## Interface: 16001
## AllowLoadGameType: camelot
## Title: Classic Territory Colors
## Notes: Restores friendly, contested, and hostile colors to world map region names.
## Author: Local
## Version: 1.2
ClassicTerritoryColors.lua

0
EquippedItemLevel/EquippedItemLevel.lua Normal file → Executable file
View File

0
EquippedItemLevel/EquippedItemLevel.toc Normal file → Executable file
View File

8
SetGuard/SetGuard.lua Normal file → Executable file
View File

@ -204,10 +204,16 @@ function SetGuard:OnEvent(event)
merchantOpen = false
end
self:QueueUpdate(event == "PLAYER_LOGIN" or event == "EQUIPMENT_SETS_CHANGED")
local rebuildSets = event == "PLAYER_LOGIN"
or event == "PLAYER_ENTERING_WORLD"
or event == "EQUIPMENT_SETS_CHANGED"
or event == "BAG_UPDATE_DELAYED"
or event == "MERCHANT_SHOW"
self:QueueUpdate(rebuildSets)
end
SetGuard:RegisterEvent("PLAYER_LOGIN")
SetGuard:RegisterEvent("PLAYER_ENTERING_WORLD")
SetGuard:RegisterEvent("EQUIPMENT_SETS_CHANGED")
SetGuard:RegisterEvent("BAG_UPDATE_DELAYED")
SetGuard:RegisterEvent("MERCHANT_SHOW")

2
SetGuard/SetGuard.toc Normal file → Executable file
View File

@ -1,4 +1,4 @@
## Interface: 11508
## Interface: 16001
## Title: Set Guard
## Notes: Marks bag items saved in equipment sets and dims them at merchants.
## Author: Local

0
SuffixQuery/SuffixQuery.lua Normal file → Executable file
View File

0
SuffixQuery/SuffixQuery.toc Normal file → Executable file
View File