Files
healer-man/dungeon-pipeline/ascension/ASCENSION_CUSTOM_DUNGEON_RECOVERY.md
2026-09-09 11:21:33 -04:00

8.0 KiB

Ascension custom dungeon source recovery

This report separates recoverable client facts from the behavior that HealerMan must author for Tinkertech Showdown (821), Frozen Reach (908), and Forgotten Mine (1781). The machine-readable companion is ASCENSION_CUSTOM_DUNGEON_RECOVERY.json; its validator checks both the current generated catalogs and the original installed-client Spell.dbc.

Result

Map Recovered exactly Still requires adaptation
821 Tinkertech Showdown Client environment, encounter 9013, boss creature 663012 Every spawn, trash identity, gameobject, spell binding, boss schedule, phase, visual, loot, and completion rule
908 Frozen Reach Client environment, encounters 2168/2170, Alva 97700, Arktos 97701, three summoned entries, and 85 encounter spell rows Positions, stats, cast schedule, target rules, phase scripting, web hazards, visuals, loot, and completion rules
1781 Forgotten Mine Client environment, encounters 5069/5071, Geolord Vek 254272, Geospike summon 254278, Resonite Shard gameobject 254051, and 33 encounter spell rows Positions, stats, cast schedule, trash roster, crystal behavior, hazard lifetime, visuals, loot, and completion rules

The local server/reference repositories, installed WDB caches, addon databases, and the public Questie Ascension snapshot do not contain surviving creature templates, world spawn rows, SmartAI, or encounter scripts for these maps. Client spell rows prove names and summon targets, but they do not prove cast cadence, ownership in every case, or coordinates.

821: Tinkertech Showdown

Exact client facts:

  • Map directory: TinketechShowdown (the client spelling omits the second r). Source hash: 323c47c081d0a6c39daf9878284863c21e3e38dbced2ba3f58d1d157d080d41d.
  • The recovered root WMO is World/wmo/Dungeon/AZ_Subway/Subway_Dungeon.wmo.
  • Manastorm encounter 9013 names Mechatron and binds it to creature 663012 in mode 2.
  • The player, trash, and boss anchors in the manifest are geometry-derived and provisional, not recovered server spawn points.

Candidate-only evidence:

  • Spell 257438 Rocket.
  • Spells 257459-257461 Gatling Missile Barrage / Gatling Missile.
  • Spell 257462 Sound: Goblin Head Machine Loop.
  • Spell 257470 Incineration Beam, spell 257471 Energy Ball, and spells 257472-257473 Electrified Zone / Electric Shock.

Those rows form a coherent goblin-machine cluster, but no surviving source binds them to creature 663012. They must stay labeled as an adaptation if used.

Concrete adaptation:

  • Retain the current route as five authored three-creature packs. Recast generated entries 2629079128, 3849447491, and 1787979165 as Tinkertech Guardbot, Tinkertech Coilcaster, and Tinkertech Demolisher; these IDs and names remain HealerMan-owned.
  • Keep Mechatron 663012 at the provisional boss anchor.
  • Use an authored rotation of Rocket reticles, Gatling lane impacts, Incineration Beam lane sweeps, and alternating Electrified Zones. At 35% health, accelerate the rotation and add two Coilcasters.
  • Model platform destruction as temporary lane disabling because the imported web geometry is immutable.

Everything in that combat implementation except the boss identity and candidate spell names is custom-authored. It should not be represented as recovered Ascension parity.

908: Frozen Reach

Exact client facts:

  • Map directory: Alvaencounter. Source hash: 5ab771df79c0e062cea3ebda4e416a9245bcf8a4cc6da048077df5e674081f97.
  • Manastorm encounters 2168 and 2170 name Alva and bind her to creature 97700 in modes 0 and 2.
  • The official Ascension database identifies Alva as creature 97700 and Arktos as creature 97701.
  • Spell 255363 summons creature 97703, spell 255421 summons creature 97731, and spell 255433 summons creature 97770. In context these are the Blast Arrow unit, Explosive Trap, and Alvajar add.
  • The client cluster spans 85 exact rows from 255347 through 255472. The principal families are Rain of Arrows, Unbridled Arrows, Blast Arrow, Cluster Shot, Pact of the Hunt, Ice Rock, Carnivorous Bite, Frost Shield, Set Ablaze, Blaze, Frost Strike, Frost Roar, Lacerate, Shield Wall, Shadow Shroud Surge/Rebirth, Vengeful Bolt, Shadow Veil Lance, Sphere of Grief and Wrath, Alva's Grief/Wrath, Explosive Trap, and Army of the Dead.
  • The official changelog confirms that the Blast Arrow/“Blast Shot” interaction can hit Arktos and that Shadow Shroud Rebirth reaches full damage scaling at five or more players.

