Files
eqclient-conf/EverQuestLive/docs/ui-theme-2026-refresh.md
T
2026-07-22 11:39:41 -07:00

142 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Isuldor UI theme refresh (March 2022 → May 2026)
This article records what changed in EverQuests stock UI between our last theme maintenance pass and this refresh, what we did to bring the **isuldor** minimal skin forward, and how to install and maintain it on the current client.
Paths for the local Steam/Linux install are in [steam-linux-paths.md](steam-linux-paths.md).
## What the theme does
The isuldor skin is a small set of patches against `uifiles/default/` (not a full skin replacement). It keeps only the windows that stay on screen most of the time and strips chrome so they fade into a dark layout:
| File | Purpose |
|------|---------|
| `EQUI_Templates.xml` | Adds `WDT_Def2_Minimal` and `WDT_Inner_Null` draw templates (dark tiled chrome, borderless inner panels) |
| `EQUI_Animations.xml` | Registers `dark_tile_64.tga` / `dark_tile_192.tga` and a 1×1 titlebar placeholder animation |
| `EQUI_HotButtonWnd.xml` | Replaces hotbar slot art with dark tiles; smaller 32×32 normal state |
| `EQUI_ChatWindow.xml` | Borderless chat shell; null inner template on input/output |
| `EQUI_CastSpellWnd.xml` | Transparent spell book shell; no close box or outer border |
| `EQUI_PlayerWindow.xml` | Compact player frame: overlaid HP/mana text, inline XP/AA XP bars, transparent shell |
Textures live in `ui/dark_tile_*.tga` and are copied beside the patched XML under `uifiles/isuldor/`.
The theme does **not** patch `uiresources/default/` (`AtlasSkin`). Modern HTML/Cohtml panels (guild, achievements, overseer, etc.) keep the stock look.
## Refresh summary (May 2026)
| Patch | Result against May 2026 `default` |
|-------|-----------------------------------|
| `EQUI_Animations` | Applies cleanly (line offsets shifted; hunks still match) |
| `EQUI_CastSpellWnd` | Applies cleanly |
| `EQUI_ChatWindow` | Applies cleanly |
| `EQUI_HotButtonWnd` | Applies cleanly |
| `EQUI_Templates` | Applies cleanly |
| `EQUI_PlayerWindow` | **Required rewrite** — see below |
`ui/install.sh` was updated to auto-detect the Steam Linux path (`~/.local/share/Steam/steamapps/common/Everquest F2P`) and honor `EQ_GAME_PATH`. The skin was rebuilt under `uifiles/isuldor/` on this machine.
## Why `EQUI_PlayerWindow` broke
The March 2022 patch set was generated against an older `EQUI_PlayerWindow.xml`. Three classes of drift caused `patch` to fail on hunks 57:
### 1. Label layout offsets
Stock UI moved percent labels (`HPPerLabel`, `ManPercLabel`, `FatiguePercLabel`) from `LeftAnchorOffset` **24** to **34**. Our diff still described the old coordinates, so context lines no longer matched.
### 2. New controls after the fatigue block
Daybreak added group-role buttons and aggro readouts **below** the fatigue labels, for example:
- `PW_GroupRoleTank`, `PW_GroupRoleAssist`, `PW_GroupRolePuller`, `PW_GroupRoleMarkNPC`
- `PW_AggroPctPlayerLabel`, `PW_AggroNameSecondaryLabel`, `PW_AggroPctSecondaryLabel`
- Parcel/mail icons and attack-indicator animations
The 2019 theme inserted custom **XP** and **AA XP** gauges in that slot. The refresh keeps those custom gauges but places them **immediately before** the group-role buttons so stock pieces are preserved.
### 3. Removed / relocated elements
- `PW_VoiceVolume` no longer exists; the old diff referenced it as a line anchor near the screen definition.
- `EQType` values for dynamic HP/mana text changed in stock UI (`19`/`20`); the theme uses `17` / `124` with shadow labels and live data from the client.
### 4. Line endings
Stock XML under `uifiles/default/` uses **CRLF**. Regenerating diffs from LF-only edits produces a whole-file diff and breaks `patch`. When updating `EQUI_PlayerWindow.diff`, normalize the built `isuldor` file to CRLF before `diff -u` (see [Maintenance](#maintenance)).
## Stock UI churn since March 2022
On this install, `uifiles/default/` still has **173** `EQUI_*.xml` window files (unchanged count), but **49** of them have filesystem dates after 2022-03-01. Notable areas touched by Daybreak in that window:
- **Player / target / pet** — `EQUI_PlayerWindow.xml`, `EQUI_TargetWindow.xml`, `EQUI_PetInfoWindow.xml`, blocked-buff windows
- **Inventory & loot** — `EQUI_Inventory.xml`, `EQUI_AdvancedLootWnd.xml`, `EQUI_LootWnd.xml`, `EQUI_DragonHoardWnd.xml`, banks, barter, tradeskill depot
- **Progression UI** — `EQUI_AAWindow.xml`, `EQUI_TaskWnd.xml`, `EQUI_TaskOverlayWnd.xml`, achievements
- **Social / commerce** — guild management/bank, overseer, real estate, merchant, purchase flows
- **Options & login** — `EQUI_OptionsWindow.xml`, character list/create, respawn selector
None of those files are in our patch set by design (see README: avoid maintaining rarely visible windows). After a major client patch, spot-check the six patched windows in-game; everything else stays on `Default`.
`uiresources/default/` (selected by `AtlasSkin`) continues to grow independently; expect modern panels to look stock even with `UISkin=isuldor`.
## Install and enable
From the repo:
```bash
cd ui
bash install.sh # or: EQ_GAME_PATH="/path/to/EverQuest" bash install.sh
```
Set the skin on a character in the UI INI in the game install root:
```ini
UISkin=isuldor
AtlasSkin=Default
```
(`UI_Vulch_coirnav.ini` in this repo is an example.) Reload UI layout from that INI under **Options → General** if windows look wrong after the first login.
Fade amounts (0% on most windows, higher on hotbars/chat) remain in the per-character UI INI, not in the XML patches.
## Maintenance
**Rebuild skin from patches**
```bash
bash ui/install.sh
```
**Refresh patches after editing `uifiles/isuldor/` in-game or by hand**
```bash
bash ui/install.sh --update
```
**Regenerate only `EQUI_PlayerWindow.diff` after hand-merging**
```bash
GAME="$HOME/.local/share/Steam/steamapps/common/Everquest F2P"
sed 's/$/\r/' "$GAME/uifiles/isuldor/EQUI_PlayerWindow.xml" > /tmp/pw.crlf.xml
diff -u "$GAME/uifiles/default/EQUI_PlayerWindow.xml" /tmp/pw.crlf.xml \
> ui/EQUI_PlayerWindow.diff
```
**Verify all patches before committing**
```bash
bash ui/verify.sh
bash ui/verify.sh --record # after in-game smoke test; updates ui/.verified-build
```
## Testing checklist
After each client update:
1. Run `bash ui/install.sh` and confirm no `FAILED` hunks.
2. Log in with `UISkin=isuldor` — check player window (HP/mana/XP/AA), hotbars, chat, spell gem window.
3. Open group roles and aggro labels on the player window; confirm they still render and click.
4. Toggle a few rarely used stock windows (inventory, AA) — they should look like **Default**, not broken.
## References
- [steam-linux-paths.md](steam-linux-paths.md) — install root, `UISkin` / `AtlasSkin`, character INI files
- [README.md](../README.md) — general client tuning (fullscreen, lighting, chat colors)
- Screenshot of the minimal layout: [imgur mcO4oAA](https://i.imgur.com/mcO4oAA.jpg) (2019; layout is similar after refresh)