Releases: bknie1/everquest-maps
Release list
v0.2.4.1-alpha — Fix the border fix: Feerrott's inner ring, Oggok's real gaps
Follow-up to v0.2.4-alpha, fixing an incomplete border repair caught by Brandon.
What was wrong
Some zones (like unrest, the flagship) carry a two-ring frame: an outer worn-parchment edge plus a clean inner border. v0.2.4's Feerrott fix only closed the outer ring — the inner one had always been incomplete (hidden under the dense margin canopy that fix removed), and the outer fix itself had a small seam from snapping to an approximated vertex instead of the exact one. Oggok's own border turned out to have three genuine holes on its bottom edge, plus smaller gaps on top and left.
What changed
- Feerrott: outer border reseamed with exact vertex coordinates; the inner border ring extended using its own measured period/amplitude, closing the full frame on all four sides.
- Oggok: three real gaps on the bottom edge (confirmed via endpoint-to-endpoint distance, not midpoint spacing — the same measurement mistake that caused the Feerrott seam) plus smaller top/left gaps, all filled at the locally-measured dash pitch.
- New:
src/tools/border_check.py— a pack-wide scanner for this failure mode, so it's a repeatable check going forward instead of an eyeball. Run against all 79 zones for this release: only Feerrott and Oggok confirmed as real defects (an early pass flagged 54 zones, but nearly all were false positives from margin canopy/grass ink reused thousands of times with naturally irregular spacing).
🤖 Generated with Claude Code
v0.2.4-alpha — Feerrott overhaul, Oggok recolor, equipment-safe loot filter
Feerrott: F grade → A grade
Reverted the over-dense canopy fill, which had ballooned to 90,251 strokes (2.9× the 31k budget) — the decoration layer was drawing a full second interior canopy pass on top of the base layer's own, plus a 32,215-stroke margin ring bigger than the entire budget by itself. Stripped the redundant canopy, thinned the interior by ~7%, and landed at 30,754 strokes — grade A, 0 dupes, original "filled the grid with rainforest" look preserved, margin now bare as requested.
Two follow-up fixes after the initial pass:
- Top border gap — the worn-zigzag border never actually wrapped the top edge (confirmed even in the pre-strip original) because the top margin was always solid canopy standing in as the visual border. Extended the same zigzag pattern to close it.
- Artifacts above the title — stray background-canopy specks had leaked into the title's preservation box and became visible once the surrounding canopy was gone. Tightened the box to just the real letters.
Oggok: toned-down yellow shading
The building-wall lines and ground-level shading ticks were the most saturated inks in the zone — original stock-map colors, never touched by any styling pass. Recolored them to a calmer tone; title and canopy greens untouched.
Loot filter: equipment is never auto-sold
The filter is keyed by item ID, not by whatever magical modifier a drop rolls — a "Rusty Mining Pick" can drop as "Rusty Mining Pick +1" and it's the same list entry. Every weapon, armor piece, jewelry item, and bard instrument (~2,090 items) is now left off the curated list entirely rather than marked for auto-sell, detected by keyword matching plus icon correlation (items of one weapon/armor type share an icon, so exotic names like "Gladius" or "Ghoulbane" get caught via a keyword-matched sibling). Auto-sell now covers only genuine non-equipment trash.
Pack baseline: 79/79 zones grade A or B — no zone over budget.
🤖 Generated with Claude Code
v0.2.3-alpha — Final sweep: consistent title & compass sizing
Pack-wide standardization pass, measured in pixels at a 900px viewport fit (the scale the viewer actually renders at) rather than raw map units.
Titles & compasses
- 15 titles scaled to the "unrest" size bar: highkeep, guktop, gukbottom, highpass, kaladima, kedge, cauldron, rivervale, beholder, neriakb, the soldung trio, crushbone, fearplane.
- highkeep's title also regained its missing "G", restored verbatim from history.
- qeynos2's ghost stick-title remnant below the band cut was removed.
- 19 compasses rebuilt at a standard 24px ring: crushbone, highkeep, kedge, the soldung trio, paineel, guktop, gukbottom, rathemtn, commons, butcher, steamfont, neriakc, soltemple, the kaladim pair, hateplane, highpass, rivervale. Letters scale with the ring; boulder/canopy decor knocked out cleanly around each.
- Duplicate strokes swept to zero on every unlocked zone (1,244 near-dupes folded across 28 zones).
unrestandeastkaranaremain untouched (locked). eqqms.pygained two report-only columns (t-px,rose) so title and compass size can be measured pack-wide instead of eyeballed zone by zone.
Result: 78 of 79 zones now grade A or B on eqqms; feerrott remains F by its even-field density doctrine. Every remaining B is a plain-caps title awaiting a themed restyle.
New: curated loot filter
Loot Filters/LF_Emoda_Legends.ini — an in-game auto-loot filter for Emoda Legends. Rescues motes, spell scrolls, and tradeskill materials from auto-sell while keeping vendor trash on auto-sell. Linked from the project landing page.
Site
The map previewer now supports shareable deep links: preview.html?zone=<name>&layers=&labels=.
🤖 Generated with Claude Code
Alpha 0.2.2.3 - Nektulos denser dark wood
The Nektulos margins are packed ~55% denser — bare dead trees + dark conifers on the green→purple/blue gradient — so the frame reads as the thick dark wood it should be. Interior kept light for label legibility; all keep-outs (castle, Neriak gate, wizard gate, compass, structures) unchanged. 16,231/31k, grade B.
Alpha 0.2.2.2 - Nektulos wizard gate restored
Corrects v0.2.2.1.
The wizard gate is a locked-in graphic (src/toolkit/eqmap_toolkit.py:wizard_gate — a pseudo-3D ziggurat with a front staircase and a portal swirl on top), the one that actually looks like the gate. v0.2.2.1 wrongly replaced it with a hand-drawn version; this reverts that and keeps the original untouched — the only real problem was trees covering it, now fixed with a flora keep-out.
- Reverted the redraw; removed the bogus
landmarks.wizard_gate. - Original gate kept + fenced off so no trees cover it.
- Darkwood-ink purge fix (52,46,74 / 56,48,40) retained.
For GFay's gate: reuse eqmap_toolkit.wizard_gate — don't redraw.
Alpha 0.2.2.1 - Nektulos wizard gate patch
Patches v0.2.2-alpha.
- Wizard gate redrawn — the right-margin wizard gate was a rough stepped portal buried under trees. Redrawn clean with a new reusable landmark (
src/kit/landmarks.wizard_gate): two rune-carved stone pillars under a lintel framing a glowing arcane portal (energy rings + core + sparks). It has its own flora keep-out now, and is ready to drop into GFay too. - Old darkwood leftovers purged — two
nek_hd_florainks that the rebuild's TREE_INKS had missed, (52,46,74) and (56,48,40) (~728 strokes), so no old darkwood trees survive mixed into the new creepy forest.
Nektulos: 15,100/31k, grade B, 0 dupes; themed title, fauna, castle, Neriak gate and volcanoes intact.
Alpha 0.2.2 - Nektulos + Nektropos
Nektulos Forest ships its real pass (Brandon signed off):
- Creepy dead-forest, rebuilt from the base (
src/zones/nek_rebuild.py): every old tree/crown artifact purged; new flora is bare clawing snags + dark conifers on a quantized green(south) → purple → blue(north) gradient — the halfling→Neriak Teir'Dal transition. ~Doubled density; interior kept light and off the labels. - fauna_sil silhouettes preserved (Teir'Dal, skeletons, orc, Leatherfoot halflings, spiders); grass, river, bridge untouched.
- Nektropos castle restored in the SW; Neriak dolmen gate flipped right-way-up and reseated inside a widened right margin.
- Real volcanoes at the Lavastorm exit (replacing the fake triangle range); wizard gate / portals / ruins cleared of trees.
- Themed
darkwoodTeir'Dal title carried through the rebuild.
15,792/31k strokes, grade B, 0 dupes.
Alpha 0.1.9 - the stylized pass
Alpha 0.1.9 — the stylized pass
The release where the hand-drawn identity of the atlas became doctrine. Brandon caught me "fixing" a clipped stylized title by replacing it with the plain stick font — this release reverses that class of mistake everywhere it existed, and finishes several zones' readability besides. (Parts of this shipped early to sharp-eyed downloaders via refreshes of the 0.1.8.2 pack.)
Titles are art, not metadata
- Nagafen's Lair — the stylized red-orange title was wider than the frame and clipped. It is now scaled 0.85 in place, keeping its hand-drawn tilt and multi-ink warmth — and it gains its R, missing all along because the compass had been placed over its spot. The interim stick-font replacement is reverted.
- Najena — the letters were never damaged; the border rework had stripped the hatch that framed them. The title gets its cartouche back: original hatch restored as a bounded plate with a double rule, knockout tight around the tilted letters.
- Lower Guk — read "L OWER JK" for who knows how long. History bisection shows the old compass-relocation pass stole the G and half the U; all 24 strokes restored verbatim from the last commit that had them.
- A visual sweep of every title in the pack (contact sheets, not heuristics — the heuristics flagged 18 zones and 15 were decor false-positives) found everything else healthy. Caverns of Exile survived being "fixed": the verify-plot showed its overflow was border segments, not letters, and it was left untouched.
Feerrott, actually finished
- The definitive rebuild had filled the band and margins wall-to-wall while the grid interior kept huge bare holes — the whole southern third was naked parchment. 2,366 empty interior cells now carry stamped copies of the map's own canopy, with structural halos: every trail, water edge, maze and building projects a clear ring, and every label keeps its clearing.
- Then the total was reeled back in by thinning the ring, never the interior: the decorative border covered more area than the playable map and carried more strokes than the whole interior. A uniform 30% thin brings the zone to 126,227 strokes — within 81 of the build proven in play — with the budget finally spread across the whole map. The canopy-ink title box was excluded from thinning absolutely.
Zone readability
- Kedge Keep — three fixes: the stacked floors are toned by depth on a five-step ramp (z was always there; nothing was reading it); the 1,800-stroke dash-noise margin is replaced with kelp, coral and rising bubbles; the compass comes off the title's K.
- Faint boundaries — Dagnor's Cauldron got the Misty Thicket treatment (same pale ink, same approved darkening), then North Karana, Qeynos Hills and Toxxulia got surgical boundary darkening — only edge-hugging strokes, because in those zones the pale ink also does interior work. Lake Rathetear, Kerra Ridge and Highpass draw their entire linework in that ink and are deliberately untouched pending a whole-map decision.
- Butcherblock — the scattered blocks are petrified tree stumps (per Brandon), redrawn with bark, growth rings and cracks in place of faceted-boulder wireframes; the ocean fill is clipped where it crossed the piers so the docks sit on parchment; the druid ring is drawn at Ellona's spires; and the Kaladim gate colossus now stands on Butcherblock itself, where you actually see it.
- Dagnor's Cauldron — the middle island carries its carved face monolith among dead trees, from Brandon's capture.
Figures and POIs
- Gnoll sweep completed: 27 figures across five more zones get the rebuilt silhouette. Two different predecessors were separated by aspect ratio — the original silhouette gnoll, and the retired hatched
fauna_hd_gnoll(which is exactly the blob the silhouette style replaced). Lake Rathetear's sabertooths share the fur inks and were correctly left alone. - North Kaladim — Trantor Everhot placed from Brandon's
/loc, which exposed the Everhot Forge sitting 640 units from its own family; forge and jewelry merchant moved onto the Everhot cluster. Also recorded: the short names invert —kaladimais South Kaladim,kaladimbis North.
Alpha 0.1.8.2 - the field-report pass
Alpha 0.1.8.2 — the field-report pass
A small release, almost all of it driven by Brandon playing with the maps open and reporting what was wrong. Several fixes are corrections to my own earlier mistakes.
POI accuracy
- Ak'Anon: 13 POIs were outside the city. All 170 of the zone's documented spawns fall inside the drawn base, so the base was right and the POIs were wrong — hand-entered with scrambled axes, some negated, some swapped. Each is now placed on wiki evidence: guild halls on their GM or on the merchant cluster whose code names them (CG = Cleric Guild, LG = Library, NG = Necro Guild), the bank on the Clockwork Banker, the bar on the Brewmaster, the smithy on the Weaponsmith, the palace on the King.
- Butcherblock: the aqua goblin camp was Lake Rathetear data. Its coordinate came from an unlabelled wiki row sitting 56 units from a spawn whose own cell reads "Lake Rathetear:". Shared mobs appear on many zone pages carrying other zones' coordinates. Camp moved to the marauder spawns on the west shore, where the zone text puts it.
- South Karana: Splitpaw Lair Entrance sat at (0,0), the map origin. The correct zone line was already on the map, just labelled
zone_line. Plus 18 named mobs, the Aviak village moved onto the treehouse the base actually draws, and four locations from Brandon's own/locs. - New
poi_audit.pychecks every zone's POIs against its wiki page, dropping rows that quote another zone. Two flags remain pack-wide, both faithful copies of wiki rows whose coordinates fall outside their own zone.
Sketches
- Kaladim's gate — the dwarven colossus between banded pillars, from Brandon's capture. Now also on Butcherblock, where you actually stand and look at it.
- Splitpaw's three claws, red-capped, over the tunnel mouth.
- Mt. Hatespike is a mountain instead of a mound; its old glyph was a dome with a doorway.
- Nektropos Castle pointer west off Nektulos, with a barbed teir'dal castle.
- Butcherblock's druid ring, South Karana's rolling hills, aviak lookouts (tree, hut on top, on its own hill), Widow's Peak as a real summit, and a pool beside Vhalen Nostrolo.
Figures
- Gnolls de-lizarded, pack-wide. The old figure had a long horizontal snout, spikes down its spine, dog-like back-bent hocks, a blob body — and no arms at all. Rebuilt canine and upright, then swept across every zone carrying an old one: 27 figures in five zones. Two different predecessors were in play — the original silhouette gnoll, and the retired hatched
fauna_hd_gnoll, which is precisely the blob-at-map-scale style the silhouette module exists to replace. They separate cleanly on aspect ratio (0.60 vs 0.83), so quadrupeds sharing the same fur inks — Lake Rathetear's sabertooths — were correctly left alone. - Gnome beard was a wedge reading as a muzzle; now a rounded bib.
- Goblins replace the crocodile-kobolds in Runnyeye.
Title repairs
- Nagafen's Lair (Sol B) — the stylized red-orange title was wider than the frame and clipped; an earlier fix in this release wrongly replaced it with the basic stick font. That is reverted: the stylized lettering is scaled 0.85 in place, keeping its hand-drawn tilt and multi-ink warmth — and it gains its R, drawn in matching style, which turned out to have been missing all along (the compass had been placed over its spot). Doctrine going forward: a clipped stylized title gets scaled, never replaced.
- Najena — the border rework had stripped the hatch that framed the NAJENA title, leaving the (intact) letters floating. The title gets its cartouche back: the original hatch restored as a bounded plate with a double rule, knockout tight around the letters, the approved cave margins untouched elsewhere.
- Lower Guk — the title read "L OWER JK". Bisecting history shows the G and half the U were taken by the old compass-relocation pass; all 24 missing strokes restored verbatim from the last commit that had them.
- A visual sweep of every remaining title found the rest healthy — Caverns of Exile, Upper Guk, Crushbone, Solusek's Eye, West Karana, the Neriaks, Halas, Grobb, Innothule, Lesser Faydark all intact. (Erudin Palace has no title at all; left as-is pending a design call.)
Other
- Runnyeye's underwater tunnel found and shaded — it hides in a z band below the level-4 floor, invisible to ink-based tools.
- Misty Thicket's boundary darkened to match East Karana's weight; it was luminance 145 against a 232 parchment.
- Najena banner artifacts removed (Brandon marked them in red).
- Speculative LDoN pointers — Rujarkian Hills and four other camps, drawn to look like guesses: their own teal ink, smaller than the historical pointers, and a
?in every label.
Alpha 0.1.8.1 - the asset-quality pass
Alpha 0.1.8.1 — the asset-quality pass
Sixty-four commits since 0.1.8, and the theme is assets that read at map scale. The old hatched "HD" figures blurred into blobs, several zones were drawn as the wrong biome outright, and a pile of zones were over the client's draw budget. All three got fixed.
New figure system — fauna_sil.py
All classic races redrawn as solid silhouettes (a few filled polygons, upright posture, one racial marker) instead of hatched line-art. Three review rounds:
- Trolls are lanky with pointed ears and tusks (were elephant-massed); ogres are pale, bald, round brutes; iksar stand upright; frogloks got the shin-lord treatment — bipedal, flipper feet, bulging corner eyes, mail vest.
- Separate legs everywhere — troll, iksar, gnoll, kobold, barbarian and ogre all had merged "dress" polygons.
- Guards split into Qeynos (blue, round shield) and Freeport Militia (red, kite shield, halberd).
- Goblins are goblins now — small, big-eared, hook-nosed, no tail, in three skins (generic green, ice, fire). They had been rendering as crocodiles thanks to an alias bug quietly folding
goblinintokobold.
Biome corrections
Three zones were simply drawn wrong:
- Ak'Anon is a cave, not a forest — 4,500 strokes of broadleaf swapped for a new clockwork kit: clockwork gnomes, clockwork spiders, tesla arcs, cave formations, and the zone's signature green glowing diamonds (faceted, lit from the upper left).
- The Feerrott is rainforest; Greater Faydark is temperate + coniferous.
Headline zones
- The Feerrott — the original optimized interior canopy restored intact (trail halos, tree pattern, title), then that same pattern stamped cell-by-cell into every bare band and margin cell. Jungle now runs frame to frame with knockouts around roads, the temple, Oggok's entrance, druid rings and every label. Bridges shaded with plank ticks; wiki-driven fauna placed.
- Najena — borders reworked. The margin was wall-to-wall dash hatch running straight through her banners; replaced with a cave treatment (violet rock scatter, a dense wall ring at the frame, stalactites and stalagmites), both banners clear, an undead/dark-elf figure ring, bats, and her signature bone and gold keys in the bottom corners.
- Splitpaw — POI pass from the wiki: named mobs, camps, and the safe room, all grounded.
The budget campaign — dedupe.py
New three-stage reducer: exact-duplicate removal, colinear chain merging, and near-duplicate squeezing. Verified visually lossless before it shipped. Brought hateplaneb 167k → 40k, and pulled Hole, Sol A/B, Guk (both), Ak'Anon and East Karana back under the ~31k client draw budget.
Release-prep fixes
validate_all.py had been pointing at a path that no longer exists — validating zero files and reporting all-clear. Repointed at the repo pack, which immediately surfaced two real defects: felwitheb_2 and kaladimb_2 had LF-only line endings (the client requires CRLF), and akanon_3.txt was a zero-byte layer.
The pack now validates clean: 79 zones, 273 layers, no format, color, or CRLF issues.
Known
Seven zones remain over the ~31k soft budget and are queued for design passes: feerrott (126k — full-ring jungle at true interior density), hateplane, soldungc, hateplaneb, gfaydark, butcher, nektulos.
Install: unzip maps.zip into your EverQuest Legends maps/ folder, then pick Emoda Maps in the map window's dropdown. (A client patch can reset that dropdown to default — if your zones look stock, check there first.)