by Salty
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 review/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
/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
23
EXP Per Hour80
Mana/Max Mana81
Exp Per Hour Percentage124
Current Mana125
Max Mana134
Spell being castedBuild 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)/nameplatecolors
command - Toggles Nameplate Colors for Players on and off/nameplateconcolors
command - Toggles Nameplate Con Colors for NPCs on and off/nameplatehideself
command - Toggles Player Nameplate on and off/nameplatex
command - Toggles Player Nameplate as X on and off/nameplatehideraidpets
command - Toggles NPC Raid Pets Nameplate on and off/nameplatecharselect
command - Toggles Nameplate Choices Shown at Character Selection Screen on and off/nameplatetargetcolor
command - Toggles Target Nameplate Color on and off/nameplatetargetmarker
command - Toggles Target Nameplate Marker on and off/nameplatetargethealth
command - Toggles Target Nameplate Health on and offZeal 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.
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 three interfaces:
zeal\uifiles
, see Installation notes above)The default map settings are stored in the EQClient.ini file of the root Everquest directory.
The defaults are updated when adjusting settings in the Zeal options map tab. 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 (size, position, background, 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 map 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 easiest method for adjusting the map size is through the Zeal Map options tab sliders, but convenient toggling between map sizes (say small to large) is possible by setting up macros with /map size commands.
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 EQ client window. This window can be dragged with the title bar and positioned as desired, but it is only resizable using the height and width Zeal map options sliders. The top and left sliders are ignored in external window mode. See interactive mode for mouse inputs. The map content is controlled with the normal map key binds. Also note that if external window mode is set in options, the map will not automatically open when the game starts. Use the map enable to open and close the window (recommend using the keybind âmâ).
/map external
- Toggles map between internal overlay and external window/map save_ini
- Required to make the external map window position persistentIf 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.
/map show_zone gukbottom
shows the zone map for the Ruins of Old Guk/map show_zone
exits show_zone modeA 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 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 dataThe 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 everquest directory
with zones named to match their short names (ie map_files/commons.txt
contains the data for
West Commonlands). An optional, _1.txt
file (ie map_files/commons_1.txt
) will also be
parsed if present, so Brewall map files with POIs can be directly dropped in.
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