142 lines
6.9 KiB
Markdown
142 lines
6.9 KiB
Markdown
# Isuldor UI theme refresh (March 2022 → May 2026)
|
||
|
||
This article records what changed in EverQuest’s 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 5–7:
|
||
|
||
### 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)
|