# 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)