Commit Graph

266 Commits

Author SHA1 Message Date
Adrestie 2fd1b024e4 ForeverUI : titres de quête de camelot 1.60.1.70450
- Suivi des objectifs : titre « [niveau(+)] Titre (Type) », comme
  QuestObjectiveTrackerMixin:UpdateSingle avec QuestUtilsOverrides :
  préfixe de niveau toujours posé, « + » pour une élite, puis le type pour
  quatre cas (Élite, Donjon, JcJ, Raid), tirés du questTag de
  GetQuestLogTitle comparé aux textes du client (ELITE,
  CALENDAR_TYPE_DUNGEON, CALENDAR_TYPE_PVP, RAID). Pas de couleur de
  difficulté : la CVar showQuestDifficultyColor n'existe pas en 3.3.5.
- Journal : même étiquette de type pour les quatre cas (l'élite seule
  avant) ; lignes de quête décalées de 4 (titleFrameLeftPadding).
- « Lien dans la discussion » retiré des menus du suivi et du journal
  (camelot ne le garde qu'en mode manette) ; Maj-clic lie toujours la
  quête.
SUIVI_DES_QUETES.md : décision 1 révisée.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 23:59:16 +02:00
Adrestie f14ce96caa ForeverUI : insigne JcJ à sa place, par-dessus le niveau
L'icône JcJ revient à la place de camelot 70450 (centrée en (17,6 ;
-62,8) du coin haut gauche du joueur, (-19,2 ; -62,8) du coin haut droit
de la cible), en gardant la taille pleine (24 x 27, l'icône chacun pour
soi à l'échelle 0,8), et passe par-dessus le cercle et le texte du
niveau : sur le joueur, un cadre fils un niveau au-dessus ; la cible
l'avait déjà.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 23:54:47 +02:00
Adrestie 8a9445b198 ForeverUI : insigne JcJ plus visible, au-dessus du niveau
Camelot 70450 pose l'icône JcJ à l'échelle 0,8 sous le cercle du niveau,
qui la masque en partie. À la demande de l'utilisateur, sur le joueur
comme sur la cible : taille pleine (24 x 27 ; l'icône chacun pour soi,
28 x 44, garde l'échelle 0,8) et posée juste au-dessus du cercle du
niveau, son bas à (17,6 ; -53) du coin haut gauche (cible : (-19,2 ; -53)
du coin haut droit).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 23:52:51 +02:00
Adrestie f727a7da25 ForeverUI : séparateurs et repère de repos des barres d'état
Comme camelot (StatusTrackingBarContainerMixin:UpdateDividers, inchangé en
70450) : 20 segments, soit 19 séparateurs StatusBarDividerTemplate (3 x 10,
ui-hud-experiencebar-divider) à largeur / 20 x i, sur la barre
d'expérience et sur celle de réputation, au-dessus du remplissage ;
replacés quand la barre prend sa largeur.
Repère de repos (UI-HUD-ExperienceBar-Frame-Pip, 10 x 14) centré au bout
de la partie reposée, tant qu'il reste du repos ; sans infobulle.
NOTES.md §3 à jour.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 23:48:41 +02:00
Adrestie c7010f3e2c ForeverUI : statistiques remontées et resserrées
Les trois blocs commencent 2 px sous la pierre (au lieu de 10) et
chaque bloc est resserré : ses lignes partent 3 px sous le menu
déroulant, dans l'ombre de son fond, au lieu de 11. Écart entre blocs
inchangé (12) ; les lignes gardent leurs 13 px et leurs rayures.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 23:43:21 +02:00
Adrestie 8a9e9e25aa ForeverUI : troisième groupe de statistiques, pierre en un seul cadre
- Un troisième sélecteur de catégorie, identique aux deux du client (même
  menu déroulant, mêmes six lignes StatFrameTemplate remplies par
  UpdatePaperdollStats), dans les 25 px gagnés sur la pierre. Son choix
  est gardé dans ForeverUIDB.statThirdCategory ; par défaut, une catégorie
  que les deux autres n'affichent pas (sorts pour les lanceurs de sorts,
  distance pour le chasseur). Il suit les mises à jour du client.
  L'écart entre deux groupes passe de 16 à 12 pour que les trois tiennent.
- La pierre de 60 devient un cadre de 233 x 60 portant ses deux morceaux :
  le gestionnaire d'équipement et la page des titres, ancrés sous elle,
  s'arrêtaient à 30 px du haut et prennent maintenant toute la hauteur
  libérée.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 23:40:58 +02:00
Adrestie c1e65b8d89 ForeverUI : feuille de personnage, bandeau du niveau et menus déroulants
Camelot 1.60.1.70450 :
- La ligne de niveau et de classe quitte le volet droit pour un bandeau
  rocheux de 36 en haut du volet gauche (TopBackgroundStripHost :
  UI-Background-Rock, liseré _UI-Frame-InnerTopTile), centrée à (0, -2),
  police contourée de 14 (GameFontNormalMed2Outline), « Niveau 80 » puis
  la classe dans sa couleur (PLAYER_LEVEL_NO_SPEC). Le bandeau est un
  mobilier du personnage ; le modèle commence dessous, ses flèches de
  rotation passent à TOP (0, -40).
- La pierre du volet droit passe de 85 à 60 (StoneBG3), tirée du haut et
  du bas de StoneBG, sans art nouveau ; statistiques et titres gagnent
  25 px.

Les deux sélecteurs de catégorie de statistiques deviennent le menu
déroulant de camelot (WowStyle1DropdownTemplate par Tpl.MenuStyle1 :
fond common-dropdown-textholder, flèche à états, texte à gauche) au lieu
de l'en-tête UI-Character-Info-Title ; le menu et ses catégories restent
ceux du client.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 23:33:57 +02:00
Adrestie c994e4c16d ForeverUI : barres des cadres d'unité au-dessus de l'art
Les barres de vie et de ressource du joueur, de la cible, de la cible de
la cible et du familier étaient dans le calque BORDER, sous l'art du
cadre (ARTWORK). Les emplacements des barres de cet art sont un voile
sombre : noir à 40 % en 69893, brun à 74 % en 70450, qui recouvrait donc
les barres et les rendait très sombres. Camelot dessine ses barres
(StatusBar, cadres enfants) au-dessus de l'art : elles passent en
OVERLAY. Les cadres de groupe les avaient déjà dans un cadre enfant.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 23:06:49 +02:00
Adrestie 59d9b1565e ForeverUI : cadres d'unité de camelot 1.60.1.70450
Camelot 70450 donne une variante c60 à toutes les barres et à tous les
voiles des cadres d'unité, et réimplante leur planche (uiunitframec60,
256 x 512 -> 1024 x 512). Les planches uiunitframec60, uipartyframec60 et
uiroguecombopointsc60 de la 70450 (BGRA non compressé) remplacent ou
rejoignent celles de l'atelier ; UIAtlas_04 prend leurs régions
(feuilles 12 à 14), et les noms du groupe quittent UIAtlas_06.

