Add files via upload

This commit is contained in:
Mquadrat
2026-10-05 18:50:57 +02:00
committed by GitHub
parent 38c3accf14
commit 86cfea6b76
3 changed files with 115 additions and 3 deletions
+29
View File
@@ -1,5 +1,34 @@
# Changelog
## 1.4.5.3 (2026-10-05)
A readability option suggested by a user has been added: the area behind the bars can be given a solid background, so the game world no longer shows through where health is missing.
### English
**New**
- **Bar background.** New slider *Bar background* on the *General* tab, 0 to 100 per cent in steps of 5. At 0, which is the default, nothing changes: the plate stays see-through and grass, sky or stone show through the empty part of the health bar. Turned up, a quiet dark grey surface sits behind the bars, so the green of the health bar stands on a fixed background. At 100 the plate is opaque. The shade is `FBBAR_BG_COLOR` (0.15 grey) and the setting is kept per character in `HealBox.BarBG`.
- **Where it sits.** The texture hangs on the lowest of the four stacked bars, the incoming-heal bar, on the `BACKGROUND` layer. That puts it under the prediction, the shield, the health and the mana bar, and it is shown and hidden together with them, so nothing is left behind on a plate that is currently empty or hidden by the attach mode. At 0 per cent no texture is set at all, rather than a fully transparent one.
- **Raid cells need nothing.** They already have their own backdrop at 80 per cent black, so there is no world shining through there; the slider deliberately only touches the plates.
**Thanks**
- The idea and a working patch came from a user who finds the translucent bar hard to read. The patch used `WHITE8X8` plus `SetVertexColor`; the version shipped here uses `SetTexture(r, g, b, a)`, which creates a solid colour directly in 1.12 and is what the mana strip already does. Same result, no texture file involved.
### Deutsch
**Neu**
- **Balkenhintergrund.** Neuer Regler *Balkenhintergrund* im Reiter *Allgemein*, 0 bis 100 Prozent in Fuenferschritten. Bei 0, dem Standard, aendert sich nichts: Die Plakette bleibt durchscheinend, durch den leeren Teil des Lebensbalkens sieht man Gras, Himmel oder Stein. Hochgedreht liegt eine ruhige dunkelgraue Flaeche hinter den Balken, das Gruen des Lebensbalkens steht dann auf festem Grund. Bei 100 ist die Plakette undurchsichtig. Der Grundton ist `FBBAR_BG_COLOR` (0,15 Grau), die Einstellung bleibt je Charakter in `HealBox.BarBG` gespeichert.
- **Wo die Flaeche haengt.** Die Textur sitzt auf der untersten der vier gestapelten Balken, der Heilvorhersage, auf der Ebene `BACKGROUND`. Damit liegt sie unter Vorhersage, Schild, Leben und Mana, und sie wird zusammen mit ihnen ein- und ausgeblendet; auf einer leeren oder im Anheftmodus versteckten Plakette bleibt also nichts stehen. Bei 0 Prozent wird gar keine Textur gesetzt statt einer voellig durchsichtigen.
- **Raidzellen brauchen nichts.** Sie haben bereits ihren eigenen Hintergrund mit 80 Prozent Schwarz, dort scheint keine Welt durch; der Regler fasst bewusst nur die Plaketten an.
**Danke**
- Idee und ein lauffaehiger Patch kamen von einem Nutzer, dem der durchscheinende Balken schlecht lesbar ist. Der Patch benutzte `WHITE8X8` mit `SetVertexColor`; hier ausgeliefert wird `SetTexture(r, g, b, a)`, das in 1.12 direkt eine Vollfarbe erzeugt und genau das ist, was der Manastreifen ohnehin schon macht. Gleiches Ergebnis, ohne Texturdatei.
## 1.4.5.2 (2026-09-12)
One fix: a running HoT no longer pulls Smart Healing down a rank.
+84 -1
View File
@@ -42,6 +42,8 @@
-- und laeuft stattdessen als Uhr mit (eigene Schwelle FBCD_SHOW_MIN).
-- * v1.4.5.2: Laufende HoTs zaehlen bei Smart Healing nicht mehr als
-- anfliegende Heilung.
-- * v1.4.5.3: Einstellbarer Hintergrund hinter den Balken der Plaketten
-- (Regler "Balkenhintergrund", Standard 0 = wie bisher durchscheinend).
--
-- Ehre wem Ehre gebuehrt: Aufbau, Namensplaketten und Grundidee stammen
-- aus dem Original.
@@ -128,6 +130,7 @@ HealBox = {
ButtonSpacing = 2, -- px zwischen den Buttons (1..20)
RowSpacing = 4, -- px zwischen den Plaketten (1..20)
ManaBar = 1, -- Manabalken im Lebensbalken anzeigen
BarBG = 0, -- Deckkraft des Balkenhintergrunds in Prozent
PowerBar = 0, -- auch Wut, Energie und Fokus im Balken zeigen
HideBlizzParty = 0, -- Blizzards Gruppenfenster verstecken
HealBonus = 1, -- +Heilung der Ausruestung in die Vorhersage rechnen
@@ -156,7 +159,7 @@ HealBox = {
-- feuert ADDON_LOADED fuer uns.
FBADDON_NAME = "Heal Box Vanilla";
FBADDON_FOLDER = "FBHealBox";
HealBoxVersion = "|cFFFFFF00v1.4.5.2|r";
HealBoxVersion = "|cFFFFFF00v1.4.5.3|r";
-- ==========================================================================
-- [ Lokalisierung / Localization ]
@@ -210,6 +213,9 @@ FBLocale["enUS"] = {
.. "• Chain spell switching toggled via 'Smartcross'\n"
.. "• Decisions logged with /fbp debug",
SMART_MARGIN = "Safety margin: |cFFFFFFFF%s %%",
BAR_BG = "Bar background: |cFFFFFFFF%s %%",
BAR_BG_OFF = "clear",
BAR_BG_FULL = "solid",
COOLDOWNS = "Cooldowns on buttons",
COOLDOWNS_TIP = "Shows the cooldown sweep on every button (Nature's Swiftness, Inner Focus, Lay on Hands, shield cooldown). The global cooldown runs as a sweep too, so after every cast you see the short wait run out instead of the icons going dark and bright again. Set FBCD_SHOW_MIN to 2 in the code to leave the global cooldown out.",
AGGRO = "Mark who is attacked",
@@ -359,6 +365,9 @@ FBLocale["deDE"] = {
.. "• Zauberwechsel in Ketten steuert 'Smartcross'\n"
.. "• Entscheidungen im Chat via /fbp debug",
SMART_MARGIN = "Sicherheitsaufschlag: |cFFFFFFFF%s %%",
BAR_BG = "Balkenhintergrund: |cFFFFFFFF%s %%",
BAR_BG_OFF = "klar",
BAR_BG_FULL = "deckend",
COOLDOWNS = "Cooldowns auf den Buttons",
COOLDOWNS_TIP = "Zeigt die Cooldown-Uhr auf jedem Button (Naturschnelligkeit, Innerer Fokus, Handauflegung, Schild-Cooldown). Auch der globale Cooldown laeuft als Uhr mit, nach jedem Zauber siehst du also die kurze Wartezeit ablaufen, statt dass die Symbole dunkel und wieder hell werden. Wer ihn nicht sehen will, setzt FBCD_SHOW_MIN im Code auf 2.",
AGGRO = "Angegriffenen markieren",
@@ -533,6 +542,9 @@ FBLocale["esES"] = {
.. "• Cambio de hechizo controlado por 'Smartcross'\n"
.. "• Registro de decisiones con /fbp debug",
SMART_MARGIN = "Margen de seguridad: |cFFFFFFFF%s %%",
BAR_BG = "Fondo de la barra: |cFFFFFFFF%s %%",
BAR_BG_OFF = "nítido",
BAR_BG_FULL = "opaco",
COOLDOWNS = "Reutilización en botones",
COOLDOWNS_TIP = "Muestra el barrido de reutilización en cada botón (Rapidez de la naturaleza, Enfoque interno, Imposición de manos, reutilización del escudo). La reutilización global también se muestra como barrido, así ves correr la breve espera tras cada lanzamiento en lugar de que los iconos se oscurezcan y se aclaren. Para omitirla, pon FBCD_SHOW_MIN en 2 en el código.",
AGGRO = "Marcar al atacado",
@@ -673,6 +685,9 @@ FBLocale["frFR"] = {
.. "• Changement de sort contrôlé par 'Smartcross'\n"
.. "• Décisions visibles via /fbp debug",
SMART_MARGIN = "Marge de sécurité : |cFFFFFFFF%s %%",
BAR_BG = "Fond de la barre : |cFFFFFFFF%s %%",
BAR_BG_OFF = "clair",
BAR_BG_FULL = "opaque",
COOLDOWNS = "Recharges sur les boutons",
COOLDOWNS_TIP = "Affiche le balayage du temps de recharge sur chaque bouton (Rapidité de la nature, Focalisation intérieure, Imposition des mains, recharge du bouclier). Le temps de recharge global est affiché lui aussi : après chaque incantation vous voyez la courte attente s'écouler au lieu de voir les icônes s'assombrir puis redevenir claires. Pour l'exclure, mettez FBCD_SHOW_MIN à 2 dans le code.",
AGGRO = "Marquer la cible attaquée",
@@ -813,6 +828,9 @@ FBLocale["itIT"] = {
.. "• Cambio incantesimo controllato da 'Smartcross'\n"
.. "• Decisioni registrate con /fbp debug",
SMART_MARGIN = "Margine di sicurezza: |cFFFFFFFF%s %%",
BAR_BG = "Sfondo della barra: |cFFFFFFFF%s %%",
BAR_BG_OFF = "limpido",
BAR_BG_FULL = "opaco",
COOLDOWNS = "Recuperi sui pulsanti",
COOLDOWNS_TIP = "Mostra l'animazione del tempo di recupero su ogni pulsante (Rapidità della Natura, Concentrazione Interiore, Imposizione delle Mani, recupero dello scudo). Anche il tempo di recupero globale scorre come animazione: dopo ogni lancio vedi scorrere la breve attesa invece di icone che si scuriscono e si riaccendono. Per escluderlo, imposta FBCD_SHOW_MIN a 2 nel codice.",
AGGRO = "Segnala chi è attaccato",
@@ -968,6 +986,13 @@ FBPOWER_COLORS = {
};
FBMANA_BG_ALPHA = 0.35; -- dunkler Streifen hinter dem Mana (0 = aus)
-- Grundton des Balkenhintergrunds auf den Plaketten. Wie deckend er liegt,
-- entscheidet HealBox.BarBG (0 bis 100 Prozent, Regler im Reiter Allgemein).
-- Bei 0 bleibt es beim alten Bild: Durch den leeren Teil des Lebensbalkens
-- scheint die Spielwelt durch. Wer wenig Kontrast sieht, dreht ihn hoch und
-- bekommt eine ruhige graue Flaeche, auf der das Gruen des Lebens steht.
FBBAR_BG_COLOR = { 0.15, 0.15, 0.15 };
-- Begleiter-Plaketten: Namensfarbe, Einrueckung unter dem Besitzer (die
-- Plakette wird um denselben Betrag schmaler, damit die Buttons buendig
-- bleiben) und ein kleines Pfoten-Icon vor dem Namen.
@@ -1453,6 +1478,7 @@ function FBHealBox_StartUp()
FBHealBox_SyncOptions();
HealBoxAttachMode(HealBox.AttachMode);
FBHealBox_ApplyButtonSpacing();
FBHealBox_ApplyBarBGAll();
FBHealBox_ApplyBlizzParty();
if (MMButton) then MMButton:Show(); end
FBUpdateNames();
@@ -1492,6 +1518,9 @@ function FBHealBox_ApplyDefaults()
if (HealBox.ButtonSpacing == nil) then HealBox.ButtonSpacing = 2; end
if (HealBox.RowSpacing == nil) then HealBox.RowSpacing = 4; end
if (HealBox.ManaBar == nil) then HealBox.ManaBar = 1; end
if (HealBox.BarBG == nil) then HealBox.BarBG = 0; end
if (HealBox.BarBG < 0) then HealBox.BarBG = 0; end
if (HealBox.BarBG > 100) then HealBox.BarBG = 100; end
if (HealBox.PowerBar == nil) then HealBox.PowerBar = 0; end
if (HealBox.HideBlizzParty == nil) then HealBox.HideBlizzParty = 0; end
if (HealBox.HealBonus == nil) then HealBox.HealBonus = 1; end
@@ -1526,6 +1555,7 @@ function FBHealBox_SyncOptions()
if (HealCommCheck) then HealCommCheck:SetChecked(HealBox.HealComm == 1); end
if (ManaBarCheck) then ManaBarCheck:SetChecked(HealBox.ManaBar == 1); end
if (PowerBarCheck) then PowerBarCheck:SetChecked(HealBox.PowerBar == 1); end
if (BarBGSlider) then BarBGSlider:SetValue(HealBox.BarBG or 0); FBUpdateBarBGSliderText(); end
if (HidePartyCheck) then HidePartyCheck:SetChecked(HealBox.HideBlizzParty == 1); end
if (ShowPetsCheck) then ShowPetsCheck:SetChecked(HealBox.ShowPets == 1); end
if (TestModeCheck) then TestModeCheck:SetChecked(FBTestMode); end
@@ -2235,6 +2265,22 @@ function FBHealBox_SetBarStrata(f, strata)
f.ManaBar:SetFrameLevel(4);
end
-- Balkenhintergrund einer Plakette setzen. 0 Prozent heisst: gar keine
-- Textur, damit nichts gezeichnet wird, was man ohnehin nicht sieht.
function FBHealBox_ApplyBarBG(f)
if (not f) or (not f.BarBG) then return; end
local a = (HealBox.BarBG or 0) / 100;
if (a <= 0) then f.BarBG:Hide(); return; end
f.BarBG:SetTexture(FBBAR_BG_COLOR[1], FBBAR_BG_COLOR[2], FBBAR_BG_COLOR[3], a);
f.BarBG:Show();
end
function FBHealBox_ApplyBarBGAll()
for p = 1, FBSlotCount do
FBHealBox_ApplyBarBG(FBPartyFrame[p]);
end
end
-- Alle Balken einer Plakette ein-/ausblenden (Party-Frame-Modus blendet aus)
function FBHealBox_SetPlateVisible(f, visible)
if (not f) or (not f.HealthBar) then return; end
@@ -2450,6 +2496,13 @@ function FBHealBoxCreateFrame(FrameName,ParentFrame,FrameTexture,FrameWidth,Fram
f.IncHealBar:SetStatusBarColor(0.4, 1, 0.4, 0.5);
f.IncHealBar:Show();
-- Fester Hintergrund hinter allen Balken. Er haengt bewusst an der
-- untersten Bar: so liegt er unter Heilvorhersage, Schild, Leben und
-- Mana, und er wird zusammen mit ihnen ein- und ausgeblendet.
f.BarBG = f.IncHealBar:CreateTexture(nil, "BACKGROUND");
f.BarBG:SetAllPoints(f.IncHealBar);
f.BarBG:Hide();
-- Manabalken: FBMANA_BAR_HEIGHT px am unteren Rand des Lebensbalkens,
-- "Balken im Balken". Nur sichtbar bei Einheiten mit Mana.
f.ManaBar = CreateFrame("STATUSBAR", nil, f, "TextStatusBar");
@@ -3873,6 +3926,11 @@ function FBHealBox_ApplyLocale()
PowerBarCheck.Text:SetText(FBT("POWERBAR"));
PowerBarCheck.tooltipText = FBT("POWERBAR_TIP");
end
if (BarBGSlider) then
getglobal(BarBGSlider:GetName() .. "Low"):SetText(FBT("BAR_BG_OFF"));
getglobal(BarBGSlider:GetName() .. "High"):SetText(FBT("BAR_BG_FULL"));
FBUpdateBarBGSliderText();
end
FBHealBox_UpdatePartyExclusion();
FBUpdateSmartMarginText();
FBHealBox_UpdateSmartCrossState();
@@ -4272,7 +4330,26 @@ function FBHealBoxCreateAddonOptionFrame()
FBUpdateSpacingSliderText();
FBHealBox_Layout();
end);
-- Deckkraft des Balkenhintergrunds (0..100 %)
BarBGSlider = CreateFrame("Slider", "FBBarBGSlider", tabGeneral, "OptionsSliderTemplate");
BarBGSlider:SetWidth(128);
BarBGSlider:SetHeight(16);
BarBGSlider:SetPoint("TOPLEFT", 260, gy - 50);
BarBGSlider:SetMinMaxValues(0, 100);
BarBGSlider:SetValueStep(5);
BarBGSlider:SetValue(HealBox.BarBG or 0);
BarBGSlider.Text = BarBGSlider:CreateFontString(nil, "BACKGROUND", "GameFontNormal");
BarBGSlider.Text:SetPoint("CENTER", 0, 15);
getglobal(BarBGSlider:GetName() .. "Low"):SetText(FBT("BAR_BG_OFF"));
getglobal(BarBGSlider:GetName() .. "High"):SetText(FBT("BAR_BG_FULL"));
BarBGSlider:SetScript("OnValueChanged", function()
HealBox.BarBG = math.floor(BarBGSlider:GetValue() + 0.5);
FBUpdateBarBGSliderText();
FBHealBox_ApplyBarBGAll();
end);
FBUpdateSpacingSliderText();
FBUpdateBarBGSliderText();
-- [ Schalter ] ----------------------------------------------------------
local cy = gy - 95;
@@ -4615,6 +4692,12 @@ function FBUpdateSmartMarginText()
end
end
function FBUpdateBarBGSliderText()
if (BarBGSlider and BarBGSlider.Text) then
BarBGSlider.Text:SetText(format(FBT("BAR_BG"), math.floor(BarBGSlider:GetValue() + 0.5)));
end
end
function FBUpdateSpacingSliderText()
if (ButtonSpacingSlider and ButtonSpacingSlider.Text) then
ButtonSpacingSlider.Text:SetText(format(FBT("BTN_SPACING"), math.floor(ButtonSpacingSlider:GetValue() + 0.5)));
+2 -2
View File
@@ -1,9 +1,9 @@
## Interface: 11200
## Title: Heal Box Vanilla |cFFFFFF00v1.4.5.2|r
## Title: Heal Box Vanilla |cFFFFFF00v1.4.5.3|r
## Notes: Heal/raid frame addon like Healium, with quick-cast buttons, heal prediction, mana ticker and more.
## Notes-deDE: Heal/Raidframe Addon aehnlich Healium, mit Schnellzugriff Buttons, Heal Prediction und Mana Ticker und mehr.
## Author: Dourd (Argent Dawn EU) | Vanilla-Port & Erweiterung 09/2026: Mquadrat
## Version: 1.4.5.2
## Version: 1.4.5.3
## SavedVariablesPerCharacter: HealBox
## OptionalDeps: SuperWoW