HCRoleplay

A lightweight World of Warcraft Classic Hardcore addon that adds simple roleplay-focused emote icons to enhance in-game expression without affecting gameplay.

File Details

HCRoleplay v2.4.1

  • R
  • Feb 28, 2026
  • 226.00 KB
  • 5
  • 2.5.5+1
  • Classic + 1

File Name

HCRoleplay.zip

Supported Versions

  • 2.5.5
  • 1.15.8
# Changelog – HCRoleplay

## [2.4.1] – 2026-02-28

### Fixed
- **Locale_enUS.lua**: Missing `},` closing the `intro` table inside `PRIEST` class_parts of `T.LOGIN` (line 228). Caused Lua parse error: `'}' expected (to close '{' at line 32) near 'T'` at line 276, preventing the addon from loading.

---

## [2.4.0] – 2026-02-28

### Added – 6 neue immersive Hardcore-Roleplay-Features

#### STEALTH – Schurke / Druide betritt Tarnung
- Trigger: `UNIT_SPELLCAST_SUCCEEDED` auf `"player"` mit Spell-IDs für alle Stealth-/Prowl-Ränge
  - Rogue Stealth Rank 1–4: IDs 1784, 1785, 1786, 1787
  - Druid Prowl Rank 1–3: IDs 5215, 6783, 9913
- 90-Sekunden-Cooldown (`lastStealthEmote`) verhindert Spam
- Klassen-spezifische Parts: `ROGUE` + `DRUID` mit eigenen intro/outro
- Texte in enUS + deDE: 13 intro, 8 outro (general) + je 3/2 klassenspezifisch

#### CAPITAL_CITY – Ankunft in einer Hauptstadt
- Trigger: `ZONE_CHANGED_NEW_AREA` + Lookup in `CAPITAL_CITIES`-Tabelle
  - Alliance: Stormwind, Ironforge, Darnassus (EN + DE Zonennamen gemappt)
  - Horde: Orgrimmar, Thunder Bluff, Undercity
- `wasInCapitalCity`-Flag verhindert Re-Trigger bei Instanzübergang
- 10-Minuten-Cooldown (`lastCapitalEmote`)
- Fraktions-spezifische Parts: `Alliance` + `Horde`
- `{city}` Token für dynamischen Stadtnamen
- Texte in enUS + deDE: 10 intro, 4 middle, 7 outro + Fraktions-Parts

#### MILESTONE_LEVEL – Besondere Level-Meilensteine
- Trigger: `PLAYER_LEVEL_UP` bei Level 10, 20, 30, 40, 50, 60
- `milestonesFired[level]`-Table verhindert doppeltes Auslösen
- `{level}` Token in Texten
- Texte in enUS + deDE: 7 intro, 4 middle, 7 outro

#### PET_DIED – Jäger verliert seinen Begleiter
- Trigger: `COMBAT_LOG_EVENT_UNFILTERED` + `UNIT_DIED` subevent
- Erkennung: `destGUID == UnitGUID("pet")` bestätigt eigenes Tier
- Nur für Klasse `HUNTER` (Guard verhindert Auslösen bei anderen)
- 3-Minuten-Cooldown (`lastPetDeathEmote`)
- Texte in enUS + deDE: 10 intro, 4 middle, 6 outro + Hunter class_parts

#### DEATH_WITNESS – Fremden HC-Spieler sterben sehen
- Trigger: `COMBAT_LOG_EVENT_UNFILTERED` + `UNIT_DIED` subevent für Spieler (nicht eigene Gruppe)
- Filter: `COMBATLOG_OBJECT_CONTROL_PLAYER` Flag für Spieler-Deaths
- Ausschluss: Eigene Gruppe via `COMBATLOG_OBJECT_AFFILIATION_MINE / PARTY / RAID`
- `{target}` Token für den Namen des gefallenen Abenteurers
- 2-Minuten-Cooldown (`lastWitnessDeathTime`) verhindert Spam bei Massensterbens
- Texte in enUS + deDE: 10 intro, 5 middle, 7 outro

#### BAGS_FULL – Inventar vollständig gefüllt
- Trigger: `OnUpdate`-Timer (alle 30 Sekunden) prüft `AreBagsFull()`
- 10-Minuten-Cooldown (`lastBagsFullEmote`) nach Auslösen
- Kein separates Event nötig – reines Polling via `bagsCheckTimer`-Accumulator
- Texte in enUS + deDE: 9 intro, 3 middle, 6 outro