- Joueur : vie (87, -43), ressource (87, -61), nom centré de 116 en
  (149, -37), voile de menace centré ; ordre combat, liste de haine, repos.
- Cible : barres identiques pour les créatures négligeables, vie (21, -41),
  ressource (17, -60), bandeau (-82, -26), nom centré, voile (-1, 1) ;
  cadre 194 x 68 (négligeable 163 x 57) par l'atlas.
- Insigne JcJ du joueur et de la cible : plus de cercle, l'icône seule à
  l'échelle 0,8, environ 7 px plus bas.
- Points de combo : l'arc de camelot (cinq points autour du portrait de la
  cible, rayon 39,6, de -10° par pas de 21°, depuis 2° avec l'insigne JcJ,
  remplis par le haut) remplace le ComboFrame du client.
- Cible de la cible et familier : vie (45, -17,5), ressource (43, -29,5),
  nom centré.
- Groupe : vie (47, -20), ressource (45, -31), nom (48, -7) de 55, rôle
  (-5, -7), voile (1, -1), statut (-1, -1) ; vie vide pour un membre
  déconnecté et mort.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 22:39:45 +02:00
Adrestie 5501452e20 ForeverUI : glisser un sort du grimoire en combat
Le grimoire prenait le sort par un PickupSpell de l'addon, que le client
refuse en combat. Chaque case porte maintenant l'emplacement et le livre
de son sort (attributs publiés par le contrôleur sécurisé), et un extrait
enroulé autour de OnDragStart les rend au client, qui prend le sort
lui-même (SecureHandlers.lua, Wrapped_Drag -> PickupAny), comme le
grimoire de WotLK. Un groupe n'a pas d'emplacement : il ne se glisse
toujours pas. L'aspect enfoncé de la case se termine au survol quitté.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-16 01:00:26 +02:00
Adrestie 7f53a792b1 ForeverUI : allemand, espagnol et russe
Les langues du client HD, comme les autres mods : Texts_deDE, _esES et
_ruRU en jeu, ForeverUIGlueTexts_deDE, _esES et _ruRU pour les écrans de
connexion, listés après l'anglais dans le .toc et ForeverUIGlue.xml.
Mêmes 380 et 31 clés que l'anglais, mêmes %s/%d dans le même ordre ;
la terminologie suit les GlobalStrings 3.3.5 de chaque langue. Les noms
de race de la sélection de personnage sont repris tels quels de
ChrRaces.dbc de chaque langue (formes masculine et féminine).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-16 00:52:20 +02:00
Adrestie eb86f20abd ForeverUI : indicateur JcJ sur le cadre de cible
Repris de camelot (TargetFrameMixin:ShowPvPIcon, CheckFaction) : cercle
et emblème à l'échelle 0,8, le haut du cercle à (-23, -50) du coin haut
droit en unités réduites ; emblème « chacun pour soi » en zone libre,
emblème de faction pour une cible marquée JcJ. Comme dans camelot, le
badge passe sur le cercle du niveau (cadre fils un niveau au-dessus).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:26:59 +02:00
Adrestie 9af5c2df17 ForeverUI : icône JcJ de nouveau visible
Le cercle et l'icône partageaient la couche BORDER : en jeu, le disque
opaque passait devant l'icône. Le cercle passe en BACKGROUND, l'icône
reste en BORDER, tous deux sous le cercle du niveau.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:24:45 +02:00
Adrestie 4ed7fb48cb ForeverUI : indicateur JcJ du portrait à la place de camelot
Camelot pose le cercle JcJ à l'échelle 0,8 en (20, -50) : des décalages
comptés dans ses unités réduites, soit (16, -40) dans celles du cadre. Il
était posé 10 px trop bas, sur le cercle du niveau. Le cercle et l'icône
passent aussi sous le cercle du niveau, comme dans camelot.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:13:45 +02:00
Adrestie 34a0b8cdd6 ForeverUI : annonces de raid au-dessus des fenêtres
Les annonces de raid et les emotes de boss du client sont en HIGH, comme
des parties de la carte, du journal et du butin : elles s'entremêlaient à
ces fenêtres selon les niveaux de cadre. Elles passent en DIALOG.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:11:54 +02:00
Adrestie 38be1ff724 ForeverUI : niveau doré pour une créature amicale
Le client juge une créature attaquable du seul point de vue du joueur :
une faction cochée « en guerre » au rang Amical passe pour attaquable, et
son « ?? » sortait en rouge. Seules les créatures neutres ou hostiles
envers le joueur prennent la couleur de difficulté ; les joueurs gardent
la règle du client.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:11:54 +02:00
Adrestie 20e276a042 ForeverUI : flèches de page cliquables, niveau de la cible coloré
Les flèches de page gardaient les retraits de zone cliquable du client
3.3.5 (6 et 7 px pour un bouton de 32 x 32) sur un bouton de 17 x 14 :
aucune zone ne restait cliquable. Elles n'en ont plus, comme celles de
camelot.

