File Details
GuildDeathLog v8.10.7
- R
- Feb 26, 2026
- 8.14 MB
- 198
- 2.5.5+1
- Classic + 1
File Name
GuildDeathLog.zip
Supported Versions
- 2.5.5
- 1.15.8
# Das Buch der Gefallenen - Changelog
## Version 8.10.2 — "Death Popup: Icon-Rahmen & Spell-Label Fix"
### UI.lua — CreateOverlay(): Icon-Rahmen ersetzt
- `UI-Quickslot2` (hässlicher Bag-Slot-Look) durch **4 dünne 1px Gold-Linien** ersetzt
- Sieht aus wie ein eleganter, schlanker Rahmen statt einem Inventar-Slot
- Wert-Texte jetzt explizit weiß (`SetTextColor(1,1,1)`) für maximalen Kontrast
### UI.lua — "Fähigkeit:"-Label-Bug behoben
- `makeInfoRow` gibt jetzt **lbl + val** zurück → `o.spellLabel` gespeichert
- `spellLabel` wird mit `spellText` zusammen ein-/ausgeblendet
- Kein leeres "Fähigkeit:" Label mehr wenn kein Todesfähigkeits-Wert vorhanden
- `spellLabel` auch in revealFade-Choreographie eingebunden (erscheint bei 1.10s wenn vorhanden)
---
## Version 8.10.1 — "Death Popup: Lesbarkeits-Feinschliff"
### UI.lua — CreateOverlay(): Schriftfarben & Abstände korrigiert
| Element | Alt | Neu |
|---|---|---|
| Label-Farbe ("Getötet von:" etc.) | `0.75, 0.60, 0.20` (zu dunkel) | `0.96, 0.83, 0.36` (helles Gold) |
| Label-Schriftgröße | 10pt | 11pt |
| classText ("Stufe X Klasse") | 13pt OUTLINE | **14pt THICKOUTLINE** |
| classText-Farbe | `r*1.05` | `r+0.15` (gleichmäßig aufgehellt) |
| Zeilenabstand Details-Rows | 22px | **26px** (kein Überlappen) |
| SEP2-Offset | INFO_Y−82 | INFO_Y−96 |
| "~ Letzte Worte ~"-Farbe | `0.65, 0.50, 0.18` | `0.90, 0.76, 0.30` |
| lastWordsText | 14pt, kein Height-Limit | **15pt, max 42px Höhe** (2 Zeilen) |
| Footer levelText | 12pt OUTLINE, `0.85, 0.72, 0.35` | **13pt THICKOUTLINE, helles Gold** |
### Overlap-Fix
- `lastWordsText:SetHeight(42)` — begrenzt auf 2 Zeilen, verhindert Überlappen mit Footer
---
## Version 8.10.0 — "Death Popup: Vertikale Karte (Forschungs-basiertes Redesign)"
### UI.lua — `CreateOverlay()` komplett neu (vertikale Karte)
- Layout von Tabellen-Design auf saubere **vertikale Karte** umgestellt (Branchen-Standard: HardcoreAlerts, DeathLog, DeathNotificationLib)
- **BLOCK 1 Header:** Klassen-Icon 68×68 px links + Name 26pt Morpheus THICKOUTLINE (Klassenfarbe) + Klasse/Level 13pt rechts
- **BLOCK 2 Details:** 4 Zeilen — Killer, Fähigkeit, Zone, Uhrzeit; je 10pt Gold-Label + 14pt Weiß-Wert; `SetWordWrap(false)` verhindert Overflow
- **BLOCK 3 Letzte Worte:** Dynamischer Block mit "~ Letzte Worte ~" Header + 14pt `SetWordWrap(true)`; komplett ausgeblendet wenn keine letzten Worte vorhanden
- **BLOCK 4 Footer:** Allianz/Horde-Icons 38×38 px + Level/Klasse-Text zentriert
- Goldene Separator-Linien (1px, Goldtint) zwischen allen Blöcken
- Subtiler Klassen-Farbgradient (ADD-Blend) als Hintergrundakzent
- Scale-Minimum: `0.50` (bleibt bei 50% gut lesbar durch OUTLINE-Fonts)
### UI.lua — `DisplayOverlay()`: Alpha-Reveal-Timing korrigiert
- `spellText`: `SetAlpha(0)` vor `Show()` — kein sofortiges Aufblenden vor Reveal-Fade
- `levelText`: `SetAlpha(0)` gesetzt — korrektes Einblenden bei 1.25s
- `lwLabel` ("~ Letzte Worte ~"): `SetAlpha(0)` + `revealFade(1.45s)` — fließender Übergang
### Reveal-Choreographie
| Zeit | Element |
|------|---------|
| 0.00–0.80s | Overlay fade-in (DeathCinematic) |
| 0.92s | Name TypewriterText startet |
| 1.00s | classText · killerText · timestampText · zoneText |
| 1.10s | spellText (wenn Todesfähigkeit bekannt) |
| 1.25s | levelText |
| 1.45s | lwLabel "~ Letzte Worte ~" |
| 1.60s | lastWordsText TypewriterText |
---
## Version 8.8.1 — "Death Popup: Scale-Fix & Layout-Overhaul"
### UI.lua — Scale-Minimum erzwungen
- `overlayScale` wird beim Laden und bei jedem Anzeigen auf `math.max(0.85, ...)` geclampt
- Drag-Scale Minimum angehoben: `0.5` → `0.85` (Popup bleibt immer lesbar)
- Gespeicherter Wert `0.789` wird automatisch auf `0.85` korrigiert
### UI.lua — Layout-Redesign (volle Innenfläche genutzt)
| Element | Alt | Neu |
|---|---|---|
| classIcon | 80×80 px | **100×100 px** |
| iconBacking | 84×84 px | **108×108 px** |
| iconBorder | 90×90 px | **116×116 px** |
| iconGlow | 120×120 px | **140×140 px** |
| nameText | MORPHEUS 27pt | **MORPHEUS 34pt** |
| nameY offset | CTY−166 | **CTY−148** (enger am Icon) |
| classText | FRIZQT 17pt (Kette) | **FRIZQT 14pt** |
| zoneText | FRIZQT 15pt (Kette) | **FRIZQT 13pt** |
| killerText | FRIZQT 15pt (Kette, overflow!) | **FRIZQT 13pt, BOTTOM-Anker** |
| lastWordsText | FRIZQT 13pt | **FRIZQT 13pt, BOTTOM-Anker** |
### UI.lua — Mutual Exclusion: killerText vs. lastWordsText
- Wenn `hasLastWords = true` → `killerText` wird ausgeblendet (Platzmangel)
- killerText und lastWordsText beide BOTTOM-verankert → kein Overflow aus Innenfeld
---
## Version 8.7.1 — "Buchseiten-Übergang: Balken entfernt, Bloom eingebaut"
### AnimFX.lua — `ShimmerSweep` komplett neu
| | Alt | Neu |
|---|---|---|
| Typ | Solider 36px-Balken (`WHITE8x8`) | 2 radiale Bloom-Texturen (`starburst` + `ping4`) |
| Bewegung | Gleitet von links nach rechts | Expandiert aus der Mitte heraus |
| Blend-Alpha | 0.85 (sehr auffällig) | 0.22 / 0.15 (subtil, elegant) |
| Größe | 36px breit, Framehöhe | 18%→110% / 30%→95% der Framebreite |
| Timing | Gleichförmig | Ease-out (`1-(1-t)²`), Starburst 70ms versetzt |
### UI.lua — Seitenübergang
- `GlowRing`-Größe nach Seitenwechsel: 80% → **60%** der Seitenbreite (weniger aufdringlich)
- `ShimmerSweep`-Dauer: 0.65s → **0.55s** (schneller, flüssiger)
---
## Version 8.7.0 — "GUILD DEATH LOG FRAME" — Neues Todes-Popup Artwork
### Neues Design — CreateOverlay() komplett ersetzt
| Änderung | Alt | Neu |
|---|---|---|
| Frame-Größe | 520×340 px | **660×460 px** |
| Hintergrund-Textur | `Textures/DeathPopup.tga` | **`Textures/GDLDeathFrame_New.png`** |
| Kopfbereich | Einfacher Artwork-Rahmen | **WoW-Logo + "GUILD DEATH LOG" Inschrift** |
| Eck-Dekoration | Keine | **Allianz-/Horde-Schädel + Embleme** |
| Innenbereich | Pergament-Look | **Dunkler Stein-Textur** |
| Icon-Rahmen | Einfaches UI-Quickslot | **UI-Quickslot2 mit Gold-Tint** |
| Content-Breite | 460px | **544px** (CW = W - CX×2) |
| Name-Font | MORPHEUS 26pt | **MORPHEUS 27pt** |
| Divider | 1px, gold 0.68/0.52/0.13 | **2px, gold 0.75/0.58/0.15** |
### AnimFX.lua — SetAlpha Floating-Point Guard
- `runes[i]:SetAlpha(alpha)` → `runes[i]:SetAlpha(math_max(0, alpha))`
- Verhindert `-0.000000` Fehler bei `prog ≈ 1.0` durch IEEE 754 Floating-Point-Rundung
- Betraf `AnimFX.RuneCircle` / ähnliche Ticker wenn `el` minimal `dur` überschritt
### Textures/
- `GDLDeathFrame_New.png` hinzugefügt (WoW "Guild Death Log" Frame-Artwork, 1:1 Größe)
---
## Version 8.6.0 — "BUGFIX: GuildRoster + AnimFX API Guards"
### GuildRoster.lua — Classic Era API-Kompatibilität
- `SendAddonMessage` direktaufrufe durch lokalen `SendMsg()`-Wrapper ersetzt
- Unterstützt jetzt beide APIs: `C_ChatInfo.SendAddonMessage` (1.15.x+) und globales `SendAddonMessage` (ältere Classic-Clients)
- `GDL:GetClassIdFromLocale()` (nicht existent) ersetzt durch lokales `CLASS_ID_MAP[]`-Lookup
- Enthält alle Klassen: Warrior–DemonHunter mit englischen Keys
- `GDL:GetSpecName()` (nicht existent) ersetzt durch lokale `GetCurrentSpec()`-Funktion
- Nutzt `GetSpecialization`/`GetSpecializationInfo` wenn vorhanden, sonst leerer String
- `LE_PARTY_CATEGORY_HOME` (nil in Classic) ersetzt durch `IsInGroup()` ohne Argument
- `RegisterAddonMessagePrefix`-Guard war bereits korrekt (kein Bug dort)
### UI.lua — AnimFX Globale Referenz gefixt
- `HideBook()`: `AnimFX.ScreenFlash(...)` → `FX.ScreenFlash(...)` (nutzt jetzt korrekt die lokale `FX`-Variable)
---
## Version 8.4.0 — "CINEMATIC DEATH OVERHAUL" — Das ultimative Immersions-Arsenal
### Philosophie
Jeder Gildentod ist jetzt ein cineastisches Ereignis. Kein simples Popup mehr — eine vollständige Sequenz aus Dunkelheit, Glocken, Explosionen, aufsteigender Seele und kreisenden Runen.
### AnimFX.lua — 8 neue epische Funktionen
| Funktion | Beschreibung |
|---|---|
| `SoulRise(parent, r, g, b)` | 18 Seelen-Partikel steigen langsam aus dem Popup auf. Organisches Wobble, Ping4/Star4/Starburst Texturen, ADD-Blend. Returns Handle. |
| `ArcaneOrbit(parent, r, g, b)` | 5 Runen kreisen auf elliptischen Bahnen um das Popup (unterschiedl. Radien 78–175px, gemischte Richtungen, Puls-Alpha). Returns Handle. |
| `RuneExplosion(parent, r, g, b, count)` | N Runen explodieren radial aus dem Zentrum (Star4/Starburst, 200px/s → dezeleriert, Scale wächst, Alpha fällt). One-shot. |
| `PulseRings(parent, r, g, b, count, interval)` | N GlowRings feuern in schneller Sequenz (0.14s Abstand). Jeder Ring wird größer. |
| `ScreenBlackout(fadeDur, maxAlpha, holdDur, onPeak)` | Verdunkelt den Bildschirm. fadeDur Ein/Aus, holdDur Haltezeit, onPeak Callback. |
| `StartOverlayAmbience(overlay, r, g, b)` | Startet SoulRise + ArcaneOrbit als persistente Ambience. Returns Handle-Pair. |
| `StopOverlayAmbience(handles)` | Stoppt beide Ambience-Handles sauber. |
| `DeathCinematic(overlay, r, g, b)` | **Master-Orchestrator.** 12-stufige Kino-Sequenz: Blackout → Vignette → Glocke → Blutflash → ScrollUnfurl → Runen-Explosion × 2 → PulseRings → Shake → GlowRing → Shimmer → ParticleBurst × 3 → SoulRise + ArcaneOrbit. |
### UI.lua — `DisplayOverlay()` komplett umgebaut
| Änderung | Detail |
|---|---|
| `AnimFX.DeathCinematic(o, r, g, b)` | Ersetzt alle manuellen Effekt-Aufrufe (BellTolls, CinematicBars, DeathWail, introAnim, ScaleLerp) |
| TypewriterText-Effekt | Name erscheint nach 0.92s Zeichen-für-Zeichen (18 CPS) |
| Ambience-Cleanup | `StopOverlayAmbience` bei Schließen + neuem Tod |
| Hide-Timer | 10s → 12s (mehr Zeit für den Tod zu trauern) |
### Death Cinematic Zeitplan
```
t=0.00 ScreenBlackout (0.72 alpha) + Vignette (3.4s)
t=0.05 BellTolls: Glocke 2× + Klassenflash + Horror-Cut
t=0.30 Blutroter ScreenFlash (0.68 alpha)
t=0.44 Popup ScrollUnfurl (Pergament-Entrollen)
t=0.50 RuneExplosion × 8 (Klassenfarbe)
t=0.55 PulseRings × 3 (0.15s Abstand)
t=0.64 ShakeFrame (12px, 0.52s)
t=0.72 RuneExplosion × 6 (Gold)
t=0.75 GlowRing massiv (118% Framegröße)
t=0.82 ShimmerSweep (Gold)
t=0.88 ParticleBurst × 3 (Klasse + Gold + Weiß, 30+16+12 Partikel)
t=0.92 TypewriterText: Name enthüllt (18 CPS)
t=1.10 SoulRise + ArcaneOrbit starten (persistente Ambience)
t=1.25 Nachhall ParticleBurst × 20 (gedämpft)
t=12.0 Outro: FadeOut 1.5s → Ambience stop → CinematicBars aus
```
---
### Bugfixes
- **GuildRoster.lua** `Initialize()`: `RegisterAddonMessagePrefix` war in Classic Era 1.x nicht vorhanden → Fehler `attempt to call global 'RegisterAddonMessagePrefix' (a nil value)`. Fix: Dreistufiger Guard — `C_ChatInfo.RegisterAddonMessagePrefix` (Retail) → globales `RegisterAddonMessagePrefix` (Wrath+) → kein Call nötig (Classic Era 1.x empfängt CHAT_MSG_ADDON ohnehin).
### Verbesserungen
- **UI.lua** `CreateOverlay()`: Todes-Popup nutzt jetzt `Interface\AddOns\GuildDeathLog\Textures\DeathPopup` als nativen Artwork-Hintergrund statt programmatisch gezeichneter Borders. Frame-Größe: 480×295 → **520×340 px** für mehr Luft. Alle Textpositionen neu ausgerichtet. Klassen-ADD-Gradient bleibt dynamisch erhalten.
---
## Version 8.3.0 - "DAS LEBENDIGE GRIMOIRE" — Immersions-Arsenal
### Philosophie
Das Grimoire lebt. Jede Interaktion mit dem Addon soll sich anfühlen wie das Berühren eines uralten, magischen Buches.
### AnimFX.lua — 9 neue Immersions-Funktionen
| Funktion | Beschreibung |
|---|---|
| `EmberAmbience(frame, count, r, g, b)` | 10 Glut-Funken drift en langsam am Rand des Buches aufwärts — klassenfarbig. Einzel-Ticker für alle Partikel (kein GC-Spike). |
| `CandleFlicker(frame, offX, offY)` | Organisch unregelmäßiges Kerzenleuchten (80px Starburst + 26px Ping4). Lerp-basierte Alpha-Fluktuation (6-11ms Intervalle). |
| `BreathGlow(frame, r, g, b, period)` | Persistentes atmendes Außenleuchten via AnimationGroup BOUNCE (3.8s Periode, 0.40 maxAlpha). |
| `CinematicBars(show, dur)` | Letterbox-Balken (oben + unten, 60px) für Tod-Sequenz. Lazy-Init (nur ein globales Frame). IN³/OUT² Easing. |
| `TypewriterText(fs, text, cps, onDone)` | Schreibt Text Zeichen-für-Zeichen (Standard 40 CPS). Callback onDone. Ticker via :Hide() abbrechbar. |
| `ScrollUnfurl(frame, dur)` | Scale Y 0.04→1.0 von oben (OUT-Easing, 0.38s) + Alpha-Fade — Pergament-Entrolleffekt. |
| `PageTurn(contentFrame, populate, dir, dur)` | Slide + Alpha out (dir×slide), populate aufrufen, dann rein von Gegenseite. |
| `BellTolls(r, g, b)` | Vignette 2.4s + klassen-Flash + weißer Horror-Cut + PlaySound(878) zweimal (0.0s + 0.88s). |
| `DustMotes(frame, count, dur)` | 8 Staubpartikel für Kapitelwechsel (1.8s, einmalig, auto-cleanup). |
### UI.lua — Lebendige Atmosphäre
**`ShowBook()`** — Startet nach 0.12s:
- `EmberAmbience(f, 10)` — 10 goldene Funken
- `CandleFlicker(f, -390, 0)` + `CandleFlicker(f, +390, 0)` — links und rechts
- `BreathGlow(f, 0.92, 0.72, 0.22, 4.0, 0.35)` — goldenes Atemleuchten
**`HideBook()`** — Stoppt alle Handles sauber (`.active=false`, `:Hide()`, `:Stop()`).
**`HandleChapterClick()`** — `DustMotes(f, 7, 1.5)` bei jedem Kapitelwechsel.
**`DisplayOverlay()`** — Tod-Cinematic-Sequenz:
1. `BellTolls(r, g, b)` — Glocke + Vignette + klassenfarbener Flash
2. `CinematicBars(true, 0.50)` — Letterbox einblenden
3. `DeathWail()` nach 0.08s (bereits vorhanden)
4. Nach 10s outroAnim: `CinematicBars(false, 0.55)` — Letterbox ausblenden
### MinimapButton.lua — "Der Todesherold" (komplettes Redesign)
- **Icon**: `Spell_Shadow_DeathPact` (mystischer Totenkopf statt Buch)
- **Border**: Rot getönt `(0.88, 0.45, 0.42)` statt Gold
- **3 Orbit-Runen**: Goldene `ping4`-Funken, 19px Radius, 0.85 rad/s Rotation (via single OnUpdate)
- **Todes-Badge**: 15px roter Kreis oben-rechts mit weißer Zahl (auto-hidden wenn 0)
- **Atem-Leuchten**: Starburst ADD-Blend, BOUNCE 2.2s, `(0.80, 0.14, 0.08)` rot
- **Glow-Ring bei Tod**: Pulsiert 4-phasig (rot, ADD, 0.96s gesamt)
- **`Pulse()`**: Glow-Ring + Badge-Update + Orbit-Runen-Flash (1s)
- **Hover-Panel**: Dunkel `(0.04, 0.02, 0.01, 0.97)` + rote Borderfarbe + MORPHEUS-Header
---
## Version 8.2.1 - BUGFIXES
### Bugfixes
- **UI.lua** `BuildCalendarToastFrame`: Font-Pfade für `badge`, `titleStr`, `descStr`, `hint` von einfachem Backslash (`"Fonts\FRIZQT__.TTF"`) auf doppelten (`"Fonts\\FRIZQT__.TTF"`) korrigiert — Lua interpretierte `\F` als `F` → `SetFont` scheiterte stumm → `SetText` warf `Font not set` Fehler (Lua-Taint fix)
- **AnimFX.lua** `Vignette`: `math_max(0, ...)` Guard in der fallDur-Phase hinzugefügt — verhindert minimal-negativen Alpha-Wert durch Floating-Point-Präzision bei `SetAlpha()`
---
## Version 8.2.0 - CUSTOM DEATH POPUP DESIGN & GUILD ROSTER SYNC
### Neues Design: Todes-Popup (Death Overlay)
**Vollständig neu kodiertes cinematic Design (kein Bild benötigt):**
- 480×295 px statt 460×307 px — etwas breiter, kompakter
- **Dunkler Hintergrund** `(0.028, 0.013, 0.004, 0.97)` — fast schwarz mit warmem Ton
- **Dynamische Klassenfarb-Borders**: Alle 4 Rahmenseiten (3px) wechseln je nach gestorbener Klasse
- **Inneres ADD-Glow-Rechteck** — minimale Klassen-Ambient-Tönung
- **Oberer Klassen-Gradient** — 90px hohes `ADD`-Blend-Overlay in Klassenfarbe (subtil)
- **Header-Leiste**: 23px — `GILDEN TOD` links, `Das Buch der Gefallenen` rechts, Trennlinie
- **X-Schliessen-Knopf** oben rechts (rot, 48% Alpha, 100% bei Hover)
- **Klassen-Icon 82×82** mit:
- 110×110 Glow-Ring (`star4`, ADD-Blend, pulsiert mit sin-Kurve, klassenfarb-gefärbt)
- 88×88 Backing-Rechteck (klassenfarb-getönt)
- Skull-Icon (22×22) direkt über dem Icon
- Vier dekorative Eck-Punkte (5×5, gold)
- **Name**: MORPHEUS 24pt OUTLINE, zentriert, 30px Backing-Streifen
- **Trennlinie** unter dem Namen (klassenfarb-gesetzt)
- **Info-Sektion**: Level+Klasse (13pt, `0.9,0.8,0.6`), Zone (11pt, hell-blau), Timestamp (9pt), Killer (11pt, rot)
- **Letzte-Worte-Streifen**: 28px am Boden, eigene Trennlinie, warmbraune Schrift
- Drag & Shift+Drag-to-Scale vollständig erhalten
### Neues Modul: `Modules/GuildRoster.lua` — Alt/Twink/Rolle Sync
**Pattern: GRM (Guild Roster Manager) + Altoholic**
- Addon-Prefix `GDLRoster`, Channel `GUILD` + `PARTY` als Fallback
- Jeder Spieler broadcastet beim Login nach 10s eigene Daten:
- Name, Level, ClassId, Spezialisierung, Alts-Liste, Rolle, Notiz
- Andere Spieler empfangen und speichern in `GuildDeathLogDB.roster`
- `REQ`-Broadcast nach 6s: andere antworten mit ihren Daten
- Partieller Broadcast nach Alt/Rolle-Änderung (0.5s Verzögerung)
**Slash-Commands:**
```
/gdl alt add Charname → Alt zu deinem Charakter hinzufügen
/gdl alt remove Charname → Alt entfernen
/gdl alt list → Alle deine Alts anzeigen
/gdl alt clear → Alle Alts löschen
/gdl role Main Tank → Gilden-Rolle setzen (max 30 Zeichen)
/gdl note Mein Text → Persönliche Notiz setzen (max 50 Zeichen)
/gdl roster → Hilfe + eigene Alts anzeigen
```
**Roster-Sektion im Professions-Tab:**
- `BuildRosterSection()` — blauer Kategorie-Header (wie Meilensteine)
- Zeilen im MilRow-Stil: 38px (ohne Alts) / 56px (mit Alts)
- Icon-Backing klassenfarb-getönt, Name gold, Level+Spec warmbraun
- Rolle rechts in hell-blau
- Alts in der Bodenleiste grau mit `Alts:` Prefix
---
## Version 8.1.0 - CHRONIK DER GEFALLENEN: MEILENSTEIN-REDESIGN
### Redesign: Chronik der Gefallenen
**Tag-Trennbalken (`CreateDaySeparator`) — neu wie `RenderAchCategoryHeader`:**
- 30px Höhe (vorher 32px mit Morpheus-Schrift)
- Warmes Amber-Hintergrundtint `(0.32, 0.18, 0.04)` wie Meilenstein-Kategorie-Header
- Shimmer-Overlay oben (ADD Blend)
- Goldene 2px Toplinie + 1px Bottomlinie
- 3px linker Akzentbalken `(0.90, 0.68, 0.16)` — identisch mit RenderAchCategoryHeader
- Skull-Icon (20×20) + Datum in `|cffF0C060` mit FRIZQT 10pt (vorher MORPHEUS 11pt)
- Todes-Anzahl rechts: farbkodiert (rot ≥5, gold ≥2, grau =1)
**Eintragszeilen (`CreateDeathEntry`) — neu wie `RenderMilRow`:**
- 44px / 62px (mit Letzten Worten) — vorher 60px / 78px
- Warmes klassen-getöntes Hintergrundtint `(col*0.14)` wie MilRow
- Shimmer-Zone oben (ADD Blend, wie MilRow)
- **Icon-Layout**: 28×28 Klassen-Icon-Backing + 24×24 Icon — exakt wie MilRow (vorher 38×38)
- **Name**: `|cffF0C060` Gold 10pt (wie MilRow nameStr unlocked) — vorher helle Klassenfarbe 12pt
- **Info-Zeile 1**: Level + Klasse in warmem Braun `(0.68, 0.55, 0.32)` — wie MilRow descStr
- **Info-Zeile 2**: Zone (teal) + Töter (rot) — 8pt wie MilRow
- **Datum rechts**: zweistellig `dd.mm.yy` + Uhrzeit darunter (wie MilRow statusStr) — kein großes Badge mehr
- **Letzte Worte**: Bodenstreifen 20px in warmem Braun — konsistent mit MilRow
- **Hover**: Hintergrund-Aufhellung + Icon-Backing brightening — wie MilRow OnEnter/OnLeave
- Untertrennlinie 316×1px wie MilRow
---
## Version 8.0.0 - CINEMATIC ANIMATION OVERHAUL - "ABSOLUTE BOMBE"
### Neue Features
**AnimFX.lua - Zentrales Animations-Effekte-Modul (NEU):**
- `AnimFX.ScreenFlash(r,g,b,dur,alpha)` — Vollbild-Farb-Flash mit quadratischem Fade-out
- `AnimFX.Vignette(dur,alpha)` — Dramatisches Abdunkeln der Bildschirmränder (cinematic)
- `AnimFX.ParticleBurst(x,y,count,r,g,b,spread,life)` — Partikel-Explosion mit Physik (Gravitation, Rotation)
- `AnimFX.ShakeFrame(frame,intensity,dur)` — Frame-Shake via dediziertem Ticker (kein OnUpdate-Konflikt)
- `AnimFX.GlowRing(parent,r,g,b,size,dur)` — Expandierender Glow-Ring mit eased Scale
- `AnimFX.ShimmerSweep(frame,r,g,b,dur)` — Licht-Streif zieht von links nach rechts
- `AnimFX.IconPunch(frame,scale,dur)` — Spring-Bounce für Icons (Overshoot-Effekt)
- `AnimFX.SparkleTrail(frame,r,g,b,dur)` — Drei sequentielle Glitzer-Wellen sweepen horizontal
- `AnimFX.RuneCircle(parent,r,g,b,radius,dur)` — Vier Rune-Texturen orbiten den Frame
- `AnimFX.DeathWail(overlay,r,g,b)` — Volle Todessequenz: Vignette + Klassen-Flash + Weißschnitt + GlowRing + RuneOrbit + PartikelExplosion + Shake + Shimmer + Zweite Welle
- `AnimFX.MilestoneFanfare(toast,r,g,b)` — Gold-Fanfare: Flash + GlowRing + RuneOrbit + Partikel + SparkleTrail + Shimmer
- `AnimFX.AchievementFanfare(toast,r,g,b)` — Achievement-Fanfare in Grün/Gold
- `AnimFX.CalendarBell(toast,isDelete)` — Kalender-Toast FX in Blau (neu) / Rot (gelöscht)
- `AnimFX.BookOpenEffect(bookFrame)` — Staub-Partikel + Amber-Flash + Shimmer + RuneOrbit beim Buchöffnen
- Partikel-Pool: 64 wiederverwendbare Frames (KEINE Memory-Leaks, kein GC-Stress)
- Alle Effekte: `BlendMode("ADD")` für leuchtende WoW-native Optik
- Taint-sicher: keine geschützten Frames modifiziert
**Death-Overlay: Cinematic DeathWail-Sequenz:**
- Beim Öffnen des Todesframes wird `AnimFX.DeathWail` mit der Klassen-Farbe aufgerufen
- Vignette verdunkelt die Welt dramatisch für 2.8 Sekunden
- Klassen-farbiger Blitz, weißer Schnitt, Partikelexplosion, Shake, zweite Partikelwelle
- Intro-Scale von 0.85→1.0 für dramatischeren Eintritt (vorher 0.93→1.0)
**Milestones-Toast: Gold-Fanfare beim Unlock:**
- Am Ende der Slide-In-Animation wird `AnimFX.MilestoneFanfare` ausgelöst
- Goldener Bildschirm-Flash + expandierender Glow-Ring + Rune-Orbit + Partikel-Burst + Shimmer-Sweep
**Achievement-Toast: Grün/Gold-Fanfare:**
- Nach dem Slide-In: grüner Flash für Gilden-Achievements, goldener Flash für persönliche
- GlowRing + Partikel-Explosion + Shimmer-Sweep
**Calendar-Toast: Push-Bell-Effekt:**
- 0.28s nach dem Slide-In: blaue Partikel (neues Event) oder rote Partikel (gelöscht)
- GlowRing + Partikel-Burst + (bei neuem Event) Shimmer-Sweep
**Book-Öffnen: Staubige Pergament-Atmosphäre:**
- 0.12s nach dem Öffnen: goldene Staub-Partikel steigen auf
- Amber-Screen-Flash + Shimmer-Sweep durch das Buch + Rune-Orbit
### Technische Änderungen
- `Modules/AnimFX.lua` vor `Modules/UI.lua` in `GuildDeathLog.toc` eingetragen
- Version 8.0.0 (Major-Bump für vollständigen Animations-Overhaul)
---
## Version 7.16.0 - LIVE MAP TRACKING, KALENDER DELETE-PUSH & LESBARKEITS-FIX
### Neue Features
**Nameplates: GDL-Addon-Titel über Spielernamen (Titles.lua) — NUR Classic 1.15.8:**
- Addon-Titel anderer Spieler erscheinen direkt unter ihrem Namen auf der Nameplate
- Format: goldener Text `[Titel]` in `|cffF0C060` direkt unter dem Namens-FontString
- Aktivierung: IMMER aktiv für alle Spieler mit dem Addon (kein Supporter-Code nötig zum Anzeigen)
- Senden des eigenen Titels: Supporter-Feature (nur Inhaber eines Codes broadcasten ihren Titel)
- Broadcast-Kanäle: GUILD + PARTY + RAID (auch nicht-Gildenmitglieder in Gruppe sehen Titel)
- Request bei Login: automatische Anfrage nach 8s damit bereits gesendete Titel empfangen werden
- Guild-Beschränkung entfernt: jeder Spieler mit dem Addon wird angezeigt (nicht nur Gildenmitglieder)
- `CleanupNonMembers`: bereinigt nun Guild-Ex-Mitglieder UND behält Daten für aktive Gruppen-Member
- `IsForbidden()` Guard: verhindert Lua-Fehler bei geschützten Nameplate-Frames im Kampf
- **Bug fix**: `RefreshAllNameplateTitles` hatte `GetNamePlateForUnit and nil` (immer nil) → korrekte Unit-Token-Suche in `for i=1,40` loop
- Classic Era 1.15.8: `CompactUnitFrame_UpdateName` hook + `NAME_PLATE_UNIT_ADDED` Event (beide seit 1.13.2 verfügbar) ✓
**Weltkarte: Live-Positionstracking von Gildenmitgliedern (MapMarkers.lua):**
- Alle Spieler mit dem Addon senden alle 8s ihre Position via Addon-Kanal `GDLPos` an die Gilde
- Weltkarte zeigt klassen-farbige Marker für jeden Gildenmitglieder auf der aktuellen Karte
- Marker: Klassen-Icon (16×16) + farbiger Glow-Ring + Puls-Animation (ADD Blend, schlägt alle 2s)
- Name-Label über jedem Live-Marker (FRIZQT 7pt, OUTLINE)
- Tooltip: `[Live] Name` in Klassenfarbe + Koordinaten + "vor Xs aktualisiert"
- Minimap: Klassen-farbige Punkte für Gildenmitglieder auf gleicher Karte (3s Update-Rhythmus)
- Marker verschwinden automatisch nach 30s ohne Update (Spieler offline/Kartenwechsel)
- Classic 1.15.8 + TBC 2.5.5 kompatibel (verwendet `C_Map.GetBestMapForUnit` + `C_Map.GetPlayerMapPosition`)
- Todes-Marker (Totenkopf) und Live-Marker koexistieren auf der Weltkarte
**Kalender: Push-Benachrichtigung bei Event-Löschung:**
- `BroadcastEvent DELETE` Bug gefixt: Serialisierter Payload statt reiner Event-ID wurde gesendet → Event-IDs wurden nicht korrekt verglichen
- DELETE jetzt: `"DELETE|eventId"` (korrektes Format) → Empfänger findet Event zuverlässig
- Toast-Benachrichtigung für andere Spieler wenn jemand ein Event löscht (rote Akzentfarbe)
- Toast für den Löschenden selbst mit `[Event geloescht]` Badge
- Lösch-Toast: Roter Topbar (`0.55, 0.12, 0.04`) + rotes Linksakkzent + desaturiertes Icon
- CREATE-Toast: Weiterhin blau/teal (unverändert)
### Visuelle Fixes
**Berufe der Gilde – Textfarbe auf Pergament-Hintergrund:**
- Berufsname: `|cff684820` → `|cff3A2008` (dunkleres Braun, klar lesbar)
- Level-Text: `|cff684820` → `|cff3A2008`
- "Berufe unbekannt": `|cff583020` → `|cff705038` (sichtbarer)
- Trennzeile "Ohne Addon": `|cff785030` → `|cff3A2008`
- Zusammenfassungszeile: `|cff684820` → `|cff3A2008`
**Abenteurer der Gilde (Gildenkarte) – Textfarbe verbessert:**
- Online-Count Badge: `|cff006600` → `|cff1A7A1A` (satteres Grün, kein Ausbluten)
- Offline-Count: `|cff583830` → `|cff5A3818` (harmonischer)
- Gesamt: `|cff785030` → `|cff3A2008`
- Online-Header: `|cff006600` → `|cff1A7A1A`
- Mitglieder-Rows Level: `|cff684820` → `|cff3A2008`
- Zone: `|cff684820` → `|cff264870` (dunkles Marineblau – kontrastiert perfekt gegen Pergament)
- Offline-Header: `|cff583830` → `|cff5A3818`
- Offline-Namen: `|cff583020` → `|cff4A3020`
- Subtitle: `|cff583830` → `|cff3A2008`
---
## Version 7.15.0 - UI PREMIUM REFRESH: Lesbarkeit, Milestone-Stil & Gilden-Push
### Optik & Lesbarkeit
**Titel & Ränge (Kapitel VII) – Milestone-Style komplett überarbeitet:**
- Drei Kategorie-Header im `RenderAchCategoryHeader`-Stil: "Aktiver Titel", "Freigeschaltete Titel", "Gesperrte Titel"
- Aktiver Titel erhält goldene Hervorhebungszeile mit eigenem Bereich
- Freigeschaltete Titel: klickbare Rows mit Icon, Name, Beschreibung, Status-Badge, Hover-Tooltip & Highlight
- Gesperrte Titel: desaturiert, ausgegraut, mit Tooltip
- Konsistente Farbsprache: Gold für aktiv/freigeschaltet, Grau für gesperrt
**Gilden-Statistiken (Kapitel IX) – Schrift deutlich aufgehellt:**
- Labels: `|cff785030` → `|cffD4AA5E` (warmes Gold, deutlich lesbarer)
- Werte: `|cff684820` → `|cffE8C870` (helles Gold)
- Sub-Infos: `|cff583020` → `|cffB8A880` (warmes Creme)
**Chronik der Gefallenen – Komplett-Redesign v2 (Premium Layout):**
- Eintrags-Rows: 60px (Standard) / 78px (mit Letzten Worten) — saubere Proportionen
- 4px linker Klassen-Akzentbalken (vivid, α 1.0) + 20px ADD-Bloom Glow (breiter als vorher)
- Klassen-getönte Backgrounds: `col * 0.09 / 0.055 / 0.015` α 0.60 (kräftiger, besser lesbar)
- **FIX: Separator-Bug behoben** — `\xC2\xB7` (Kästchen im Spiel) ersetzt durch zwei klar getrennte Info-Zeilen
- Info-Zeile 1: `Lv.X Klasse` in warmem Grau (`0.78, 0.68, 0.54`) — klar lesbar
- Info-Zeile 2: Zone in `|cff5AC8D8` (Teal) + Killer in `|cffFF7A68` (Rot) mit ` - ` Trenner
- Datum: Pill-Badge mit sichtbarem Dark-Background (`0.08, 0.055, 0.015, 0.82`) + klassen-getönter Top-Border
- Datum-Farbe: `|cffD0B878` (helles Gold), FRIZQT 8pt, RIGHT-aligned
- Klassen-Icon: 32×32 in 38×38 Backing-Square + Farb-Ring (zentriert, professioneller Rahmen)
- Name: FRIZQT 12pt (von 11pt), `col * 1.40 + 0.10` — markanter, präsenter
- Letzte Worte: 20px Strip unten + 1px Klassen-Divider-Linie + `|cffCCB490` Cream-Farbe, FRIZQT 9pt
- Hover: bg brightening auf 0.75, iconBorder-Ring leuchtet stärker
- Tooltip: Zone in `0.38, 0.80, 0.88` (kräftiges Teal), Letzte Worte `|cffCCB490`
- Day-Separator: 3px linker Gold-Akzentbalken, Count-Badge als Pill, Shimmer, MORPHEUS in `|cffF0C060`
- Admin-Delete-Button: BOTTOMRIGHT, α 0.18 → 1.0 on Hover (unverändert)
**Todeskarte (Death Overlay) – Text-Kontrast & Timestamp:**
- Zone/Killer/LastWords: alle Fonts erhalten `"OUTLINE"` Flag + Shadow-Color 100% schwarz
- Zone: Font 13 → 12 mit OUTLINE (knackige Lesbarkeit)
- Killer: Farbe 0.9,0.3,0.3 → 1.0,0.35,0.25 mit OUTLINE + Shadow
- Letzte Worte: Farbe 0.8,0.75,0.6 → 0.88,0.80,0.62 mit OUTLINE + Shadow
- **NEU: Timestamp-Zeile** – "Gefallen am TT.MM.JJJJ um HH:MM Uhr" in warmem Goldton (OUTLINE) zwischen Zone und Killer