#### FIRST_KILL_OF_SESSION – Erster Kill dieser Spielsitzung
- Trigger: Erster `UNIT_DIED` (Feind) nach Session-Start
- `firstKillToday`-Flag wird nach erstem Auslösen gesetzt, Reset bei `PLAYER_LOGIN`
- Eigenständig neben Kill-Streak-System
- Texte in enUS + deDE: 5 intro, 3 outro

---

## [2.3.0] – 2026-02-28

### Changed – Massiver Locale-Ausbau (Infinite Variation Engine)
- **PLAYER_DEATH**: enUS + deDE: intro 25 Einträge, middle 12 Einträge, outro 23 Einträge (vorher je 3-5)
- **RESURRECT**: enUS + deDE: intro 20 Einträge, middle 10 Einträge, outro 17 Einträge
- **LEVEL_UP**: enUS + deDE: intro 20 Einträge, middle 10 Einträge, outro 15 Einträge
- **ELITE_KILL**: enUS + deDE: intro 12 Einträge, outro 9 Einträge
- **RARE_KILL**: enUS + deDE: intro 12 Einträge, outro 8 Einträge
- **BOSS_KILL**: enUS + deDE: intro 13 Einträge, middle 6 Einträge, outro 8 Einträge
- **PVP_KILL**: enUS + deDE: intro 12 Einträge, outro 8 Einträge
- **AFK**: enUS + deDE: intro 18 Einträge, outro 10 Einträge
- **BACK_FROM_AFK**: enUS + deDE: intro 17 Einträge, outro 10 Einträge
- **ZONE_ENTER**: enUS + deDE: intro 15 Einträge, outro 10, time_parts day/night je 5/3 Einträge
- **QUEST_COMPLETE**: enUS + deDE: intro 15 Einträge, middle 7 Einträge, outro 11 Einträge
- **EAT**: enUS + deDE: intro 14 Einträge, middle 6 Einträge, outro 8 Einträge
- **DRINK**: enUS + deDE: intro 14 Einträge, middle 6 Einträge, outro 7 Einträge
- **CRITICAL_HEALTH**: enUS: intro 20 Einträge, middle 10, outro 20, class_parts je 5 Einträge
- Ziel: Rechnerisch unendlich viele einzigartige Text-Kombinationen durch Kreuzprodukt aus intro × middle × outro × class_parts × race_parts × faction × time = >1 Mio. Varianten pro Event



### Added – Umgebungsschaden-Events (Environmental Damage)
- **FALL_DAMAGE** (Kampf – 80%): Leichter Sturzschaden (<25% maxHP). Erkennung via `COMBAT_LOG_EVENT_UNFILTERED` mit `subevent=="ENVIRONMENTAL_DAMAGE"` und `environmentalType=="FALLING"`. 8-Sekunden-Cooldown verhindert Spam. Emote-Animation: `KNEEL`. Klassen: Schurke (Versagen stiller Landung), Druide (Form fängt meisten Schaden ab).
- **FALL_HEAVY** (Kampf – 100%): Schwerer Sturzschaden (≥25% maxHP). Gleiche Erkennung wie FALL_DAMAGE, aber separates Event für Schweregrad. Emote-Animation: `GROVEL`. Stärkere Texte ("Aufprall presst Luft aus der Lunge", "HC-Realitätscheck").
- **FIRE_DAMAGE** (Kampf – 80%): Feuerschaden durch Umgebung. 12-Sekunden-Cooldown. Eigene Texte ("springt zurück als das Feuer greift").
- **LAVA_SPLASH** (Kampf – 90%): Lavakontakt. 10-Sekunden-Cooldown. Separate Texte von Feuer ("sengende Hitze", "nie eine gute Idee"). Emote: `GASP`.

### Added – Ertrinken-System
- **DROWNING** (Welt – 100%): Beim Ertrinken (Luft aufgebraucht). Erkennung via `MIRROR_TIMER_START` mit `timerType=="BREATH"`. `isBreathActive`-Flag verhindert Re-Trigger. Emote-Animation: `GASP`. Klassen: Schamane (Wassergeister ungnädig), Krieger (Plattenrüstung + tiefes Wasser).
- **DROWNING_SURVIVE** (Welt – 100%): Nach Entkommen aus dem Wasser. Erkennung via `MIRROR_TIMER_STOP` (Guard: `not UnitIsDeadOrGhost("player")`). Texte: "hustet den halben See aus", "HC-Notiz: nächstes Mal schneller schwimmen".