Le niveau d'une cible attaquable prend la couleur de sa difficulté
(GetQuestDifficultyColor, comme TargetFrame_CheckLevel), doré sinon ;
« ?? » prend la couleur la plus difficile. Recalculé sur UNIT_FACTION de
la cible et du joueur.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:32:49 +02:00
Adrestie 4ad53b1a36 ForeverUI : durabilité, points de la relecture
La place par défaut de la figurine de durabilité reste à jour même une
fois déplacée, pour qu'une remise à zéro retrouve la place du client du
moment. Ses pièces d'arme, de bouclier et à distance, qui débordent de
son cadre, restent dans l'écran. Layout.Fractions sert aussi au mode
Personnaliser au lieu d'une copie.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 12:35:13 +02:00
Adrestie 990a6519f5 ForeverUI : figurine de durabilité déplaçable
Layout.RegisterClientFrame rend déplaçable un cadre que le client
réancre lui-même : tant que le joueur ne l'a pas déplacé, sa place par
défaut reprend le dernier ancrage du client (posé sur l'écran au même
endroit) et suit le cadre de référence, la minimap ; une fois déplacé,
sa place revient après chaque réancrage du client. La figurine de
durabilité (texte DURABILITY du client) en profite.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 12:26:09 +02:00
Adrestie df9ae8fb07 ForeverUI : sièges du véhicule contre la minimap en véhicule, fenêtre de taille du côté le plus dégagé
Dans un véhicule à barre de véhicule, le client cache les barres de
droite et finit le glissement de l'icône des sièges contre la minimap :
sa place par défaut fait de même (recalculée à la montée et au retour).
Seul un ancrage du client sur la minimap est remplacé ; un déplacement
en mode Personnaliser n'est plus bloqué par un drapeau. Pour un élément
trop grand pour tous les côtés, la fenêtre de taille va du côté le plus
dégagé.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 12:19:23 +02:00
Adrestie ca3c69639e ForeverUI : sièges du véhicule déplaçables, fenêtre de taille qui longe l'élément
L'icône des sièges du véhicule devient un élément déplaçable ; sa place
par défaut reste celle du client (sous la minimap, à gauche des barres
de droite affichées) et suit la minimap, et le client ne la reprend plus
une fois déplacée. En mode Personnaliser, la fenêtre de taille suit
l'élément pendant son déplacement et se met sur le premier côté où elle
tient à l'écran sans le couvrir : droite, gauche, dessous, dessus.
Fondu : durée fixe de 0,3 s (MAINMENU_SLIDETIME est local au client).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 12:11:06 +02:00
Adrestie e3a04c4e48 ForeverUI : fondu au retour des barres après un véhicule
À la sortie d'un véhicule, les barres du joueur reviennent en fondu de
0 à 1 pendant MAINMENU_SLIDETIME, le temps que la barre du client met à
remonter. Une nouvelle montée coupe le fondu ; la disparition reste
instantanée.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 12:00:56 +02:00
Adrestie 4df044493c ForeverUI : rangée des barres de posture après un rechargement en véhicule
Après un rechargement ou un écran de chargement dans un véhicule, le
client rebascule sur la barre du véhicule sans événement de montée et
cache les barres 2 et 3 avant que Vehicle.lua l'apprenne : la hauteur
sous les barres de posture, de familier et de totems se figeait à zéro.
L'état du client (MainMenuBar.state) la fige désormais aussi.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 11:57:50 +02:00
Adrestie 8362e5ca0b ForeverUI : barre de véhicule au rythme du client
Les barres du joueur partent dès la montée dans un véhicule à barre de
véhicule (UNIT_ENTERING_VEHICLE), comme le client commence à retirer la
sienne, et reviennent avec la barre du client (MainMenuBar_ToPlayerArt).
La barre d'action et les barres du client deviennent transparentes
(permis en combat), les autres cadres se masquent ; les pilotes
[vehicleui] sont retirés. Les barres de posture, de familier et de
totems gardent leur rangée pendant le véhicule, et la barre de droite
retrouve son seul ancrage à la fin du glissement du client.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 11:49:51 +02:00
Adrestie 7eff45cdf7 ForeverUI : barre de véhicule
Dans un véhicule, la barre d'action, les griffons, le bandeau des
micro-boutons, le cadre des sacs et les barres d'expérience et de
réputation disparaissent (pilotes sécurisés [vehicleui], valables en
combat). Les micro-boutons passent dans la place que la barre du
véhicule leur garde, sur deux rangées, à l'échelle 0,85 de Camelot ou
moins pour tenir, quel que soit leur nombre ; ils reprennent leur place
et leur taille à la sortie. Les barres de droite gardent leur ajustement
tant que le véhicule cache le griffon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 11:21:52 +02:00
Adrestie 7e742d094e ForeverUI : animations de la fenêtre de butin
Les animations de camelot, rejouées image par image comme dans le suivi
des quêtes (les groupes de 3.3.5 n'ont ni fromAlpha / toAlpha ni
setToFinalAlpha), avec leurs durées et leur lissage IN : ouverture (monte
de 10 et apparaît en 0,1 s), fermeture (descend de 10 et s'efface en
0,1 s), apparition des cartes (0,1 s), et glissement de 100 vers la droite
en 0,3 s avec fondu sur les 0,2 dernières à chaque ramassage, clic compris
(camelot : butin automatique seulement). À la fermeture, toute animation
en cours s'arrête et chaque carte reprend sa place : rien ne reste à
l'écran quand le dernier objet ferme le butin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 04:00:30 +02:00
Adrestie b3ac549ddb ForeverUI : liste du maître du butin et ombres de la fenêtre de butin
GetMasterLootCandidate ne rend pas un nom absent du cache des noms (souvent
celui du maître du butin lui-même) ; le client le demande puis envoie
UPDATE_MASTER_LOOT_LIST, auquel le LootFrame de 3.3.5 ne répond que par
UIDropDownMenu_Refresh, qui ne reconstruit pas la liste : seul restait le
titre. La liste ouverte est rouverte. Les ombres de la liste passent, comme
chez camelot, dans un cadre 15 niveaux au-dessus des cartes, à l'échelle
0,2 : elles étaient dessinées sous les cartes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 03:51:15 +02:00
Adrestie 164c0e22b1 ForeverUI : icônes d'assistant et de maître du butin
Les portraits et les cadres de raid ne montraient que le chef. Camelot n'a
pas ces icônes : celles de 3.3.5 (UI-Group-AssistantIcon,
UI-Group-MasterLooter). Portrait du joueur et du groupe : l'assistant de
raid à la place du chef, le maître du butin placé comme 3.3.5 le fait près
de l'icône de chef (40, 2) et (32, 0). Cadres de raid : rang, rôle, maître
du butin puis le nom, comme l'onglet Raid ; sans eux, rien ne bouge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 03:07:10 +02:00
Adrestie a7709279b8 ForeverUI : fenêtre de butin de camelot
La fenêtre de butin reprend le LootFrame de camelot : panneau plat
« Objets » de 220 de large et 290 de haut au plus, une carte par
emplacement (fond teinté par la qualité, contour, étiquette de rareté,
bouton d'objet de 37, nom), barre de défilement au-delà, place sous la
souris ou à (16, -116). Le LootFrame du client reste l'hôte, invisible :
événements, liste du butin de maître ancrée au bouton choisi, CloseLoot.
Feuille interface/lootframe/lootframe.blp ajoutée. Animations à venir.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 02:18:38 +02:00
Adrestie f28cabddde ForeverUI : bouclier de la cible derrière l'icône du sort
Comme sur la petite barre de camelot (SmallCastingBarFrameTemplate), le
bouclier d'une incantation non interruptible est dessiné derrière l'icône
du sort et l'entoure : 29 x 33 pour une icône de 20 x 20, depuis (-5, 4)
de son coin haut-gauche, ramené à notre icône de 16 x 16.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 02:00:05 +02:00
Adrestie dab7d34286 ForeverUI : bouclier des barres d'incantation à la taille de camelot
Le bouclier d'une incantation non interruptible gardait la taille de son
image (54 x 64, et 38 x 45 sur la barre de la cible) : il prend celle du
BorderShield de camelot, 29 x 33 au coin haut-gauche (-27, 4) de sa barre
de 208 x 11, soit (-24, 1.5) dans notre cadre de 214 x 16. La barre de la
cible le réduit de 150 / 214 comme ses autres pièces.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 01:56:53 +02:00
Adrestie ae87393c0c ForeverUI : textes de la fiche de fabrication repliés
Le nom du résultat et les outils débordaient de la fiche (largeur de 800
de la fiche camelot normale) : ils suivent la règle de la fiche réduite de
camelot, 250 de large sur plusieurs lignes, et ce qui suit descend sous eux
quand ils dépassent sa place. Les composants passent au pas de 163 pour que
la deuxième colonne reste dans la fiche de 360. Écart noté dans NOTES.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 01:42:35 +02:00
Adrestie ed9a4e4e3d ForeverUI : libellé des composants dans la langue du client
« Reagents: » venait de la table de textes de ForeverUI (anglais et
français seulement) : la page affiche SPELL_REAGENTS, le libellé de la
fenêtre de 3.3.5, sans le saut de ligne prévu pour les infobulles de sorts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 01:42:35 +02:00
Adrestie a2e4c46d34 ForeverUI : infobulle d'un nom de recette coupé
Le client 3.3.5 refuse un texte comme propriétaire d'infobulle
(« GameTooltip:SetOwner(): Wrong object type, expected frame ») : la ligne
de recette en devient propriétaire, et l'infobulle est placée sur le nom
comme ANCHOR_RIGHT le faisait.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 01:27:33 +02:00
Adrestie c96541ccc0 ForeverUI : page de fabrication, un rafraîchissement par image
Pendant le chargement des objets d'un métier, le client envoie un
TRADE_SKILL_UPDATE par objet reçu (433 mesurés sur la Forge), et chacun
refaisait toute la page. Le premier appel d'une image rafraîchit tout de
suite ; les suivants de la même image donnent un seul rafraîchissement à
l'image suivante. UpdateButtons reçoit le résultat de la boucle des
réactifs au lieu de les relire.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 01:19:25 +02:00
Adrestie 12e9a88956 ForeverUI : suivi, les animations ne se figent plus
Les fins de pas (qui peuvent lancer d'autres pas) se jouent apres le
parcours de la table, et le cadre d'animation ne s'arrete que lorsqu'il
ne reste aucun pas.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 13:45:45 +02:00
Claude ec9fe7819b ForeverUI : fenêtre sociale en combat, croix sécurisée et /ignore
Les onglets sécurisés protègent FriendsFrame en permanence (avant :
dès que Blizzard_RaidUI se chargeait, au premier raid ou champ de
bataille). Ce qui le cachait ou le plaçait depuis le code de l'addon
était alors refusé en combat :
- la croix clique celle du client (action « click »), qui ferme la
  fenêtre comme le client ;
- Contrôle de guilde et Recherche de raid refusent en combat avec le
  message du client, au lieu d'une action bloquée ;
- la fenêtre de contrôle n'est plus cachée par notre code en combat :
  le client la cache lui-même ;
- FriendsFrame ne prend plus la souris dès le chargement.

/ignore et /friends sans nom ouvrent de nouveau le bon sous-onglet, et
l'onglet Amis redemande la liste au serveur comme celui du client.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-02 00:43:25 +00:00
Claude b9c9e9a6f4 ForeverUI : fenêtre sociale, onglets sécurisés
Nos onglets du bas appelaient le OnClick des onglets du client depuis
l'addon : PanelTemplates_Tab_OnClick écrivait FriendsFrame.selectedTab
teinté, et FriendsFrame_ShowSubFrame montre ou masque RaidFrame, protégé dès
que Blizzard_RaidUI est chargé (un raid ou un champ de bataille suffit) :
action bloquée en combat, et l'ouverture suivante de la fenêtre en combat,
qui relit l'onglet teinté, l'était aussi.

Chaque onglet est maintenant un bouton sécurisé qui clique celui du client
(action « click » de SecureTemplates) : le client fait tout comme pour son
propre onglet, son compris. Ces onglets ne sont jamais désactivés (en
combat ils ne pourraient pas l'être) : l'onglet du client, désactivé quand
il est choisi ou indisponible, ignore le clic, et seul le survol disparaît.
Leur largeur est posée hors combat. La fenêtre, protégée par eux, reste
affichée et suit FriendsFrame.

Les sous-onglets Amis / Ignorés gardent leur propre état au lieu d'écrire
FriendsTabHeader.selectedTab, que FriendsFrame_Update lit ; ils ne
rappellent plus FriendsFrame_Update depuis l'addon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:49:21 +00:00
Claude ddae526af0 ForeverUI : page raid, plus de cadres détachés créés depuis l'addon
Glisser un joueur (sans être chef, ou avec Maj), une étiquette de groupe ou
une icône de classe créait un cadre détaché par le code de Blizzard_RaidUI
appelé depuis l'addon : ses champs et ses boutons sécurisés étaient
teintés, et ses propres mises à jour (groupe, cible du tank principal)
étaient ensuite bloquées à chaque combat. Ces cadres ne sont plus
proposés ; le chef ou un assistant déplace toujours un joueur d'un groupe
à l'autre, et les icônes de classe gardent leur infobulle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:44:59 +00:00
Claude 858ce8ae72 ForeverUI : barre d'incantation de la cible, sous son cadre
La barre de la cible du client (TargetFrameSpellBar) est un enfant de
TargetFrame, que ForeverUI masque : les incantations de la cible ne se
voyaient nulle part. TargetCastBar.lua la remplace, avec l'art et les
règles de la barre du joueur (castID de chaque événement), à la taille de
TargetSpellBarTemplate (150) et avec l'icône du sort à sa gauche.

Placée comme Target_Spellbar_AdjustPosition : (25, 7) sous le cadre, plus
bas sous les rangées d'auras et sous la cible de la cible quand elles
s'affichent ; les bords sont mesurés, elle ne les recouvre jamais. Les
auras donnent leur hauteur à chaque mise en page. L'option du client
showTargetCastbar est suivie.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:42:39 +00:00
Claude 8407058297 ForeverUI : ensembles, boutons de la page gardés quand un panneau s'ouvre
GearManagerDialog fait partie des UIChildWindows : CloseChildWindows le
masquait dès qu'un panneau s'ouvrait à côté de la feuille (grimoire,
quêtes...), et la page des ensembles perdait Équiper et Enregistrer. Il est
réaffiché tant que la page est à l'écran, hors combat seulement (son
OnShow écrit un attribut de CharacterFrame, protégé).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:36:57 +00:00
Claude afdd314370 ForeverUI : feuille de personnage, lignes des listes, statistiques, ensembles par personnage
Listes de réputation, compétences et statistiques : une ligne qui ne tenait
plus était cachée, mais la boucle continuait, et une ligne plus courte plus
loin (un en-tête après une entrée) prenait sa place, hors d'ordre. Rien
n'est plus placé après la première ligne qui ne tient pas.

Statistiques : la page possédait les douze lignes et les réaffichait toutes
après chaque mise à jour, y compris la sixième que le client cache pour la
catégorie Distance (les chasseurs par défaut), avec le contenu de la
catégorie d'avant. Elle possède désormais leur parent, CharacterAttributesFrame.

Ensembles : le panneau était créé visible, et GearManagerDialog_Update
(ensemble porté depuis une barre, /equipset) pouvait le construire avant
la première ouverture de sa page, par-dessus les statistiques. Il naît
caché, et sa page le connaît même ouverte en combat.

L'ordre d'affichage et le dernier ensemble porté étaient au compte, alors
que les ensembles sont à un personnage : ouvrir la page sur un autre
personnage élaguait l'ordre du premier. Ils sont rangés par personnage, et
le premier usage reprend les anciennes valeurs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:35:58 +00:00
Claude 9c96c28590 ForeverUI : talents, pas de reconstruction à chaque sort, question de fermeture juste
Fenêtre ouverte, chaque début ou fin d'incantation (CURRENT_SPELL_CAST_CHANGED)
relisait tout l'arbre, quelque 85 talents et leurs tables ; seul le bouton
Activer en dépend, comme PlayerTalentFrameActivateButton_Update.

Points en attente : la question de fermeture partait aussi quand la carte
plein écran refusait la réouverture (elle apparaissait ensuite pour une
fenêtre fermée), et quand seul UIParent se masquait (barbier), qui effaçait
de plus le mode inspection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:33:24 +00:00
Claude 76c52865f1 ForeverUI : JcJ et monnaies, fenêtres du client gardées dans leurs volets
PVPParentFrame restait un panneau « left » : GetUIPanelWindowInfo recopie
l'entrée de UIPanelWindows dans les attributs du cadre au premier usage
(touche H avant la construction de l'onglet), puis ne lit plus qu'eux ;
retirer l'entrée de la table ne suffisait pas. La feuille sautait de 384 px,
l'onglet était réancré sur l'écran puis vidé par le panneau suivant. La
place est libérée d'abord, puis la table et les attributs sont vidés, comme
PaperDollFrame.lua le fait pour CharacterFrame.

TokenFramePopup et PVPTeamDetails font partie des UIChildWindows, que
CloseChildWindows masque à chaque ouverture de panneau : le volet droit des
monnaies devenait vide, et le menu de l'équipe d'arène perdait Promouvoir,
Renvoyer et Quitter (et la liste n'était plus redemandée). Ils sont
réaffichés tant que leur page est à l'écran.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:32:45 +00:00
Claude c3b0dfad3e ForeverUI : menu du raid, discussion, /fui reset et éditeur
Page raid : les boutons sécurisés posés sur les lignes du menu étaient
masqués sans être détachés ; ancrés aux lignes de DropDownList1, ils les
gardaient protégées toute la session, et le menu suivant ouvert en combat
voyait ses lignes refusées (réancrage, hauteur). Détachés, comme ceux de
DropDown.lua.

Discussion : la boucle par image traitait aussi les fenêtres fermées (cadre
et onglet cachés), environ 75 appels chacune, dix fenêtres par défaut.

/fui reset en combat effaçait les positions enregistrées puis déplaçait des
cadres sécurisés (bloqué) : écran et réglages ne concordaient plus. Refusé
en combat, avec le message du client.

Éditeur : un élément caché pendant qu'on le tient (barre d'incantation en
fin de sort, cadre de cible perdue) ne reçoit pas le relâchement ; le
glisser se termine sur la disparition de son voile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:31:13 +00:00
Claude 66ccb1ba1f ForeverUI : feuille de personnage, ensembles, réputation, familier en combat
Ensembles d'équipement : le crochet qui abandonne une modification sur
Annuler ou Échap visait la globale GearManagerDialogPopup_OnHide, que le
XML lie directement (function=) : il ne se déclenchait jamais. La session
restée ouverte faisait de la sauvegarde suivante une modification : l'ancien
ensemble était rééquipé, enregistré sous le nom tapé, puis supprimé. Le
script du cadre est désormais greffé (comme Taxi.lua).

Réputation : la description et les trois cases venaient de la liste du
client, qui ne les remplit que pour ses 15 lignes visibles ; cachée et
jamais défilée, elle laissait à partir de la 16e faction celles de la
précédente, et un clic agissait sur la nouvelle à contresens (en guerre,
barre suivie). Elles sont lues sur la faction elle-même.

Combat : PetPaperDollFrame, et donc CharacterFrame, sont protégés par les
boutons de compagnon sécurisés. Les masquer, les déplacer ou retailler la
feuille depuis l'addon en combat était bloqué : à chaque rafraîchissement
du familier (PET_BAR_UPDATE...), à chaque ouverture de la feuille, à chaque
onglet. Ces appels attendent la fin du combat ; Panes n'appelle plus Show
ou Hide sans changement, que le client refuse aussi.

Performance : les événements d'unité de la feuille (inventaire, portrait,
modèle) ne relancent plus toute la mise en page pour les autres unités ni
feuille fermée ; l'onglet du familier ne réagit plus qu'à son familier ;
l'onglet des statistiques relit l'arbre au plus deux fois par seconde.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:29:03 +00:00
Claude 2d815b1132 ForeverUI : cadres d'unités, points de combo, véhicules, incantation, raid
Points de combo : ComboFrame, le seul affichage de 3.3.5, était supprimé
sans remplaçant ; voleurs et druides félins n'en voyaient aucun. Il est
gardé et posé sur notre portrait, au décalage de ComboFrame.xml.

Joueur en véhicule : les barres montrent "vehicle", mais seuls les
événements de "player" étaient lus ; la vie et l'énergie du véhicule se
figeaient (Oculus, Ulduar, Joug-d'hiver). Les textes suivent aussi.
Groupe : un membre sorti de son véhicule gardait le jeton partypetN, et son
cadre ne se mettait plus jamais à jour ; le test porte sur partyN, et le nom
est celui du membre, comme le client.

Barre d'incantation : STOP, FAILED et INTERRUPTED ne visent plus que
l'incantation affichée (son castID), comme CastingBarFrame : une touche
pressée de nouveau pendant un sort affichait « Échec » et effaçait la
vraie barre ; un sort instantané refusé montrait une barre rouge.

Cible de la cible : "targettarget" n'a aucun événement en 3.3.5 ; elle est
interrogée cinq fois par seconde tant qu'elle est montrée (le client le
fait à chaque image). Après un rechargement en combat, les cadres joueur et
cible du client sont masqués à la sortie du combat.

Raid : chaque événement d'unité reconstruisait tout le bouton (barres,
rôle, auras, onze icônes réancrées, une table allouée) ; santé, ressource,
auras et menace ne refont plus que leur partie, et les grilles d'auras ne
bougent que si le décalage des icônes de dissipation change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:24:53 +00:00
Claude 39fbfc8c10 ForeverUI : barres, la barre de forme reste à l'écran en combat
Les boutons bonus sont ancrés à la glissière, ce qui la rend protégée :
en combat, ses SetPoint étaient bloqués (action bloquée par image). Après
un retrait hors combat elle reposait 45 px plus bas, et un druide prenant
une forme en combat gardait sa barre à moitié sous l'écran tout le combat.
Elle ne bouge plus en combat, attend au repos, y revient avant le
verrouillage, et suit une barre réaffichée pendant son propre retrait.
Durée : BONUSACTIONBAR_SLIDETIME du client (0,15 s).

Familier et postures : le porteur, protégé par les boutons qu'on y ancre,
était masqué avant le test de combat (familier mort ou expiré en combat :
action bloquée). Le test passe d'abord ; la sortie de combat le replace.

Choix d'icône d'un ensemble : une icône portée deux fois (deux anneaux,
bijoux ou armes identiques) ne compte qu'une fois, comme
RefreshEquipmentSetIconInfo, sinon la grille gagnait des cases vides au
delà de la liste du client.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:19:58 +00:00
Claude 7d3ea1ac89 ForeverUI : grimoire utilisable en combat, mémoire des extraits, création d'un enchantement
Sans aucun groupe (guerrier, voleur, prêtre, chaman, chevalier de la mort,
bas niveaux), le menu volant n'avait aucun fils protégé : sa poignée était
refusée en combat (« Invalid frame handle »), et chaque onglet, page,
réglage ou fermeture du grimoire levait une erreur. Il est désormais
explicitement protégé (SecureFrameTemplate).

En combat, l'ouverture du grimoire masquait depuis l'addon SpellButton1..12,
que le client vient de réafficher et qui sont protégés : action bloquée à
chaque ouverture. Ils ne sont plus que rendus transparents en combat. Le
bouton de taille, sécurisé, était ancré au bouton de fermeture du client,
qui devenait protégé alors que son niveau est reposé à chaque ouverture :
il s'ancre au livre, au même endroit.

L'environnement restreint garde chaque extrait exécuté, compilé, toute la
session (clés chaînes jamais collectées) : les données publiées, plusieurs
centaines de kilo-octets, ne partent plus que si elles changent, l'état
dans un petit extrait à part. UNIT_PET des autres membres du groupe ne
recalcule plus le grimoire.

Métiers : un enchantement n'a pas de compteur, et le compteur caché gardait
le nombre de la recette précédente (0 si elle n'était pas faisable) ; la
création en lance un, comme le champ caché de 3.3.5.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:17:58 +00:00
Claude 185fccb22d ForeverUI : carte et quêtes, menu du suivi, abandon, retour de carte, volet caché
Menu du clic droit sur le suivi : près du bas de l'écran, 3.3.5 retourne
la liste au-dessus du curseur, et openMenu la réancrait sur "cursor", qui
n'est pas un cadre (erreur Lua, aucun menu). Seul un cadre est réancré.

Le volet de détails refaisait SetAbandonQuest à chaque rafraîchissement :
une confirmation d'abandon ouverte depuis le suivi (« Abandonner A ? »)
abandonnait alors la quête du volet. Le marquage attend qu'elle se ferme.

Retour du volet de détails : GetCurrentMapAreaID() vaut l'identifiant de
SetMapByID plus un (WorldMapFrame_ToggleWindowSize), et zéro sur les vues
de continent, que Blizzard rend par SetMapZoom. Le retour ouvrait la zone
suivante, ou rien.

Le volet est un fils de la carte et garde son drapeau affiché carte
fermée : chaque événement de quête le reconstruisait caché, et un volet de
détails resté ouvert pouvait déplacer la carte fermée (coordonnées de la
minicarte vides, quêtes de la zone hors du suivi). Rafraîchi seulement
carte ouverte, une fois par image.

Zoom de la carte : le tri des marqueurs (une soixantaine d'enfants, trois
tables) tournait à chaque image ; dix fois par seconde suffisent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxRZNHkq453dyUMcWsyUf1
2026-10-01 23:14:54 +00:00