Repository navigation
AllTheThings
5.4.5 (2026-10-25)
Full Changelog Previous Releases
- parse everything
- [MOP] The titanforged description was super weird.
- [Forever] Added a section for Forever's Beta Event in its NYI section.
- [Forever] Updated Wago DB to 1.60.1.70532.
- Fix a few minor errors
- [DB] Rebuilt all DBs for future comparisons.
- [Era] A bunch of races that aren't in the game yet no longer appear in the New Character section.
- Shadoweave Tailoring, Mooncloth Tailoring, and Spellweave Tailoring wasn't a thing until TBC.
- Pile of Candy was added in 12.1.5.
- [SOD] Cleaned up some stray bubble downs.
- Unbreak Parser
- While Decor itself was starting to get added in 11.2.7, Lumber Gathering became a thing after 12.0.0
- [VSC] Ignore Forever ItemDB export.
Correct the LuaLS ignore path for the generated Forever ItemDB.
Assisted-by: gpt-6-luna - [DB] WoW's 22nd Anniversary recurring content stubbed for if there is any
- [DB] Few more timeline tweaks
- [Parser] Timeline entries now include ordering by the Change when their versions are identical
[Parser] Inheritance of timeline entries now includes matching versions (i.e. ADDED_4_0_3 inheriting into REMOVED_4_0_3) - [DB] More timeline cleanups
- [DB] Revert some timeline stuff since it was too overzealous in cleaning
- [DB] More timeline cleanup
- [TBC] fixed timelines and objectives of:
The Book of the Raven
To the Evergrove
Return to Morthis Whisperwing
No Mere Dream
Eyes in the Sky
To Catch A Sparrowhawk
The Raven Stones - [Parser] Added with/withShared as shorter/more readable forms of 'applyDataSelf' and 'sharedDataSelf'
[DB] More timeline conversion - [DB] Simplify Trading Post Month headers to remove bubbleDown timelines
- [DB] More various bubbleDown timeline clean up with safer alternatives
- [DB] Use bubbleDownFiltered on recipe structures (for now at least) to prevent bad timeline merges
- [INFO] Remove bubbleDown timelines from Standard.lua
- [DB] Moved 'The Sundering' exploration to northern STV
- [Style] Normalize Harvester source files.
- Define scoped UTF-8, LF, and indentation rules for the seven selected sources.
- Trim Python trailing whitespace, align two dictionary closers, and add missing final newlines.
- Convert userscript and HTML indentation to tabs while preserving tokens, comments, and output strings.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- [DB] Fix Pre-launch events again with expansionHeader
- [Debug] Added commented test code for Filter performance analysis (can probably expand to be more in-depth etc.)
- [Logic] Filter adjustments for improved performance
- Filters are now rebuilt into an array based on estimated priority (as calculated from various helper logic Claude worked on) whenever a filter is set or unset
- In-lined the logic from ApplySettingsFilters to reduce function calls within hot-path filtering loops
- [Misc] Cleanup default field keys
[Logic] MinReputation & CustomCollect can use rawget since they're never dynamic and rarely assigned across the DB (this saves the class __index miss since it would never hit) - [Style] Normalize contributor tooling files.
- Define scoped text-formatting and line-ending rules for contributor tools.
- Convert normalize.js structural indentation to tabs while preserving its comments and literals.
- Store the Wago updater with CRLF line endings and add the roadmap final newline.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- [Data] Update Dun Morogh records.
Correct quest and objective coordinates.
Add Traditional Chinese object localization.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol - Update wago structure files to Vanilla, TBC, Lich and Cata
- [Style] Normalize DB sync tooling formatting.
- Add complete scoped policies for DB-sync Python, shell, and Markdown files, and set the README line ending to LF.
- Convert the two shell launcher indentations to tabs while preserving all other script text.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- [Style] Add final newlines to Harvester BAT files.
- Add final newlines to the five Harvester batch scripts.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- Add final newlines to the five Harvester batch scripts.
- [DB] Remove the WRATH pre-launch sort header since there's no data for it at this time
- [Parser] expansion shortcut now warns if the default timeline for its id is missing
- Fix a few reported errors
- Update The Oculus with InstanceHelper
- Update The Nexus with InstanceHelper
- [DB] Fixed timeline use for pre-launch events since expansion shortcut is no longer a default timeline
- [Wago] Simplified MOP Wago batch file to use the shared update script & re-harvested CSVs
[Wago] Simplified Forever Wago batch file to use the shared update script & re-harvested CSVs - [Wago] Updated Midnight wago update files & force-overwrite existing CSVs with sorting
- [Wago] Shared update batch now supports locale-based downloads
- Lorewalking: Titans
- [Wago] Added a base Wago Update script which can be called from versioned Wago update scripts to ensure the same behavior is performed regardless of version
- [Wago] CSV Cleaner updates
- No longer quits if a Regex file is not provided or is missing
- Reads CSV lines with newlines properly
- Some potential bug fixes
- Sorts the CSV records by the 'ID' column if existing (this should provide cleaner and easier to recognize Git diffs)
- [Style] Normalize Windows script indentation.
- Standardize PowerShell, CMD, and Batch indentation rules to four-column tabs.
- Reindent the CostMerge PowerShell tests and embedded C# code.
- Add the missing final newline to GameObjectCache-to-ObjectDB.ps1.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- [Style] Normalize Windows script policies.
- Use UTF-8 BOM and LF for both PowerShell scripts while preserving decoded content and EOF state.
- Define all seven EditorConfig properties for the nine first-party Windows scripts, consolidating only branch-added duplicate scopes.
- Enable trailing whitespace trimming for the five scoped Harvesters BAT files while retaining the broader exception for other Harvester paths.
- Keep CMD and Batch scripts BOM-free with CRLF.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- [Style] Normalize GitHub workflow formatting.
- Add scoped EditorConfig and Git attributes policies for workflow YAML files.
- Correct artifact-upload and fetch-depth indentation and add the missing final LF while preserving parsed values and scripts.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- Lorewalking: Tyr
- PTR: Parse
- PTR: Update Wago
- [Style] Set GitHub metadata formatting rules.
- Add scoped UTF-8, LF, and two-space EditorConfig rules for Dependabot and issue template YAML.
- Set Git text and LF attributes for those paths while preserving workflow settings and the five already-compliant YAML files.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- [Style] Normalize developer tooling formatting.
- Add scoped UTF-8, LF, and four-column tab rules for VS Code JSONC and Git hooks.
- Normalize three VS Code files and the sync hook while preserving settings, comments, and commands.
- Add the missing launch configuration newline and preserve both hook modes and the existing LF rule.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- [Style] Normalize root file formatting.
- Add complete root-only EditorConfig and Git EOL policies while preserving existing nested and binary rules.
- Normalize YAML whitespace and indentation, the TOC and batch line endings, and the missing YAML final newline.
- Use four-column tabs in JSON and root scripts, with explicit root indentation rules that preserve Markdown spaces.
- Preserve file content, documentation, loading order, and existing Lua/XML/assets behavior.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- [Parser] Fixed Min/Max propagation if there are groups with no value for the hierarchical field
- [Forever] Adjusted the config to ignore hierarchy consolidation as it is currently a pristine timeline environment and doesn't need any help being so efficient.
- [Parser] Updated to always load the root config first, followed by the baseconfig, and the main config last.
- Assigned a default timeline to each root.
- [TBC] Fix the tracking of No Mere Dream and the maps the Waking the Sleeper
- [Parser] Missed some code from previous parser build commit
- [DB] Many manual bubbleDown timelines fixed/removed
- Use REMOVED-only timelines for Wrath crafted items, Guild Level 25 and Parrlok
- Wrath Jewelcrafting/Blacksmithing items (158) and Realm First! Guild Level
25 inside #if blocks: their profession/achievement header gets ADDED_* from
a wrapper outside any #if, so { REMOVED_4_0_3 } is enough in every build - Parrlok (Discord promotion) keeps its exact removal build:
{ "removed 11.0.2.56513" }, inheriting ADDED_11_0_2 from the promotion
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- Wrath Jewelcrafting/Blacksmithing items (158) and Realm First! Guild Level
- [Style] Normalize runtime XML formatting.
- Set UTF-8, LF, and tab-based policies for the three runtime XML files.
- Normalize line endings and correct two script-entry indents while preserving load order, XML values, and embedded binding Lua.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- [DB] Various timeline cleanup
- [Style] Treat assets as binary resources.
- Clear inherited EditorConfig text-formatting rules for asset paths and BLP, OGG, and WAV files.
- Mark asset paths and those extensions as binary so Git disables text conversion, diffs, and merges.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- Use REMOVED-only timelines where an ancestor already has the ADDED entry
With the smarter parser timeline inheritance, nested content can carry just
the REMOVED entry when a higher element has the matching ADDED entry.
Converted 1,192 { ADDED_X, REMOVED_Y } timelines to { REMOVED_Y } where the
nearest timed ancestor is exactly { ADDED_X } and every merged copy of that
ancestor agrees. Skipped entries inside #if blocks whose ancestor isn't in
the same branch, and anything under an unavailable u.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS - [DB] Fix weird Barrens timelines for parses between 4.0.3 and 10.1.7
- [DB] Cleaned up various weird timeline situations
- [Parser] Improved timeline inheritance
- Timeline entries can now partially-merge into their children which already define a partial timeline in order to produce a valid timeline (this considers expected alignment of timeline entries and never merges into CREATED timelines)
- The existing WARN if a processed timeline starts with a REMOVED entry is now no longer confined to 8.0.0 or higher (Retail parse is clean of this warning now due to the partial-inheritance of timelines)
- [Style] Set test and locale Lua formatting.
- Add UTF-8, LF, and tab-based policy for direct-child tests and locales Lua files.
- Convert the seven scoped Lua files from CRLF to LF without changing source content.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- [DB] Fix a weird DM timeline
- [Forever/Vainilla/TBC] Fixed minilist to the Hall of Legends
- Restore timelines on single-reference parents; filters and items carry their fields
- Parents that previously got their timeline from bubbleDownSelf and only
appear once in their hierarchy carry the timeline again instead of passing
it to their children through sharedData (148 parents, HQT included).
Parents reused with differing timelines keep sharedData, as does an
expansion() parent, which ignores its own timeline. - filter() timelines in bubbleDown/bubbleDownSelf use sharedData (BfA PvP
reagents, TWW Delves, Dalaran recipes, PvP rated recipes) - Items using bubbleDownSelf carry the fields themselves (Draenor profession
books in shared/lib/Structures/Professions, Group Finder satchels, Small
Corpsefly Egg)
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- Parents that previously got their timeline from bubbleDownSelf and only
- [Style] Normalize logic Lua formatting.
- Scope UTF-8, LF, and tab policies to AllTheThings.lua and Lua files
under lib/ and src/, preserving legacy rules for other paths. - Normalize tab indentation and trailing whitespace while preserving
intentional alignment. - Remove leading blank lines and keep exactly one terminating newline.
- Limit consecutive internal blank lines to two.
Assisted-by: gpt-6-luna
Assisted-by: gpt-6.1-sol
- Scope UTF-8, LF, and tab policies to AllTheThings.lua and Lua files
- [Mop/Retail] Bump wago files to 5.5.4.70579 and 12.1.5.70575
- Update Pit of Saron with InstanceHelper
- Fix a few minor errors, update ToyDB to 12.1.7.70493
- [Parser] Added a 'HierarchicalPass' stage so we can consistently apply hierarchical adjustments following all other stages
[Parser] Don't apply 'awp' directly to Headers with groups since they aren't Things we allow their content to hierarchically-define their expected 'awp' value
[Parser] Moved Hierarchical Adjustment config settings to root instead of retail since they are based on the resulting addon logic, which is shared by all versions of ATT
[Parser] Added 'awp' to the HierarchicalMinimumFields so that the minimum value awp can be shifted up to a higher hierarchy even when different 'awp' values are at the same layer (helps to further reduce unnecessary 'awp' field assignments on child groups) - Revert "[VSC] Disable final newline rendering."
- [DB] Added a timeline to a strange situation that ended up wrong without a timeline
- [VSC] Disable final newline rendering.
- [DB] Give Kalimdor and Eastern Kingdoms a timeline
- [Parser] HierarchicalMaximumFields (unused) was using the wrong internal functionality
- [DB] Use expansionHeaders where the timeline is not expected to be the same as the expansion so it stops being wrong without the _defaulttimeline value
- Put bubbleDownSelf fields directly on quests
- 32 quests used q(id, bubbleDownSelf({ ... }, { ... })) to set their own
fields; the fields now live on the quest itself:- timeline + minReputation on the BfA emissary supply quests
- minReputation on the Legion, Argus, Nazjatar, Mechagon, Shadowlands,
N'Zoth assault and Iskaara Community Feast quests - customCollect on the Korthia covenant mount quests
- races on the PvP Alliance/Horde Slayer quests
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- 32 quests used q(id, bubbleDownSelf({ ... }, { ... })) to set their own
- [Fix] Normalize Khaz Algar quest line ending.
Remove the isolated carriage return from the War Within achievement header in the Khaz Algar quest file. Normalize its staged line ending to LF without changing Lua code or data.
Assisted-by: gpt-6.1-sol - [Fix] Remove Forever Beta cache reset.
Remove the Forever-era one-time reset of derived character identifiers.
Update linked identifier tests to preserve cached identifiers on initialization and verify rebuilds for logins, renames, realm changes, and alts.
Assisted-by: gpt-6.1-sol
Assisted-by: gpt-6-luna - Removed the bubbleDownSelf from the petbattles and battlepets functions.
- Drop redundant timeline wrappers from NYI patch-form expansion blocks
- expansion(EXPANSION.X, patch(...), bubbleDownSelf({ timeline = { CREATED_* } }, ...))
under ROOTS.NeverImplemented: the root already applies the never-implemented
flag, so the CREATED_* wrapper is redundant (921 blocks) - ADDED_* wrappers in the same form (Sourceless, Unsorted, Hidden Achievement/
Currency Triggers): patch() already generates the matching ADDED timeline - Includes manual NYI fixes for blocks whose ADDED value differed from patch()
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- expansion(EXPANSION.X, patch(...), bubbleDownSelf({ timeline = { CREATED_* } }, ...))
- Revert "Adjusted the logic for Sourceless not to put the sharedDescription on anything but headers."
- Adjusted the logic for Sourceless not to put the sharedDescription on anything but headers.
- Move timelines out of bubbleDown/bubbleDownSelf across the standard DB
- Remove 469 timeline bubbleDown/bubbleDownSelf wrappers (202 files): put
the timeline on the element that owns it, or rename the wrapper to
sharedData when it only reached direct children; 3+ siblings sharing a
value use sharedData. Wrappers that also carry other keys keep those. - Left untouched where a move would change data (merge gains/losses on
shared headers, enclosing kept wrappers or timeline events, no safe
insertion point, comments in the wrapper), plus #if spans and 17 - NYI. - Stuffed Deviate Scale Pouch carries ADDED_10_1_5 itself
- TWW/Midnight World Drops, TWW Level 70 Boost, TWW Heroic Edition HQTs and
Khaz Algar quests use the expansion/zone default instead of 11.0.0/12.0.0 - Drop dead 4th-argument timelines on three Khaz Algar achievement headers
- Weapon Master headers carry REMOVED_4_0_1 directly
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- Remove 469 timeline bubbleDown/bubbleDownSelf wrappers (202 files): put
- Keep HiddenQuestTriggers timelines off merged headers
- Remove timelines from generic HQT headers (expansion, class, continent and
launch-zone maps, QUESTS/RARES/WORLD_BOSSES/PVP/DELVES/HOUSING/etc.) and
push them onto the elements below, so merging no longer bleeds them - Replace the 67 timeline wrappers that stamped HQT headers (bubbleDownSelf,
timelineSelf, applyDataSelf) with direct timelines, or sharedData when 3+
siblings share one - Give patch-specific maps/headers one base timeline across every copy
(Nazjatar/Mechagon 8.2.0, N'Zoth assaults 8.3.0, Argus 7.3.0, Isle of
Thunder/Giants 5.2.0, Timeless Isle 5.4.0, Tanaan 6.2.0, Siren Isle 11.0.7,
Undermine 11.1.0, K'aresh 11.2.0, Coiled Isle 12.1.0, raid instances) - Drop default-equal wrappers and child timelines that repeat their base
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- Remove timelines from generic HQT headers (expansion, class, continent and
- [DB] Reparsed yet again for another comparison base.
- Reverted expansion update to not brick classic parser.
- [DB] Example expansionHeader to clean up Timewalking listings
- Merge remote-tracking branch 'origin/master'
- Prune default-equal expansion timelines and fix bleeding zone/HQT timelines
- Prune expansion() wrapper timelines that match (or are close enough to)
the expansion default: WRATH 3.0.2, CATA 4.0.3, LEGION 7.0.3, BFA 8.0.1, etc. - HiddenQuestTriggers: move timelines from wrappers onto the zone header
(Silithus: The Wound 8.3.0, Nazjatar/Mechagon 8.2.0, Isle of Thunder 5.2.0,
Timeless Isle 5.4.0, Argus 7.3.0) so they no longer bleed onto the
expansion header - Honeyback Hive: 8.2.5 lives on the faction header, not the shared maproot
- Argus: use the 7.3.0 base from metadata; drop redundant sub-zone and
shared-header timelines - Mechagon Factions: inherit 8.2.0 from Mechagon instead of 8.0.1
- Level 48/50/100/110 boost and class trial files: timelines on the headers
- Brewfest: put the timeline on the quest (fixes empty sharedData error)
- Includes other in-progress .db/standard edits
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- Prune expansion() wrapper timelines that match (or are close enough to)
- [DB] Fixed timelines of Mole Machine listing
- [Parser] Reverted _defaulttimeline removal on expansion shortcut so that they work as expected again
[Parser] Added an expansionHeader shortcut for special cases where a non-default timeline needs to be applied to an expansion object (simpler way of structuring expansion + forcetimeline) - Move bubbleDownSelf timelines onto auto headers
- header(HEADERS.X, ID, bubbleDownSelf({ timeline = ... }, { ... })): the
timeline now sits on the header itself (113 headers; bare child lists get
a 'groups' field). bubbleDownSelf already stamped the header, so only
its contents change (they now inherit). Harandar's quest header and two
Heritage headers keep a bubbleDownSelf for their other keys. - Zul'Aman's The Curse of Ula'tek (62297 / 62413 by #if): each branch's
header carries its own timeline; the shared body is wrapped in groups. - Allied Races' header and Rise of the Red Dawn's expansion() had outer
timeline wrappers that would re-stamp the new header timelines' contents;
moved onto the header / its child. - Duke Hydraxis (Molten Core): NPC timeline moved off its bubbleDownSelf.
Also includes Crieve's edits under .db/standard (Molten Core's Duke
Hydraxis applyclassicphase, Siege of Orgrimmar's a()/h() achievements, and
any others made at the same time).
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- header(HEADERS.X, ID, bubbleDownSelf({ timeline = ... }, { ... })): the
- Move bubbleDownSelf timelines onto NPCs
- n(npcID, bubbleDownSelf({ timeline = ... }, { ... })) for positive numeric
NPC IDs: the timeline now sits on the NPC itself (115 NPCs). Header n()
calls are left alone. bubbleDownSelf already stamped the NPC, so only its
contents change (they now inherit). - Ogom the Mangler: also move its #if AFTER 8.0.1 isBounty onto the NPC and
drop the wrapper. - Celestial Dungeons' CELESTIAL_DUNGEON_DIFFICULTY and Diablo Events'
GREEDY_EMISSARY_EVENT headers had bubbleDownSelf timelines that would
re-stamp the narrower NPC timelines' contents; their timeline moves onto
the header (already stamped, so unchanged there). - Fix 19 floating '{' lines left by the conversion.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- n(npcID, bubbleDownSelf({ timeline = ... }, { ... })) for positive numeric
- Move bubbleDownSelf timelines onto items, achievements and objects
- i/ach/o(ID, bubbleDownSelf({ timeline = ... }, { ... })): the timeline now
sits on the element itself (61 items, 196 achievements, 77 objects; bare
child lists get a 'groups' field). bubbleDownSelf already stamped the
element, so only its contents change (they now inherit). - 17 outer timeline wrappers that would otherwise re-stamp those elements'
children were converted too: 14 n/header/m owners (bubbleDownSelf or
keyed, so the owner was already stamped) and 3 expansion() owners
(timeline moved onto their direct children). - Fix floating '{' lines left by the conversion (39) and in Lunar
Festival's preWrathEldersHeader (2). - Fix the indentation of two inserted timeline lines (and their ToDo
comments) in MoP Achievements.
Skipped: two Pet Battles achievements whose timeline sits inside
#if NOT ANYCLASSIC, and two Group Finder satchels with mixed tables.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- i/ach/o(ID, bubbleDownSelf({ timeline = ... }, { ... })): the timeline now
- Move bubbleDownSelf timelines onto instances and encounters
- inst(ID, bubbleDownSelf({ timeline = ... }, { ... })) -> the timeline sits
on the inst() itself (11 instances: SoD Nightmare Grove, Scarlet Enclave,
Demon Fall Canyon, Karazhan Crypts; TBC Zul'Aman; the six Cata raids). - e(ID, bubbleDownSelf({ timeline = ... }, { ... })) -> same for 12
encounters (Vault of Archavon, Baradin Hold, MoP world bosses, Siege of
Boralus). Ordos keeps a bubbleDownSelf for its #if AFTER WOD 'u'. - Remove the empty bubbleDownSelf({ }, ...) wrappers in Azjol-Nerub and
Liberation of Undermine.
bubbleDownSelf already stamped the element itself, so the instances and
encounters keep their timelines; their contents now inherit them.
Also includes Crieve's edit to The Mechanar.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- inst(ID, bubbleDownSelf({ timeline = ... }, { ... })) -> the timeline sits
- Use maproot() for standard zone files
Replace root(ROOTS.Zones, m(CONTINENT, { m(ZONE, { ... }) })) chains with
maproot(CONTINENT, ZONE, { ... }) in 911 zone files (layers are followed
while each holds only the next m(); a wrapper on the last layer is passed
through as maproot's final argument). Verified structurally identical to
the previous nesting, ignoring whitespace and trailing commas.
Timeline wrappers inside maproots:- bubbleDownSelf / keyed bubbleDown: timeline moved into the maproot data
(the zone was already stamped). - plain bubbleDown over a child list (almost all at continent level):
never stamped the continent, so the chain is extended onto the single
zone (maproot(DRAGON_ISLES, VALDRAKKEN, { timeline = ..., ... })) or the
timeline goes onto each zone, instead of onto the shared continent. - Pandaria (The Wandering Isle), Shadowlands (Oribos Professions) and
Khaz Algar (Quests) no longer stamp their continent: the timeline moves
onto the zone, or onto the quests under Khaz Algar's shared QUESTS header.
Also includes Crieve's concurrent edits to these files.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- bubbleDownSelf / keyed bubbleDown: timeline moved into the maproot data
- [Classic] Fixed Wrath of the Lich King achievement timelines for First Aid.
- [DB] Reparsed all DBs for future comparisons.
- Added "pvp" to thje HierarchicalNonRepeatFields list. A reparse is coming shortly for future comparisons.
- [Anniversary] 2026 Hallow's End rings
- Fix a few minor errors
- Don't stamp timelines onto shared continent headers
082c3fd moved timelines from plain bubbleDown wrappers onto their
owner. A plain bubbleDown over a bare child list only stamps the
children, never the owner, so for 35 continent-level m() headers (Dragon
Isles, Shadowlands, Kul Tiras, Zandalar, Broken Isles, Draenor) the owner
gained a timeline it never had - and since every zone file merges into
those headers, they picked up mixed timelines (the same bug as the
Battlegrounds header fixed in 41130c0).
Move each timeline back off the continent and onto its direct children,
matching what the original wrapper stamped. The Primalist Future also
restores its 10.0.5 timeline on its sub-headers (rares via sharedData).
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS - Use battleground() for standard battleground files
Replace root(ROOTS.PVP, pvp(n(BATTLEGROUNDS, { m(MAP, { ... }) }))) with
battleground(MAP, { ... }) in the 19 battleground/brawl files that declare
a map (phased ones become battleground(MAP, applyclassicphase(PHASE, {...}))).
Isle of Conquest and Strand of the Ancients also move their timeline from
a bubbleDown wrapper onto the map.
battleground() doesn't apply pvp(), so standard's PvP root header now
gets pvp() like Forever's (.config/.main.lua). Training Grounds and the
battleground rewards declare n() headers and keep their root() form.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS - Fixed an issue that caused by a bad bubbleDown transplant that was causing all Battlegrounds to disappear pre-Cata.
- Fix parser errors in Scholomance and Halls of Stone
- Scholomance: SCHOLOMANCE_LEGACY_DATA is now a plain array (its
bubbleDownSelf wrapper was removed in 082c3fd), so iterate it
directly instead of its no-longer-existing .groups field. - Halls of Stone: restore the closing paren for root(expansion(
applyclassicphase({...}))), lost when the InstanceHelper rewrite
(9522e9f) and the instance timeline change (badbcaa) combined.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- Scholomance: SCHOLOMANCE_LEGACY_DATA is now a plain array (its
- Move timeline-only bubbleDown data onto difficulties
Same treatment as instances: d(ID, bubbleDown({ timeline = ... }, { ... }))
now carries the timeline on the d() itself (bare child lists get a
'groups' field), and wrappers around groups of d() elements (Revival
Catalyst Console) put the timeline on each difficulty.
Re-running the outer-wrapper pass afterwards also converted the Season 4
header() wrapper above the Revival Catalyst difficulties and one instance
wrapper that would otherwise have re-stamped the new difficulty
timelines' children.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS - Move outer bubbleDown timelines onto their elements
A timeline bubbleDown wrapping a zone/instance/header stamps its value on
every descendant without a timeline, overriding what nested timed
elements would pass down through inheritance. This also regressed 86
quests converted in 9b0337a, whose inner wrapper had been shielding
their children from the outer one.
For every timeline wrapper that encloses a timed element with children:- m/inst/n/header/d/race owners: move the timeline onto the element
(bare child lists get a 'groups' field); other wrapper keys are kept. - expansion() owners: drop wrappers equal to the expansion default, and
move non-default timelines onto the direct children (expansion()
discards its own timeline). - Season of Discovery, Argent Tournament, MoP Warlock, Crafted Items TBC,
Scholomance legacy data and the Collector's Edition Classic block:
timeline moved onto the direct children. - Broken Shore: the zone is 7.0.3, so its 7.2.0 exploration and world
quests keep ADDED_7_2_0 via sharedData on those headers.
Where a removed bubbleDownSelf sat under applyclassicphase, the phase now
lands on each child instead of the shared header. The Scourge Invasion
bubbleDownFiltered is left as-is.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- m/inst/n/header/d/race owners: move the timeline onto the element
- [Parser] Filter-based Recipe conversion now ignores 'type'-flagged groups (these are expected to convert into a specific Type) [after compile]
- [Parser] Adjustments that don't require compiling yet
- Revised exception wording when failing to merge an array value
- Check null input using is for parsing array value
- Use debug warn for the automatic conversion of Sourced objective-item into qis when flagged by Blizzard as a 'Quest Item' (once cleaned up we can make a regular warn)
- Update Halls of Stone with InstanceHelper
- Wrap bare timeline constants in braces
'timeline' is an array; replace 'timeline = ADDED_X' with
'timeline = { ADDED_X }' wherever the value is a single global timeline
constant. File-local constants that are already tables (TIMELINE_LFR,
REMOVED_WITH_CATA in Onyxia's Lair, etc.) are left as-is.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS - Move timeline-only bubbleDown data onto instances
Instance files wrapped their inst() in bubbleDown/bubbleDownSelf({ timeline
= ... }), which stamped that timeline onto every descendant without one,
overriding timelines that sub-groups pass down through inheritance (e.g.
Magtheridon's Black Sack of Gems contents got ADDED_2_0_3 instead of
ADDED_2_4_0). Move the timeline onto the inst() itself and drop the
wrapper; instances with a bare child list get a 'groups' field.
Side effects in parser output:- Children of timed sub-groups now inherit the sub-group's timeline.
- Explicit child timelines no longer clear 'u = REMOVED_FROM_GAME' on
their parents (Blackrock Foundry, Emerald Nightmare achievements). - Where the wrapper was bubbleDownSelf inside applyclassicphase, the
classic phase now lands on each inst() instead of the shared expansion
header, matching files that used plain bubbleDown.
The SL 9.0.1 block in NYI Sets keeps its wrapper since it covers many
non-instance headers.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS
- Adjusted some timelines in Onyxia's Lair.
- Adjusted timeline assignments for A Hero's Reward in Molten Core.
- Adjusted the Earth to Earth quest in Shattrath City.
- Move timeline-only bubbleDown data onto quests
Quests wrapped in bubbleDown/bubbleDownSelf({ timeline = ... }) now carry
the timeline directly, since children inherit it. The timeline goes before
the first of races/classes/maps/lvl/cost/groups (and similar), matching
existing quest field order; quests passing a bare child list get a
'groups' field.
Skipped: quests whose own timeline differs from the wrapper's (Onyxia's
Lair, Shattrath 41160), a wrapper timeline containing a preprocessor
block (Molten Core), and subtrees with u = NEVER_IMPLEMENTED,
REMOVED_FROM_GAME or CONDITIONALLY_AVAILABLE.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS - [DB] Missing awp for Classic timeline
- [DB] Fix timelines in First Aid file
- Cleaned up the timeline assignments for the Tier 0.5 sets.
- Prune quest descendant timelines that match their ancestor
Extend the quest timeline pruning to a quest's whole subtree: remove a
descendant's timeline when it exactly matches its nearest timed ancestor,
collapse children left with no other fields, and unwrap tables left with
only a 'groups' field.
Same guards as before: nodes with their own 'u' (and their subtrees),
timelines inside a preprocessor block, and function-built child lists are
left alone.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS - Prune quest children timelines that match their quest
Timelines are inherited, so a direct child of a q/quest/hqt whose
timeline exactly matches the quest's own is redundant. Remove it, and
collapse children left with no other fields to bare calls.
Skipped: quests or children with their own 'u' (an explicit child
timeline clears the quest's 'u'), quest timelines inside a preprocessor
block, and child timelines in a different preprocessor branch than the
child itself.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS - [DB] Rebuild DB for future comparisons.
- Add GenerateOnUpdateRemovedWithPhase function template
Replace the inline OnUpdate functions that mark a group Removed From
Game while a phase's Unobtainable Filter is active (otherwise clearing
'u' and assigning 'rwp') with
FUNCTION_TEMPLATES.GenerateOnUpdateRemovedWithPhase(phaseID, rwp),
which registers a shared function in ExportDB.OnUpdateDB.
Onyxia's Lair 40-man now uses the template too, dropping its Classic-only
description.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS - Revert "The Labyrinth: Timeline out Fabled Achievement"
- It was changed to Second Reset
- This reverts commit ce94378.
- The Labyrinth: Timeline out Fabled Achievement
- Archeology - No longer using bubbleDownSelf for timeline.
- Inscription - No longer using bubbleDownSelf for timeline.
- Hallow's End: Restore Faction Buckets under respective faction headers
- Add the proper provider for Horde Bucket
- Ref: ee33edf
- [DB] Fix a bad expansion header
- Hallow's End: Fix a bad provider type for Candy Bucket
- Fixed a bug with expansions caused by _defaulttimeline not working correctly.
- Phase 4 of TBC anniversary
- Strip redundant timelines from expansion headers
expansion() discards a timeline set on itself and falls back to
EXPANSION_DEFAULT_TIMELINES, which children inherit via InheritingFields.
Remove bubbleDown/bubbleDownSelf timeline wrappers (and direct timeline
fields) on expansion headers whose timeline equals the expansion default.
For WOD, ADDED_6_0_2 and ADDED_6_0_3 are treated as equivalent.
Headers whose nested groups carry their own timeline or a u =
REMOVED_FROM_GAME / NEVER_IMPLEMENTED value are left as-is, since
removing the wrapper there would change parser output.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01V6K41tQzmedr4ohuFGnoFS - [TBC] Fix tracking of objectives
- [TBC] Fix the tracking of Netherwing Crystals
- [TBC] fix the tracking of The Great Netherwing Egg Hunt
- [DB] Classic builds now utilize the new phase field.
- [Phases] Move release phases to a phase field.
Release phases (PHASE_ONE, TBC_PHASE_TWO, ...) were stored in the
unobtainable 'u' field. They now use a dedicated 'phase' field, and 'u'
only holds unobtainable reasons.
Parser:- Validate, merge and export 'phase' alongside 'u', including achievement
criteria and ItemDB/NPC merges. - Warn about and move release phases still assigned to 'u'; error when
'phase' holds an unobtainable reason. - 'phase' is a HierarchicalNonRepeatFields entry, so children inherit it.
Database: - applyclassicphase and the recipe helpers set 'phase'.
- OnUpdate functions that toggle REMOVED_FROM_GAME no longer assign a
phase; Season of Discovery checks set 't.phase'.
Addon: - New Phase filter, sharing the Unobtainable settings so saved phase
choices are kept. - New phase tooltip information type, phase status icons, merging and
cloning support; New With Patch and Season of Discovery windows read
'phase'.
Assisted-by: Claude Opus 5.5
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XU6d7kXjP2HpHbyDAUv3Cc
- Validate, merge and export 'phase' alongside 'u', including achievement
- [Contrib] standardize coord and map placeholders.
Use decimal coordinate placeholders (XX.X, YY.Y) and MAPID_CONSTANT consistently across quest, rare, and treasure templates. - [Contrib] Updated Standard.lua templates to use field = instead of ["field"] =
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_015oEAmXPUvov6EjVDFxB5ny - [DB] Simplified table field declarations from ["field"] = to field =
Converted bracketed string keys to plain identifiers wherever the key is a
valid Lua identifier and not a reserved word. Keys with spaces, punctuation
or other non-identifier characters keep the bracketed form. The externally
generated 00 - Item DB/.dynamic files are left untouched.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_015oEAmXPUvov6EjVDFxB5ny - [Parser] Pushed up two config tags for ObjectDB harvesting
- DoConsolidateObjectDB - Harvested locales are stored directly into ObjectDB rather than dynamic files
- DoRetryObjectDBMissingThreshold - Defines how many missing locales for an object will trigger a retried lookup from Wowhead on next parse
- [DB] Rebuilt all dbs again for more future comparisons. (Standard DB cleanup coming shortly.)
- Update Halls of Reflection with InstanceHelper
- [DB] Add WoW: Forever Skyborne Heroic and Epic Pack rewards
Forever:- New promotions file with the Skyborne Heroic Pack (Cerulean Prideclaw,
Shen'dorei Skyseer's Garb, Shen'dorei Windwell, Veteran Adventurer's
Rucksack) and the Skyborne Epic Pack (Veteran Adventurer's Loyal
Companion and Outdoor Wear, Lordaeron Forever and Shen'dorei Tabards,
and the Zergling, Panda Cub, Mini Diablo and Pachimari pets), using
their Forever item IDs. - Register the Forever mounts in MountDB, the Windwell in ToyDB and the
four pets in PetDB. - Include the parsed Camelot database.
Shared/Standard: - Move the Collector's Edition, Heroic Edition, Epic Edition and
World of Warcraft: Forever headers into shared/lib/Headers/Promotions
so both databases can use them. - Drop the dead #if FOREVER blocks from the standard Collector's Editions
file and note that the two tabards are Forever exclusives.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- New promotions file with the Skyborne Heroic Pack (Cerulean Prideclaw,
- [DB] Rebuilt Classic DBs for future comparisons.
- [Classic] Found another one.
- [Classic] Removed some strange unobtainable logic that's no longer relevant now that phases are inherited.
- [DB] Added coords and a confirmed NPC for Technique: Mark of the Midnight Runestag
- Whoops.
- [Classic] applyclassicphase no longer uses bubble down as the u field is now inherited.
- Retired the bubbleDownAndReplace function completely.
- [DB] Rebuilt DBs for comparisons.
- Update Halls of Lightning with InstanceHelper
- Fix a few reported errors
- [DB] Rebuilt all DBs as the commit I'm going to do next has the potential to be very destructive.
- [Forever] Rebuilt the DB.
- [Forever] Add new zone drops, treasures and item chains
- Zone drops: trash gear in Ruins of Lordaeron, City of Dalaran and Hall of
Thanes (plus Hall of Thanes' food and drink), the Royal Tea, Root Tea,
Bear Brisket and Savory Whimsyfin Delight recipes. - Mathystral Amulet chain (Darkshore): fragments combine into the amulet,
which summons Baron Marinous at the Fathom Stone; he drops the Clouded
Water Globe, which now starts Baron Marinous (98028) via qs. - Rotheap Innards (Wetlands) trade to Rethiel the Greenwarden for the
Malignant Root. - Treasures: Dented Chest (Zephras Isle), Knife with the Keystone Fragment
(Undercity), Traveler's Cache (Stranglethorn, opened with the Brittle Key
from the new Hidden Stash in Stonetalon), Arena Spoils in the Gurubashi
Arena chest. - Vrang's Game: the Trapped Game objective lists the Sprung Trap object and
its coordinates. - Excavation Tools (86613) is started by the Excavation Tools item (qs).
- Herb seeds gathered from Peacebloom, Silverleaf and Briarthorn.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Zone drops: trash gear in Ruins of Lordaeron, City of Dalaran and Hall of
- [Forever] Add rare-dropped companion pets and their PetDB species
- Condor Hatchling (5167) from the Shaking Egg, dropped by Lord Condar in
Loch Modan. - Tallstrider Hatchling (5172), dropped by Strider Clutchmother in
Darkshore.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Condor Hatchling (5167) from the Shaking Egg, dropped by Lord Condar in
- [Forever] Add new rare drops and rares
- Add Forever's new loot to existing classic rares (the Barrens, Durotar,
Darkshore, Stonetalon, Tirisfal, Hillsbrad, Loch Modan, Alterac,
Silverpine, Ashenvale, Swamp of Sorrows, Thousand Needles, Feralas,
Wetlands, Elwynn, Mulgore and Redridge). - Add new rares with their loot: Den'dralass, Tel'daeor the Stormspeaker,
Fernfeather, Mystmane, Slydris, Snapbeak the Quick and The Lost One
(Zephras Isle); Blightsculler, Decrepit Harvester and The Condemned One
(Tirisfal); Stormherald Ukta, Thornstarter Igleg and Snarlsnout
(Mulgore); Wrathvine and Nightscreech (Teldrassil); Dustwind Eggtender
(Durotar); Dro'zem the Blasphemous (Redridge).
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Add Forever's new loot to existing classic rares (the Barrens, Durotar,
- [Forever] Add new boss drops in classic dungeons
- Scarlet Monastery: Interrogator Vishas, Bloodmage Thalnos, Houndmaster
Loksey and Arcanist Doan. - Razorfen Kraul (Roogug, Aggem Thorncurse), Razorfen Downs (Ambassador
Bloodrage) and Gnomeregan (Grubbis, Crowd Pummeler 9-60). - Camp Blueprint recipes from Cookie, Gelihast, Lady Anacondra, Lord
Serpentis and Houndmaster Loksey.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Scarlet Monastery: Interrogator Vishas, Bloodmage Thalnos, Houndmaster
- [Forever] Add new companion pets and their PetDB species
- PetDB (FOREVER section): Azure and Bronze Whelpling (57, 1563), Bitter
Baitling (5094), Brown and Red Ground Squirrel (5154, 5155), Jungle Boa
(5153), Plagued and Undercity Cockroach (5151, 5152), Prairie Wolf Pup
(5121), plus the Frosty and Viridian Lashling Buds (species still unknown). - Add the pet items to their sources: Halpa, Xan'tish and Jeremiah Payson's
pet stock, Mayhoa Skyhoof in Orgrimmar, Jang's Bitter
Baitling prize, and the Black Market's whelplings and Lashling Buds.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- PetDB (FOREVER section): Azure and Bronze Whelpling (57, 1563), Bitter
- [Forever] Add new vendor items and vendors
- Add new items to existing vendors (Darkspear Islands supplies, Pix
Xizzix's belts, Brave Stonehide tabards, Aisarra's Spiritcaller patterns,
Thunder Bluff ceremony supplies, Serrated Knife at the bow vendors). - Add new vendors: Dala Fairmaw and Rhylin Stonethorn (Mount Hyjal), the
Pack Kodo handlers, the Gadgetzan and Everlook quartermasters, Dalaran's
Alterac Mountains vendors, the Wetlands bartender and chef, the Zephras
Isle innkeepers, Dorb, Jenna, Nida Winterhoof, and Jang's Fishing
Extravaganza prizes. - List Simple Flour, Thick Logs and the Apprentice's Herb Pouch / Mining
Pack as common vendor items. - Fix Pattern: Trapper's Leather Belt's ID (252766) in the Merchant's Favor
recipe lists.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Add new items to existing vendors (Darkspear Islands supplies, Pix
- [Forever] Update coord of qg 658.
- Vindicaar/Vendors: Fix incorrect gold price on Decor
- Ref. 882b03c
- [Forever] Add SoD-origin quest chains and the remaining library books
- Add 17 Season of Discovery quests that Forever reuses: the Alliance
paladin Althalaxx Orb chain, the rogue Dead Drop quests, Terror of the
Desert Skies, No Honor Among Thieves, and both Storm, Earth, and Fire
shaman chains (rune rewards left out). - Add the 22 missing library book quests and include every book in the
Friend of the Library requirements. - Add each library book's object as a treasure in its zone, with the book
inside it.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Add 17 Season of Discovery quests that Forever reuses: the Alliance
- [Forever] Add new quest rewards and provided quest items
- Add 57 new Forever rewards to existing quests (ADDED_1_60_1 on items
whose quest predates Forever). - Add provided items (qi) for the Zephras Isle Taming the Beast, Call of
Fire, Embracing the Elements and class trainer note quests. - Fix A Friend of the Family's Menethil Statuette ID (279598) and use the
provided Titan Relics (287958/287959) on Earthen Echo / Prehistoric Prism.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Add 57 new Forever rewards to existing quests (ADDED_1_60_1 on items
- [Forever] Add new crafted items and Winter Veil patterns
- Crafted items: Blacksmithing plate and Mithril Claymore, Leatherworking
leather sets, Engineering 9-60 Battery Pack, Winter Clothes/Boots, and new
Cooking, Fishing, Herbalism and Mining sections (new dishes, smelting,
crafting stations). Fix the over-indented Leatherworking leather list. - Feast of Winter Veil: Green/Red Winter Clothes and Winter Boots patterns
in the mailbox, with their profession DB recipe links. - headerIDs: assign Trade Logistics, Craftsman's Writs and Waylaid Crates.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Crafted items: Blacksmithing plate and Mithril Claymore, Leatherworking
- [Forever] Group Craftsman's Writs and Waylaid Crates under Trade Logistics
- Add a shared TRADE_LOGISTICS header (Merchant's Favor icon) for the
Azeroth Commerce Authority / Durotar Supply and Logistics systems. - Nest the Craftsman's Writs and Waylaid Crates features under it.
- Add the Uncertified Scribe vendors (Forged Delivery Receipt, Forger's
Quill) in a new trade logistics.lua. - Add Crate Return (93862) as CREATED, turning in a Notarized Shipping
Container.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Add a shared TRADE_LOGISTICS header (Merchant's Favor icon) for the
- [Data] Add the Forever Waylaid Crates as an expansion feature.
- List the Waylaid Crate and its 30 typed crates (Gathering and Crafted, by tier) with the Sealed crate each one becomes.
- Move the six "A Sealed Crate" quests and the two Shipping Label quests out of Redridge and the Barrens; the crate turn-ins use aqd/hqd (Marcy Baker / Dokimi) and list their Merchant's Favor rewards.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- [Data] Add the Forever Craftsman's Writs as an expansion feature.
- Add all 150 Craftsman's Writ daily quests, grouped by profession, each started by its writ item (qs) with the crafted item as its cost.
- Include the known customers (cr + coord) and Coin Pouch rewards; writs without a known customer have a TODO.
- List the writs inside their Sealed Journeyman's, Expert's and Artisan's Writ envelopes.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- [MoP] Bump wago files to 5.5.4.70531
- [Data] Add placeholder instance files for the new Forever dungeons.
- Krol'dok Stronghold, Alcaz Prison, Blackmaw Hold and The Shaper's Terrace: placeholder instance IDs (78792-78795), Blizzard's level ranges, and their final bosses from the Spelunker achievements.
- Manor Mistmantle: map 3109 / zoneTextAreaID 17191; not on the launch list, so marked CREATED.
- The Drowned City: set the level to Blizzard's 35-40 range.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- [Data] Add a placeholder instance file for The Drowned City.
- Placeholder instance ID (78791); the dungeon isn't in the client's Map/AreaTable/DungeonEncounter data yet.
- Add its five quests (four unconfirmed, marked CREATED) and a commented encounter template for Var'Taka and the final boss (260274, from Experienced Spelunker).
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- [Data] Add the remaining unconfirmed Forever quests outside the Craftsman's Writs.
- Lunar Festival: Frostleaf the Elder and Mossheart the Elder.
- Stranglethorn Fishing Extravaganza: the three Tip the Scales quests.
- Feast of the Winter Veil: A Winter Veil Gift.
- Elwynn Forest: Camping 101: Engineering (98287), and name its entry in the other engineering altQuests lists.
- Zephras Isle: Welcome!, The Malfunctioning Construct, Hopping Helpers and Valanaar Vintages.
- Alterac Mountains: Message from the Supreme Magister.
- All are marked TIMELINE.CREATED_1_60_1 until a quest giver is confirmed.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- [Data] Remove the duplicate Beasts of Thunder Ridge quest from Durotar.
- Keep the Orgrimmar entry (where Kamari stands) and add its level requirement.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Keep the Orgrimmar entry (where Kamari stands) and add its level requirement.
- Fix some reported errors, clean some formtting
- [Logic] Swapped a potentially double-recursive call for cost calculations into a single-recursive stand-alone filter function
- [Logic] Cleanup and localize some Filter function usage
- old removed, now obtainable again, achievement found in a brawl
- Fix a few minor errors
- [FOREVER] Reparsed the DB.
- [Data] Add more missing Forever quests and refine quest sourcing.
- Add 62 missing Forever quests (Ashenvale, Hillsbrad/Alterac, Redridge, Swamp of Sorrows, Orgrimmar, Arathi, Wetlands, Barrens, Undercity, Silverpine, Feralas and others), plus 6 missed Druid/Shaman class quests.
- Add an n(QUESTS) header to Mount Hyjal.
- Mark unconfirmed quests (no quest giver on Wowhead yet) as TIMELINE.CREATED_1_60_1.
- Use qs for item-started quests (Goliath's Wristguards, Singed Note, Advertising License Applications) and add their drops to ZONE_DROPS.
- Use qi for provided quest items instead of objectives.
- Add object/creature sources and coordinates to quest objectives.
- Add the Murloc-hide Gloves reward to Deep Ocean, Vast Sea and the 1.60.1 timeline to Forever profession book rewards on starter quests.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- [Data] Use the Forever class race constants on Horde Shaman and Alliance Paladin quests.
- Replace HORDE_ONLY with HORDE_SHAMANS on 32 Horde Shaman quests and ALLIANCE_ONLY with ALLIANCE_PALADINS on 29 Alliance Paladin quests (starter zone quests in Durotar, Mulgore and Zephras Isle are unchanged for now).
- Add the Darnassian Knife reward to WANTED: Jai'vhanel in Darkshore.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- [Data] Restructure A Moon-Kissed Blade, move Research Access, and drop lvl = 1 in Forever.
- A Moon-Kissed Blade: mirror The Test of Righteousness (2/3); nest Seeking the Kor Gem under it, add the Goblin Woodcarver and Kor Gem droppers, and describe where the Enchanted Silver Ingot is in Shadowfang Keep.
- Move Research Access to the Library Books feature, which already swaps the librarian by faction.
- Remove lvl = 1 from the Forever DB; players can't be below level 1.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- [Data] Add the missing Forever class quests and class race constants.
- Add 42 new Forever class quests (Horde Paladin, Alliance Shaman, Priest racials, Rogue, Mage, Druid, Warrior) to their zone files.
- Add Forever race constants for class/race combinations (ALLIANCE_PALADINS, HORDE_PALADINS, ALLIANCE_SHAMANS, HORDE_SHAMANS) from CharBaseInfo.
- Use them on existing Alliance Shaman and Horde Paladin quests in place of ALLIANCE_ONLY/HORDE_ONLY and single-race lists.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- [Data] Add the missing Forever quests in Stranglethorn Vale and update the Desolace quartermasters.
- Stranglethorn Vale: add 12 new Forever quests.
- Desolace: sync Gorhak and Molkar's vendor lists with Wowhead and add their Carved Centaur Totem costs.
- Desolace: restore the Buying Friendship delivery objective creatures.
- Add missing NPC titles to creature comments.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- [Data] Fix Forever quest references in Desolace and Swamp of Sorrows.
- Add The Visiting Mage (93464) to Swamp of Sorrows; it's the source
quest for Notes on Draenethyst and was missing ("Referenced Source
Quest 93464 has not been Sourced"). - Remove hidden kill-credit NPC references ([DNT] Kill Credit) from the
Khan Jehn (Magram), Test Your Theory and A Cleansing Cry objectives.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Add The Visiting Mage (93464) to Swamp of Sorrows; it's the source
- [Data] Add the missing Forever Darkspear Islands battleground quests.
Add the 20 missing Darkspear Islands quests from Wowhead's Forever data:
Conflict at Darkspear Islands / Darkspear Islands Clash mark turn-ins
(levels 40-60 plus a second level 30 version), The Battle for Darkspear
Islands! win quests for Nizook Boof and Brelinda McFarry, and the
Darkspear/Theramore Basic, Standard and Advanced care packages.
Bracketed quests use lvl = { min, max } like the other battlegrounds;
top brackets without a level 60 version stay available at 60. The hidden
"Credit" win objective is omitted. Care packages and one Clash quest
have TODO comments where Wowhead doesn't list the giver or objectives.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N - [Data] Add the missing Forever quests in Shen'dralas.
Add the 19 Forever quests in Shen'dralas, using Wowhead's Forever data
for quest givers, coordinates, objectives, reputation requirements and
quest chains: the Magram (Alliance) Valley of Bones storyline with Orgrul
and the Gelkis (Horde) storyline with Nerlokh. These complete the chains
leading into the Desolace Khan Jehn quests.
Quest givers and objectives that Wowhead doesn't list yet are marked
with TODO comments rather than guessed.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N - [Data] Add the missing Forever quests in Desolace.
Add the 23 Forever quests in Desolace that were missing from the
database, using Wowhead's Forever data for quest givers, coordinates,
objectives, reputation requirements, quest chains and rewards:
Gelkis/Magram centaur quests (Khan Jehn, Khan Hratha, crafting turn-ins,
Buying Friendship, Economic Warfare), Carved Centaur Totems, Notes on
Draenethyst, Hate the Hatefury and Vahlarriel's Vengeance.
Quest givers and objectives that Wowhead doesn't list yet are marked
with TODO comments rather than guessed.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N - [Data] Add the Apple Bob treasure to Hallow's End.
Add o(180523) Apple Bob, which gives i(20516) Bobbing Apple, to the
Hallow's End treasures in both the Forever and standard databases
(standard: timeline ADDED_1_8_0).
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N - [FOREVER] Rebuilt the DB.
- [Settings] Don't require Exploration for Insane Mode in Forever.
Exploration is no longer enabled by default or required for Insane Mode
in Forever, and its tracking checkbox is marked as WIP there, as in Retail. - [Data] Add an exploration position harvester for Forever.
- Move ExplorationAreaPositionDB.lua from .config/exports to the new
.config/exploration folder. - Add ExplorationPositions.py, which estimates missing exploration
coordinates from DB2 data: the centre of each area's largest
WorldMapOverlay hit rect, on every map whose art carries one of the
area's overlay pieces. Estimates are validated against the harvested
positions each run (median 1.0 map units off, all inside the overlay
rect) and written to ExplorationPositions.lua with a report. - ExplorationPositions.lua keeps its estimates in a local table and
injects them into ExportDB.ExplorationAreaPositionDB only for area/map
pairs with no harvested coordinates (560 positions for 559 areas).
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Move ExplorationAreaPositionDB.lua from .config/exports to the new
- Update Gundrak with InstanceHelper
- Fix some reported errors
- [Data] Add missing Forever exploration areas and sort exploration headers.
Using UiMapAssignment (zone -> AreaID) and AreaTable (child areas),
add every child area that has a WorldMapOverlay and isn't already
listed in any zone file (40 areas across 10 zones):- Arathi Highlands, Dun Morogh, Dustwallow Marsh, Eastern
Plaguelands, Mulgore, Tirisfal Glades, Winterspring, Zephras Isle. - New exploration headers for Mount Hyjal and Shen'dralas.
- Areas that weren't explorable in the original classic data get
timeline ADDED_1_60_1 (matching Elwynn Forest); zones that are
already ADDED_1_60_1 don't repeat it.
Also sort every exploration header alphabetically and switch
n(EXPLORATION, ...) to explorationHeader(...) in Riverglades and
Zephras Isle.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Arathi Highlands, Dun Morogh, Dustwallow Marsh, Eastern
- [Data] Resolve version preprocessors in the Forever database.
Forever ships as 1.60.0 with no data beyond 1.80.0, so:- Remove #if AFTER 10.1.7 and #if AFTER CATA blocks (Gnomeregan
retail-only entries, Cataclysm exploration areas in Durotar and
Mulgore, Brazier of Invocation note), keeping their #else branches.
The Cataclysm-only areas are absent from the Forever AreaTable. - Unwrap the always-true #if BEFORE 4.0.3 blocks in the Tier 0.5
dungeon set quests. - #if AFTER TBC blocks are intentionally kept, in case Forever adds
cross-faction Shaman/Paladin quests.
The Forever build sees identical code before and after.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Remove #if AFTER 10.1.7 and #if AFTER CATA blocks (Gnomeregan
- [Data] Remove Season of Discovery content from the Forever database.
- Remove all SEASON_OF_DISCOVERY preprocessor blocks and their
contents (dungeon set sourceQuests, Gnomeregan SoD items), keeping
the non-SoD #else branches unwrapped. The Forever build sees
identical code before and after. - Delete the commented-out SoD Darkmoon cards ("Might exist??") from
World Drops.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
- Remove all SEASON_OF_DISCOVERY preprocessor blocks and their
- [Data] Orc-only 3090 and add Forever 98069 (#2702)
- [Data] Orc-only 3090 and add Forever 98069.
Restrict Tainted Parchment (3090) to orcs, matching Wowhead Forever,
which lists the quest for Orc (race 2) and Warlock (class 9) only. The
Troll warlock path remains on Tainted Tablet (98575).
Add Stolen Freewind Supplies (98069) from Jandia in Thousand Needles
with a 1.60.1 timeline, next to Stop the Screeching (98070), and drop
98069 from the Forever missing-quests list.
Assisted-by: Big Pickle - [Data] Forever 98069 and 98070 require level 25.
Set lvl for Stolen Freewind Supplies (98069) and Stop the Screeching
(98070), which ATT shows as "Requires Level", to 25 per Wowhead's
Forever pages for Jandia's quests.
Assisted-by: Big Pickle - [Data] 98069 brings 8 Stolen Freewind Supplies.
Add the collect objective to Stolen Freewind Supplies (98069), which
requires 8 Stolen Freewind Supplies (279383) for Jandia in Freewind
Post.
Assisted-by: Big Pickle
- [Data] Orc-only 3090 and add Forever 98069.
- [Data] Use bare table keys in the Forever database.
Convert ["key"] = fields to key = across 44 Forever source files
(5,710 fields), matching the style used by the rest of the database.
Commented-out code is converted as well; string contents are not.
No behavioral change: every file (and the contents of whole-file
commented-out raids) compiles to byte-identical Lua bytecode before
and after.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N - [FOREVER] Rebuilt the DB.
- [Data] Clean up migrated Forever data. (#2701)
Follow-up to #2694, standardizing the migrated zzOLD content for
WoW Forever (ships as 1.60.0, no data beyond 1.80.0).- Remove timeline entries past the 1.80.0 cutoff (REMOVED_4_0_3,
REMOVED_2_0_1, DELETED_4_2_2) in Uldaman, Stratholme, Blackwing
Lair, Ruins of Ahn'Qiraj and Temple of Ahn'Qiraj. - Collapse 176 empty-table elements to bare form, e.g.
i(21761, { -- ... }) -> i(21761), -- ... - Remove the empty ACHIEVEMENTS header from Naxxramas.
- Collapse split lvl / requireSkill assignments onto one line.
- Remove stray spaces between leading tabs and function calls.
- Convert bare { itemID = ... } blocks to i(): Base of Atiesh
(also dropping its classes field) and Tome of Conjure Food VII. - Replace skill-requirement descriptions with learnedAt on
requireSkill entries (descriptions are expensive); keep any
additional information they carried. - Remove resolved "Maybe?" notes.
Claude-Session: https://claude.ai/code/session\_01XpDN77yRgjFFrDCQ3mMQ4N
Co-authored-by: Claude Opus 5.5 noreply@anthropic.com
- Remove timeline entries past the 1.80.0 cutoff (REMOVED_4_0_3,
- [Data] Migrate Forever zzOLD sources. (#2694)
- [Data] Move zzOLD 1 - orgrimmar.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Orgrimmar.
Move the legacy zzOLD Orgrimmar zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD 1 - thunder bluff.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Thunder Bluff.
Move the legacy zzOLD Thunder bluff zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD ashenvale.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Ashenvale.
Move the legacy zzOLD Ashenvale zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD azshara.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Azshara.
Move the legacy zzOLD Azshara zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD desolace.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Desolace.
Move the legacy zzOLD Desolace zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD dustwallow marsh.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Dustwallow Marsh.
Move the legacy zzOLD Dustwallow marsh zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD felwood.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Felwood.
Move the legacy zzOLD Felwood zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD feralas.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Feralas.
Move the legacy zzOLD Feralas zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD moonglade.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Moonglade.
Move the legacy zzOLD Moonglade zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD silithus.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Silithus.
Move the legacy zzOLD Silithus zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD stonetalon mountains.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Stonetalon Mountains.
Move the legacy zzOLD Stonetalon mountains zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD tanaris.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Tanaris.
Move the legacy zzOLD Tanaris zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD thousand needles.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Thousand Needles.
Move the legacy zzOLD Thousand needles zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD timbermaw hold.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Timbermaw Hold.
Move the legacy zzOLD Timbermaw hold zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD un'goro crater.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Un'Goro Crater.
Move the legacy zzOLD Un'Goro crater zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD winterspring.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Winterspring.
Move the legacy zzOLD Winterspring zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD 1 - undercity.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Undercity.
Move the legacy zzOLD Undercity zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD blasted lands.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Blasted Lands.
Move the legacy zzOLD Blasted lands zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD burning steppes.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Burning Steppes.
Move the legacy zzOLD Burning steppes zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD deadwind pass.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Deadwind Pass.
Move the legacy zzOLD Deadwind pass zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD deeprun tram.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Deeprun Tram.
Move the legacy zzOLD Deeprun tram zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD duskwood.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Duskwood.
Move the legacy zzOLD Duskwood zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD eastern plaguelands.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Eastern Plaguelands.
Move the legacy zzOLD Eastern plaguelands zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD hillsbrad foothills.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Hillsbrad Foothills.
Move the legacy zzOLD Hillsbrad foothills zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD searing gorge.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Searing Gorge.
Move the legacy zzOLD Searing gorge zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD silverpine forest.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Silverpine Forest.
Move the legacy zzOLD Silverpine forest zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD swamp of sorrows.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Swamp of Sorrows.
Move the legacy zzOLD Swamp of sorrows zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD the hinterlands.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever The Hinterlands.
Move the legacy zzOLD The hinterlands zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD tirisfal glades.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Tirisfal Glades.
Move the legacy zzOLD Tirisfal glades zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD western plaguelands.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Western Plaguelands.
Move the legacy zzOLD Western plaguelands zone data into the current
forever/zones module layout: bare table keys, non-Camelot timeline
entries dropped, quest provider fields simplified, and the existing
Forever entries (if any) carried over.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD zul'farrak.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Zul'Farrak.
Move the legacy zzOLD Zul'Farrak dungeon data into the current
forever/dungeons & raids module layout: legacy preprocessor gates and
handler wrappers resolved, non-Camelot timeline entries dropped, and the
Classic content kept.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD uldaman.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Uldaman.
Move the legacy zzOLD Uldaman dungeon data into the current
forever/dungeons & raids module layout: legacy preprocessor gates and
handler wrappers resolved, non-Camelot timeline entries dropped, and the
Classic content kept.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD the temple of atal'hakkar.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever The Temple of Atal'hakkar.
Move the legacy zzOLD The Temple of Atal'hakkar dungeon data into the current
forever/dungeons & raids module layout: legacy preprocessor gates and
handler wrappers resolved, non-Camelot timeline entries dropped, and the
Classic content kept.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD stratholme.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Stratholme.
Move the legacy zzOLD Stratholme dungeon data into the current
forever/dungeons & raids module layout: legacy preprocessor gates and
handler wrappers resolved, non-Camelot timeline entries dropped, and the
Classic content kept.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD blackwing lair.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Blackwing Lair.
Move the legacy zzOLD Blackwing Lair raid data into the current
forever/dungeons & raids module layout: preprocessor gates and handler
wrappers resolved, seasonal (SoD/SoM) and post-1.x content pruned, and
the file kept wrapped in a long comment as before pending a content
review.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD zul'gurub.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Zul'Gurub.
Move the legacy zzOLD Zul'Gurub raid data into the current
forever/dungeons & raids module layout: preprocessor gates and handler
wrappers resolved, seasonal (SoD/SoM) and post-1.x content pruned, and
the file kept wrapped in a long comment as before pending a content
review.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD ruins of ahn'qiraj.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Ruins of Ahn'Qiraj.
Move the legacy zzOLD Ruins of Ahn'Qiraj raid data into the current
forever/dungeons & raids module layout: preprocessor gates and handler
wrappers resolved, seasonal (SoD/SoM) and post-1.x content pruned, and
the file kept wrapped in a long comment as before pending a content
review.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD temple of ahn'qiraj.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Temple of Ahn'Qiraj.
Move the legacy zzOLD Temple of Ahn'Qiraj raid data into the current
forever/dungeons & raids module layout: preprocessor gates and handler
wrappers resolved, seasonal (SoD/SoM) and post-1.x content pruned, and
the file kept wrapped in a long comment as before pending a content
review.
Assisted-by: GLM-5.3-Flash Free - [Data] Move zzOLD naxxramas.
Copy the legacy zzOLD source file verbatim to the destination path it migrates into, as a pure move with identical content, so rename linking reaches the legacy file history; conversion happens in the next commit.
Assisted-by: GLM-5.3-Flash Free - [Data] Migrate Forever Naxxramas.
Move the legacy zzOLD Naxxramas raid data into the current
forever/dungeons & raids module layout: preprocessor gates and handler
wrappers resolved, seasonal (SoD/SoM) and post-1.x content pruned, and
the file kept wrapped in a long comment as before pending a content
review.
Assisted-by: GLM-5.3-Flash Free - [Data] Retire Forever zzOLD sources.
All 39 legacy zzOLD zone and dungeon/raid sources are now migrated
into the current forever/zones and forever/dungeons & raids module
layout, so the legacy staging folder is retired.
Assisted-by: GLM-5.3-Flash Free - [Data] Remove entries absent from Forever.
Purge quest, item, object and achievement nodes that do not exist in
the Forever game, per the non-ATT ground truth in wow-database
(QuestieDB-Forever, the Forever client DB2 1.60.1.70338, and Wowhead
forever saved pages):
- quests: TBC-prepatch q() nodes given by Draenei/Blood Elf quest
givers in ashenvale (12), swamp of sorrows (3), the hinterlands (5),
western plaguelands (3), thousand needles (3) - items: i(309) silverpine; Grunts' i(62253..62266) gear in orgrimmar;
i(23777)/i(23797) zone drops in ashenvale; i(24118..24120) inside the
removed Never Again! quests; i(23072) naxxramas - objects: o(180327) zul'gurub, o(207724) dustwallow
- achievements absent from the client Achievement DB2: 424 temple of
ahn'qiraj, 425 naxxramas, 638 uldaman, 639 zul'farrak, 641 the temple
of atal'hakkar, 646 stratholme, 685 blackwing lair, 687 temple of
ahn'qiraj, 688/880/881 zul'gurub, 689 ruins of ahn'qiraj, 729
stratholme. The Season-of-Mastery achievements 15333/15334/15335 are
present in that table but belong to pruned season content, so they are
removed as well. Identically-numbered items 15333/15334/15335 (world
drops, darkshore) and the AQ20 ["cr"] = 15335 are unrelated and are
kept.
i(23072) is present in the Forever Item DB2, but it was added after the
1.60.1 build, so it is removed as post-1.x content rather than as an
absent ID.
o(180327) Brazier of Madness keeps the trinket-craft filter and the
madness-event NPCs n(15082..15085) with their drops (19931..19993);
only the wrapper's own facets are removed (header, coord/cost/
description, use-objective) and the surviving children are kept in
place at the wrapper's indent.
Timeline cleanup: ADDED_1_9_0/ADDED_1_11_1 markers are dropped from the
affected zones, uldaman, stratholme and the quarantined raids, and
ADDED_1_13_0/ADDED_10_1_7 from the Ahn'Qiraj entries; load-bearing
REMOVED_4_0_3 members are preserved.
The Uldaman Keystone o(124371) is restored: it is vanilla content whose
DB2 absence is a scrape gap, and Wowhead's forever page for quest 2240
describes placing the Staff of Prehistoria i(7733) in the ground to
open the chamber and summon e(469), the shape carried over from the
Classic source file.
Empty container pruning is limited to containers emptied by the purge
itself; pre-existing empty wrappers are untouched. All Forever Lua
files compile under Lua 5.1; the absent-ID audit reports zero remnants
in converted files; branch remains draft.
Assisted-by: GLM-5.3-Flash Free
- [Data] Move zzOLD 1 - orgrimmar.
- [DB] Two Ulatek weapons are the same across all difficulties