### Added – Kill-Serien-System
- **KILL_STREAK_3** (Kampf – 80%): 3 aufeinanderfolgende Kills innerhalb 14 Sekunden. Eigenes konsekutives Tracking via `killStreak`-Counter + `lastKillTime`. Emote: `FLEX`.
- **KILL_STREAK_5** (Kampf – 100%): 5 aufeinanderfolgende Kills. Eskalierendere Texte ("Die verbleibenden Feinde sollten ihre Entscheidungen überdenken"). Emote: `CHEER`.
- **KILL_STREAK_X** (Kampf – 100%): 10+ aufeinanderfolgende Kills. Höchste Eskalationsstufe ("hat aufgehört zu zählen"). Emote: `ROAR`. Streak-Reset bei `PLAYER_REGEN_ENABLED`.

### Added – Ruf-Gewinn-Tracking
- **REP_GAIN** (Sozial – 70%): Ansehen bei einer Fraktion gestiegen. Erkennung via `UPDATE_FACTION` + 0,3s-Delay-Poll auf `GetWatchedFactionInfo()` mit Wertvergleich gegen `watchedFactionValue`. Feuert nur bei Anstieg (kein Rep-Verlust-Trigger). Emote: `CHEER`. `{target}` = Fraktionsname.

### Added – Wetter-Kontext für Zonen
- **ZONE_WEATHER-Tabelle** in `Core.lua`: 26 Classic-Zonen gemappt auf 5 Wettertypen (rain/snow/fog/sand/ash). Wird bei `ZONE_CHANGED_NEW_AREA` aktualisiert. Kein API-Aufruf (GetWeatherInfo nicht zuverlässig in 1.15.x).
- **`context_parts` für ZONE_ENTER**: Wetterspezifische Einleitungstexte (Regen peitscht Boden / Schneestille / Nebel null Sicht / Sandwind / Schwefelluft) in enUS + deDE implementiert.

### Added – Mondphasen-Kontext
- **`GetMoonPhase()`** in `Core.lua`: 28-Tage-Zyklus basierend auf Echtzeit-Datum. Gibt `new_moon`, `full_moon`, `waxing`, `waning` zurück. Wird als temporärer `contextInfo.moon` während NIGHT_FALL/DAWN-Events gesetzt.
- **`context_parts` für NIGHT_FALL**: Vollmond (scharfe Schatten, alles fühlt sich beobachtet an), Neumond (pure Dunkelheit, Gewicht der Finsternis), Zu-/Abnehmend in enUS + deDE.

### Fixed – ROAR-Emote-Spam
- **ENTER_COMBAT-Emote reduziert**: ROAR wurde bei jedem Kampfbeginn gesendet. Fix: (1) ENTER_COMBAT aus `EMOTE_ANIM_MAP` entfernt, (2) direktes `DoEmote("ROAR")` mit 45-Sekunden-Cooldown (`lastEmoteTime["_roar"]`) + 60%-Chance. Maximal 1 ROAR alle 45s.

### Added – Config.lua
- 10 neue Events in `EVENT_INFO` registriert (FALL_DAMAGE, FALL_HEAVY, FIRE_DAMAGE, LAVA_SPLASH, DROWNING, DROWNING_SURVIVE, KILL_STREAK_3/5/X, REP_GAIN).
- Entsprechende Standardchancen in `DEFAULT_CHANCES` ergänzt.

### Changed
- **Versionsnummern auf 2.2.0 synchronisiert**: TOC, Core.lua (Ladeprint).
- RegisterEvents: `MIRROR_TIMER_START`, `MIRROR_TIMER_STOP`, `MIRROR_TIMER_PAUSE`, `UPDATE_FACTION` hinzugefügt.

---

## [2.1.0] – 2026-02-28
### Added – Tag/Nacht-Immersionssystem (`time_parts`)
- **Neues `time_parts`-Textsystem** in `Core.lua`:
  - `PickFromPartPool()` hat neuen optionalen 10. Parameter `timeP`
  - Tageszeit-Key: `isNight == true` → `"night"`, sonst `"day"` (greift auf das existierende `isNight`-Flag von v2.0.0 zurück)
  - Tageszeit-Parts werden **additiv** hinzugefügt (einfaches Gewicht, analog zu `faction_parts`)
  - `BuildDynamicText()` übergibt `data.time_parts` an alle drei `PickFromPartPool()`-Aufrufe
  - Funktiont für alle Events die `time_parts` definieren – keine Pflicht, transparenter Fallback
