CC ALERT 2.2.6 — Exception Fear limitée au Démoniste
=========================================================

CHANGEMENT PRINCIPAL
- Suppression du fallback 2.2.5 qui laissait passer TOUS les casts secrets ciblant le joueur.
- Les autres classes redeviennent strictement filtrées par les prédicats CC natifs.
- L'exception wrapper est désormais appliquée UNIQUEMENT si le caster est publiquement identifié WARLOCK.
- Identification démoniste :
  1. UnitClass si public ;
  2. GetArenaOpponentSpec pour arena1..arena5 ;
  3. scoreboard PvP name/classToken (champs NeverSecret) pour BG/nameplates/target/focus.
- Si la classe ne peut pas être identifiée publiquement, aucune exception n'est appliquée.
- /cca warlock permet de vérifier si la cible courante est reconnue comme démoniste.
- Le correctif Secret Value de CCAlertImmunities 2.2.5 est conservé.

IMPORTANT
- Le spellID ennemi secret ne peut toujours pas être comparé à 5782.
- L'exception signifie donc : "cast secret d'un démoniste qui te cible", pas "lecture cachée de 5782".
- Cela réduit énormément les faux positifs par rapport à 2.2.5, sans toucher au comportement normal des autres classes.

CC ALERT 2.2.5 — Fear garanti en mode ciblé / Secret-safe
===========================================================

DIAGNOSTIC CONFIRMÉ PAR /cca audit
- Fear cast 5782 : C_Spell.IsSpellCrowdControl = NON.
- Fear aura 118699 : C_Spell.IsSpellCrowdControl = OUI.
- Cyclone/Polymorph directs : OUI.
- En PvP protégé, l'ID du cast ennemi peut être secret : impossible de comparer secretSpellID == 5782.

STRATÉGIE 2.2.5
- Sort lisible : liste exacte de familles CC.
- Sort secret : prédicat Blizzard CC + prédicat Blizzard Important.
- Mode "CC sur moi" : fail-open uniquement sur les casts secrets ; le filtre natif de cible décide la visibilité.
  => Fear ciblé sur le joueur n'est plus perdu à cause du faux CC=NON de Blizzard.
  => Cela peut volontairement afficher quelques casts offensifs ciblés supplémentaires en PvP protégé.
- Mode "tous" : reste plus strict (CC/Important) pour éviter de transformer l'écran en sapin de Noël.

BUGSACK / IMMUNITÉS
- Corrige l'indexation IMMUNITIES_BY_CLASS[classFile] avec classFile secret.
- Sécurise aussi specID, GUID, UnitClass, UnitName et RAID_CLASS_COLORS avant comparaison/indexation.

CC ALERT 2.2.4 — Pipeline CC standardisé / Fear wrapper
===========================================================

CAUSE IDENTIFIÉE
- Fear Démoniste 5782 est un cast Dummy géré côté serveur.
- L'aura de contrôle réellement appliquée est 118699 (Apply Aura Fear, No Cast Log).
- Une variante 251419 applique Fear directement ; 130616 est une autre aura Fear.
- Song of Chi-Ji a le même type de séparation : cast 198898 -> aura 198909.
- Cyclone, Polymorph et beaucoup d'autres CC sont au contraire des contrôles directs.

STANDARDISATION
- Familles CC = IDs de cast + IDs d'effet.
- Pipeline unique pour l'alerte centrale et le triangle/nameplate.
- Suppression de l'ancien UnitIsSpellTarget.
- Ciblage "sur moi" = PlayerIsSpellTarget(caster) OR UnitIsUnit(caster.."target","player").
- OR réalisé par C_CurveUtil / alpha secret-safe, jamais par un test Lua sur Secret Value.
- Classification = famille/custom si l'ID est public, sinon C_Spell.IsSpellCrowdControl.
- C_Spell.GetBaseSpell est aussi testé pour normaliser certaines variantes.
- /cca audit compare Fear cast/effect, Cyclone, Polymorph et Song of Chi-Ji.

LIMITE WOW 12.1
- Si l'ID d'un cast ennemi est Secret et que le prédicat Blizzard classe lui-même
  un wrapper comme "pas CC", Lua ne peut pas légalement comparer cet ID secret à 5782.
  /cca audit indique précisément comment le client classe les IDs publics.

CC ALERT 2.2.3 — Correctif Fear / cible secrète WoW 12.1
==============================================================

CORRECTIFS 2.2.3
- Corrige le cas où l'ID du contrôle est lisible mais où la cible du sort est un booléen Secret Value.
- Ce cas pouvait notamment empêcher Peur du Démoniste (spell 5782) d'afficher l'alerte en mode "contrôles sur moi".
- La cible secrète n'est plus lue/comparée : elle est appliquée directement avec Frame:SetAlphaFromBoolean.
- Même correctif pour le triangle au-dessus de la nameplate.
- Ajout d'un fallback C_Spell.IsSpellCrowdControl pour les IDs de contrôles lisibles non présents dans la table statique.
- Ajout explicite de Furie de l'ombre (30283), qui possède un temps d'incantation.
- Peur reste explicitement reconnue sous l'ID 5782.

CC ALERT 2.2.2 — WoW Midnight 12.1.0
=====================================

CORRECTIFS 2.2.2
- Corrige les erreurs WoW 12.1 de C_NamePlate.GetNamePlateForUnit avec arenaN, partyN/raidN, targettarget et autres tokens interdits.
- GetNamePlateForUnit n’est désormais appelé qu’avec des tokens nameplateN valides.
- Le triangle reste alimenté directement par les événements UNIT_SPELLCAST_* des nameplates.

NOUVEAUTÉS 2.2.1
- Interface addon mise à jour pour WoW Midnight 12.1.0 (120100).
- Compatibilité conservée avec les filtres PvE / Champs de bataille ajoutés en 2.2.0.

NOUVEAUTÉS 2.2.0
- Ajout de deux réglages indépendants dans le panneau principal :
  - Activer en PvE
  - Activer en champs de bataille
- L'arène reste toujours active, comme auparavant.
- Les deux nouveaux réglages sont activés par défaut pour conserver exactement le comportement de la version 2.1.5 après mise à jour.
- Le filtre s'applique à l'alerte centrale et au triangle/nameplate associés à la détection des CC.
- Le PvE couvre le monde ouvert, les donjons, raids, scénarios et plus généralement les contenus non-JcJ.
- Les champs de bataille couvrent les BG normaux et classés.
- /cca status affiche maintenant aussi l'état des deux nouveaux contextes.

RÉGLAGES
Échap → Options → AddOns → CC Alert
Échap → Options → AddOns → CC Alert → Immunités actives

IMPORTANT
La détection des immunités actives utilise les auras ennemies que WoW autorise à lire. Si Midnight masque une aura en contenu protégé, l'addon ne peut pas l'annoncer. Aucun cooldown ennemi n'est deviné ou simulé.

INSTALLATION
1. Supprimez l'ancien dossier CCAlert.
2. Décompressez le nouveau dossier CCAlert dans :
   World of Warcraft\_retail_\Interface\AddOns\
3. Relancez le jeu puis tapez /reload.

HISTORIQUE 2.1.5
- Ajout du choix manuel de langue.
- Langues WoW disponibles : Auto, enUS, enGB, deDE, esES, esMX, frFR, itIT, ptBR, ruRU, koKR, zhCN et zhTW.
- Mise à jour automatique du titre standard lors du changement de langue.
