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
Bottom Left / Bottom Right côte à côte au-dessus des barres d'expérience
et de réputation (à +22 et +606 du bord gauche de la barre principale),
postures et familier remontés d'un rang quand elles s'y trouvent ;
Right / Right 2 debout contre le bord droit, RIGHT (-5, -77). Douze
boutons de 45, écart 2, dans la strate de la barre principale (le 3.3.5
les mettait en HIGH, devant fenêtres et sacs), retenues dans l'écran,
déplaçables et redimensionnables en mode d'édition ; le 3.3.5 ne les
replace plus. Rien n'est disposé en combat.
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>
- 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>
J'ai enfreint la regle de lecture des sources : AutoCastTemplates n'existe
que dans mainline/, et seuls camelot/ et shared/ font foi. L'anneau que
j'en avais tire -- coins fixes et fourmis tournantes -- est retire, avec
ses deux petites feuilles, sa table d'atlas et l'outil qui les produisait.
camelot garde ici le comportement de 3.3.5 : sa bordure scintillante et ses
quatre etincelles.
La regle est desormais ecrite en tete d'AMELIORATIONS : un fichier qui
n'existe que dans mainline/ n'est pas une source, c'est un point a trancher.
L'echelle, pas la taille : redimensionner le cadre des etincelles ne suffit
pas, le client les pose a une taille fixe et AutoCastShine_OnUpdate les
deplace sans les retailler -- d'ou des etincelles trop grosses sur un cercle
trop petit. SetScale(30/36) sur le cadre fait suivre tailles et orbite. La
bordure, elle, passe de 58 a 48,3.
Le piege de SetRotation reste note : il efface le rectangle d'atlas. Plus
aucun element ne tourne aujourd'hui, mais la note servira.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Ma premiere explication etait fausse : ce n'etaient pas les 2048 px de la
feuille. SetRotation existe bien dans ce client, mais il RECALCULE les
coordonnees de texture sur l'image entiere et efface le rectangle d'atlas :
la texture se met a montrer toute la feuille, d'ou les deux sprites l'un a
cote de l'autre.
La rotation passe donc par la forme a HUIT arguments de SetTexCoord, que le
client annonce lui-meme dans son message d'usage : "SetTexCoord(ULx, ULy,
LLx, LLy, URx, URy, LRx, LRy)". Elle nomme les quatre coins et reste dans le
rectangle de l'element.
Ses coins balaient le carre CIRCONSCRIT, 1,41 fois le cote : un element
tournant doit etre seul et centre dans sa feuille, avec de la marge, sinon
la rotation va chercher les pixels du voisin. petite_feuille.py sait
desormais poser un element au milieu avec sa marge, et refuse une feuille
trop petite pour le carre circonscrit. Les fourmis ont leur feuille de 128
(marge de 25), les coins la leur en 64.
Le harnais garde les huit coordonnees et verifie qu'elles sont employees,
qu'aucune ne sort de la feuille, et que SetRotation n'est pas appele.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Elle etait a 120, trop haut. Elle se pose maintenant a 84, juste au-dessus
de la barre de reputation, sur le meme bord gauche que la barre d'action.
Quand la barre des postures est affichee, la barre du familier passe a sa
droite, separee d'elle par la largeur de deux de ses icones. La place se
recalcule a chaque mise a jour, puisque les formes vont et viennent et que
la largeur des postures avec elles ; le veilleur ecoute donc aussi
UPDATE_SHAPESHIFT_FORMS, et StanceBar etant charge avant, sa largeur est
deja a jour quand on la lit.
Layout.SetDefaults ne repose le cadre que si l'utilisateur ne l'a pas
deplace lui-meme : une position retenue par /fui reste la sienne.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
3.3.5 encadre sa barre de deux morceaux glissants,
SlidingActionBarTexture0 et 1. Plutot que de se fier a leurs noms, toutes
les regions du cadre lui-meme passent a alpha 0 : les boutons sont des
cadres fils et non des regions, ils ne sont pas touches. Le balayage est
rejoue a chaque habillage, donc une texture ajoutee ensuite par le client
disparait aussi.
Trois manques du faux client corriges pour pouvoir le verifier : il ne
savait pas enumerer les regions d'un cadre (GetRegions, GetNumRegions),
n'avait pas GetObjectType -- si bien qu'un balayage qui ne balayait rien
passait pour bon -- et appelait unpack, absent en Lua 5.5 alors que le jeu
tourne en 5.1.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Meme petit bouton que les postures -- 30 x 30, ecart 2, cadre 35 centre,
etats a 31,6 x 30,9 -- plus ce qui lui est propre :
anneau d'autolancement de 31 x 31 centre a (0,5 ; -0,5)
coins UI-HUD-ActionBar-PetAutoCast-Corners des que l'autolancement est
POSSIBLE
fourmis UI-HUD-ActionBar-PetAutoCast-Ants, debordant de 5 px, tournant de
-360 degres en 4 s, visibles seulement quand il est ACTIF
action active cochee ; l'attaque clignote et son coche tombe a 0,5 --
"a pleine alpha on croirait une capacite de plus selectionnee"
action inutilisable grisee a 0,4 ; sans texture, icone masquee
barre visible si PetHasActionBar() et UnitIsVisible("pet")
LE PIEGE DES SIGNATURES, DEUXIEME FOIS. GetPetActionInfo rend (nom, texture,
isToken, ...) chez le moderne et (nom, SOUS-TEXTE, texture, isToken, ...) en
3.3.5 : un champ de plus au deuxieme rang. Recopier la source au mot pres
prendrait "Rang 5" pour la texture. Le harnais le verifie sur une action qui
a un sous-texte, et sur un isToken dont la cle globale doit etre resolue.
La rotation des fourmis est rendue sans groupe d'animation : Texture
SetRotation existe dans ce client, l'angle se deroule dans un OnUpdate a la
meme vitesse. Le masque de l'anneau, lui, n'est pas reproductible.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>