- **`time_parts` in Locale_enUS.lua + Locale_deDE.lua** für 7 Events:
  - **LOGIN** – Tag: zielstrebig/Tageslicht; Nacht: Schatten/Vorsicht
  - **ENTER_COMBAT** – Tag: klarer Kampf/kein Versteck; Nacht: Dunkelheit/Instinkt/Orientierungsverlust
  - **NORMAL_KILL** – Tag: sauberer Abschluss; Nacht: Stille/Warnung vor nächstem Schatten
  - **FISHING** – Tag: sonnige Bank/friedlich; Nacht: dunkles Wasser/Geister/riskantes Hobby
  - **MOUNT** – Tag: freie Strasse/Wind; Nacht: Reittier vertrauen/Fackeln wären hilfreich
  - **REST_AREA** – Tag: gönne dir eine Pause; Nacht: Zimmer verriegeln/Kerzen brennen tief
  - **ZONE_ENTER** – Tag: Sonne im Rücken/einladend; Nacht: Schatten/Konturen/doppelter Respekt

### Added – Neue Emote-Animationen
- **EMOTE_ANIM_MAP** um 7 Events erweitert:
  - `DUEL_LOSE  = "GROVEL"` – Verlierer kriecht nach dem Duell
  - `ELITE_KILL = "FLEX"` – Muskelprotz nach schwerem Gegner
  - `DISCOVERY  = "POINT"` – "Schau mal hier!" beim Entdecken
  - `SKILL_UP   = "FLEX"` – Stolz auf Fertigkeitssteigerung
  - `NIGHT_FALL = "YAWN"` – Gähnend die hereinbrechende Nacht begrüssen
  - `DAWN       = "SALUTE"` – Sonnenaufgang grüssen
  - `PARTY_DEATH = "MOURN"` – Traueranimation beim Tod eines Gruppenmitglieds
  - `CAMPFIRE   = "SIT"` – Sich ans Feuer setzen

### Changed
- **Versionsnummern auf 2.1.0 synchronisiert**: TOC, Core.lua (Ladeprint)

## [2.0.0] – 2026-02-28
### Added – 8 neue HC-Immersion Events
- **CLOSE_CALL** (Kampf – 100%): Überlebt einen Kampf, in dem HP unter 5% gefallen war. DER Hardcore-Moment. Erkennung via `combatMinHP`-Tracking: beim Kampfbeginn auf 100 gesetzt, jeder `CheckHealth()`-Tick prüft das Minimum. Bei `PLAYER_REGEN_ENABLED` mit `combatMinHP ≤ 5` feuert CLOSE_CALL (0.5s Delay, Guard gegen Re-Combat). Eigene Emote-Animation: KNEEL. Volle Klassen- und Rassentexte (enUS/deDE), generisch für frFR/esES.
- **SKILL_UP** (Charakter – 20%): Berufsskill oder Waffenskill gestiegen. Erkennung via `CHAT_MSG_SKILL`-Event. `contextInfo.spell` enthält die Skill-Nachricht. Niedrige Standard-Chance (20%) weil Skills häufig steigen.
- **FIRST_AID** (Aktivität – 80%): Bandage benutzt – das HC-Survival-Tool. Erkennung via `FIRST_AID_SPELL_IDS` in `UNIT_SPELLCAST_START`. Alle Classic-Bandagen-Ränge (Linen bis Heavy Runecloth) + TBC-Bandagen + Anti-Venom enthalten.
- **DISCOVERY** (Welt – 100%): Neue Subzone zum ersten Mal betreten. Erkennung via `GetMinimapZoneText()` Tracking in `CheckZoneChange()`. Besuchte Subzones werden in `HCRoleplayDB.visitedZones` persistent gespeichert. 10-Sekunden-Guard beim Login verhindert falsches Feuern.
- **NIGHT_FALL** (Welt – 80%): Nacht bricht an (21:00 Spielzeit). Erkennung via `GetGameTime()` im 3-Sekunden-OnUpdate-Timer. Feuert genau einmal beim Stundenwechsel zu 21:00. Klassen-spezifisch: Schurke fühlt sich zuhause, Druide spürt den Rhythmuswechsel, Hexenmeister gewinnt an Macht. Nachtelf: Elunes Mondlicht.
- **DAWN** (Welt – 80%): Morgengrauen um 06:00 Spielzeit. Analog zu NIGHT_FALL. Rassen-spezifisch: Tauren (Erdmutter), Mensch (Licht), Troll (warme Sonne).
- **PARTY_DEATH** (Sozial – 100%): Gruppenmitglied gestorben. Erkennung via `COMBAT_LOG_EVENT_UNFILTERED` → `UNIT_DIED` mit Party-Affiliation-Flag-Check (`COMBATLOG_OBJECT_AFFILIATION_PARTY/RAID` + `COMBATLOG_OBJECT_CONTROL_PLAYER`). Nur andere Spieler, nicht der Spieler selbst. Klassen-spezifisch: Priester/Paladin beten, Druide spürt den Lebensfaden reißen.
- **CAMPFIRE** (Aktivität – 100%): Lagerfeuer angezündet. Erkennung via `CAMPFIRE_SPELL_IDS` (818 = Basic Campfire, 29137 = Bright Campfire) in `UNIT_SPELLCAST_START`. Rassen-spezifisch: Zwerg (Feuer+Bier+Sterne), Orc (Feuer = Herz des Lagers), Tauren (Geschenk der Wärme), Troll (böse Geister fernhalten).

