14 Commits
Author SHA1 Message Date
Brues 2dfaa65168 Gate combopoint updates and fold player class-color branches
- combopoints: only ever show on the target's plate, so re-issue Show/Hide
  only when the target's combo count changes, and skip non-target plates once
  cleared (they start hidden) -- instead of hiding all five every tick on every
  plate. plate.cpShown tracks the shown count and stays in sync with the frames.
- player class color: merge the identical ENEMY_PLAYER / FRIENDLY_PLAYER
  branches into one condition.
2026-08-09 13:01:29 -05:00
Brues 97ef039d3a Fetch the totem buff icon via GetBuffDataByIndex
Use C_UnitAuras.GetBuffDataByIndex(guid, 1) instead of GetUnitAuras(guid)[1]:
a passive totem's provided buff is its single helpful aura, so the buff-
filtered single-slot fetch is both more precise and cheaper than building the
full aura list to take the first entry.
2026-08-09 03:39:11 -05:00
Brues 25ef02705c Remove dead totems and critters locale tables
Nameplate totem/critter detection now uses UnitCreatureTypeID instead of
name-matching, so the L["totems"] and L["critters"] tables have no remaining
readers. Drop them from every locale file.
2026-08-09 03:17:00 -05:00
Brues 48d1da2015 Localize hardcoded user-facing nameplate/bag/frame strings
Route the remaining hardcoded English labels through the T translation
table and register the keys in enUS:

- bags: "Sort Bags" / "Sort Bank" tooltips
- farmmode: "FARM MODE" overlay
- unitxp: "BEHIND" / "NO LOS" target indicators
- unitframes: raid group header "Group" (reuses the existing key)
- bgscore: "Battleground Frames" mover title
2026-08-09 03:15:01 -05:00
Brues ff29e9d3c2 Detect nameplate totems and critters by creature type
Replace the localized L["totems"] / L["critters"] name-substring matching
with ClassicAPI's UnitCreatureTypeID (CreatureType.dbc: 8 = Critter,
11 = Totem), cached per plate and reset on reuse. Locale-independent,
covers custom/Turtle units, rejects mobs merely named "...Totem...", and
cheaper than the per-plate name loop.

Totem icons now come straight from the game instead of a hand-picked table:
passive totems self-cast their provided buff, so their single aura's icon
is read via C_UnitAuras.GetUnitAuras; active totems (Searing/Magma/Fire Nova)
carry no self-aura, so their icon is captured from UNIT_SPELLCAST_SUCCEEDED
(C_Spell.GetSpellTexture) and cached. Detection and icons read through the
plate's ClassicAPI-provided GUID (cachedGuid).
2026-08-09 03:15:01 -05:00
Brues f0f1c80e24 autoshift: stub shapeshifts table for pfUI-turtle compatibility
Closes #38
2026-08-08 19:59:36 -05:00
Brues 5b4cb2bc9f Hide redundant Total line in item count tooltip and localize labels
Only show "Total" when the item is split across more than one location;
a single-location item made "Total" duplicate the one breakdown line
(e.g. "Equipped: 1 / Total: 1").