Concrete adaptation:

  • Remove the current 15 procedural hallway creatures (entries 1606324391, 854807736, and 2855026892). Available evidence describes a contained Alva/Arktos encounter and provides no support for that generic trash population.
  • Start Alva 97700 and Arktos 97701 together with Pact of the Hunt. Give Alva the recovered ranged/trap kit and Arktos the recovered bite, ice, roar, lacerate, and defensive kit.
  • Allow Blast Arrow to apply Set Ablaze to Arktos, forcing panic movement and increased damage taken.
  • On Arktos's death, leave Alva's Grief at the corpse, cast Shadow Shroud Rebirth, summon four Alvajar 97770, and move Alva into the recovered vengeance spell family.
  • Preserve D1/D2 spell variants as source data but use D0 for the current normal experience until a surviving difficulty mapping is found.

The exact cadence in the JSON is an explicit HealerMan proposal. Initial positions, transition rules, summon formation, stats, targeting, and hazard implementation all remain custom-authored.

1781: Forgotten Mine

Exact client facts:

  • Map directory: ForgottenMine. Source hash: 693b7067aa1109e14beb944bc95aed8299bf64e2ec6ae3dc43f4fab7d18f57b6.
  • Manastorm encounters 5069 and 5071 name Geolord Vek and bind him to creature 254272 in modes 0 and 2.
  • The contiguous 354000-354032 spell cluster explicitly contains Vek Death and Vek Reset, tying the cluster to Vek.
  • The recovered families are Stonebreaker, Quake, Stone Shield, Geospike, Resonance, Geode Barrage, Ruptured Earth, Stoneskin, Resonite Cleanse, and Create Resonite Shard.
  • Spell 354004 summons Geospike creature 254278. Spell 354032 creates gameobject 254051, named by the spell as a Resonite Shard.
  • Client text says Resonite counters the power of Earth. Official changelogs additionally require larger clickable crystal bounds and a visible Geospike telegraph.

Concrete adaptation:

  • Retain five authored three-creature route packs only as an explicit approximation. Recast generated entries 4175632753, 647988074, and 2677742134 as Forgotten Mine Stoneguard, Forgotten Mine Geomancer, and Forgotten Mine Quarry Brute; these are not recovered Ascension creatures.
  • Keep Geolord Vek 254272 at the provisional boss anchor. Rotate Stonebreaker, Quake, Geode Barrage, Geospike, and Ruptured Earth, then begin Resonance at 50% health.
  • Spawn three clickable Resonite Shards 254051 at the authored triangular offsets in the JSON. Consuming a shard applies Resonite Cleanse 354031 and removes one active earth protection or prevents the next Resonance hit.
  • Give Geospike 254278 a high-contrast ground warning, eruption, and despawn sequence. Make crystal interaction bounds deliberately generous.

The crystal effect is constrained by spell text and changelog behavior but its exact server-side rule did not survive. Trash, timing, targeting, positions, respawn cadence, and visuals are custom-authored.

Integration boundary

The recovery files intentionally do not change compile-campaign-catalog.mjs. Runtime integration should consume the recovered IDs and family lists while preserving three provenance labels:

  • exact: copied from checksummed client/catalog data.
  • spellLinked: an entry ID read directly from a DBC summon effect; its descriptive name can still be contextual.
  • authored: HealerMan timing, placement, visuals, or behavior.

Validate the recovery against the current catalogs and installed client with:

node scripts/dungeon-pipeline/validate-ascension-custom-dungeon-recovery.mjs

Use --skip-dbc only on machines without the checksummed Area-52 client, or pass another byte-identical file with --dbc <path>.