### Added – UI
- **Log-Tab**: Neuer vierter Tab im Einstellungsfenster zeigt die letzten 50 gefeuerten Emotes live an. Automatische Aktualisierung alle 2 Sekunden wenn sichtbar. Jeder Eintrag zeigt: Zeitstempel, Event-Name (farbig nach Kategorie), Emote-Text. Farbiger Akzentstreifen links (Narcissus-Style). "Leeren"-Button zum Zurücksetzen des Logs.
- **Emote Log API**: `HCRoleplay_GetEmoteLog()` gibt die Log-Tabelle zurück. `HCRoleplay_IsNight()` gibt den aktuellen Tageszeit-Status zurück. Logs werden im Speicher gehalten (max 50 Einträge, FIFO).
- **`visitedZones` in SavedVariables**: Persistente Speicherung besuchter Subzones für Discovery-Erkennung. Wird bei ADDON_LOADED initialisiert.

### Changed
- **Versionsnummern auf 2.0.0 synchronisiert**: TOC, Core.lua (Ladeprint), UI.lua (Header + Info-Panel + verFS), Minimap.lua (Tooltip)
- **Config.lua**: 8 neue Events in EVENT_INFO mit Kategorien und Beschreibungen. 8 neue Einträge in DEFAULT_CHANCES.
- **Core.lua DEFAULTS**: Alle neuen Events in `.events` (standardmäßig aktiv) und `.chances` registriert.
- **OnUpdate-Timer**: Prüft jetzt zusätzlich zur Schwimmerkennung auch die Tageszeit (`CheckTimeOfDay()`).
- **Info-Panel**: Beschreibung um HC-Features erweitert.

## [1.9.0] – 2026-02-28
### Fixed
- **LOOT-Erkennung komplett repariert** (EPIC_LOOT, RARE_LOOT, LOOT_ITEM feuerten nie):
  `msg:find(playerName)` schlug bei Self-Loot fehl, weil Classic-Messages "You receive loot:" / "Ihr erhaltet Beute:" sagen – der Spielername kommt dort NICHT vor. Neue Erkennung nutzt die lokalisierten `LOOT_ITEM_SELF` / `LOOT_ITEM_SELF_MULTIPLE` Global Strings von Blizzard als Pattern-Match. Playernames als Fallback für Edge-Cases beibehalten. Funktioniert jetzt in allen Sprachen.
- **EAT/DRINK-Erkennung war trotz v1.8.3-Fix immer noch kaputt**:
  `debuffType == "Food"` / `"Drink"` gibt es für UnitBuff-Returns nicht – `debuffType` ist für Food/Drink-Buffs IMMER nil (nur Debuffs haben Magic/Curse/Disease/Poison). Neue Erkennung prüft den Buff-**Namen** gegen lokalisierte Tabellen (Food/Essen/Nourriture/Comida, Drink/Trinken/Boisson/Bebida, Refreshment/Erfrischung).
