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
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>
- PvPTab.lua (bloc du canal PVPTITLES) : au survol d'une creature,
l'entree lue dans son GUID est demandee au serveur (« CIV:<entree> »),
une fois par entree et par session, seulement si le serveur a dit ses
seuils ; la reponse « CIV:<entree>:1 » ajoute la ligne Civil a la fin de
l'infobulle, aussi a celle deja ouverte si elle montre encore cette
creature ; joueurs et familiers ignores, seul le joueur lui-meme ecoute
- le drapeau (CREATURE_FLAG_EXTRA_CIVILIAN) vient de mod-pvp-titles-ext :
la requete de creature de 3.3.5 ne le porte pas
- textes : PVPTAB_TOOLTIP_CIVILIAN (Civilian / Civil)
- banc : faux UnitGUID et GetUnit, faux serveur qui repond a CIV, essais
(sans module, premiere demande, reponse gardee, non civil, joueur et
familier, auteur etranger, reponse tardive)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- hauts faits (Achievements.lua) : camelot n'en a pas, la fenetre du
client se deplace par son en-tete, place gardee et reposee apres
UpdateUIPanelPositions
- tutoriel (Tutorial.lua) : fenetre, bouton d'alerte et compteur masques
- horloge (TimeManager.lua) : ButtonFrameTemplate 220 x 240, globe en
portrait, encart, menus d'alarme en style 1 (Gb.MenuStyle1), case
d'alarme
- carte de zone (ZoneMap.lua) : cadre battlefieldminimap-border, croix
rouge, alpha suivant l'opacite (image retiree : le client la repose)
- cabine d'essayage (DressUp.lua) : ButtonFrameTemplate 450 x 545, fond de
race, fleches et rotation a la souris
- inspection (Inspect.lua) : 338 x 424, deplacable, portrait 48, onglets
lateraux, page du personnage a la camelot (cadre Char-Paperdoll), page
JcJ en cartes avec en tete le nom du rang et l'embleme de la faction
sous son insigne, Civilian sans rang ni donnees ; bouton Talents
- talents de l'inspecte (Talents.lua) : notre fenetre en lecture seule,
compacte (colonnes de 260, sans portes ni bande du bas), sans recherche
ni points ; elle ne suit pas l'inspection
- JcJ (PvPTab.lua) : seuils de rang lus du serveur (canal d'addon
PVPTITLES de mod-pvp-titles-ext : RANKS, REQ), sans serveur les seules
victoires ; etat Deshonore (DISHONOR) : rang et temps restant, blason
brise de la faction a la place de l'embleme
- debuff Deshonore dessine par ForeverUI en tete des affaiblissements
(Buffs.lua), aucun sort ni DBC requis
- art : blasons brises honor-dishonored-alliance / -horde (cuits par
tools/cuire_deshonneur.py), battlefieldminimap, char-paperdoll-*
- /fui croix : temoin de la croix de la feuille de personnage
- banc : inspection, talents compacts, tete JcJ, canal du serveur, blason
brise, debuff dessine, temoin de la croix
- README : lignes JcJ, fenetres secondaires, ameliorations et affaiblissements
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>
Le nom d un rang se lit a l indice "numero + 4". A numero = 0 cela
donnait l indice 4 -- PVP_RANK_4, "Dishonored" -- et l ecran annoncait
donc deshonore tout joueur de moins de cinquante victoires. Or les
indices 1 a 4, Pariah, Outlaw, Exiled et Dishonored, sont les rangs
NEGATIFS, ceux qu on obtient en tuant des civils.
Trois cas desormais, et non deux : un vrai rang se nomme a numero + 4,
un indice de 1 a 4 se nomme par son indice tel quel, et le reste est un
civil.
Ecart assume : "Civilian" n est pas une chaine du client. Cherchee dans
GlobalStrings -- les quarante chaines de rang vont de PVP_RANK_0 a
PVP_RANK_19 -- et dans le binaire : absente des deux. Elle est donc
ecrite en clair, et ne se traduira pas.
AMELIORATIONS gagne une section 5 : l icone qui manque a l onglet du
familier, et le volet droit du PvP, a reprendre sur
CharacterFrameSidePaneTemplate comme les autres.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
SetSwipeTexture est absent de 3.3.5 et la texture de balayage du Cooldown
est cablee dans le moteur : la remplacer changerait tous les temps de
recharge du jeu. Le cadran est donc coupe en quatre quarts ; un quart
depasse montre le quart de l anneau, le quart ou la jauge s arrete montre
un DEMI anneau tourne par SetTexCoord a huit arguments.
La cuisson recale le centre du cercle sur le centre du canevas -- une
texture qu on fait tourner decrirait sinon une boucle -- et interpole la
couleur ponderee par l alpha, sans quoi le blanc des texels vides bordait
l anneau d un lisere clair.
Verifie par la geometrie et non par l oeil : le harnais relit les
coordonnees posees et interroge l image sur 72 angles, pour sept
fractions.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
/fui pvp a tranche : UnitPVPRank rend 0 sur ce serveur et GetPVPRankInfo ne
repond rien. Le "1" du haut n'etait pas un rang mais la SAISON d'arene,
ecrite sans intitule juste au-dessus. Trois corrections.
LE DECALAGE, enfin etabli. UnitPVPRank rend un INDICE, et je n'avais aucun
usage de reference pour en deduire le numero -- WotLK ne s'en sert plus.
L'ordre des quarante chaines le tranche : PVP_RANK_1..4 sont les rangs
NEGATIFS (Pariah, Outlaw, Exiled, Dishonored), PVP_RANK_5 est Scout /
Private donc le rang 1, PVP_RANK_10 est Stone Guard / Knight donc le rang 6.
L'indice est la cle telle quelle, et le numero vaut l'indice moins quatre.
Le nom se lit donc dans ces chaines, comme GetPVPRankText le fait chez
camelot.
LA SAISON porte son intitule : ARENA, ce que le client a de plus proche
d'EXPANSION_SEASON_NAME, absent.
SANS RANG, PAS D'ANNEAU : un cercle dore vide se lit comme un defaut. Le
cadran garde sa lueur, son fond de faction et l'embleme.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A LA DEMANDE, et non d'apres la source : camelot ecrit les deux en haut --
PVP_RANK_NUMBER_AND_TITLE donne "Rang N : Nom" dans le CurrentRankField --
puis repete le numero dans l'anneau de recompense, par LevelLabel.
Ici le titre reste seul en haut, et le numero n'est qu'a un endroit : dans
le cercle dore.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PVPRankFrame.xml et pvprankframe.lua lus en entier. camelot tire tout de
C_MajorFactions -- le renom -- qui n'existe pas ici. Mais les trois
fonctions de l'epoque des rangs sont TOUJOURS dans le binaire, verifie dans
Wow.exe : UnitPVPRank, GetPVPRankInfo et GetPVPRankProgress. WotLK a
simplement cesse de s'en servir dans son FrameXML.
Heureuse coincidence : la planche c60 de camelot porte QUATORZE icones de
rang, exactement les quatorze rangs classiques. Son art est celui de
l'epoque.
Tout cet art vit sur une feuille que le listfile ne nomme pas :
ajouter_feuilles.py accepte desormais "fdid:<n>.blp => interface/...", et
retrouve ses entrees d'atlas par ce meme identifiant.
Trois ecarts assumes. La jauge circulaire n'est pas portable -- camelot la
fait avec un Cooldown dont il remplace la texture de balayage,
SetSwipeTexture, ABSENT du binaire ; l'anneau, la lueur, le fond de faction
et le badge sont poses, la progression s'ecrit en toutes lettres.
GameFontNormalMed2 n'existe pas. Le compte a rebours de saison demande un
C_SeasonInfo absent.
Le volet droit porte ce que WotLK sait vraiment donner : l'honneur.
Temoin : /fui pvp, qui dit ce que les trois fonctions rendent sur ce
serveur.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>