Adrestie b1da47c3eb PNJ etapes 3-4 : maitre, vol, etable, sertissage, dialogues, metiers
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>
2026-09-29 00:02:35 +02:00

mod-forever-ui

The modern World of Warcraft interface, rebuilt for a 3.3.5a client.

This is not a module the server loads: it is a client addon plus the art it needs. The art comes from a modern client, read sheet by sheet, and is served to 3.3.5 the way the modern client serves it -- one texture, a rectangle read inside it -- because 3.3.5 has no SetAtlas.

One section is one whole piece of the interface. A section is done when the game has shown it right and it has been accepted, which also makes it a piece nothing else is allowed to disturb.

Section What it holds State
Player frame Frame and portrait, health and power bars, rest and combat states, threat, vehicle art, PvP icon, raid subgroup indicator, play time, incoming damage, and the death knight rune bar. done
Target frame Frame and portrait, health and power bars, the reputation band, and the art each classification calls for: ordinary, minus, rare, elite and rare elite dragons, world boss ring. done
Cast bar Standard, channelled and uninterruptable casts, the interrupted state and the shield. done
Action bar The button and all of its states, the page number block, the two gryphon end caps. The button art reaches every action button the client carries, the secondary bars included. done
Stance bar Forms, auras and aspects, on the smaller button they share with the pet bar. done
Pet bar The familiar's buttons and their states. done
Micro menu and bags bar The micro buttons, and beside them the backpack, the bag slots and the keyring. done
Experience and reputation bars Both bars, their fills, and the reputation colour per standing. done
Bags Panel, slots, search box, sort button, round portrait in its ring, and under the money the currencies the player has chosen to watch. done
Character sheet The window and its two panes, the 3D model, the equipment slots, the side tabs, the level and class line, resistances, and the stat lines -- now on a banded background under a framed category header. The right pane opens on three tabs: character stats, the equipment manager (set cards in the player's own order, the worn-set check, rename and delete, New Set, and the icon picker beside the sheet), and the titles the character has earned, the worn one ticked. The right pane folds away, and the side tabs stay where they are. done
Reputation The factions the player knows, their blocks folded and unfolded, a standing bar per faction, and beside it the faction's own description with its three switches. A faction at war wears its own colour. done
Skills The skill lines the player knows, their blocks folded and unfolded, a bar per skill, and beside it the skill's description. done
PvP The season, the rank and its badge, and the ring filling towards the next rank. The ranks come from the titles the server awards, the honourable kills being what moves the ring; the thresholds, and the Dishonored state with its broken crest, are read from a server running mod-pvp-titles-ext -- without it, the kill count alone. Beside it, what the client still knows of honour. done
Currency Everything the player carries, by category, folded and unfolded, with the icon each currency uses, and beside it the two switches the client offers. done
Pet The familiar in three dimensions, turned with the same arrows as the player, and beside it its level and name, its general statistics and its resistances as icons. done
Statistics -- the tab exists, its screen is left empty on request
Dropdown lists The list a dropdown opens, which is one and the same for every menu in the game: background, rows, font, check box and tick, and a width that follows the menu that opened it. done
Minimap The map in its modern frame, the clock and the calendar, the player's coordinates, and the arrows on the edge. done
World map and quest log The map in a window the player can move, the quest log as a pane beside it with the list and each quest's page, the maximized map, and the floor selector of dungeons. done
Quest tracker Quests and achievements under their headers, folded and unfolded, the objectives ticked as they are met, the sort and filter menu, a left click opening the quest on the map. done
Chat The window on its background, the button column, the thin scroll bar and the flashing return-to-bottom button, the friends button, the tabs and the dock, the input box. At rest only the messages remain; the window lights up under the mouse. Holding Alt and dragging selects text as in an editor, Ctrl+C copies it, and any other action clears the selection. done
Tooltips The reference's tooltip frame, cut in nine, in the colours each tooltip asks for -- the add-ons' tooltips built on the client's templates included -- the header of a comparison, and the red cross of a linked item. done
Game menu and settings The Escape menu, the video, sound and interface options, key bindings, macros and their icon picker, chat settings, the colour picker and the opacity slider. done
Secondary windows The clock and the zone map in the reference's frames. The achievements window keeps the client's look -- the reference has none -- and moves by its header. The tutorial is hidden: it does not fit this interface. The dressing room, and the inspection of another player -- equipment, PvP rank, and the talents in a compact window of their own. done; the calendar and help keep the client's look, on request
Buffs and debuffs The buff and debuff bars with their timers, weapon enchants, and consolidated buffs, and the Dishonored debuff the server announces. done
Party and raid frames The party frames beside the screen edge, and the compact raid frames in groups. done
Spellbook The book on one page or two, a category per tab, the spells in a grid under the category's name, passives round, similar spells grouped on flyouts, the settings menu, and the search with its preview. Pages, categories, flyouts, the size and the settings all work in combat. done
Talents The talent trees, the specializations, the pet's talents, the glyphs and the search. done
Social Contacts (friends and ignored), who, guild, chat channels and raid, in one window with its bottom tabs; the micro button wears the guild tabard. done
Guild tabard The window where a guild designs its tabard, the character standing in it. done
Trade and banking The merchant with its repairs and buyback, the trade window, the mailbox and the open letter, the bank and its bags on one grid, the guild bank, and the auction house -- its three 3.3.5 tabs in the reference's frame. done
Group finder The dungeon finder and the raid browser in one movable window with side tabs. Dungeons: roles, the dungeon types as buttons with the chosen one's description and rewards below, the specific dungeons list. Raids: a bottom tab to list the group -- the raids under folding categories like the character sheet's, and a comment -- and one to join, a raid's players and groups with their tooltip. done
Login screens Login, the main menu, character select and creation, the dialogs, the realm list, the AddOns list, the options (video and sound), the cinematics and the credits. done; the other login screens are left as they are, on request

Everything ForeverUI places is a movable system: /fui opens the edit mode, /fui reset puts a piece -- or all of them -- back where the reference puts it.

Languages

No text is written in the code. A text the 3.3.5 client already knows is read from its own strings (GlobalStrings.lua, GlueStrings.lua at the login screens), so it follows the client's language by itself. Every other text is read from a language file, English being the base:

data/addon/ForeverUI/Textes_enUS.lua                 in game, English
data/addon/ForeverUI/Textes_frFR.lua                 in game, French
data/glue/Interface/GlueXML/ForeverUIGlueTextes_*.lua  login screens

A key missing from a language shows the English text, and a client whose language has no file reads English. To add a language, copy the enUS file to the client's locale code (Textes_deDE.lua...), translate the values without touching the keys or the %s / %d (same number, same order: Lua 5.1 cannot reorder them), and list the file after the English one in the .toc (or in ForeverUIGlue.xml). The mock client refuses a key used in the code that is missing from English or French.

Layout of this folder

data/addon/ForeverUI/     the addon itself, .lua and .toc -- the source
data/glue/                the login screens, which go into patch-Z
data/art/interface/       the .blp that go into the client patch, each with
                          a .png beside it to see what it holds
docs/AMELIORATIONS.md     the points asked for, and nothing else
docs/NOTES.md             working notes: departures, traps, tooling
docs/reference/           screenshots of the real thing, to check against
tools/deployer.py         puts the addon in a client and the art in patch-Z
tools/test_addon.py       a mock client that loads the addon and checks it
tools/ajouter_feuilles.py brings an atlas sheet in with its preview, and
                          regenerates the atlas table
tools/cuire_masque.py     bakes a mask into an icon's alpha, for the cuts
                          3.3.5 cannot make on screen
tools/decouper_elements.py  cuts elements out of sheets too wide for 3.3.5,
                          each at its own size
tools/cartes_instances.py generates the dungeon and raid maps by name, in
                          every language the client's map addon knows

Working on it

This folder is the workspace, and the only place anything is edited. The addon in the client and the art in patch-Z.MPQ are copies the deployer makes; editing either of them directly means the work is lost the next time anything is deployed, and nobody can say afterwards what the game is actually showing. The rule holds both ways: what sits under Interface\ForeverUI in the patch is exactly what data/art holds, file for file, byte for byte. --verifier reports what is missing, what differs and what is left over, and a deploy removes from the archive anything this folder no longer carries.

New art follows the same path: the .blp and its .png preview land in data/art first, then the deployer puts the .blp in the patch.

python tools/deployer.py --verifier      compare the client with this folder
python tools/deployer.py                 addon and art
python tools/deployer.py --addon         the addon alone, client may stay open
python tools/deployer.py --art           the art alone, close the client first
python tools/deployer.py --glue          the login screens, close the client first

The addon files are read at login: after --addon, a /reload in game is enough -- unless a file was ADDED. The client lists an addon's files when it starts, and /reload replays the ones it already knows without discovering a new one: a new .lua needs the game closed and reopened, however plainly it sits in the .toc. The art lives in patch-Z.MPQ, which the client keeps locked while it runs: close the game before --art, and start it again afterwards.

Before delivering anything, run the mock client -- it loads the whole addon and checks the measurements taken from the reference:

python tools/test_addon.py

It checks numbers, nothing else. What a thing looks like is settled in the game, and only there. Composing the art in Python and looking at the picture was tried and thrown away: such a picture only proves the arithmetic, since it knows nothing of draw order, of what the client draws over it, or of the scale it ends up at -- it showed windows as correct that the game showed wrong. The screenshots under docs/reference/ are the other half: they are the real client, and they are what a result is compared against.

Where the reference comes from

Every size, offset and texture name is read from the interface code of a modern client, not guessed. Each file of the addon opens with the survey it was built from: the file, the template and the line that gives each number. When this addon departs from that reference -- because 3.3.5 cannot do it, or because the result was wrong on screen -- the departure is written down at that spot, with what was measured.

The art set is the one that client actually displays: sheets whose names carry the c60 suffix, and the camelot suffix for the status bars.

Licence

GPL-2.0-or-later, see LICENSE. tools/foreverui/mpq.py reads and writes MPQ archives; it is the copy this module carries, as each module in this repository carries its own.

S
Description
Forver UI для классического WoW (1.12.1)
Readme GPL-2.0 186 MiB
Languages
Lua 98.8%
Python 0.8%
C# 0.4%