- CustomizeUI.lua : bouton Customize UI apres AddOns, grille reglable (pas, origine 3x3),
voiles de selection camelot, 9 poignees sur l'element selectionne, Snap on Grid et
Sticky UI par attraction, fenetre de taille 50-200 %, Cancel / Reset / Validate
- Layout : session de travail, echelle par element, Validate ne touche plus aux places
des fenetres
- griffons detaches de la barre d'action
- art : editmode (camelot) et poignees housing-advancedmode-scale-handle
- banc : textes sans police refuses, fichiers charges sous leur nom, essais de l'editeur
- README reduit a l'essentiel
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Traduction
- Identifiants en anglais dans tout le module : addon, ecrans d'accueil,
outils Python, banc d'essai et patcheur C#.
- Fichiers au nom francais renommes (Gabarits.lua -> Templates.lua,
Textes_*.lua -> Texts_*.lua, deployer.py -> deploy.py,
tools/patcheur -> tools/patcher, etc.).
- Commandes /fui et options de deploy.py en anglais (--check, --server,
--remove-dbc).
- Cles des variables sauvegardees et de data/dbc/statistics.json
traduites, sans reprise des anciennes cles.
- API de la micro-barre : ForeverUI.AddMicroButton(def) avec les champs
name, atlasSet, after, tooltip, onClick, ready, et
ForeverUI.UpdateMicro(name, isOpen).
- Commentaires reecrits en anglais, courts, sans dates ni historique ;
les fonctions au nom peu parlant et leurs parametres sont expliques.
Code mort
- Exports, fonctions et variables jamais lus retires.
- Retires a la demande des modules : ForeverUI.PvPJauge, les exports
FondEntete / TuilerEntete / Polices de TradeSkill, l'art legacy-up-c60,
honorfill(half)blue et inv_misc_book_09, leurs entrees d'atlas et les
parties d'outils correspondantes.
Verifications : liaisons des noms comparees avant et apres, banc vert,
chemins de textures inchanges, generateurs reproduisant les fichiers,
patcheur identique octet pour octet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Onglet Statistics (StatisticsTab.lua, nouveau)
- Le StatisticsFrame de camelot sur les statistiques de hauts faits du
client (GetStatisticsCategoryList, GetCategoryInfo, GetStatistic) :
categories repliables, sous-categories au bouton campaign_headericon,
survol, barre de camelot masquee si inutile, mise a jour sur
CRITERIA_UPDATE ; l'etat replie survit aux mises a jour.
- Valeurs telles que le client les rend (noms des statistiques
« ... most », montants d'or avec leurs pieces), « -- » sans valeur ;
colonne de la valeur elargie a ce qu'elle porte.
Statistiques de camelot ajoutees aux hauts faits (data/dbc/statistiques.json)
- 14 boss de donjons classiques et 4 statistiques de raids a 20 / 40
joueurs (entrees ; morts, en somme des morts sur les cartes de cette
taille), suivies par le coeur.
- deployer.py, etape dbc (--dbc, --retirer-dbc, --serveur) : lignes
ajoutees au DBC du client dans patch-Z, DBC du serveur recopie du client,
lignes d'achievement_criteria_data (une creature tuee n'est comptee que
si son critere y a une ligne) ; --verifier les controle.
- tools/foreverui/dbc.py : ajout et retrait de ses seules lignes DBC.
Micro-menu et exports pour les autres addons (session Progression)
- BottomBar.lua : ForeverUI.AjouterMicroBouton(def) et
ForeverUI.MajMicro(nom, ouvert) ; ForeverUI ne connait plus aucun
addon qui y ajoute un bouton.
- ForeverUI.PvPJauge (jauge circulaire, textures au choix),
ForeverUI.StatusBarsPoser, exports de TradeSkill.lua.
- Art : legacy-up-c60 (et son masque), honorfill(half)blue,
inv_misc_book_09 ; cuire_masque.py, cuire_portrait.py,
decouper_elements.py.
Banc : essais de l'onglet Statistics et d'un micro-bouton d'un autre addon.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Etape 3
- Maitre (Trainer.lua, nouveau) : liste de camelot (categories
professions-recipe-header, lignes TrainerTextures), filtre, rang de
metier lu dans les competences.
- Maitre de vol (Taxi.lua, nouveau) : TaxiFrame de camelot 590 x 608,
cadre bronze, images de vol 1463 / 1464 (positions reportees du carre
3.3.5), boutons et traits de camelot ; zones BC, Outreterre et Norfendre
sur l'image de 3.3.5.
- Etable (Stable.lua, nouveau) : scene de camelot, fond selon la
specialisation, rangee de 5 centree.
- Sertissage (Socketing.lua, nouveau) : decor et chasses de camelot.
- Boites de dialogue (Dialogues.lua, nouveau) : StaticPopup1-4 aux
contours de camelot (fond sombre, bordure en losanges, croix).
- Gabarits : Gb.CadreSimple (repris de la banque de guilde), Gb.MenuFiltre.
Etape 4 (metiers, disposition de camelot)
- Fabrication (TradeSkill.lua, nouveau) : 673 x 594, liste en arbre,
filtre, recherche, rang, fiche (carte du metier, resultat, reactifs),
boutons ; noms mesures sur un texte a part (une ligne reutilisee coupait
le nom suivant) ; eclat du rang rogne a la largeur du masque.
- Micro-bouton Professions (BottomBar.lua) apres la feuille de personnage.
- Livre des metiers (ProfessionsBook.lua, nouveau) : cartes de camelot,
rangs, sorts securises, oubli ; plus de deux metiers principaux (zone a
defilement, colonnes reduites) ; portrait cuit rond ; onglets lateraux
(ensemble + metiers a fabrication, retrecis s'ils sont trop nombreux) ;
fenetre deplacable (place commune livre / fabrication).
- DropDown : liste du filtre des metiers elargie a ses entrees.
- Art : feuilles et elements des metiers, icones d'onglets cuites
(cuire_masque.py), portrait rond (cuire_portrait.py, nouveau).
- Banc : essais des etapes 3 et 4 ; micro-menu a neuf boutons.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- GuildBank.lua : le noir de l'interieur du coffre passe au-dessus du
marbre en Journal, Journal de l'argent et Informations. Camelot range
marbre et noir dans le meme calque, le noir un sous-calque plus haut ;
3.3.5 n'a pas de sous-calque et le marbre passait devant en jeu. Marbre en
BACKGROUND, noir en BORDER, cadres du coffre en ARTWORK
- BottomBar.lua : apres un changement d'embleme, GetGuildTabardFileNames
ne rend rien le temps que les donnees de la guilde arrivent, et aucun
evenement ne suit : le bouton Social retombait sur son jeu de base. Dans
une guilde, un tabard illisible garde le visuel, et le tabard est relu
toutes les 0,5 s pendant 10 s apres chaque evenement ; la derniere
lecture tranche (guilde sans tabard : jeu de base), quitter la guilde le
remet tout de suite
- banc : calques du coffre ; changement d'embleme simule (tabard absent un
moment, puis nouveau ; guilde sans tabard ; guilde quittee)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- carte (WorldMapZoom.lua) : zoom a la molette vers le curseur (x 1,25 par
cran, de 1 a 4) et deplacement au glisser ; tuiles rognees a la vue,
reperes hors vue eteints, surface cliquable bornee, fleche du joueur
reposee ; retour a 1 au changement de carte, de mode, a la fermeture
- journal : le micro-bouton et L rattrapes quand 3.3.5 refuse QuestLogFrame
(carte agrandie), marque effacee a l'image suivante au lieu de GetTime
(qui avance pendant l'ouverture de la carte) ; case de suivi redessinee
au clic ; en-tete de categorie en trois tranches, centre en mosaique
- sacs : ecarts comptes et marge haute (ecart assume) ; le sac ouvert est
empile des son ouverture
- trousseau : icone en double densite (feuille uiactionbar2xc60), voile a
la recherche, animation d'entree de camelot
- minimap : la molette fait + et - ; latence du micro-menu : ancre reposee
apres 3.3.5, trait a 3 pixels ; reputation a la place de l'XP au niveau
maximum ; /fui barres plus disert
- ajouter_feuilles.py : un nom logique deja servi par une autre table garde
sa feuille
- banc : cadres de carte freres de WorldMapDetailFrame, panneau "full",
carte lente a charger ; AMELIORATIONS.md vide, NOTES.md a jour
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- socle : Textes.lua (ForeverUI.L) et ForeverUIGlueTextes.lua (G.L) ; les
textes dans Textes_enUS / Textes_frFR (325 cles en jeu) et
ForeverUIGlueTextes_enUS / _frFR (41 cles aux ecrans d'accueil) ; une cle
absente prend l'anglais, une langue sans fichier lit l'anglais ; ajouter
une langue = un fichier de plus
- les textes que le client 3.3.5 connait se lisent dans ses globales
(GlobalStrings, GlueStrings en glue) ; les textes de secours sont retires
- tous les fichiers repris : libelles, infobulles, mode edition, messages et
aide de /fui, erreurs internes ; .toc : Notes + Notes-frFR
- selection des personnages : race et classe traduites ramenees a leur jeton
par les tables de langue (GetAvailableRaces / GetAvailableClasses font
planter le client hors de la creation)
- tools/cartes_instances.py : noms des instances dans toutes les langues de
la LibBabble-Zone de WDM (portails de la carte sur tout client)
- banc : toute cle employee existe en anglais et en francais, memes cles dans
les deux, bascule frFR / deDE essayee ; chaines 3.3.5 ajoutees au faux client
- README : etat des sections mis a jour, langues, glue, deploiement --glue
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- GlueXML ForeverUI (data/glue) : cadre 2:1, polices, atlas, gabarits ;
connexion, menu, selection des personnages, dialogues, creation en deux
etapes (races et classes ; personnalisation numerotee, listes ouvrantes,
echantillons de couleur, apercu differe, nom en bas de l'ecran)
- choix valides calcules sur CharSections aux regles du moteur
(tools/choix_personnalisation.py) ; couleurs des echantillons lues dans
les textures du client (tools/couleurs_personnalisation.py), peau teintee
par la lumiere du decor
- decors de la creation et de la selection reduits a 0,912 pour compenser
le cadre 2:1 (tools/decors_accueil.py) ; deployer.py suit aussi
Interface\Glues\Models
- patcheur optionnel de Wow.exe (tools/patcheur, source et executable) :
CycleCharCustomization rend l'indice du reglage
- art des ecrans d'accueil (data/art), outils de decoupe, d'atlas et de
donnees
- barre du bas : boutons JcJ et Aide retires, bandeau a la largeur de ses
boutons
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
/fui micro a montre deux boutons, et eux seuls, ancres ailleurs que sur
notre bandeau : CharacterMicroButton a BOTTOMLEFT (552, 2) et
SocialsMicroButton sur le BOTTOMRIGHT de QuestLogMicroButton. C'est
exactement ce que fait VehicleMenuBar_MoveMicroButtons, appelee par
MainMenuBar_ToPlayerArt ET MainMenuBar_ToVehicleArt -- donc a chaque entree
ou sortie de vehicule. On repose apres elle, et a chaque passage general.
MainMenuBar avalait les clics a son tour : declaree enableMouse="true" et
couvrant tout le bas de l'ecran, son art remplace par le notre mais sa
souris intacte. Meme remede que pour BonusActionBarFrame.
La lecon se generalise : tout contenant du client qu'on vide garde sa
souris, et il faut la lui retirer.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Deux questions a la fois, pour le bouton du personnage signale decale et
sans reponse au clic.
L'ANCRAGE de chaque bouton dit s'il a bouge : nous les posons une fois, a
gauche du bandeau, d'un pas fixe. Un ancrage sur autre chose que notre
bandeau, un decalage qui n'est pas un multiple du pas, ou plus d'un point,
veulent dire que quelqu'un les a repris.
GetMouseFocus, pendant cinq secondes, dit qui recoit reellement le clic : un
bouton peut etre au bon endroit et recouvert.
Lecture du cote client : en 3.3.5, seul VehicleMenuBar_MoveMicroButtons les
deplace, et CharacterMicroButton_SetPushed ne change que le rognage et
l'alpha du portrait -- ni position, ni verrou. La cause n'est donc pas la.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
KeyRingMixin:OnBagUpdate, dans la surcharge camelot/ de
mainmenubarbagbuttons, ne pose UI-HUD-ActionBar-Keyring-Small que si la
CVar showKeyring est allumee, et prend sinon l'emplacement vide. Cette
condition vient d'un client ou le trousseau n'est plus qu'un reste du
passe, masque par defaut : la CVar ne s'allume qu'au tutoriel, la premiere
fois qu'on ramasse une cle -- d'ou la cellule vide en jeu.
En 3.3.5 le trousseau est un element permanent de la barre, et notre barre
montre toujours sa cellule : un emplacement vide y serait faux. L'image est
donc toujours posee. Ecart assume et note.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The bag window was still laid out on 3.3.5's numbers. It now follows
mainline/ContainerFrame.lua, figure for figure: width 178, five pixels between
slots in both directions, padding of 9 + 48 and thirty more for the search
row of the backpack, money frame 13 high anchored 8 from each side and 8 from
the bottom, first slot sitting on the money frame. The search box no longer
touches the grid, and the window is as tall as what it holds.
The outline was the wrong one. The reference does not frame a bag slot with
the frame of the bags bar: SetItemButtonQuality_Base lays WhiteIconFrame over
the item and tints it with its quality colour, and an empty slot has none --
its background is what shows. That is what is done now, and the money frame
gets the coin box border it was missing.
Two more sheets came into the workspace for this, one of them a plain image
rather than an atlas: tools/ajouter_feuilles.py now knows both kinds.
The end caps go down 2 pixels, as measured on screen. The bars do not move.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two corrections from what the game shows.
The order is the other way round: reputation on top, experience below. The
priorities in the file (Experience 0, Reputation 2), sorted descending, would
put reputation in the lower container; the game does the opposite. As with the
threat glow on the player frame, what the client displays wins over reading
the function, and the file says so at that spot.
And the two bars are as long as the row itself -- action bar, micro menu and
bags aligned -- instead of stopping at the inner edge of each end cap. Their
ends now pass behind the gryphons, which overlap the row by 30 on each side.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The addon and the art it needs, read from a modern client and served to
3.3.5 through texture coordinates, since that client has no atlas.
What is in place: player frame with its states, death knight runes, target
frame and its classification rings, cast bar, action bar with its page block
and end caps, micro menu, bags bar, experience and reputation bars. Every
piece registers itself as a movable system.
This folder is the workspace. The addon in a client and the art in patch-Z
are copies tools/deployer.py makes, and what sits under Interface\ForeverUI
in the patch is exactly what data/art holds -- the deployer removes from the
archive anything this folder no longer carries. Each .blp comes with the .png
that shows what it holds.
docs/AMELIORATIONS.md lists what is known to be improvable: where the
reproduction departs from the reference and why, what the 2010 client cannot
do, and the debts left in the tooling.
The repository README also gains the row for mod-limit-break, which was
written earlier and had not been committed.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>