- **DUEL immer WIN – nie LOSE**: `DUEL_FINISHED` feuerte blind `DUEL_WIN`, ohne zu prüfen wer gewonnen hat. Jetzt: 0.2s Delay nach Event, dann HP-Check – Verlierer hat ≤5% HP nach Duell. `DUEL_LOSE`-Event neu in Config.EVENT_INFO registriert (war nur in DEFAULTS, nicht im UI sichtbar).
- **PROFESSION_CRAFT durch fremde Spells ausgelöst**: `pendingCraftItem` wurde von JEDEM `UNIT_SPELLCAST_SUCCEEDED` konsumiert – auch von Auto-Attacks, Heals etc. Jetzt mit Zeitfenster: nur innerhalb 5s nach dem Hook-Trigger wird der Craft als gültig akzeptiert. Stale Crafts werden verworfen.
- **Spell ID 26989 Kollision (Druid-Bug)**: War gleichzeitig in `SKINNING_SPELL_IDS` UND `ABILITY_SPELL_IDS[DRUID]` (Entangling Roots Rang 7) → Druiden mit Skinning: jedes Wurzeln setzte `pendingSkinLoot = true`, nächstes `LOOT_OPENED` wurde als Häutung interpretiert. 26989 aus SKINNING_SPELL_IDS entfernt. Spell IDs 31481/50305 (WotLK+) ebenfalls entfernt.
- **GATHER_NODE unzuverlässig / funktionslos**: Basierte ausschließlich auf `GetLootSourceInfo()` das in vielen Classic-Builds nicht existiert oder fehlerhaft arbeitet. Neue Erkennung: Mining- und Herbalism-Spell-IDs werden in `UNIT_SPELLCAST_SUCCEEDED` getrackt (`pendingGatherLoot`-Flag), nächstes `LOOT_OPENED` wird als Knoten-Abbau erkannt. `GetLootSourceInfo` bleibt als Fallback mit pcall-Absicherung.
- **Gemischte Fraktions-Texte in PvP-Kontext**: `context_parts.pvp.outro` in ENTER_COMBAT und `parts.outro` in PVP_KILL enthielten sowohl "für die Allianz" als auch "für die Horde" im selben Pool – ein Allianz-Spieler konnte "für die Horde" sagen. Beide bereinigt auf neutrale Texte; fraktionsspezifische Texte ausschließlich via neues `faction_parts`-System.

### Added
- **Wut-spezifische State-Parts für ENTER_COMBAT** (`rage_fresh`, `rage_engaged`, `rage_enraged`):
  - `rage_fresh` – Krieger/Bär betritt Kampf mit 0 Wut: ruhig, geduldig, bewusst dass die Wut erst kommen muss
  - `rage_engaged` – mittlere Wut: Kampffeuer baut auf, Rhythmus aufgebaut, Hiebe werden wuchtiger
  - `rage_enraged` – volle Wut: unkontrolliertes Vorwärtsstürmen, kein Gedanke an Vorsicht mehr, pure Kraft
  - `full_res` / `mid_res` / `low_res` bleiben für Mana/Energie-Klassen (Magier, Priester, Schurke etc.)
  - Implementiert in `Locale_enUS.lua` + `Locale_deDE.lua`; greift via `BUILDUP_STATE_RENAME` automatisch für PowerType 1 (Wut)
- **Fraktions-System (`faction_parts`)** – Kontext-spezifische Texte für Allianz vs. Horde:
  - Erkennung: `UnitFactionGroup("player")` mit Fallback "Alliance" – läuft einmalig beim Login
  - `PickFromPartPool()`: `faction_parts[playerFaction]` wird additiv mit einfachem Gewicht hinzugefügt (kein State-Override)
  - `BuildDynamicText()`: übergibt `data.faction_parts` für alle Events die es haben
  - Implementiert für: **ENTER_COMBAT**, **PVP_KILL**, **BOSS_KILL** (enUS + deDE)
  - Allianz: diszipliniert/ehrenhaft/Sturmwind-Bezug; Horde: wild/Blut-und-Ehre/Lok'tar
- **Mining Spell IDs**: 2575, 2576, 3564, 10248 (Classic) + 29354 (TBC) für zuverlässige Gather-Erkennung
- **Herbalism Spell IDs**: 2366, 2368, 3570, 11993 (Classic) + 28695 (TBC)
- **TBC 2.5.5 Kompatibilität**: `## Interface-BCC: 20505` in TOC hinzugefügt. Skinning-IDs um TBC-Ränge (10768, 32678) erweitert. Info-Panel zeigt jetzt "WoW Classic 1.15.x | TBC 2.5.5".
- **DEFAULTS.events**: ELITE_KILL, RARE_KILL, BOSS_KILL, PVP_KILL, ZONE_ENTER, DANGEROUS_ZONE, DUNGEON_ENTER, CAVE_ENTER – alle als standardmäßig aktiviert registriert (waren nur in `chances`, nicht in `events`-Toggle).