by Salty and Sherra
Zeal adds quality of life functionality to the legacy (2002) Everquest client used by most TAKP EqEMU players. The Miles Sound System used by that client supports plug-ins for arbitrary audio filtering, and Zeal injects itself into the client like a standard dll by using the .asi extension in the EQ root directory. It can then patch itself into the clientâs processing loop and callbacks to add new functionality and smooth out issues in the old client.
Zeal custom code is entirely open source and the releases are built directly from the repo using github actions, providing full transparency on the contents.
Assets
section and download the zeal_v#.#.#_*.zip
fileSource code
fileszeal.asi
and the uifiles/zeal
folder#ui-discussion
channel, or the Quarm guide
link below for compatible UIâsEnsure that sound is enabled in the game (the volume level can be set to zero).
Sound=TRUE
in the eqclient.ini
in your root Everquest directoryA comprehensive guide, including troubleshooting, can be found at https://quarm.guide/install-guides under âInstalling Zealâ or a simplified checklist under âChecklist for Installing Zealâ.
Note that the method Zeal uses to inject itself into the client can trigger the
heuristics of anti-virus scanners to label it as malware. See trouble-shooting
guide above if your Zeal.asi
file keeps disappearing.
Zeal_README.md
: A copy of this readme fileZeal.asi
: Executable code that is loaded when EQ sound is enabledZeal.pdb
: Symbol debug file for the zeal.asi
. Developer use only.uifiles/zeal
: Folder with Zeal specific UI modifications (options, new features)
uifiles/zeal
override uifiles/default
and uifiles/<your_skin>
crashes/
: Folder with optional crash reporter that will send any captured crash zip logs for reviewzeal.ini
: Contains most of the zeal settings (some common, some per character)client.ini
: Contains extended key bindsUI_<name>_pq.ini
: Configuration of Zeal client windows (map, extra item display, options)<name>_spellsets.ini
: Per character saved spell sets<name>_protected.ini
: Per character saved /protect item list/sortgroup
/sq
/sq 1 2
/cc
/cc
/targetring
size
, indicator
/targetring 0.25
/targetring indicator
toggles auto attack indicator./resetexp
/resetexp
/timer
int
/timer 10
/pipedelay
int
/pipedelay 500
/pipe
string
/pipe set a respawn timer for 30 seconds
/ttimer
int
/ttimer 500
/inspect target
/loc noprint
/reloadskin
/fov
int
/fov 65
/lead
open
(reports raid groups with open slots), all
(lists all raid groups)/melody
song gem #'s (maximum of 5)
/mel
/melody 1 4 2 3
/map
on
, off
, size
, alignment
, marker
, background
, zoom
, poi
, labels
, level
, ring
, grid
/pandelay
ms delay
, none
/pandelay 200
/hidecorpse
looted
, none
/hideco
, /hidec
, /hc
/hidecorpse looted
looted
Hides a corpse after you have looted it., none
reveals all hidden corpses/spellset
save
, load
, delete
/spellset save buffs
/spellset load buffs
/spellset delete buffs
/showhelm
/helm
on, off
/showhelm on
/showlootlockouts
/showlootlockout
, /showlockout
, /sll
/zealcam
/smoothing
x y 3rdperson_x 3rdperson_y
/zealcam 0.7 0.2 0.7 0.2
if 3rd person arguments are not supplied, the first x and y are applied to both/autoinventory
/autoinv
, /ai
/autobank
/autoba
, /ab
/corpsedrag
/drag
nearest
(auto-targets nearest corpse for dragging)/corpsedrag nearest
to auto-target./corpsedrop
/drop
all
(drops all corpses)/corpsedrop all
./target
/cleartarget
/sit
/camp
/zeal
version
/zealinput
/help zeal
/timestamp
/tms
/outputfile
/output
, /out
inventory | spellbook
[optional_name]
/outputfile inventory my_inventory
inventory
outputs information about your equipment, inventory bag slots, held item, and bank slots to a file.spellbook
outputs a list of all spell ids current scribed in your spellbook./buffs
/bluecon
/alarm
oldui
/nameplatecolors
/nameplateconcolors
/nameplatehideself
/nameplatex
/nameplatehideraidpets
/nameplatecharselect
/nameplatetargetcolor
/nameplatetargetmarker
/nameplatetargethealth
/alarm
oldui
/aspectratio
/ar
/assist
on
, off
/classicclasses
/cc
/cc
/clientmanatick
/cmt
/cc
/cls
/fcd
(floating combat damage)
client font size #
, font
/fcd
toggles on and off/fcd 6
sets it to use client font size 6/fcd font arial_24
sets it to use custom font arial_24/follow
zeal on
, zeal off
, distance <value>
/follow
toggles on and off (normal client command)/follow zeal on
turns on patched Zeal auto-follow mode (same as options tab)/follow distance 5
sets the Zeal mode follow distance to 5 (default 15)/linkall
rs
(rsay), gs
(gsay), gu
(guildsay), ooc
, auc
, say
/log
on
, off
, output text message with percent converts
on
or off
, it copies the rest of line to the log directly./lootall
/lootctrl
on
, off
/lootlast
item_id_#
, item_link
, or 0
to disable./mystats
none
, info
, <item_link>
/mystats <item_link>
Prints out your current offensive stats if you were holding that item./protect
on
, off
, value
, item
, <item_link>
, list
, cursor
, worn
/protect value 10
Protects against dropping or destroying items >= 10 pp/protect list
Prints the list of currently protected items/protect item 10931
Toggles protection from dropping, destroying, or selling the Crown of Rile (10931)/protect <item_link>
Toggles protection from dropping, destroying, or selling the item_link item../<character_name>_protected.ini
file./rt
/run
on
(run), off
(walk)/selfclickthru
on
, off
/singleclick
bag #
where 0 disables and 1-8 sets inventory bag #bag #
sets the target tradeskill inventory target if no world trade/tradeskill windows
are open. Set # to zero to disable (default). The # is not a persistent setting (clears on camp)./singleclick bag 2
will set inventory slot bag 2 (1-8) as the target./survey
on
, off
, channel
, new
, response
, results
, share
/tellwindows
/tickreverse
/tooltipall
/trade
/opentrade
, /ot
/uilock
on
, off
/useitem
slot_#
(+ optional quiet
that suppresses warnings if no click effect)/useitem 16 quiet
activates click effect on BP and suppresses some warnings/tell<tab>
, /tell <tab>
, /tell name <tab>
cycles tell history list like default client
r
)/tell start_of_name
triggers a search across tell history, raid, and zone
to populate a new cycle list (tab or shift-tab) which is printed to chat
/survey on
to enable (persistent setting only needed once)
/survey channel <name>
<name>
must start with a survey
prefix (e.g., /survey channel survey123
)/survey new <question>
starts a new survey.
ZEAL_SURVEY | <channel> | <question>
that is detected by
Zeal when in the raidZEAL_RESPONSE | <answer>
/survey response <answer>
/survey results
will print the results of the poll to local chat
/survey share
prints the summary results (no names) to /raidsay
In order to participate, they can manually watch for the ZEAL_SURVEY raid messages and then
manually join the chat channel and send their response by sending a message to the channel:
/# ZEAL_RESPONSE | <answer>
where # is the chat channel. Zeal users can share the tallied results.
Note that the joined response chat channel will not be filtered by Zeal so it will get spammy.
They could leave after submitting their response to avoid it.
23
EXP Per Hour24
Server tick timer25
Global cast recovery countdown timer26
to 33
Recast recovery countdown timers for spell0 - spell734
Attack (melee/range) recovery timer80
Mana/Max Mana81
Exp Per Hour Percentage82
Owner of target (if pet)83
Count of empty inventory slots84
Count of all inventory slots85
Count of filled inventory slots124
Current Mana125
Max Mana134
Spell being casted135
Song Window Buff 1136
Song Window Buff 2137
Song Window Buff 3138
Song Window Buff 4139
Song Window Buff 5140
Song Window Buff 6LinkAllButton (w/option to select either , or ` |
` delimiter) |
Adds a Gauge (Type 24) that supports drawing a server tick timer natively in the UI.
The gauge drain/fill style can be swapped using /tickreverse
.
The tick event is also logged to the Zeal Pipe, in addition to the gauge value:
{ "type": 0, "text": "Tick" }
Zeal advanced users can create their own fonts to use with Zeal in addition to those that come with zeal install. The custom created fonts can be used with the following Zeal features:
Zeal uses âspritefontâ files generated by MakeSprintFont.exe, a Microsoft windows command line tool.
./MakeSpriteFont "Arial" /FontStyle:Bold /FontSize:30 /TextureFormat:CompressedMono arial_bold_30.spritefont
uifiles/zeal/fonts
folderBuild in Release
x86
(32bit) mode using Microsoft Visual Studio 2022 (free Community edition works)
Zeal 5.0 and later includes options for players to adjust Player Nameplates and NPC Nameplates in game. In addition, Skeletons now show a Nameplate. (Client Skeleton Nameplate Bug Fix) Necromancers will now have an easier time finding their corpses.
The nameplate is controlled through three interfaces:
zeal\uifiles
, see Installation notes above)The Zeal Nameplate options tab is the primary interface, but the redundant commands below are available:
/nameplate colors
- Toggles Nameplate Colors for Players on and off/nameplate concolors
- Toggles Nameplate Con Colors for NPCs on and off/nameplate hideself
- Toggles Player Nameplate on and off/nameplate x
- Toggles Player Nameplate as X on and off/nameplate hideraidpets
- Toggles Raid member Pets Nameplate on and off/nameplate showpetownername
- Toggles Players Pet Owner on Nameplate on and off/nameplate charselect
- Toggles Nameplate Choices Shown at Character Selection Screen on and off/nameplate targetcolor
- Toggles Target Nameplate Color on and off/nameplate targetblink
- Toggles blinking of target nameplate on and off (rate controlled by targetring slider)/nameplate attackonly
- Limits blinking of target nameplate to only when auto-attack is on/nameplate targetmarker
- Toggles Target Nameplate Marker on and off/nameplate targethealth
- Toggles Target Nameplate Health on and off/nameplate inlineguild
- Toggles guild name appearing inline or on a separate line/nameplate zealfont
- Toggles internal client or custom Zeal fonts/nameplate dropshadow
- Toggles drop shadowing on Zeal fonts/nameplate extendedshownames
- Toggles availability of /Shownames 5, /Shownames 6, and /Shownames 7Zeal allows players to change the colors of the Nameplates of Players and NPCs in game. The Color Selector is available in the Zeal Colors Tab of the Zeal Options menu. The following 19 Nameplate Colors can be changed to custom colors.
A few sizes of arial font and arial_bold font are included with Zeal install and accessed through the options tab combobox. See above for notes on how to generate new fonts.
The map data was sourced from Brewallâs maps: https://www.eqmaps.info/eq-map-files/ with minimal modifications (see README.md in zone_map_src). As a result there are some out of era points of interest.
Zeal 4.0 and later includes an integrated in-game map that contains the map data for all zones through Planes of Power. The map is drawn into the gameâs DirectX viewport as part of the rendering sequence and is by default not âclickableâ (see interactive mode below).
The map is controlled through four interfaces:
zeal\uifiles
, see Installation notes above)The defaults are updated when adjusting settings in the Zeal options map tab. The size and
position of the internal map window is stored as part of the UI_character.ini files like normal
game windows. The key binds and /map commands create temporary changes unless the
/map save_ini
command is used.
It is recommended to use the Options tab to adjust the basic map settings to the preferred defaults (background, labels, names, marker sizes) and then use the keybinds for more frequent map adjustments (on/off, toggle zoom, toggle backgrounds, toggle labels, toggle visible levels). The /map commands include extra options like poi search.
/map
- Toggles map on and off/map on
- Turns map on/map off
- Turns map offThe external map window (see external map window below) can be moved and resized like a standard window.
The internal map operates in two modes. In interactive mode, the map is framed by a standard client window that allows it to be positioned and sized. When disabled, the map draw viewport is fixed and transparent to the mouse. See Interactive Mode below for more details.
The internal map size and position can also be controlled by the /map size
command.
The content is drawn to fit within a rectangular viewport defined by a top left corner,
a height, and a width specified as a percentage of the game window dimensions. The
map viewport is relative to the game window and independent of the game /viewport,
so the map can be placed anywhere in the game window.
The zones have different aspect ratios, so some zones will scale to fill the height and others the width. The map alignment setting (top left, top center, top right) controls where the map is drawn when it is height constrained.
/map size 2 3 50 60
map window top=2% left=3% height=50% width=60% of game window dimensions/map alignment center
aligns the aspect ratio constrained map to the top center of the viewportThe map supports four different options for the map background for contrast enhancement: clear (0), dark (1), light (2), or tan (3). Additionally, it supports alpha transparency.
/map background 1
sets the background to dark with no change to alpha/map background 2 40
sets the background to light with 40% alphaThe map has simple support for opening an external window outside of the game client window. This window can be moved and resized like a standard window. See interactive mode for other mouse inputs. The map content is controlled with the normal map key binds. Use the save_ini command to store the current size and position as the default.
/map external
- Toggles map between internal overlay and external window/map save_ini
- Stores the current external window size and position (and other settings)If the map content looks pixelated, the monitor may be set to a DPI scaling greater than 100%. Note that the EQ application itself does not properly handle this. To workaround, set the Windows override to tell the OS that the application will handle scaling:
The default 100% map scale makes the entire zone visible sized to the height or width constraint. In zoom, the map draws all available data that fits within the rectangular viewport. The zoom algorithm works to maximize the visible map closest to the player. Map edges will be pinned to a viewport edge until the user moves at least half the viewport away, and then the map background will scroll with the player centered in the viewport.
/map zoom 200
sets map scaling to 200% (2x)The map supports drag panning and mouse wheel zoom in interactive mode. Interactive mode is always enabled in external window mode, while a keybind toggle is used to toggle the internal overlay map in and out of interactive mode. When not in interactive mode, the internal overlay map is transparent to the mouse. When interactive mode is enabled, the map can be panned using a left mouse button drag and zoomed using the scroll wheel. Once panning starts, auto-center is disabled until a right mouse button click. The external window also supports a middle mouse button click to drop markers.
Zone maps other than the playerâs current location can be explored using the show_zone command. The target zone is specified using the zoneâs short name (like /who all). Interactive mode, levels, grid, labels, and poi search all work for the selected zone.
The world command allows browsing the available zone names in WorldData. See command examples below.
/map show_zone gukbottom
shows the zone map for the Ruins of Old Guk/map show_zone
exits show_zone mode/map world dump
prints the zone ids, short names, and long names of all available zones/map world search karan
prints all available zones that contain âkaranâ in their short or long namesA simple background grid aligned at a selectable pitch is available. The x == 0 and y == 0 axes are colored orange.
/map grid
toggles grid on and off/map grid 500
sets the grid pitch to 500 loc units (lines at multiples of 500)A simple distance ring around the current position is available. The distance can be auto-set
based on the tracking skill for rangers, druids, and bards, so they can simply toggle the ring
on and off with /map ring
.
/map ring
if visible or a non-tracker, turns ring off/map ring
if not visible, sets the ring at max tracking distance per skill level/map ring on
sets the ring at max tracking distance per skill level/map ring off
turns ring off/map ring 500
sets the ring around the player at a distance of 500 (all classes)The map supports showing the live position of other group and raid members. The group member markers are slighly shrunken player position markers and colored in this order relative to their group listing: red, orange, green, blue, purple. The raid member markers are simple fixed triangles with varying color. Since there are a high number of potential raid members, it is recommended to not use the persistent Show Raid checkbox in the options tab and instead use the key bind to situationally toggle it on and off.
/map show_group
toggles the group member markers on and off/map show_group labels_off
disables group member labels/map show_group numbers
enables numeric (F2-F6) group member labels (uses nameplate colors)/map show_group names
enables shortened group member names (uses nameplate colors)/map show_group length 8
sets the shortened length of group and raid member names to 8/map show_raid
toggles the raid member markers on and offThe map supports showing different levels based on the Brewall map color standards. Not all of the zones are properly colored, but it does work well in some of the 3-D overlapping zones. It also supports a simplified auto z-level mode that shows map data within a z-level range of the player as fully opaque and further data at a faded alpha transparency level. The auto-mode is selectable using the toggle map level keybinds (see below).
/map level
shows the current zoneâs map data level info/map level 0
shows default of all levels/map level 2
shows the current zoneâs level 2 data/map level -1
enables auto z-level mode/map level autoz 10
sets the auto z-level mode height limit to +/- 10 (setting to 0 restores default)The map supports adding position markers for easier identification of target coordinates. The markers have a label centered above them, with the default set to the marker loc values. There is no set limit to the number of markers. See how to clear them below.
/map marker 1100 -500
adds a map marker at /loc of 1100, -500 labeled â(1100, -500)â/map 1100 -500
is a shortcut for the command above to set a marker at 1100, -500/map marker -300 200 camp
adds a map marker at /loc of -300, 200 labeled âcampâ/map marker
clears all markers/map 0
is a shortcut for clearing all markers/map marker size 40
sets the marker size to â40%âThe map supports selecting a âspritefontâ formatted bitmap font file. A few sizes of arial
font are included with Zeal and are located in uifiles/zeal/fonts. See the zeal/bitmap_font.cpp
file for notes on how to generate new fonts. The default font is embedded in the code and can
be selected with the font name default
.
/map font arial_10
changes the current map font to Arial size 10The map supports listing the available points of interest and adding them as labels to the map. Note that some maps have many points of interest, so the all setting for the labels can clutter up the map even in zoom. The keybind to toggle through the label modes is recommended.
/map poi
lists the available poiâs, including their indices/map poi 4
adds a marker on index [4] of the /map poi
list/map poi butcherblock
performs a text search of the poi list for butcherblock, reports
any matches, and adds a marker on the first one/map butcherblock
shortcut for above (does not work for terms that match other commands)/map labels summary
enables the summary labels (other options are off
, all
, or marker
)The map has simple support for external map data files. The map data_mode can be set to internal
,
both
, or external
. In both
, the internal maps are combined with any available data from an
external file for that zone. In external
, the internal map data for the zone is ignored if
external file data exists for that zone. In all cases internal data is used if external data is
not present.
Note that some features, such as level recognition, are not currently supported with external data.
The external map files must be placed in a map_files
directory in the root game directory
with zones named to match their short names (ie map_files/commons.txt
contains the data for
West Commonlands). If that short name file is present, it will also look for an optional _1.txt
file (ie map_files/commons_1.txt
) and parse it if present. Most Brewall map files with POIs can
be directly dropped in (although any _2.txt
or higher will be ignored).
The external map support requires a format compatible with Brewall map data.
L x0, y0, z0, x1, y1, z1, red, green, blue
P x, y, z, red, green, blue, ignored, label_string
/map data_mode both
adds external zone map file data if present to internal maps/map data_mode external
uses external zone map files if present to replace internal maps