Route the Bags/Bank/Equipped/Total labels through the T translation table
and add the keys to every locale file, using the Blizzard GlobalStrings as
the reference for each localized term.
2026-08-08 19:24:42 -05:00
Brues 5a3a962c90 Remove dead unitframes showtooltip setting
The mouseover-scripts migration dropped the unit frame OnEnter/OnLeave
handlers that read C.unitframes[unit].showtooltip, so nothing consulted the
setting anymore. The engine mouseover (driven by the frame's unit attribute)
now shows the native tooltip unconditionally, so the option could not gate it
even if a reader remained.

Drop the config default, the "Enable Mouseover Tooltip" GUI checkbox, and the
now-orphaned locale string from all translation files.
2026-08-08 16:16:33 -05:00
Brues cd08db75d2 Color button highlights from PFUI_CLASS_COLORS
Read the player class color from PFUI_CLASS_COLORS instead of
GetClassColor in SkinButton, SetHighlight, and SkinDropDown.
GetClassColor returns the stock pink for Shaman, but pfUI remaps it to
blue, so the button highlights and locked borders now match.
2026-08-07 23:52:22 -05:00
Brues 6365f0cdb1 Read the innervate cooldown through ClassicAPI
Replace nampower's GetSpellIdCooldown with C_Spell.GetSpellCooldown, and
compute the remaining time from startTime plus duration (both seconds).
Drop the presence guard, since ClassicAPI is a hard dependency. The
module still needs nampower for the AURA_CAST events.
2026-08-07 18:29:37 -05:00
Brues faa801e27d Read spell range through ClassicAPI in the hunter bar
Replace nampower's IsSpellInRange with C_Spell.IsSpellInRange. This drops
the last unguarded nampower call. The ClassicAPI function returns true,
false, or nil, so test == true and == false and leave the bar unchanged
on nil.
2026-08-07 17:39:10 -05:00
Brues 421a103f22 Show action button spell tooltips by spell ID
libspell.GetSpellInfo now returns the spell ID at position 9 and caches
it with SafePack and unpack.

The action bar tracks self.spellID for macro-cast spells and shows the
tooltip with GameTooltip:SetSpellByID. Gather the slot, book type, and
spell ID from one GetSpellInfo call instead of a separate GetSpellIndex
lookup.
2026-08-06 23:08:32 -05:00
Brues ecb28fb194 Strip leading 'v' from version tags before parsing
Release tags often include a leading 'v' (e.g. "v9.0.18"). Previously the code split the raw tag directly which could yield a nil major version and fall back to 0.
2026-08-06 22:10:21 -05:00
Brues 94268b1162 Add option to always show equipment slot flyouts
The per-slot popout arrows previously appeared only while the equipment
manager sidecar was open. Add a "Always Show Equipment Slot Flyouts"
option under Character -> Inventory (character.inventory.equipflyout,
off by default) that instead ties them to the paperdoll, so gear can be
swapped without opening the equipment manager.

Centralize the show/hide in a single UpdatePopouts(): by default the
arrows follow the sidecar, with the option on they follow PaperDollFrame.
Both the sidecar OnShow/OnHide and new PaperDollFrame OnShow/OnHide hooks
route through it, and the flyout hides whenever the arrows go inactive.
2026-08-06 20:28:32 -05:00
32 changed files with 217 additions and 873 deletions
+1 -1
View File
@@ -554,7 +554,6 @@ function pfUI:LoadConfig()
pfUI:UpdateConfig("unitframes", unit, "glowaggro", "1")
pfUI:UpdateConfig("unitframes", unit, "glowcombat", "1")
pfUI:UpdateConfig("unitframes", unit, "showtooltip", "1")
pfUI:UpdateConfig("unitframes", unit, "healthcolor", "1")
pfUI:UpdateConfig("unitframes", unit, "powercolor", "1")
pfUI:UpdateConfig("unitframes", unit, "levelcolor", "1")
@@ -956,6 +955,7 @@ function pfUI:LoadConfig()
pfUI:UpdateConfig("questlog", nil, "showQuestLevels", "0")
pfUI:UpdateConfig("character", "inventory", "durability", "1")
pfUI:UpdateConfig("character", "inventory", "equipflyout", "0")
pfUI:UpdateConfig("character", "reputation", "repRequired", "1")
pfUI:UpdateConfig("thirdparty", nil, "chatbg", "1")
pfUI:UpdateConfig("thirdparty", nil, "showmeter", "0")
+4 -4
View File
@@ -587,7 +587,7 @@ end
function pfUI.api.SetHighlight(frame, cr, cg, cb)
if not frame then return end
if not cr or not cg or not cb then
cr, cg, cb = GetClassColor(UnitClassBase('player'))
cr, cg, cb = PFUI_CLASS_COLORS[UnitClassBase('player')]:GetRGB()
end
frame.cr, frame.cg, frame.cb = cr, cg, cb, ca
@@ -632,7 +632,7 @@ function pfUI.api.SkinButton(button, cr, cg, cb, icon, disableHighlight)
if not b then b = button end
if not b then return end
if not cr or not cg or not cb then
cr, cg, cb = GetClassColor(UnitClassBase('player'))
cr, cg, cb = PFUI_CLASS_COLORS[UnitClassBase('player')]:GetRGB()
end
pfUI.api.CreateBackdrop(b, nil, true)
b:SetNormalTexture("")
@@ -709,7 +709,7 @@ end
function pfUI.api.SkinRotateButton(button)
pfUI.api.CreateBackdrop(button)
local cr, cg, cb = GetClassColor(UnitClassBase('player'))
local cr, cg, cb = PFUI_CLASS_COLORS[UnitClassBase('player')]:GetRGB()
local btnW, btnH = button:GetSize()
button:SetSize(btnW - 18, btnH - 18)
@@ -907,7 +907,7 @@ function pfUI.api.SkinDropDown(frame, cr, cg, cb, useSmall)
end
if not cr or not cg or not cb then
cr, cg, cb = GetClassColor(UnitClassBase('player'))
cr, cg, cb = PFUI_CLASS_COLORS[UnitClassBase('player')]:GetRGB()
end
SetHighlight(button, cr, cg, cb)
+1 -1
View File
@@ -1409,7 +1409,7 @@ function pfUI.uf:CreateUnitFrame(unit, id, config, tick)
f.group:SetFont(pfUI.font_unit, 8, "OUTLINE")
f.group:SetTextColor(1,1,1,.8)
f.group:SetHeight(16)
f.group:SetText("Group " .. group)
f.group:SetText(T["Group"] .. " " .. group)
f.group:Hide()
end
-113
View File
@@ -22,91 +22,6 @@ pfUI_locale["deDE"]["customcast"] = {
["MULTISHOT"] = "Mehrfach-Schuss",
}
pfUI_locale["deDE"]["critters"] = {
'Otter',
'Käfer',
'Turmfledermaus',
'Gallkröte',
'Schwarze Ratte',
'Brauner Präriehund',
'Eingesperrter Hase',
'Eingesperrtes Schaf',
'Eingesperrtes Eichhörnchen',
'Eingesperrte Kröte',
'Katze',
'Huhn',
'Cleo',
'Kernratte',
'Kuh',
'Verwandelte Kuh',
'Geheiltes Reh',
'Geheilte Gazelle',
'Untergrundratte',
'Reh',
'Hund',
'Effsee',
'Umzauberte Untergrundratte',
'Reißzahn',
'Rehkitz',
'Feuerkäfer',
'Flauschie',
'Kleiner Frosch',
'Gazelle',
'Hase',
'Pferd',
'Titanische Kröte',
'Infiziertes Reh',
'Infiziertes Eichhörnchen',
'Dschungelkröte',
'Krakles Thermometer',
'Lady',
'Larve',
'Lavakrebs',
'Made',
'Wasserschlange',
'Maus',
'Mr. Bigglesworth',
'Nibbles',
'Noarm',
'Graumähne',
'Papagei',
'Verwandeltes Schwein',
'Piratenschatz Auslöser Meute',
'Verseuchtes Insekt',
'Verseuchte Made',
'Verseuchte Ratte',
'Pestlandtermite',
'Verwandeltes Huhn',
'Verwandelte Ratte',
'Präriehund',
'Kaninchen',
'Widder',
'Ratte',
'Reitwidder',
'Schabe',
'Salome',
'Fischschwarm',
'Skorpid',
'Verwandeltes Schaf',
'Schaf',
'Irrwisch der Shen\'dralar',
'Kränkliches Reh',
'Kränkliche Gazelle',
'Natter',
'Spinne',
'Spike',
'Eichhörnchen',
'Schwein',
'Besudelte Kakerlake',
'Besudelte Ratte',
'Kröte',
'Transporterfehlfunktion',
'Verwandelte Schildkröte',
'Schleicherpfote',
'Stimme von Elune',
'Waypoint',
'Irrwisch',
}
pfUI_locale["deDE"]["dyndebuffs"] = {
["Rupture"] = "Blutung",
@@ -1067,32 +982,4 @@ pfUI_locale["deDE"]["debuffs"] = {
-- custom entries not detected by DBC extractor
pfUI_locale["deDE"]["debuffs"]['Kältekegel']={[0]=8.0,} -- Cone of Cold
pfUI_locale["deDE"]["totems"] = {
["Totem der Krankheitsreinigung"] = "spell_nature_diseasecleansingtotem",
["Totem des Erdelementars"] = "spell_nature_earthelemental_totem",
["Totem der Erdbindung"] = "spell_nature_strengthofearthtotem02",
["Totem des Feuerelementars"] = "spell_fire_elemental_totem",
["Totem der Feuernova"] = "spell_fire_sealoffire",
["Totem des Feuerwiderstands"] = "spell_fireresistancetotem_01",
["Totem der Flammenzunge"] = "spell_nature_guardianward",
["Totem des Frostwiderstands"] = "spell_frostresistancetotem_01",
["Totem der luftgleichen Anmut"] = "spell_nature_invisibilitytotem",
["Totem der Erdung"] = "spell_nature_groundingtotem",
["Totem des heilenden Flusses"] = "Inv_spear_04",
["Totem des glühenden Magmas"] = "spell_fire_selfdestruct",
["Totem der Manaquelle"] = "spell_nature_manaregentotem",
["Totem der Manaflut"] = "spell_frost_summonwaterelemental",
["Totem des Naturwiderstands"] = "spell_nature_natureresistancetotem",
["Totem der Giftreinigung"] = "spell_nature_poisoncleansingtotem",
["Totem der Verbrennung"] = "spell_fire_searingtotem",
["Totem des Wachens"] = "spell_nature_removecurse",
["Totem der Steinklaue"] = "spell_nature_stoneclawtotem",
["Totem der Steinhaut"] = "spell_nature_stoneskintotem",
["Totem der Erdstärke"] = "spell_nature_earthbindtotem",
["Totem des Ingrimms"] = "spell_fire_totemofwrath",
["Totem des Erdstoßes"] = "spell_nature_tremortotem",
["Totem des Windzorns"] = "spell_nature_windfury",
["Totem der Windmauer"] = "spell_nature_earthbind",
["Totem des stürmischen Zorns"] = "spell_nature_slowingtotem",
}
-113
View File
@@ -22,91 +22,6 @@ pfUI_locale["enUS"]["customcast"] = {
["MULTISHOT"] = "Multi-Shot",
}
pfUI_locale["enUS"]["critters"] = {
'Adder',
'Beetle',
'Belfry Bat',
'Biletoad',
'Black Rat',
'Brown Prairie Dog',
'Caged Rabbit',
'Caged Sheep',
'Caged Squirrel',
'Caged Toad',
'Cat',
'Chicken',
'Cleo',
'Core Rat',
'Cow',
'Cow',
'Cured Deer',
'Cured Gazelle',
'Deeprun Rat',
'Deer',
'Dog',
'Effsee',
'Enthralled Deeprun Rat',
'Fang',
'Fawn',
'Fire Beetle',
'Fluffy',
'Frog',
'Gazelle',
'Hare',
'Horse',
'Huge Toad',
'Infected Deer',
'Infected Squirrel',
'Jungle Toad',
'Krakle\'s Thermometer',
'Lady',
'Larva',
'Lava Crab',
'Maggot',
'Moccasin',
'Mouse',
'Mr. Bigglesworth',
'Nibbles',
'Noarm',
'Old Blanchy',
'Parrot',
'Pig',
'Pirate treasure trigger mob',
'Plagued Insect',
'Plagued Maggot',
'Plagued Rat',
'Plagueland Termite',
'Polymorphed Chicken',
'Polymorphed Rat',
'Prairie Dog',
'Rabbit',
'Ram',
'Rat',
'Riding Ram',
'Roach',
'Salome',
'School of Fish',
'Scorpion',
'Sheep',
'Sheep',
'Shen\'dralar Wisp',
'Sickly Deer',
'Sickly Gazelle',
'Snake',
'Spider',
'Spike',
'Squirrel',
'Swine',
'Tainted Cockroach',
'Tainted Rat',
'Toad',
'Transporter Malfunction',
'Turtle',
'Underfoot',
'Voice of Elune',
'Waypoint (Only GM can see it)',
'Wisp',
}
pfUI_locale["enUS"]["dyndebuffs"] = {
["Rupture"] = "Rupture",
@@ -1069,32 +984,4 @@ pfUI_locale["enUS"]["debuffs"] = {
-- custom entries not detected by DBC extractor
pfUI_locale["enUS"]["debuffs"]['Cone of Cold']={[0]=8.0,} -- Cone of Cold
pfUI_locale["enUS"]["totems"] = {
["Disease Cleansing Totem"] = "spell_nature_diseasecleansingtotem",
["Earth Elemental Totem"] = "spell_nature_earthelemental_totem",
["Earthbind Totem"] = "spell_nature_strengthofearthtotem02",
["Fire Elemental Totem"] = "spell_fire_elemental_totem",
["Fire Nova Totem"] = "spell_fire_sealoffire",
["Fire Resistance Totem"] = "spell_fireresistancetotem_01",
["Flametongue Totem"] = "spell_nature_guardianward",
["Frost Resistance Totem"] = "spell_frostresistancetotem_01",
["Grace of Air Totem"] = "spell_nature_invisibilitytotem",
["Grounding Totem"] = "spell_nature_groundingtotem",
["Healing Stream Totem"] = "Inv_spear_04",
["Magma Totem"] = "spell_fire_selfdestruct",
["Mana Spring Totem"] = "spell_nature_manaregentotem",
["Mana Tide Totem"] = "spell_frost_summonwaterelemental",
["Nature Resistance Totem"] = "spell_nature_natureresistancetotem",
["Poison Cleansing Totem"] = "spell_nature_poisoncleansingtotem",
["Searing Totem"] = "spell_fire_searingtotem",
["Sentry Totem"] = "spell_nature_removecurse",
["Stoneclaw Totem"] = "spell_nature_stoneclawtotem",
["Stoneskin Totem"] = "spell_nature_stoneskintotem",
["Strength of Earth Totem"] = "spell_nature_earthbindtotem",
["Totem of Wrath"] = "spell_fire_totemofwrath",
["Tremor Totem"] = "spell_nature_tremortotem",
["Windfury Totem"] = "spell_nature_windfury",
["Windwall Totem"] = "spell_nature_earthbind",
["Wrath of Air Totem"] = "spell_nature_slowingtotem",
}
-113
View File
@@ -22,91 +22,6 @@ pfUI_locale["esES"]["customcast"] = {
["MULTISHOT"] = "Multidisparo",
}
pfUI_locale["esES"]["critters"] = {
'Víboris',
'Alfazaque',
'Murciélago Timbralevín',
'Sapo bílico',
'Rata negra',
'Perro de la pradera marrón',
'Conejo enjaulado',
'Oveja enjaulada',
'Ardilla enjaulada',
'Sapo enjaulado',
'Gato',
'Pollo',
'Cleo',
'Rata del Núcleo',
'Vaca',
'Vaca polimórfica',
'Ciervo curado',
'Gacela curada',
'Rata del subterráneo',
'Ciervo',
'Perro',
'Effsee',
'Rata del subterráneo sometida',
'Colmillos',
'Cervato',
'Alfazaque de fuego',
'Esponjín',
'Rana pequeña',
'Gacela',
'Liebre',
'Caballo',
'Sapo gigante',
'Ciervo infectado',
'Ardilla infectada',
'Sapo de la selva',
'Termómetro de Krakle',
'Lady',
'Larva',
'Cangrejo de lava',
'Cresa',
'Culebra de agua',
'Ratón',
'Baldomero',
'Mordiscos',
'Noarm',
'Vieja Blanchy',
'Loro',
'Cerdo polimórfico',
'Activador de banda de tesoro pirata',
'Insecto apestado',
'Cresa apestada',
'Rata apestada',
'Termita de las Tierras de la Peste',
'Gallina polimórfica',
'Rata polimórfica',
'Perro de la pradera',
'Conejo',
'Carnero',
'Rata',
'Carnero de montar',
'Cucaracha',
'Salome',
'Banco de peces',
'Escórpido',
'Oveja polimórfica',
'Oveja',
'Fuego fatuo Shen\'dralar',
'Ciervo enfermo',
'Gacela enferma',
'Culebra',
'Araña',
'Pinchos',
'Ardilla',
'Puerco',
'Curiana corrupta',
'Rata corrupta',
'Sapo',
'Fallo en transportador',
'Tortuga polimórfica',
'Bajapata',
'Voz de Elune',
'Waypoint',
'Fuego fatuo',
}
pfUI_locale["esES"]["dyndebuffs"] = {
["Rupture"] = "Ruptura",
@@ -1062,32 +977,4 @@ pfUI_locale["esES"]["debuffs"] = {
-- custom entries not detected by DBC extractor
pfUI_locale["esES"]["debuffs"]['Cono de frío']={[0]=8.0,} -- Cone of Cold
pfUI_locale["esES"]["totems"] = {
["Tótem de limpieza de enfermedades"] = "spell_nature_diseasecleansingtotem",
["Tótem Elemental de Tierra"] = "spell_nature_earthelemental_totem",
["Tótem Nexo terrestre"] = "spell_nature_strengthofearthtotem02",
["Tótem Elemental de Fuego"] = "spell_fire_elemental_totem",
["Tótem Nova de Fuego"] = "spell_fire_sealoffire",
["Tótem de resistencia al Fuego"] = "spell_fireresistancetotem_01",
["Tótem Lengua de Fuego"] = "spell_nature_guardianward",
["Tótem de resistencia a la Escarcha"] = "spell_frostresistancetotem_01",
["Tótem Gracia del aire"] = "spell_nature_invisibilitytotem",
["Tótem derribador"] = "spell_nature_groundingtotem",
["Tótem Corriente de sanación"] = "Inv_spear_04",
["Tótem de magma"] = "spell_fire_selfdestruct",
["Tótem Fuente de maná"] = "spell_nature_manaregentotem",
["Tótem Marea de maná"] = "spell_frost_summonwaterelemental",
["Tótem de resistencia a Naturaleza"] = "spell_nature_natureresistancetotem",
["Tótem contraveneno"] = "spell_nature_poisoncleansingtotem",
["Tótem abrasador"] = "spell_fire_searingtotem",
["Tótem avizor"] = "spell_nature_removecurse",
["Tótem Garra de piedra"] = "spell_nature_stoneclawtotem",
["Tótem Piel de piedra"] = "spell_nature_stoneskintotem",
["Tótem Fuerza de la tierra"] = "spell_nature_earthbindtotem",
["Tótem de cólera"] = "spell_fire_totemofwrath",
["Tótem de tremor"] = "spell_nature_tremortotem",
["Tótem Viento Furioso"] = "spell_nature_windfury",
["Tótem Muro de viento"] = "spell_nature_earthbind",
["Tótem cólera de aire"] = "spell_nature_slowingtotem",
}
-108
View File
@@ -22,86 +22,6 @@ pfUI_locale["frFR"]["customcast"] = {
["MULTISHOT"] = "Flèches multiples",
}
pfUI_locale["frFR"]["critters"] = {
'Aspic',
'Hanneton',
'Chauve-souris de clocher',
'Crapaud-bile',
'Rat noir',
'Chien de prairie brun',
'Lapin en cage',
'Mouton en cage',
'Ecureuil en cage',
'Crapaud en cage',
'Chat',
'Poulet',
'Cléo',
'Rat du Magma',
'Vache',
'Métamorphosé en vache',
'Daim soigné',
'Gazelle soignée',
'Rat des profondeurs',
'Daim',
'Chien',
'Effsee',
'Rat des profondeurs ensorcelé',
'Croc',
'Faon',
'Hanneton de feu',
'Tout-doux',
'Grenouille',
'Gazelle',
'Lièvre',
'Cheval',
'Crapaud énorme',
'Daim infecté',
'Ecureuil infecté',
'Crapaud de la jungle',
'Thermomètre de Krakle',
'Dame',
'Crabe de lave',
'Mocassin d\'eau',
'Souris',
'M. Bigglesworth',
'Grignote',
'Noarm',
'Vieille Blanchette',
'Perroquet',
'Métamorphosé en cochon',
'Monstre déclencheur du trésor des pirates',
'Insecte pestiféré',
'Asticot pestiféré',
'Rat pestiféré',
'Termite des Maleterres',
'Chien de prairie',
'Lapin',
'Bélier',
'Rat',
'Bélier',
'Blatte',
'Salome',
'Banc de poisson',
'Scorpion',
'Métamorphosé en mouton',
'Mouton',
'Feu follet de Shen\'dralar',
'Daim malade',
'Gazelle malade',
'Serpent',
'Araignée',
'Pointe',
'Ecureuil',
'Pourceau',
'Cafard corrompu',
'Rat corrompu',
'Crapaud',
'Métamorphosé en tortue',
'Casse-pieds',
'Voix d\'Elune',
'Point de SPAWN (Seuls les MJ peuvent le voir)',
'Feu follet',
}
pfUI_locale["frFR"]["dyndebuffs"] = {
["Rupture"] = "Rupture",
@@ -1058,32 +978,4 @@ pfUI_locale["frFR"]["debuffs"] = {
-- custom entries not detected by DBC extractor
pfUI_locale["frFR"]["debuffs"]['Cône de froid']={[0]=8.0,} -- Cone of Cold
pfUI_locale["frFR"]["totems"] = {
["Totem de Purification des maladies"] = "spell_nature_diseasecleansingtotem",
["Totem élémentaire de terre"] = "spell_nature_earthelemental_totem",
["Totem de lien terrestre"] = "spell_nature_strengthofearthtotem02",
["Totem élémentaire de feu"] = "spell_fire_elemental_totem",
["Totem Nova de feu"] = "spell_fire_sealoffire",
["Totem de résistance au Feu"] = "spell_fireresistancetotem_01",
["Totem Langue de feu"] = "spell_nature_guardianward",
["Totem de résistance au Givre"] = "spell_frostresistancetotem_01",
["Totem de Grâce aérienne"] = "spell_nature_invisibilitytotem",
["Totem de Glèbe"] = "spell_nature_groundingtotem",
["Totem guérisseur"] = "Inv_spear_04",
["Totem de Magma"] = "spell_fire_selfdestruct",
["Totem Fontaine de mana"] = "spell_nature_manaregentotem",
["Totem de Vague de mana"] = "spell_frost_summonwaterelemental",
["Totem de résistance à la Nature"] = "spell_nature_natureresistancetotem",
["Totem de Purification du poison"] = "spell_nature_poisoncleansingtotem",
["Totem incendiaire"] = "spell_fire_searingtotem",
["Totem Sentinelle"] = "spell_nature_removecurse",
["Totem de Griffes de pierre"] = "spell_nature_stoneclawtotem",
["Totem de Peau de pierre"] = "spell_nature_stoneskintotem",
["Totem de Force de la Terre"] = "spell_nature_earthbindtotem",
["Totem de courroux"] = "spell_fire_totemofwrath",
["Totem de Séisme"] = "spell_nature_tremortotem",
["Totem Furie-des-vents"] = "spell_nature_windfury",
["Totem de Mur des vents"] = "spell_nature_earthbind",
["Totem de courroux de l'air"] = "spell_nature_slowingtotem",
}
-113
View File
@@ -22,91 +22,6 @@ pfUI_locale["koKR"]["customcast"] = {
["MULTISHOT"] = "일제 사격",
}
pfUI_locale["koKR"]["critters"] = {
'살무사',
'딱정벌레',
'종탑 박쥐',
'독두꺼비',
'곰쥐',
'갈색 땅다람쥐',
'우리에 갇힌 토끼',
'우리에 갇힌 양',
'우리에 갇힌 다람쥐',
'우리에 갇힌 개구리',
'고양이',
'닭',
'클레오',
'화산쥐',
'소',
'변이된 소',
'회복된 사슴',
'회복된 가젤',
'깊은굴쥐',
'사슴',
'강아지',
'나비',
'피리 소리에 홀린 깊은굴쥐',
'검둥이',
'새끼 사슴',
'불딱정벌레',
'복슬이',
'작은 개구리',
'가젤',
'산토끼',
'말',
'왕두꺼비',
'병든 사슴',
'병든 다람쥐',
'정글 두꺼비',
'크래클의 온도계측장치',
'레이디',
'애벌레',
'용암게',
'구더기',
'물뱀',
'생쥐',
'비글스워스 씨',
'냠냠이',
'노암',
'늙은말 블랑쉬',
'앵무새',
'변이된 돼지',
'해적 보물 트리거',
'역병 걸린 벌레',
'역병 걸린 구더기',
'역병 걸린 쥐',
'역병지대 흰개미',
'변이된 닭',
'변이된 쥐',
'땅다람쥐',
'토끼',
'산양',
'쥐',
'길들인 산양',
'바퀴',
'살로메',
'물고기 떼',
'전갈',
'변이된 양',
'양',
'셴드랄라 위습',
'병든 사슴',
'병든 가젤',
'뱀',
'거미',
'스파이크',
'다람쥐',
'돼지',
'오염된 바퀴벌레',
'오염된 쥐',
'두꺼비',
'순간이동기 기능장애',
'변이된 거북이',
'언더풋',
'엘룬의 음성',
'Waypoint',
'위습',
}
pfUI_locale["koKR"]["dyndebuffs"] = {
["Rupture"] = "파열",
@@ -1028,32 +943,4 @@ pfUI_locale["koKR"]["debuffs"] = {
-- custom entries not detected by DBC extractor
pfUI_locale["koKR"]["debuffs"]['냉기 돌']={[0]=8.0,} -- Cone of Cold
pfUI_locale["koKR"]["totems"] = {
["질병 정화 토템"] = "spell_nature_diseasecleansingtotem",
["대지의 정령 토템"] = "spell_nature_earthelemental_totem",
["속박의 토템"] = "spell_nature_strengthofearthtotem02",
["불의 정령 토템"] = "spell_fire_elemental_totem",
["불꽃 회오리 토템"] = "spell_fire_sealoffire",
["화염 저항 토템"] = "spell_fireresistancetotem_01",
["불꽃의 토템"] = "spell_nature_guardianward",
["냉기 저항 토템"] = "spell_frostresistancetotem_01",
["은총의 토템"] = "spell_nature_invisibilitytotem",
["마법흡수 토템"] = "spell_nature_groundingtotem",
["치유의 토템"] = "Inv_spear_04",
["용암 토템"] = "spell_fire_selfdestruct",
["마나샘 토템"] = "spell_nature_manaregentotem",
["마나 해일 토템"] = "spell_frost_summonwaterelemental",
["자연 저항 토템"] = "spell_nature_natureresistancetotem",
["독 정화 토템"] = "spell_nature_poisoncleansingtotem",
["불타는 토템"] = "spell_fire_searingtotem",
["감시의 토템"] = "spell_nature_removecurse",
["돌발톱 토템"] = "spell_nature_stoneclawtotem",
["돌가죽 토템"] = "spell_nature_stoneskintotem",
["대지력 토템"] = "spell_nature_earthbindtotem",
["격노의 토템"] = "spell_fire_totemofwrath",
["진동의 토템"] = "spell_nature_tremortotem",
["질풍의 토템"] = "spell_nature_windfury",
["바람막이 토템"] = "spell_nature_earthbind",
["천벌의 토템"] = "spell_nature_slowingtotem",
}
-113
View File
@@ -22,91 +22,6 @@ pfUI_locale["ruRU"]["customcast"] = {
["MULTISHOT"] = "Залп",
}
pfUI_locale["ruRU"]["critters"] = {
'Аспид',
'Жук',
'Чердачный нетопырь',
'Желчная жаба',
'Черная крыса',
'Бурая луговая собачка',
'Кролик в клетке',
'Овца в клетке',
'Белка в клетке',
'Жаба в клетке',
'Кошка',
'Курица',
'Клео',
'Крыса Недр',
'Корова',
'Корова',
'Исцеленный олень',
'Исцеленная газель',
'Подземная крыса',
'Олень',
'Собака',
'Эфси',
'Пойманная подземная крыса',
'Клык',
'Олененок',
'Огненный жук',
'Пушок',
'Лягушка',
'Газель',
'Заяц',
'Лошадь',
'Огромная жаба',
'Зараженный олень',
'Зараженная белка',
'Тропическая жаба',
'Термометр Кракла',
'Леди',
'Личинка',
'Лавовый краб',
'Червь',
'Болотная гадюка',
'Мышь',
'Мистер Бигглсуорт',
'Грызунчик',
'Нетронь',
'Старая Савраска',
'Попугай',
'Свинья',
'Пиратский клад инициатор – существо',
'Чумная блоха',
'Чумной червь',
'Чумная крыса',
'Термит Чумных земель',
'Курица в полиморфе',
'Крыса-полиморф',
'Луговая собачка',
'Кролик',
'Баран',
'Крыса',
'Ездовой баран',
'Таракан',
'Салом',
'Косяк рыбы',
'Скорпион',
'Овца',
'Овца',
'Шендраларский огонек',
'Больной олень',
'Больная газель',
'Змея',
'Паук',
'Хват',
'Белка',
'Свинья',
'Нечистый таракан',
'Нечистая крыса',
'Жаба',
'Неисправный транспортер',
'Черепаха',
'Шмыг',
'Голос Элуны',
'Точка маршрута (Только ГМ может увидеть это)',
'Огонек',
}
pfUI_locale["ruRU"]["dyndebuffs"] = {
["Rupture"] = "Рваная рана",
@@ -1065,32 +980,4 @@ pfUI_locale["ruRU"]["debuffs"] = {
-- custom entries not detected by DBC extractor
pfUI_locale["ruRU"]["debuffs"]['Конус холода']={[0]=8.0,} -- Cone of Cold
pfUI_locale["ruRU"]["totems"] = {
["Тотем очищения от болезней"] = "spell_nature_diseasecleansingtotem",
["Тотем элементаля земли"] = "spell_nature_earthelemental_totem",
["Тотем оков земли"] = "spell_nature_strengthofearthtotem02",
["Тотем элементаля огня"] = "spell_fire_elemental_totem",
["Тотем кольца огня"] = "spell_fire_sealoffire",
["Тотем сопротивления огню"] = "spell_fireresistancetotem_01",
["Тотем языка пламени"] = "spell_nature_guardianward",
["Тотем сопротивления льду"] = "spell_frostresistancetotem_01",
["Тотем легкости воздуха"] = "spell_nature_invisibilitytotem",
["Тотем заземления"] = "spell_nature_groundingtotem",
["Тотем исцеляющего потока"] = "Inv_spear_04",
["Тотем магмы"] = "spell_fire_selfdestruct",
["Тотем источника маны"] = "spell_nature_manaregentotem",
["Тотем прилива маны"] = "spell_frost_summonwaterelemental",
["Тотем сопротивления магии природы"] = "spell_nature_natureresistancetotem",
["Тотем противоядия"] = "spell_nature_poisoncleansingtotem",
["Опаляющий тотем"] = "spell_fire_searingtotem",
["Сторожевой тотем"] = "spell_nature_removecurse",
["Тотем каменного когтя"] = "spell_nature_stoneclawtotem",
["Тотем каменной кожи"] = "spell_nature_stoneskintotem",
["Тотем силы земли"] = "spell_nature_earthbindtotem",
["Тотем гнева"] = "spell_fire_totemofwrath",
["Тотем трепета"] = "spell_nature_tremortotem",
["Тотем неистовства ветра"] = "spell_nature_windfury",
["Тотем стены ветра"] = "spell_nature_earthbind",
["Тотем гнева воздуха"] = "spell_nature_slowingtotem",
}
-108
View File
@@ -22,86 +22,6 @@ pfUI_locale["zhCN"]["customcast"] = {
["MULTISHOT"] = "多重射击",
}
pfUI_locale["zhCN"]["critters"] = {
'蝰蛇',
'甲壳虫',
'钟楼蝙蝠',
'黄蟾蜍',
'黑老鼠',
'棕色土拨鼠',
'笼中的兔子',
'笼中的绵羊',
'笼中的松鼠',
'笼中的蟾蜍',
'猫',
'鸡',
'克莱奥',
'熔核鼠',
'乳牛',
'奶牛',
'被治愈的鹿',
'被治愈的瞪羚',
'矿道老鼠',
'鹿',
'狗',
'喵喵',
'被控制的矿道老鼠',
'利牙',
'小鹿',
'火甲虫',
'长毛兔',
'青蛙',
'瞪羚',
'野兔',
'马',
'大蟾蜍',
'被感染的鹿',
'被感染的松鼠',
'丛林蟾蜍',
'克拉兰克的温度计',
'雷蒂',
'熔岩蟹',
'噬鱼蛇',
'老鼠',
'毕勾沃斯先生',
'尼波斯',
'诺拉姆',
'老马布兰契',
'鹦鹉',
'小猪',
'Pirate treasure trigger mob',
'瘟疫虫',
'瘟疫蛆',
'瘟疫鼠',
'瘟疫白蚁',
'草原土拨鼠',
'兔子',
'山羊',
'老鼠',
'骑乘用山羊',
'蟑螂',
'萨罗米',
'鱼群',
'蝎子',
'小绵羊',
'绵羊',
'辛德拉小精灵',
'生病的鹿',
'生病的瞪羚',
'蛇',
'蜘蛛',
'斯派克',
'松鼠',
'猪',
'腐化蟑螂',
'腐化鼠',
'蟾蜍',
'小乌龟',
'安德弗特',
'伊露恩之音',
'路径点(只有GM可见)',
'小精灵',
}
pfUI_locale["zhCN"]["dyndebuffs"] = {
["Rupture"] = "割裂",
@@ -1082,32 +1002,4 @@ pfUI_locale["zhCN"]["debuffs"] = {
-- custom entries not detected by DBC extractor
pfUI_locale["zhCN"]["debuffs"]['冰锥']={[0]=8.0,} -- Cone of Cold
pfUI_locale["zhCN"]["totems"] = {
["祛病图腾"] = "spell_nature_diseasecleansingtotem",
["土元素图腾"] = "spell_nature_earthelemental_totem",
["地缚图腾"] = "spell_nature_strengthofearthtotem02",
["火元素图腾"] = "spell_fire_elemental_totem",
["火焰新星图腾"] = "spell_fire_sealoffire",
["抗火图腾"] = "spell_fireresistancetotem_01",
["火舌图腾"] = "spell_nature_guardianward",
["抗寒图腾"] = "spell_frostresistancetotem_01",
["风之优雅图腾"] = "spell_nature_invisibilitytotem",
["根基图腾"] = "spell_nature_groundingtotem",
["治疗之泉图腾"] = "Inv_spear_04",
["熔岩图腾"] = "spell_fire_selfdestruct",
["法力之泉图腾"] = "spell_nature_manaregentotem",
["法力之潮图腾"] = "spell_frost_summonwaterelemental",
["自然抗性图腾"] = "spell_nature_natureresistancetotem",
["清毒图腾"] = "spell_nature_poisoncleansingtotem",
["灼热图腾"] = "spell_fire_searingtotem",
["岗哨图腾"] = "spell_nature_removecurse",
["石爪图腾"] = "spell_nature_stoneclawtotem",
["石肤图腾"] = "spell_nature_stoneskintotem",
["大地之力图腾"] = "spell_nature_earthbindtotem",
["天怒图腾"] = "spell_fire_totemofwrath",
["战栗图腾"] = "spell_nature_tremortotem",
["风怒图腾"] = "spell_nature_windfury",
["风墙图腾"] = "spell_nature_earthbind",
["空气之怒图腾"] = "spell_nature_slowingtotem",
}
+4 -1
View File
@@ -51,10 +51,12 @@ pfUI_translation["deDE"] = {
["Auto Sell Grey Items"] = nil,
["Average Per Hour"] = nil,
["Background Color"] = nil,
["Bags"] = "Taschen",
["Bags & Bank"] = nil,
["Bags Border Size"] = nil,
["Bagslots Per Row"] = nil,
["Bagspace"] = nil,
["Bank"] = "Bank",
["Banker"] = nil,
["Bankslots Per Row"] = nil,
["Bar Background"] = nil,
@@ -290,7 +292,6 @@ pfUI_translation["deDE"] = {
["Enable Mana Ticks"] = nil,
["Enable Micro Bar"] = nil,
["Enable Mouselook With Right Click"] = nil,
["Enable Mouseover Tooltip"] = nil,
["Enable Movable Bags"] = nil,
["Enable Offscreen Frame Positions"] = nil,
["Enable Overlap"] = nil,
@@ -311,6 +312,7 @@ pfUI_translation["deDE"] = {
["Encode"] = nil,
["Ended"] = nil,
["Energy Color"] = nil,
["Equipped"] = "Angelegt",
["Equipped Item Color"] = nil,
["Estimate Debuffs"] = nil,
["Estimate Enemy Health Points"] = nil,
@@ -819,6 +821,7 @@ pfUI_translation["deDE"] = {
["Top Actionbar"] = nil,
["Top Left"] = nil,
["Top Right"] = nil,
["Total"] = "Gesamt",
["Total Gold"] = nil,
["Totem Direction"] = nil,
["Totem Icons"] = nil,
+10 -1
View File
@@ -52,15 +52,19 @@ pfUI_translation["enUS"] = {
["Auto Sell Grey Items"] = nil,
["Average Per Hour"] = nil,
["Background Color"] = nil,
["Bags"] = nil,
["Bags & Bank"] = nil,
["Bags Border Size"] = nil,
["Bagslots Per Row"] = nil,
["Bagspace"] = nil,
["Bank"] = nil,
["Banker"] = nil,
["Bankslots Per Row"] = nil,
["Bar Background"] = nil,
["Bar Texture"] = nil,
["Battleground Frames"] = nil,
["Battleground Statistics"] = nil,
["BEHIND"] = nil,
["Blacklist"] = nil,
["Blinding Powder"] = nil,
["Blue Border On Friendly Players"] = nil,
@@ -293,7 +297,6 @@ pfUI_translation["enUS"] = {
["Enable Mana Ticks"] = nil,
["Enable Micro Bar"] = nil,
["Enable Mouselook With Right Click"] = nil,
["Enable Mouseover Tooltip"] = nil,
["Enable Movable Bags"] = nil,
["Enable Offscreen Frame Positions"] = nil,
["Enable Overlap"] = nil,
@@ -314,6 +317,7 @@ pfUI_translation["enUS"] = {
["Encode"] = nil,
["Ended"] = nil,
["Energy Color"] = nil,
["Equipped"] = nil,
["Equipped Item Color"] = nil,
["Estimate Debuffs"] = nil,
["Estimate Enemy Health Points"] = nil,
@@ -326,6 +330,7 @@ pfUI_translation["enUS"] = {
["Export"] = nil,
["Face"] = nil,
["Fade To Custom Color"] = nil,
["FARM MODE"] = nil,
["Fast"] = nil,
["Filter Mode"] = nil,
["Finish"] = nil,
@@ -536,6 +541,7 @@ pfUI_translation["enUS"] = {
["Next Memory Cleanup"] = nil,
["No"] = nil,
["No Anchor"] = nil,
["NO LOS"] = nil,
["None"] = nil,
["Not a valid button!"] = nil,
["No tracking spell active"] = nil,
@@ -771,6 +777,8 @@ pfUI_translation["enUS"] = {
["Small"] = nil,
["Some settings need to reload the UI to take effect.\nDo you want to reload now?"] = nil,
["Some settings need to reload the UI to take effect.\nDo you want to reloadUI now?"] = nil,
["Sort Bags"] = nil,
["Sort Bank"] = nil,
["Sort Order"] = nil,
["Soul Shard"] = nil,
["Soulshard Counter"] = nil,
@@ -835,6 +843,7 @@ pfUI_translation["enUS"] = {
["Top Actionbar"] = nil,
["Top Left"] = nil,
["Top Right"] = nil,
["Total"] = nil,
["Total Gold"] = nil,
["Totem Direction"] = nil,
["Totem Icons"] = nil,
+4 -1
View File
@@ -51,10 +51,12 @@ pfUI_translation["esES"] = {
["Auto Sell Grey Items"] = "Vender objetos grises automáticamente",
["Average Per Hour"] = "Promedio por hora",
["Background Color"] = "Color del fondo",
["Bags"] = "Bolsas",
["Bags & Bank"] = "Bolsas y banco",
["Bags Border Size"] = "Tamaño del borde de las bolsas",
["Bagslots Per Row"] = "Casillas de la bolsa por fila",
["Bagspace"] = "Huecos en las bolsas",
["Bank"] = "Banco",
["Banker"] = "Banquero",
["Bankslots Per Row"] = "Casillas del banco por fila",
["Bar Background"] = "Fondo de la barra",
@@ -290,7 +292,6 @@ pfUI_translation["esES"] = {
["Enable Mana Ticks"] = "Activar el indicador de pulsos del maná",
["Enable Micro Bar"] = "Activar microbarra",
["Enable Mouselook With Right Click"] = "Mirar usando el puntero con clic derecho",
["Enable Mouseover Tooltip"] = "Activar la descripción emergente al pasar el puntero",
["Enable Movable Bags"] = "Permitir mover las bolsas",
["Enable Offscreen Frame Positions"] = "Permitir mover los marcos fuera de la pantalla",
["Enable Overlap"] = "Permitir superposición",
@@ -311,6 +312,7 @@ pfUI_translation["esES"] = {
["Encode"] = "Codificar",
["Ended"] = "Terminado",
["Energy Color"] = "Color de energía",
["Equipped"] = "Equipado",
["Equipped Item Color"] = "Color del objeto equipado",
["Estimate Debuffs"] = "Estimar los perjuicios",
["Estimate Enemy Health Points"] = "Estimar los puntos de salud del enemigo",
@@ -819,6 +821,7 @@ pfUI_translation["esES"] = {
["Top Actionbar"] = "Barra de acción superior",
["Top Left"] = "Superior derecha",
["Top Right"] = "Superior izquierda",
["Total"] = "Total",
["Total Gold"] = "Oro Total",
["Totem Direction"] = "Dirección del tótem",
["Totem Icons"] = "Iconos de los tótems",
+4 -1
View File
@@ -51,10 +51,12 @@ pfUI_translation["frFR"] = {
["Auto Sell Grey Items"] = "Vente automatique des objets gris",
["Average Per Hour"] = "Moyenne par heure",
["Background Color"] = "Couleur de l'arrière-plan",
["Bags"] = "Sacs",
["Bags & Bank"] = "Sacs et Banque",
["Bags Border Size"] = "Taille de la bordure des Sacs",
["Bagslots Per Row"] = "Emplacements des sacs par rangée",
["Bagspace"] = "Place libre des sacs",
["Bank"] = "Banque",
["Banker"] = "Banquier",
["Bankslots Per Row"] = "Emplacements de la banque par rangée",
["Bar Background"] = "Arrière plan de la barre",
@@ -290,7 +292,6 @@ pfUI_translation["frFR"] = {
["Enable Mana Ticks"] = "Activer les Ticks de mana",
["Enable Micro Bar"] = "Activer la barre des menus miniature",
["Enable Mouselook With Right Click"] = "Activer le déplacement de la caméra avec le clic droit",
["Enable Mouseover Tooltip"] = "Activer l'infobulle au passage de la souris",
["Enable Movable Bags"] = "Activer les sacs mobiles",
["Enable Offscreen Frame Positions"] = "Activer le positionnement des cadres en dehors de l'écran",
["Enable Overlap"] = "Activer la superposition",
@@ -311,6 +312,7 @@ pfUI_translation["frFR"] = {
["Encode"] = "Encoder",
["Ended"] = "Terminé",
["Energy Color"] = "Couleur de l'energie",
["Equipped"] = "Équipé",
["Equipped Item Color"] = "Couleur de l'objet équipé",
["Estimate Debuffs"] = "Estimer les Affaiblissements",
["Estimate Enemy Health Points"] = "Estimer les points de vie ennemis",
@@ -819,6 +821,7 @@ pfUI_translation["frFR"] = {
["Top Actionbar"] = "Barre d'action supérieure",
["Top Left"] = "Haut Gauche",
["Top Right"] = "Haut Droit",
["Total"] = "Total",
["Total Gold"] = "Or Total",
["Totem Direction"] = "Direction des totems",
["Totem Icons"] = "Icones des totems",
+4 -1
View File
@@ -51,10 +51,12 @@ pfUI_translation["koKR"] = {
["Auto Sell Grey Items"] = "회색아이템 자동 판매",
["Average Per Hour"] = nil,
["Background Color"] = "백그라운드 색상",
["Bags"] = "가방",
["Bags & Bank"] = "가방&은행",
["Bags Border Size"] = "가방 테두리 크기",
["Bagslots Per Row"] = nil,
["Bagspace"] = "가방 공간",
["Bank"] = "은행",
["Banker"] = nil,
["Bankslots Per Row"] = nil,
["Bar Background"] = nil,
@@ -290,7 +292,6 @@ pfUI_translation["koKR"] = {
["Enable Mana Ticks"] = nil,
["Enable Micro Bar"] = "미니바 보기(블리자드 마이크로바)",
["Enable Mouselook With Right Click"] = "오른쪽 클릭 Mouselook 사용",
["Enable Mouseover Tooltip"] = nil,
["Enable Movable Bags"] = nil,
["Enable Offscreen Frame Positions"] = "오프스크린 프레임 위치 활성화",
["Enable Overlap"] = "겹쳐서 표시",
@@ -311,6 +312,7 @@ pfUI_translation["koKR"] = {
["Encode"] = nil,
["Ended"] = nil,
["Energy Color"] = nil,
["Equipped"] = "착용 중",
["Equipped Item Color"] = nil,
["Estimate Debuffs"] = nil,
["Estimate Enemy Health Points"] = nil,
@@ -819,6 +821,7 @@ pfUI_translation["koKR"] = {
["Top Actionbar"] = nil,
["Top Left"] = nil,
["Top Right"] = nil,
["Total"] = "총",
["Total Gold"] = "총 금",
["Totem Direction"] = nil,
["Totem Icons"] = nil,
+4 -1
View File
@@ -51,10 +51,12 @@ pfUI_translation["ruRU"] = {
["Auto Sell Grey Items"] = "Автоматическая продажа серых предметов",
["Average Per Hour"] = "Среднее за час",
["Background Color"] = "Цвет фона",
["Bags"] = "Сумки",
["Bags & Bank"] = "Сумки & Банк",
["Bags Border Size"] = "Размер границы сумок",
["Bagslots Per Row"] = "Количество ячеек в сумке на строку",
["Bagspace"] = "Место в сумках",
["Bank"] = "Банк",
["Banker"] = "Банкир",
["Bankslots Per Row"] = "Количество ячеек в банке на строку",
["Bar Background"] = "Фон панели",
@@ -290,7 +292,6 @@ pfUI_translation["ruRU"] = {
["Enable Mana Ticks"] = "Включить восполнение маны",
["Enable Micro Bar"] = "Включить панель микро меню",
["Enable Mouselook With Right Click"] = "Включить нажатие правой кнопки мыши на индикаторе здоровья",
["Enable Mouseover Tooltip"] = "Включить подсказку при наведении мыши",
["Enable Movable Bags"] = "Включить подвижные сумки",
["Enable Offscreen Frame Positions"] = "Включить расположение окон за пределами экрана",
["Enable Overlap"] = "Включить перекрытие",
@@ -311,6 +312,7 @@ pfUI_translation["ruRU"] = {
["Encode"] = "Кодировать",
["Ended"] = "Окончание",
["Energy Color"] = "Цвет энергии",
["Equipped"] = "Экипировано",
["Equipped Item Color"] = "Цвет экипированных предметов",
["Estimate Debuffs"] = "Оценка дебафов",
["Estimate Enemy Health Points"] = "Оценка очков здоровья врага",
@@ -819,6 +821,7 @@ pfUI_translation["ruRU"] = {
["Top Actionbar"] = "Верхняя",
["Top Left"] = "Сверху слева",
["Top Right"] = "Сверху справа",
["Total"] = "Всего",
["Total Gold"] = "Всего золота",
["Totem Direction"] = "Направление тотемов",
["Totem Icons"] = "Иконки тотемов",
+4 -1
View File
@@ -51,10 +51,12 @@ pfUI_translation["zhCN"] = {
["Auto Sell Grey Items"] = "自动贩卖灰色物品",
["Average Per Hour"] = "平均每小时",
["Background Color"] = "背景颜色",
["Bags"] = "背包",
["Bags & Bank"] = "背包和银行",
["Bags Border Size"] = "背包边框大小",
["Bagslots Per Row"] = "每行包裹槽数量",
["Bagspace"] = "背包空间",
["Bank"] = "银行",
["Banker"] = "工会银行角色",
["Bankslots Per Row"] = "每行银行槽数量",
["Bar Background"] = "动作条背景",
@@ -290,7 +292,6 @@ pfUI_translation["zhCN"] = {
["Enable Mana Ticks"] = "显示法力值刻度",
["Enable Micro Bar"] = "显示菜单栏",
["Enable Mouselook With Right Click"] = "启动右键移动镜头",
["Enable Mouseover Tooltip"] = "启用鼠标悬停工具提示",
["Enable Movable Bags"] = "启用可移动包裹",
["Enable Offscreen Frame Positions"] = "允许本插件所有框体移出屏幕边缘",
["Enable Overlap"] = "叠加显示",
@@ -311,6 +312,7 @@ pfUI_translation["zhCN"] = {
["Encode"] = "编码",
["Ended"] = "结束",
["Energy Color"] = "能量值颜色",
["Equipped"] = "已装备",
["Equipped Item Color"] = "已装备物品颜色",
["Estimate Debuffs"] = "预估Debuffs",
["Estimate Enemy Health Points"] = "预估敌人的生命值",
@@ -820,6 +822,7 @@ pfUI_translation["zhCN"] = {
["Top Actionbar"] = "上方动作条",
["Top Left"] = "左上方",
["Top Right"] = "右上方",
["Total"] = "总计",
["Total Gold"] = "总黄金",
["Totem Direction"] = "图腾方向",
["Totem Icons"] = "图腾图标",
+4 -1
View File
@@ -51,10 +51,12 @@ pfUI_translation["zhTW"] = {
["Auto Sell Grey Items"] = "自動販賣灰色物品",
["Average Per Hour"] = "平均每小時",
["Background Color"] = "背景顏色",
["Bags"] = "背包",
["Bags & Bank"] = "背包和銀行",
["Bags Border Size"] = "背包邊框大小",
["Bagslots Per Row"] = "每行包裹槽數量",
["Bagspace"] = "背包空間",
["Bank"] = "銀行",
["Banker"] = "工會銀行角色",
["Bankslots Per Row"] = "每行銀行槽數量",
["Bar Background"] = nil,
@@ -290,7 +292,6 @@ pfUI_translation["zhTW"] = {
["Enable Mana Ticks"] = nil,
["Enable Micro Bar"] = "顯示功能表列",
["Enable Mouselook With Right Click"] = "啟動右鍵移動鏡頭",
["Enable Mouseover Tooltip"] = "啟用滑鼠懸停工具提示",
["Enable Movable Bags"] = "啟用可移動包裹",
["Enable Offscreen Frame Positions"] = "啟用螢幕框架固定",
["Enable Overlap"] = "疊加顯示",
@@ -311,6 +312,7 @@ pfUI_translation["zhTW"] = {
["Encode"] = "編碼",
["Ended"] = nil,
["Energy Color"] = nil,
["Equipped"] = "已裝備",
["Equipped Item Color"] = nil,
["Estimate Debuffs"] = nil,
["Estimate Enemy Health Points"] = nil,
@@ -819,6 +821,7 @@ pfUI_translation["zhTW"] = {
["Top Actionbar"] = nil,
["Top Left"] = "左上方",
["Top Right"] = "右上方",
["Total"] = "全部",
["Total Gold"] = "總金量",
["Totem Direction"] = nil,
["Totem Icons"] = nil,
+6 -5
View File
@@ -83,12 +83,13 @@ end
-- [number] Casting time of the spell in milliseconds
-- [number] Minimum range from the target required to cast the spell
-- [number] Maximum range from the target at which you can cast the spell
-- [number] The numeric spell-id of the spell
-- [number] Spell's index in the book
-- [number] The type of the spellbook that the spell is in
-- [number] The numeric spell-id of the spell
local spellinfo = {}
function libspell.GetSpellInfo(index, bookType)
local cache = spellinfo[index]
if cache then return cache[1], cache[2], cache[3], cache[4], cache[5], cache[6], cache[7], cache[8] end
if cache then return unpack(cache) end
local slot
if type(index) == "string" then
@@ -108,10 +109,10 @@ function libspell.GetSpellInfo(index, bookType)
-- ClassicAPI's GetSpellInfo returns: name, rank, icon, cost, isFunnel, powerType,
-- castTime(ms), minRange, maxRange, spellID. Keep libspell's historical positional
-- shape (castingTime at 4, ranges at 5/6, slot+bookType at 7/8).
local name, rank, icon, _, _, _, castingTime, minRange, maxRange = GetSpellInfo(slot, bookType)
local name, rank, icon, _, _, _, castingTime, minRange, maxRange, spellId = GetSpellInfo(slot, bookType)
spellinfo[index] = { name, rank, icon, castingTime, minRange, maxRange, slot, bookType }
return name, rank, icon, castingTime, minRange, maxRange, slot, bookType
spellinfo[index] = SafePack(name, rank, icon, castingTime, minRange, maxRange, slot, bookType, spellId)
return name, rank, icon, castingTime, minRange, maxRange, slot, bookType, spellId
end
-- Reset all spell caches whenever new spells are learned/unlearned
+11 -12
View File
@@ -371,12 +371,12 @@ pfUI:RegisterModule("actionbar", function ()
-- active conditional dynamically, instead of being frozen to the first
-- statically-scanned spell.
if CleveRoids and CleveRoids.IsManagedAction and CleveRoids.IsManagedAction(self.id) then
self.spellslot, self.booktype = nil, nil
self.spellslot, self.booktype, self.spellID = nil, nil, nil
return
end
local kind, slot = GetActionInfo(self.id)
self.spellslot, self.booktype = nil, nil
self.spellslot, self.booktype, self.spellID = nil, nil, nil
if kind == 'macro' then
local name, _, body = GetMacroInfo(slot)
@@ -414,10 +414,7 @@ pfUI:RegisterModule("actionbar", function ()
end
if match then
local _, _, spell, rank = string.find(match, '(.+)%((.+)%)')
spell = spell or match
self.spellslot, self.booktype = libspell.GetSpellIndex(spell, rank)
self.spellslot, self.booktype, self.spellID = select(7, libspell.GetSpellInfo(match))
if self.spellslot and self.spellslot > 0 then return end
end
end
@@ -426,7 +423,7 @@ pfUI:RegisterModule("actionbar", function ()
end
local function ButtonEnter(self)
local self = self or this
self = self or this
-- indicate that dragging could get enabled
drag_await = true
@@ -444,6 +441,8 @@ pfUI:RegisterModule("actionbar", function ()
else
GameTooltip:SetPetAction(self.id)
end
elseif self.spellID then
GameTooltip:SetSpellByID(self.spellID)
elseif self.spellslot and self.booktype then
GameTooltip:SetSpell(self.spellslot, self.booktype)
else
@@ -454,7 +453,7 @@ pfUI:RegisterModule("actionbar", function ()
end
local function ButtonLeave(self)
local self = self or this
self = self or this
-- no longer wait for a drag event
drag_await = nil
@@ -467,7 +466,7 @@ pfUI:RegisterModule("actionbar", function ()
local grid, sid, id, bar, active, texture, _
local function ButtonSlotUpdate(self)
if not self then return end
local self = self or this
self = self or this
sid = self.id -- 1 to 120
-- reset shared variables
@@ -586,7 +585,7 @@ pfUI:RegisterModule("actionbar", function ()
local sid, usable, oom, _
local function ButtonUsableUpdate(self)
local self = self or this
self = self or this
sid = self.id -- 1 to 120
if self.bar == 11 then
@@ -622,7 +621,7 @@ pfUI:RegisterModule("actionbar", function ()
end
local function ButtonRangeUpdate(self)
local self = self or this
self = self or this
-- update range display
if C.bars.glowrange == "1" and self.bar ~= 11 and self.bar ~= 12 and HasAction(self.id) and ActionHasRange(self.id) and IsActionInRange(self.id) == 0 then
@@ -700,7 +699,7 @@ pfUI:RegisterModule("actionbar", function ()
end
local function BarsEvent(self)
local self = self or this
self = self or this
-- refresh only specific slots
if event == "ACTIONBAR_SLOT_CHANGED" and arg1 and arg1 ~= 0 then
+5
View File
@@ -2,6 +2,11 @@ pfUI:RegisterModule("autoshift", function ()
pfUI.autoshift = CreateFrame("Frame")
pfUI.autoshift:RegisterEvent("UI_ERROR_MESSAGE")
-- Empty stub kept only so Turtle WoW's pfUI-turtle addon doesn't error when
-- its obsolete moonkin autoshift module iterates pfUI.autoshift.shapeshifts.
-- This fork drives autoshift off GetShapeshiftFormID() and no longer uses it.
pfUI.autoshift.shapeshifts = {}
pfUI.autoshift.scanString = string.gsub(SPELL_FAILED_ONLY_SHAPESHIFT, "%%s", "(.+)")
pfUI.autoshift.errors = { SPELL_FAILED_NOT_MOUNTED, ERR_ATTACK_MOUNTED, ERR_TAXIPLAYERALREADYMOUNTED,
+2 -2
View File
@@ -972,7 +972,7 @@ pfUI:RegisterModule("bags", function ()
frame.sort.backdrop:SetBackdropBorderColor(1,1,.25,1)
frame.sort.texture:SetVertexColor(1,1,.25,1)
GameTooltip:SetOwner(this, "ANCHOR_RIGHT")
GameTooltip:SetText("Sort Bags")
GameTooltip:SetText(T["Sort Bags"])
GameTooltip:Show()
end)
@@ -1207,7 +1207,7 @@ pfUI:RegisterModule("bags", function ()
frame.sort.backdrop:SetBackdropBorderColor(1,1,.25,1)
frame.sort.texture:SetVertexColor(1,1,.25,1)
GameTooltip:SetOwner(this, "ANCHOR_RIGHT")
GameTooltip:SetText("Sort Bank")
GameTooltip:SetText(T["Sort Bank"])
GameTooltip:Show()
end)
+1 -1
View File
@@ -32,7 +32,7 @@ pfUI:RegisterModule("bgscore", function ()
-- Title label
local title = mover:CreateFontString(nil, "OVERLAY")
title:SetFont("Fonts\\FRIZQT__.TTF", 14, "OUTLINE")
title:SetText("Battleground Frames")
title:SetText(T["Battleground Frames"])
title:SetPoint("TOP", mover, "TOP", 0, -2)
-- BG score preview text
+28 -6
View File
@@ -13,6 +13,7 @@ pfUI:RegisterModule("equipmentmanager", function()
local pendingAction = nil -- "new" | "save" | "rename" — what the popups apply to
local slotOverlays = {} -- [invSlotID] = ignored-overlay texture on the character slot
local popoutButtons = {} -- popout arrow buttons; toggled with the EM frame
local UpdatePopouts -- forward decl; assigned once popouts + flyout exist
-- Pending ignored-slot toggles per set: a slotID here means the
-- effective state is flipped from what's persisted. Committed on
@@ -76,7 +77,7 @@ pfUI:RegisterModule("equipmentmanager", function()
else
frame:SetPoint("TOPLEFT", CharacterFrame, "TOPRIGHT", 0, 0)
end
for _, b in ipairs(popoutButtons) do b:Show() end
UpdatePopouts()
end)
CreateBackdrop(frame, nil, nil, .9)
CreateBackdropShadow(frame)
@@ -452,13 +453,13 @@ pfUI:RegisterModule("equipmentmanager", function()
-- ============================================================
local flyout = CreateFrame("Frame", "pfEqMgrFlyout", UIParent)
-- Everything tied to the EM sidecar closes with it: the popout arrows,
-- the per-slot flyout, and the name/icon popup. (OnShow re-shows the
-- popout arrows.)
-- The name/icon popup is sidecar-only, so it closes with the sidecar.
-- Popout arrows and the flyout are reconciled by UpdatePopouts: by
-- default they follow the sidecar, but with the "Always Show Equipment
-- Slot Flyouts" option they stay while the paperdoll is open.
frame:SetScript("OnHide", function()
for _, b in ipairs(popoutButtons) do b:Hide() end
flyout:Hide()
namePopup:Hide()
UpdatePopouts()
end)
flyout:SetFrameStrata("DIALOG")
flyout:Hide()
@@ -750,6 +751,27 @@ pfUI:RegisterModule("equipmentmanager", function()
end
end
-- Popout arrows follow the EM sidecar by default. With the
-- "Always Show Equipment Slot Flyouts" option they follow the paperdoll
-- instead, so gear can be swapped without opening the equipment manager.
local function PopoutsActive()
if C.character.inventory.equipflyout == "1" then
return PaperDollFrame:IsShown()
end
return frame:IsShown()
end
function UpdatePopouts()
local show = PopoutsActive()
for _, b in ipairs(popoutButtons) do
if show then b:Show() else b:Hide() end
end
if not show then flyout:Hide() end
end
PaperDollFrame:HookScript("OnShow", UpdatePopouts)
PaperDollFrame:HookScript("OnHide", UpdatePopouts)
-- ============================================================
-- Refresh
-- ============================================================
+1 -1
View File
@@ -136,7 +136,7 @@ pfUI:RegisterModule("farmmode", function ()
pfUI.farmmap.button.txt = pfUI.farmmap.button:CreateFontString("pfFarmMapText", "LOW", "GameFontWhite")
pfUI.farmmap.button.txt:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE")
pfUI.farmmap.button.txt:SetPoint("CENTER", 0, 0)
pfUI.farmmap.button.txt:SetText("|cff33ffcc FARM MODE")
pfUI.farmmap.button.txt:SetText("|cff33ffcc " .. T["FARM MODE"])
end
CreateBackdrop(pfUI.farmmap)
+1 -1
View File
@@ -2240,7 +2240,6 @@ pfUI:RegisterModule("gui", function ()
-- build config entries
CreateConfig(U[c], T["Display Frame"] .. ": " .. t, C.unitframes[c], "visible", "checkbox")
CreateConfig(U[c], T["Enable Mouseover Tooltip"], C.unitframes[c], "showtooltip", "checkbox")
CreateConfig(U[c], T["Default Transparency"], C.unitframes[c], "alpha_visible", "dropdown", pfUI.gui.dropdowns.percent_small)
CreateConfig(U[c], T["Out Of Range Transparency"], C.unitframes[c], "alpha_outrange", "dropdown", pfUI.gui.dropdowns.percent_small)
CreateConfig(U[c], T["Offline Transparency"], C.unitframes[c], "alpha_offline", "dropdown", pfUI.gui.dropdowns.percent_small)
@@ -2412,6 +2411,7 @@ pfUI:RegisterModule("gui", function ()
CreateGUIEntry(T["Character"], T["Inventory"], function()
CreateConfig(nil, T["Show Durability"], C.character.inventory, "durability", "checkbox")
CreateConfig(nil, T["Always Show Equipment Slot Flyouts"], C.character.inventory, "equipflyout", "checkbox")
end)
CreateGUIEntry(T["Character"], T["Reputation"], function()
+34 -9
View File
@@ -1,10 +1,8 @@
pfUI:RegisterModule("hunterbar", function ()
local class = UnitClassBase("player")
if class ~= "HUNTER" or C.bars.hunterbar == "0" then return end
if UnitClassBase("player") ~= "HUNTER" or C.bars.hunterbar == "0" then return end
-- Wing Clip (any rank) and Arcane Shot (any rank) spell IDs.
-- IsSpellInRange(spellId) works with any spell ID via Nampower,
-- no actionbar slot needed.
-- C_Spell.IsSpellInRange works with any spell ID, no actionbar slot needed.
local WINGCLIP_ID = 2974 -- melee range indicator (~5 yd)
local ARCANESHOT_ID = 3044 -- ranged range indicator (~35 yd)
@@ -12,22 +10,37 @@ pfUI:RegisterModule("hunterbar", function ()
-- Only swap BACK to melee bar when Wing Clip is actually in range.
-- This prevents rapid bar-flipping in the transition zone.
local THROTTLE = 0.02 -- seconds between range checks (was every frame)
pfUI.hunterbar = CreateFrame("Frame", "pfHunterBar", UIParent)
-- track which page we last forced so we don't spam ChangeActionBarPage()
pfUI.hunterbar.lastPage = nil
pfUI.hunterbar.elapsed = 0
-- Idle until there's a live, attackable target. A hidden frame runs no
-- OnUpdate, so the range polling only ticks while it can matter.
pfUI.hunterbar:Hide()
pfUI.hunterbar:SetScript("OnUpdate", function()
-- only act when there is a live, attackable target
this.elapsed = this.elapsed + arg1
if this.elapsed < THROTTLE then return end
this.elapsed = 0
-- Target died or turned unattackable without a target-change event
-- (it dropped to a corpse); stop ticking until the next target.
if not UnitExists("target") or not UnitCanAttack("player", "target") then
this:Hide()
return
end
local wingclipInRange = IsSpellInRange(WINGCLIP_ID, "target")
local arcaneshotInRange = IsSpellInRange(ARCANESHOT_ID, "target")
-- C_Spell.IsSpellInRange returns true / false / nil (rangeless). The
-- explicit == true / == false tests leave the bar unchanged on nil.
local wingclipInRange = C_Spell.IsSpellInRange(WINGCLIP_ID, "target")
local arcaneshotInRange = C_Spell.IsSpellInRange(ARCANESHOT_ID, "target")
-- swap to ranged bar: out of melee range AND arcane shot (8yd) in range
if wingclipInRange == 0 and arcaneshotInRange == 1 then
if wingclipInRange == false and arcaneshotInRange == true then
if this.lastPage ~= 2 then
this.lastPage = 2
_G.CURRENT_ACTIONBAR_PAGE = 2
@@ -35,7 +48,7 @@ pfUI:RegisterModule("hunterbar", function ()
end
-- swap to melee bar: in melee range AND arcane shot (8yd) out of range
elseif wingclipInRange == 1 and arcaneshotInRange == 0 then
elseif wingclipInRange == true and arcaneshotInRange == false then
if this.lastPage ~= 1 then
this.lastPage = 1
_G.CURRENT_ACTIONBAR_PAGE = 1
@@ -43,4 +56,16 @@ pfUI:RegisterModule("hunterbar", function ()
end
end
end)
-- Start ticking only when we gain an attackable target.
pfUI.hunterbar:RegisterEvent("PLAYER_TARGET_CHANGED")
pfUI.hunterbar:RegisterEvent("PLAYER_ENTERING_WORLD")
pfUI.hunterbar:SetScript("OnEvent", function()
if UnitExists("target") and UnitCanAttack("player", "target") then
this.elapsed = THROTTLE -- run the first check on the next frame
this:Show()
else
this:Hide()
end
end)
end)
+7 -7
View File
@@ -75,14 +75,14 @@ pfUI:RegisterModule("innervatecall", function ()
SendChatMessage(">> Innervate casted on " .. targetName .. " <<", channel)
-- Schedule "ready" announcement when cooldown expires
-- Use GetSpellIdCooldown for precise remaining time, fallback to 360s
-- Schedule "ready" announcement when the cooldown expires. Read the
-- precise remaining time from C_Spell.GetSpellCooldown (startTime and
-- duration are seconds from the GetTime epoch); fall back to 360s.
local cdRemaining = 360
if GetSpellIdCooldown then
local cd = GetSpellIdCooldown(INNERVATE_SPELLID)
if cd and cd.cooldownRemainingMs and cd.cooldownRemainingMs > 0 then
cdRemaining = cd.cooldownRemainingMs / 1000
end
local cd = C_Spell.GetSpellCooldown(INNERVATE_SPELLID)
if cd and cd.duration and cd.duration > 0 then
local remaining = cd.startTime + cd.duration - GetTime()
if remaining > 0 then cdRemaining = remaining end
end
C_Timer.After(cdRemaining, function()
+8 -4
View File
@@ -26,10 +26,14 @@ pfUI:RegisterModule("itemcount", function ()
if bank < 0 then bank = 0 end
frame:AddLine(" ")
if bags > 0 then frame:AddDoubleLine("Bags:", bags, 1, 1, 1, 1, 1, 1) end
if bank > 0 then frame:AddDoubleLine("Bank:", bank, 1, 1, 1, 1, 1, 1) end
if equipped > 0 then frame:AddDoubleLine("Equipped:", equipped, 1, 1, 1, 1, 1, 1) end
frame:AddDoubleLine("Total:", total, 1, 1, 1, 1, 1, 1)
if bags > 0 then frame:AddDoubleLine(T["Bags"] .. ":", bags, 1, 1, 1, 1, 1, 1) end
if bank > 0 then frame:AddDoubleLine(T["Bank"] .. ":", bank, 1, 1, 1, 1, 1, 1) end
if equipped > 0 then frame:AddDoubleLine(T["Equipped"] .. ":", equipped, 1, 1, 1, 1, 1, 1) end
local sources = (bags > 0 and 1 or 0) + (bank > 0 and 1 or 0) + (equipped > 0 and 1 or 0)
if sources > 1 then
frame:AddDoubleLine(T["Total"] .. ":", total, 1, 1, 1, 1, 1, 1)
end
frame:Show()
end
+66 -27
View File
@@ -283,15 +283,35 @@ pfUI:RegisterModule("nameplates", function ()
end
end
local function TotemPlate(name)
if C.nameplates.totemicons == "1" then
for totem, icon in pairs(L["totems"]) do
if string.find(name, totem) then return icon end
end
-- Numeric CreatureType.dbc id for the plate's unit (8 = Critter, 11 = Totem).
-- It's fixed per unit, so cache it and reset on plate reuse. nil while the GUID
-- can't resolve yet (incl. the no-SuperWoW case, where cachedGuid is empty).
-- Locale-proof and covers custom units for free -- no name tables needed.
local function CreatureType(plate)
local guid = plate.cachedGuid
if not guid or guid == "" then return nil end
if not plate.creatureType then
plate.creatureType = UnitCreatureTypeID(guid) -- nil retries next call
end
return plate.creatureType
end
local function HidePlate(unittype, name, fullhp, target)
-- Totem icon, read straight from the game:
-- * Passive totems self-cast their provided buff, so they carry exactly one
-- aura whose icon IS the totem's icon (Totem::Summon TOTEM_PASSIVE).
-- * Active totems (Searing/Magma/Fire Nova) cast at enemies and hold no
-- self-aura, so their icon arrives via UNIT_SPELLCAST_SUCCEEDED (cached
-- into plate.totemIcon by the event handler); nil here until then.
local function TotemPlate(plate)
if C.nameplates.totemicons ~= "1" then return nil end
if CreatureType(plate) ~= 11 then return nil end
if plate.totemIcon then return plate.totemIcon end
local aura = C_UnitAuras.GetBuffDataByIndex(plate.cachedGuid, 1)
if aura then plate.totemIcon = aura.icon end
return plate.totemIcon
end
local function HidePlate(unittype, fullhp, target, plate)
-- keep some plates always visible according to config
if C.nameplates.fullhealth == "1" and not fullhp then return nil end
if C.nameplates.target == "1" and target then return nil end
@@ -307,14 +327,10 @@ pfUI:RegisterModule("nameplates", function ()
return true
elseif C.nameplates.friendlyplayer == "1" and unittype == "FRIENDLY_PLAYER" then
return true
elseif C.nameplates.critters == "1" and unittype == "NEUTRAL_NPC" then
for i, critter in pairs(L["critters"]) do
if string.lower(name) == string.lower(critter) then return true end
end
elseif C.nameplates.totems == "1" then
for totem in pairs(L["totems"]) do
if string.find(name, totem) then return true end
end
elseif C.nameplates.critters == "1" and CreatureType(plate) == 8 then
return true
elseif C.nameplates.totems == "1" and CreatureType(plate) == 11 then
return true
end
-- nothing to hide
@@ -483,6 +499,7 @@ nameplates:RegisterEvent("UNIT_SPELLCAST_START")
nameplates:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START")
nameplates:RegisterEvent("UNIT_SPELLCAST_STOP")
nameplates:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP")
nameplates:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
nameplates:RegisterEvent("PLAYER_GUILD_UPDATE")
nameplates:SetScript("OnEvent", function()
@@ -569,6 +586,8 @@ nameplates:RegisterEvent("PLAYER_GUILD_UPDATE")
local guid = UnitGUID(arg1)
plate.nameplate.cachedGuid = guid
plate.nameplate.unit = arg1
plate.nameplate.creatureType = nil -- recompute for the new unit
plate.nameplate.totemIcon = nil
if guid then
plateByGuid[guid] = plate.nameplate
-- Seed: the unit may already be mid-cast (its UNIT_SPELLCAST_START
@@ -646,6 +665,22 @@ nameplates:RegisterEvent("PLAYER_GUILD_UPDATE")
end
end
elseif event == "UNIT_SPELLCAST_SUCCEEDED" then
-- Active totems (Searing/Magma/Fire Nova) carry no self-aura, so their
-- attack cast is the only icon source. Capture it once per totem, gated on
-- creature type so a normal caster's spell never styles it as a totem.
if arg1 and strfind(arg1, "^nameplate") then
local guid = UnitGUID(arg1)
local plate = guid and plateByGuid[guid]
if plate and not plate.totemIcon and arg3 and CreatureType(plate) == 11 then
local tex = C_Spell.GetSpellTexture(arg3)
if tex then
plate.totemIcon = tex
plate.castUpdate = true -- re-render now so the icon shows
end
end
end
elseif event == "UNIT_AURA" then
-- ClassicAPI: fires with arg1 == "nameplateN" when a unit's aura set
-- changes (add/remove/modify). Flag the matching plate so OnUpdate does a
@@ -1072,11 +1107,11 @@ nameplates:RegisterEvent("PLAYER_GUILD_UPDATE")
end
-- hide frames according to the configuration
local TotemIcon = TotemPlate(name)
local TotemIcon = TotemPlate(plate)
if TotemIcon then
-- create totem icon
plate.totem.icon:SetTexture("Interface\\Icons\\" .. TotemIcon)
-- icon resolved from the totem's aura / attack cast (already a full path)
plate.totem.icon:SetTexture(TotemIcon)
plate.glow:Hide()
plate.level:Hide()
@@ -1084,7 +1119,7 @@ nameplates:RegisterEvent("PLAYER_GUILD_UPDATE")
plate.health:Hide()
plate.guild:Hide()
plate.totem:Show()
elseif HidePlate(unittype, name, (hpmax-hp == hpmin), target) then
elseif HidePlate(unittype, (hpmax-hp == hpmin), target, plate) then
plate.level:SetPoint("RIGHT", plate.name, "LEFT", -3, 0)
plate.name:SetParent(plate)
plate.guild:SetPoint("BOTTOM", plate.name, "BOTTOM", -2, -(font_size + 2))
@@ -1191,12 +1226,11 @@ nameplates:RegisterEvent("PLAYER_GUILD_UPDATE")
local r, g, b, a = unpack(unitcolors[unittype])
if class then
if unittype == "ENEMY_PLAYER" and C.nameplates["enemyclassc"] == "1" then
r, g, b, a = PFUI_CLASS_COLORS[class]:GetRGBA()
elseif unittype == "FRIENDLY_PLAYER" and C.nameplates["friendclassc"] == "1" then
r, g, b, a = PFUI_CLASS_COLORS[class]:GetRGBA()
end
if class and (
(unittype == "ENEMY_PLAYER" and C.nameplates["enemyclassc"] == "1") or
(unittype == "FRIENDLY_PLAYER" and C.nameplates["friendclassc"] == "1")
) then
r, g, b, a = PFUI_CLASS_COLORS[class]:GetRGBA()
end
if unitstr and UnitIsTapped(unitstr) and not UnitIsTappedByPlayer(unitstr) then
@@ -1222,10 +1256,15 @@ nameplates:RegisterEvent("PLAYER_GUILD_UPDATE")
plate.cache.namecolor = r + g + b
end
-- update combopoints
for i=1, 5 do plate.combopoints[i]:Hide() end
if target and C.nameplates.cpdisplay == "1" then
for i=1, GetComboPoints("target") do plate.combopoints[i]:Show() end
local cp = GetComboPoints("target")
if plate.cpShown ~= cp then
for i=1, 5 do plate.combopoints[i]:SetShown(i <= cp) end
plate.cpShown = cp
end
elseif plate.cpShown then
for i=1, 5 do plate.combopoints[i]:Hide() end
plate.cpShown = nil
end
-- update debuffs
+2 -2
View File
@@ -28,7 +28,7 @@ pfUI:RegisterModule("unitxp", function ()
behindFrame.text:SetFont(pfUI.font_default, fontSize, "OUTLINE")
behindFrame.text:SetPoint("RIGHT", behindFrame, "RIGHT", -1, 0)
behindFrame.text:SetTextColor(0.3, 1, 0.3, 1)
behindFrame.text:SetText("BEHIND")
behindFrame.text:SetText(T["BEHIND"])
behindFrame.text:Hide()
local lastCheck = 0
@@ -62,7 +62,7 @@ pfUI:RegisterModule("unitxp", function ()
losFrame.text:SetFont(pfUI.font_default, fontSize, "OUTLINE")
losFrame.text:SetPoint("RIGHT", losFrame, "RIGHT", -1, -slot)
losFrame.text:SetTextColor(1, 0.3, 0.3, 1)
losFrame.text:SetText("NO LOS")
losFrame.text:SetText(T["NO LOS"])
losFrame.text:Hide()
local lastCheck = 0
+1 -1
View File
@@ -425,7 +425,7 @@ pfUI:SetScript("OnEvent", function()
pfUI.version.major, pfUI.version.minor, pfUI.version.fix = 0, 0, 0
pfUI.version.string = "dev"
else
local major, minor, fix = pfUI.api.strsplit(".", raw)
local major, minor, fix = pfUI.api.strsplit(".", string.gsub(raw, "^[vV]", ""))
pfUI.version.major = tonumber(major) or 0
pfUI.version.minor = tonumber(minor) or 0
pfUI.version.fix = tonumber(fix) or 0