564 lines
34 KiB
Markdown
564 lines
34 KiB
Markdown
# First Conquest of Azeroth party
|
|
|
|
Updated: 2026-10-05. The project owner selected these five classes as the first
|
|
CoA implementation milestone. Build and refine this party before expanding to
|
|
other CoA classes. CoA here means Conquest of Azeroth on Vol'Jin; the existing
|
|
RoM backlog's Chronicles of Arcadia references describe a different game.
|
|
|
|
| Seat | Class | Initial specialization | Responsibility |
|
|
| --- | --- | --- | --- |
|
|
| 1 | Guardian | Vanguard | Tank |
|
|
| 2 | Witch Doctor | Brewing | Healer |
|
|
| 3 | Barbarian | Brutality | Melee damage |
|
|
| 4 | Ranger | Archery | Ranged damage |
|
|
| 5 | Pyromancer | Incineration | Caster damage |
|
|
|
|
Begin with each class's core kit and the selected specialization so the full
|
|
party can enter targeted playtests early. Finish the remaining trees within
|
|
these five classes before expanding to the other classes. This selects work;
|
|
it does not certify the current implementations.
|
|
|
|
## Implementation order and acceptance
|
|
|
|
1. Freeze the five class/spec identities and reproducible diagnostic inputs.
|
|
Inventory every node, rank, source spell, and current runtime mapping. Author
|
|
reviewed talent allocations instead of treating generated role-weighted
|
|
allocations as an intended CoA build.
|
|
2. Establish the tank and healer loops together, including their resource and
|
|
persistent state. Check damage, mitigation, threat, healing recipients,
|
|
periodic effects, and party utility against the captured evidence.
|
|
3. Implement the three distinct damage loops and their talent interactions.
|
|
Share combat primitives where their semantics match, while keeping class
|
|
state and learned-rank ownership on the correct actor.
|
|
4. Test the same party against explicitly selected encounters. Repeat with
|
|
each class as the active player and the other four as companions. Include
|
|
single-target and multiple-target pulls, incoming party damage, interrupts,
|
|
dispels, cooldown use, resource exhaustion, death, and resurrection where
|
|
the selected kits provide them.
|
|
5. Fix observed mechanic and AI defects, then inspect live dungeon play and
|
|
record evidence in `PLAYTEST_NOTES.md`. Compare balance only after mechanic
|
|
correctness. Expand the selected classes' other trees before other classes.
|
|
|
|
The completion gate is verified behavior for the reviewed core/initial-tree
|
|
builds on players and companions, a coherent 1-tank/1-healer/3-damage party in
|
|
live playtests, and an explicit record of any unresolved source limitations.
|
|
Catalog counts, a boss kill, or passing preparation tests are insufficient.
|
|
|
|
## Source-backed priorities
|
|
|
|
The following anchors are from the August Vol'Jin capture in
|
|
`src/game/coaLiveData.generated.json`. They identify work to verify; they are
|
|
not claims that these mechanics are implemented.
|
|
|
|
- Guardian: Footman's Calling (node 4019, spell 92105) establishes formation
|
|
behavior; Vanguard's Shield (34417, 804383) builds stacks through blocks and
|
|
auto attacks; Paragon (29969, 706514) transforms Heavy Blow at 10 stacks and
|
|
interacts with Brace. Audit formation gates, actor-owned stacks, block events,
|
|
threat, and defensive sequencing together.
|
|
- Witch Doctor: Cauldron Brewer (4005, 92085), Ingredient: Jungle Shrooms
|
|
(12645, 801660), Potion Toss (12646, 801661), and Mixologist (6645, 561069)
|
|
establish cauldron/ingredient state, nearby ally effects, and ingredient-based
|
|
changes to a targeted heal. Verify recipient, radius, periodic cadence,
|
|
ingredient exclusivity/capacity, and healing formulas before adding interactions.
|
|
- Barbarian: Decapitate (5744, 804414) requires a target below 35% health and
|
|
converts additional Energy into damage; Beheader (6744, 705222) refunds Energy
|
|
after an eligible kill; Battle Rhythm (14303, 800193) generates Energy on
|
|
ability critical hits. Verify event origin and payment/refund ordering.
|
|
- Ranger: Precision Shot (31178, 500075), Hunting Shot (29660, 801191), and
|
|
Masterful Archery (7794, 680469) depend on Advantage, Elude, ricochet hits,
|
|
and stacking effects. Audit the state and target selection before AI priorities.
|
|
- Pyromancer: Ignite (6985, 800791), Combustion (29854, 520884), and Pyroclasm
|
|
(7174, 520019) depend on Heat, Embers, and the caster's burning effects on a
|
|
specific target. Verify periodic generation, spending, effect counting, and
|
|
effect consumption. The August Agonizing Burns/Timed Attacks payload exchange
|
|
also requires explicit saved-build review.
|
|
|
|
Current generated resource profiles and generic effects do not prove these
|
|
stateful loops are supported. Unspecified proc timing, missing coefficients,
|
|
and unknown server rules remain evidence gaps; never invent their values.
|
|
Use the cached Vol'Jin capture and global Spell data described in
|
|
[COA_REFERENCE_PIPELINE.md](COA_REFERENCE_PIPELINE.md).
|
|
|
|
## Repeatable preparation and targeted diagnostics
|
|
|
|
`src/game/coaFirstPartyRoster.ts` owns the exact roster. The benchmark helper at
|
|
`src/game/benchmark/coaFirstParty.ts` owns build selection, companion construction,
|
|
and explicitly scoped Balance Lab configurations.
|
|
`scripts/coa-first-party/prepare.ts` produces the review inventory and five
|
|
active-player configurations, retaining the same party build IDs in each.
|
|
|
|
```sh
|
|
npm run coa:party:prepare -- --list-bosses stormwind-stockade
|
|
npm run coa:party:prepare -- --level 60 --boss <exact-key-from-list>
|
|
npm run coa:party:test
|
|
```
|
|
|
|
Preparation writes ignored local artifacts to
|
|
`artifacts/coa-first-party/level-60/`: `audit.json`, `audit.md`, `config.json`,
|
|
and `seat-1.json` through `seat-5.json`. It records the source capture/hash,
|
|
legal generated talent allocations, source gaps, and runtime representations.
|
|
Every mechanic begins as `needs-review`; mapping is not verification.
|
|
It downloads nothing and runs no encounter simulations.
|
|
|
|
Once an explicit diagnostic is appropriate, the existing runtime consumes a
|
|
prepared configuration without changing the ordinary companion pool:
|
|
|
|
```sh
|
|
npx vite-node --mode balance-lab scripts/balance-lab/runtime.ts simulate --config artifacts/coa-first-party/level-60/seat-2.json --output artifacts/coa-first-party/level-60/seat-2-runs.json
|
|
```
|
|
|
|
Only the selected five and explicitly named bosses belong to this milestone's
|
|
diagnostics. All five remain **Needs Testing**. Do not change Ready policy,
|
|
random/eligible pools, default regression scope, or all-class sweep coverage.
|
|
Ordinary live party generation currently uses the Ready WoW pool, including
|
|
for a CoA player; a complete CoA party must be configured explicitly.
|
|
|
|
For implementation changes, run the smallest affected tests plus the existing
|
|
Ready-five checks, build, and `npm run release:check`. Record each mechanic's
|
|
source, player/companion checks, and live evidence as it is completed.
|
|
|
|
## Initial implementation and evidence limits
|
|
|
|
The first catalog fix exposes sourced active Talent entries for these five
|
|
classes. Talent Essence purchase type no longer prevents an active spell from
|
|
becoming a usable action. The action retains its talent-node/rank gate. DBC
|
|
passive flags and rank metadata keep passive Talent nodes on the existing
|
|
modifier path; missing DBC rows cannot create a new action. The other 16 classes
|
|
retain their previous action catalogs.
|
|
|
|
This fixes action availability, not the complete effect of each spell. Initial
|
|
Potion Toss checks cover its base targeted heal and mana payment for a player
|
|
and companion. The follow-up below adds ingredient state and the Frog Bones
|
|
rider; other riders and the complete Brewing loop remain work. Decapitate's
|
|
target-health gate and Beheader's kill refund are separate mechanics;
|
|
additional Energy conversion remains unresolved.
|
|
|
|
Ranger's primary resource is now Focus, matching its spell costs. Player and
|
|
companion checks cover spending, the displayed/authoritative pool, and recovery.
|
|
The existing authored 100-point pool and 10-per-second recovery are retained;
|
|
this correction does not establish source-verified regeneration or implement
|
|
Advantage/Elude.
|
|
|
|
Brewing has specific evidence limits beyond the node-rank source inventory:
|
|
Mojo Beam's capture describes eight seconds while the selected DBC says four;
|
|
Spirit Link Idol's tooltip says fourteen seconds while its DBC says 8.5. The
|
|
current promoted catalog omits the Loa's Blessing empowerment payloads
|
|
802207/802208/802215/802216 and Spirit in a Bottle's referenced
|
|
504606/707172 payloads. Resolve those exact references against the local/raw
|
|
cache before implementing their full behavior. Zero missing node-rank DBC rows
|
|
does not establish that every mentioned payload or server rule is known.
|
|
|
|
## Kickoff validation and diagnostic baseline
|
|
|
|
On 2026-10-04, 87 focused tests across 15 files pass, including the exact roster,
|
|
learned Talent actions, Potion Toss delivery, Decapitate's health restriction,
|
|
Ranger Focus, source scope, and classic catalog preservation. Ready-five checks
|
|
pass seven game tests and twenty Python tests. The production build passes
|
|
TypeScript, asset audits, bundling, compression, and bundle verification.
|
|
`npm run release:check` passes, including untracked files. A before/after digest
|
|
also confirms the other 16 CoA action catalogs are unchanged.
|
|
|
|
The targeted automated baseline uses the same five generated level-60 builds,
|
|
seed 1, and Taragaman the Hungerer (`ragefire-chasm/entry-11520`). Each run has a
|
|
30-second limit and moves only the active player seat. Results after the Focus
|
|
correction are:
|
|
|
|
| Active player | Outcome | Elapsed seconds | Boss health remaining | Deaths |
|
|
| --- | --- | ---: | ---: | ---: |
|
|
| Guardian | Time limit | 30.0 | 80,065 | 0 |
|
|
| Witch Doctor | Time limit | 30.0 | 79,292 | 0 |
|
|
| Barbarian | Defeated | 12.6 | 0 | 0 |
|
|
| Ranger | Time limit | 30.0 | 12,782 | 0 |
|
|
| Pyromancer | Time limit | 30.0 | 14,724 | 0 |
|
|
|
|
Raw runs are local ignored artifacts at
|
|
`artifacts/coa-first-party/level-60/seat-1-runs.json` through `seat-5-runs.json`.
|
|
The original claim that Ranger and Pyromancer companions each cast only three
|
|
times was a telemetry error. Damaging companion casts were omitted from the
|
|
counter despite damage and decision events showing more activity. The corrected
|
|
collector counts release presentations once per cast, including channel pulses
|
|
only once. A new Hamhock healer-seat diagnostic records 19 Ranger and 17
|
|
Pyromancer companion casts. Ranger still records 32.3% Focus starvation; raw
|
|
cast counts do not establish a coherent resource/state rotation. The large
|
|
player-seat differences require mechanic investigation before balance changes.
|
|
These low-pressure encounters provide limited evidence for tank/healer interactions.
|
|
|
|
These are explicitly scoped automated diagnostics, with no live browser
|
|
playtest or balance certification in this kickoff. All five remain Needs
|
|
Testing. New routine diagnostics use Stormwind Stockade: Cellblock Rush
|
|
(`bite-sized-stormwind-stockade`) under `TEST_DUNGEON_POLICY.md`; record the
|
|
boss selected from the run ID. Full-source Stockade campaigns require explicit
|
|
selection. The Taragaman records above remain historical evidence.
|
|
|
|
## Mechanics and rotation follow-up, 2026-10-05
|
|
|
|
- `coaGuardianVanguardRuntime.ts` owns learned node 34417's actor-owned Vanguard
|
|
state. Source spells 804383/804384 establish one stack per landed normal swing
|
|
or block, ten maximum, a refreshed 60-second duration, and 2% less damage from
|
|
each magic school per stack. Direct incoming spells use the current mitigation
|
|
before consuming one stack. Periodic-tick consumption is unresolved and is
|
|
excluded. Player and companion event hooks use the same state transition.
|
|
- `coaWitchDoctorBrewingRuntime.ts` owns persistent ingredient markers and the
|
|
one-ingredient capacity, raised to two by learned Mixologist node 6645. An
|
|
ingredient already present may refresh; an additional ingredient at capacity
|
|
fails before payment. Replacement/removal behavior is not specified by the
|
|
captured evidence. Frog Bones 801663 no longer creates the importer's bogus
|
|
one-second caster shield. It retains its 1.5-second cauldron pulse. Potion Toss
|
|
801661 adds the shield from global spell 802971 to its selected ally only when
|
|
that caster owns an active Frog Bones marker: eight seconds, base 100, five
|
|
points per level from level ten, 35% Spirit and 80% bonus healing. Other
|
|
ingredient markers do not establish their unfinished Potion Toss riders.
|
|
- `coaBarbarianExecuteRuntime.ts` also owns learned Beheader node 6744's exact
|
|
Decapitate kill refund: 100% of maximum Energy after an effective killing hit,
|
|
clamped to the pool maximum. Failed, nonlethal and unrelated hits do not refund.
|
|
The additional-Energy damage conversion has no verified ratio in this slice.
|
|
Its generic weapon-damage projection also needs review: separate DBC weapon
|
|
effects must not be treated as two independent weapon hits.
|
|
- Pyromancer Ignite's selected-enemy implicit target takes precedence over its
|
|
DBC radius metadata. Both tree and progression variants use unit targeting;
|
|
nearby enemies no longer receive the selected enemy's burn.
|
|
- Chosen-five unit-target periodic maintenance compares ability, caster,
|
|
recipient and positive remaining duration. A burn or HoT on one actor no
|
|
longer blocks applying that spell to a different actor. This correction does
|
|
not author speculative class priority lists or clipping windows. Mojo Beam's
|
|
incidental caster aura no longer redirects its friendly unit heal to the
|
|
caster; the scorer selects the injured ally and checks that ally's own HoT.
|
|
An actual companion channel check verifies Mana payment and the first pulse
|
|
on the injured Vanguard ally. It does not resolve Mojo Beam's duration conflict.
|
|
|
|
The companion Potion Toss rider check primes its actor-owned ingredient marker
|
|
explicitly. Default healthy companion AI does not prepare its cauldron; authored
|
|
ingredient preparation and selection remain a rotation gap. Loa's Brew winning
|
|
one injured-ally fixture does not, by itself, establish a wrong healing priority.
|
|
|
|
Formation/Paragon, full Brewing riders and payloads, Decapitate's Energy
|
|
conversion/Battle Rhythm, Ranger Advantage/Elude, Pyromancer Heat/Embers and
|
|
reviewed talent allocations remain the next mechanics work. All five remain
|
|
Needs Testing. Automated checks do not replace live party playtests.
|
|
|
|
The follow-up's explicitly scoped Stockade/Hamhock diagnostic retains level 60,
|
|
seed 1, a 30-second limit and the same five generated builds in each seat:
|
|
|
|
| Active player | Outcome | Elapsed seconds | Boss health remaining | Deaths |
|
|
| --- | --- | ---: | ---: | ---: |
|
|
| Guardian | Time limit | 30.0 | 80,815 | 0 |
|
|
| Witch Doctor | Time limit | 30.0 | 77,898 | 0 |
|
|
| Barbarian | Defeated | 13.6 | 0 | 0 |
|
|
| Ranger | Time limit | 30.0 | 28,443 | 0 |
|
|
| Pyromancer | Defeated | 27.8 | 0 | 0 |
|
|
|
|
Raw runs are ignored local artifacts at
|
|
`artifacts/coa-first-party/stockade-2026-10-05/seat-1-after.json` through
|
|
`seat-5-after.json`; seats two/four also retain before runs. The final healer-seat
|
|
run records 19 Ranger and 16 Pyromancer companion casts, with Ranger still
|
|
32.3% Focus-starved. Correct source behavior can change damage and timing;
|
|
these outcomes do not establish balance, authored allocations, or full-class
|
|
completion. Low encounter pressure limits healer/tank conclusions. No live
|
|
browser playtest was performed in this mechanics follow-up.
|
|
|
|
Focused validation passes 126 tests across 19 directly affected files, including
|
|
the helper, public scorer and actual player/companion behavior checks. Ready-five
|
|
compatibility passes seven Vitest and twenty Python tests. The generated runtime
|
|
and UI changes are limited to two Pyromancer Ignite actions; the other twenty
|
|
class records, resource profiles and triggered payloads are preserved.
|
|
The final production build passes TypeScript, asset audits, bundling, static
|
|
compression and release-bundle verification. `npm run release:check` passes,
|
|
including untracked files. The canonical CoA vault note is updated separately.
|
|
|
|
## Brewing integration, 2026-10-05
|
|
|
|
`coaWitchDoctorBrewingAi.ts` owns an authored companion preparation policy.
|
|
`partyRuntime.ts::choosePartySupportIntent` prepares learned Frog Bones when a
|
|
Brewing healer has Brewer and Potion Toss, every party member/player is at
|
|
least 90% healthy, and no resurrection, dispel or engaged-enemy cast is pending.
|
|
Normal readiness, Mana, target and capacity checks still precede payment. It
|
|
preserves an existing full cauldron and does not refresh an existing own Frog
|
|
Bones marker. This is a conservative gameplay policy, not a sourced optimal
|
|
rotation. Other ingredient selection remains unfinished.
|
|
|
|
`partyAbilityAi.ts` projects the caster's current Brewing effects before
|
|
scoring heals. Ingredient casts are excluded from the ordinary Brewing healer
|
|
rotation so they cannot displace healing or repeatedly refill the cauldron.
|
|
Actual idle companion tests prepare through normal selection and payment,
|
|
then heal and shield an injured player with Potion Toss, without seeding an
|
|
in-flight cast or priming an ingredient marker.
|
|
|
|
Splash Potion node 7128/spell 802710 is now a friendly ground action in source
|
|
generation and the runtime/UI catalogs. Its DBC destination targets 87/31 and
|
|
captured tooltip establish a location, 40-yard range, 10-yard radius and up to
|
|
eight allies. Its base heal centers on that destination. The cast projection
|
|
suppresses the importer's unconditional flattened ingredient and SLS payloads;
|
|
only an owned, live Frog Bones marker adds verified 803699's reduced absorb:
|
|
eight seconds, base 25 and one point per level from level 15. Player and NPC
|
|
tests check nearby recipients, excluded distant allies, no inactive riders,
|
|
and destination validation before payment. The player's previous radius shield
|
|
branch centered on the caster; the Splash-specific path now uses the same
|
|
effect-scoped ground center as its healing. Existing other spell paths retain
|
|
their behavior.
|
|
|
|
Jungle Shrooms 802973's exact Spirit scaling, Fish Oil 802969's aura decoding,
|
|
Bloodthistle 802975/803287's proc and 0.5-second internal cooldown, and the
|
|
803275 SLS ingredient-combination chain remain unresolved. Their raw source
|
|
records are retained; missing runtime semantics do not grant every rider.
|
|
|
|
The Guardian audit identifies the next import boundary. August Vol'Jin node
|
|
4019/spell 92105 establishes 10% self mitigation while Tower or Line Formation
|
|
is active, with no numeric threat multiplier. Global spells 800317 and 803130
|
|
would create self-owned aura identities `coa:800317:effect:0:aura:87` and
|
|
`coa:803130:effect:0:aura:232`, but neither action is present in the promoted
|
|
tree/progression/runtime catalog. Mitigation cannot honestly use an assumed
|
|
formation flag. Paragon 29969/706514 has a description conflict: the August
|
|
builder changes Heavy Blow to Paragon Smash, while the promoted primary text
|
|
for 706516 still describes Tower/Bastion. The later formation audit below finds
|
|
compatible secondary text and child payloads. Import formation actions and
|
|
preserve the source discrepancy when wiring the conditional mechanics. See the cached Guardian JSON and builder in
|
|
`data/coa-reference/cache/archive-5078f9ac2254/generation-fa16afec-8f11-4eab-98ab-b6441304fab7/`
|
|
and global snapshot `e86031775dfac7e336361087c50ca23a0a7a86c36a760c85803bee4bcdb89351`.
|
|
|
|
Rotation policy is `playerbots-inspired-v10-coa-brewing-preparation`. The same
|
|
five level-60 builds, seed 1, Hamhock and 30-second limit produce:
|
|
|
|
| Active player | Outcome | Elapsed seconds | Boss health remaining | Deaths |
|
|
| --- | --- | ---: | ---: | ---: |
|
|
| Guardian | Time limit | 30.0 | 80,007 | 0 |
|
|
| Witch Doctor | Time limit | 30.0 | 77,898 | 0 |
|
|
| Barbarian | Defeated | 13.6 | 0 | 0 |
|
|
| Ranger | Time limit | 30.0 | 28,599 | 0 |
|
|
| Pyromancer | Defeated | 24.8 | 0 | 0 |
|
|
|
|
The Guardian-seat companion records one naturally selected Frog Bones cast.
|
|
Raw evidence is preserved separately at ignored
|
|
`artifacts/coa-first-party/stockade-integration-2026-10-05/seat-1.json` through
|
|
`seat-5.json`. Encounter pressure is low; the healer deals substantial damage,
|
|
and these results establish neither balance nor a complete healing rotation.
|
|
All five remain Needs Testing. No live browser playtest was performed.
|
|
|
|
Focused validation passes 37 tests across eight directly affected files;
|
|
Ready-five compatibility passes seven Vitest and twenty Python tests. The new
|
|
generated catalog change is one Witch Doctor Splash action in each runtime/UI
|
|
catalog; the other twenty class records, resource profiles and triggered
|
|
payloads are preserved. No recrawl or download was needed.
|
|
The final production build passes TypeScript, asset audits, bundling, static
|
|
compression and release-bundle verification. `npm run release:check` passes,
|
|
including untracked files; the canonical CoA vault note is updated separately.
|
|
|
|
## Decapitate strike integration and Guardian audit, 2026-10-05
|
|
|
|
`coaBarbarianWeaponDamageRuntime.ts` projects only tree node 5744/spell 804414
|
|
as one normalized weapon strike. The imported effects previously emitted two
|
|
independent damage events. The August Vol'Jin tooltip gives the formula:
|
|
`27 + 2.2 * (weapon mean + attack power / 14 * normalized speed)`. Explicit
|
|
equipped-item classification supplies the standard normalized speed: 3.3 seconds
|
|
for two-handed melee weapons, 1.7 for daggers, and 2.4 for other one-handed
|
|
melee weapons. Actual swing speed is used only to undo the existing weapon-DPS
|
|
conversion. An unknown weapon classification retains the imported fallback.
|
|
|
|
The helper is used before player execution in `combatStore.ts`, companion
|
|
execution in `partyRuntime.ts`, companion scoring in `partyAbilityAi.ts`, and
|
|
active-seat scoring in `benchmark/benchmarkController.ts`. Applying it repeatedly
|
|
preserves a single strike. It retains identity, cost, targeting, the below-35%
|
|
health gate, and Beheader's successful-kill refund. The additional Energy
|
|
conversion ratio remains unknown and is not implemented.
|
|
|
|
The historical generic AzerothCore weapon-effect sequence adds the flat bonus
|
|
before applying the percentage, which would also multiply 27. The custom CoA
|
|
server script is unavailable; this projection follows the explicit CoA tooltip's
|
|
flat bonus outside the percentage. This source interpretation remains recorded
|
|
in the helper and does not claim verification against the live server.
|
|
|
|
The Guardian audit now distinguishes acquisition from payload reconciliation.
|
|
Tower 800317 and Line 803130 carry trainer source 6, levels 4/20, but lack a
|
|
current tree node or ranked progression chain. They need an explicit rankless
|
|
trainer import path and formation-specific effect handling. No formation state
|
|
was seeded. Paragon stack spell 706516's secondary field 187 matches the August
|
|
Heavy Blow/Paragon Smash description, and children 802629/803432 support its
|
|
damage and block/Brace effects. The older primary Tower/Bastion description
|
|
is preserved as a conflict. Exact IDs, raw-field provenance, modifiers and
|
|
remaining acquisition boundaries are in
|
|
`docs/COA_GUARDIAN_FORMATION_AUDIT_2026-10-05.md`.
|
|
|
|
Rotation policy is `playerbots-inspired-v11-coa-decapitate-strike`. The explicitly
|
|
selected five builds run at level 60, seed 1, with a 30-second limit against
|
|
Cellblock Rush's catalog-template boss, Hamhock
|
|
(`bite-sized-stormwind-stockade/entry-1717`):
|
|
|
|
| Active player | Outcome | Elapsed seconds | Boss health remaining | Deaths |
|
|
| --- | --- | ---: | ---: | ---: |
|
|
| Guardian | Time limit | 30.0 | 80,007 | 0 |
|
|
| Witch Doctor | Time limit | 30.0 | 77,898 | 0 |
|
|
| Barbarian | Defeated | 12.8 | 0 | 0 |
|
|
| Ranger | Time limit | 30.0 | 29,396 | 0 |
|
|
| Pyromancer | Defeated | 24.8 | 0 | 0 |
|
|
|
|
These are isolated headless boss-room diagnostics, not a live dungeon clear.
|
|
The boss identity comes from the registered Cellblock Rush template; a fresh
|
|
live run can select a different boss. Raw configs/results are ignored local
|
|
artifacts at `artifacts/coa-first-party/stockade-decapitate-2026-10-05/`.
|
|
The final Barbarian active-seat scorer chooses other attacks in this run; its
|
|
Decapitate count is zero. Deterministic regression fixtures separately prove
|
|
one correctly calculated damage event through actual player and NPC casts.
|
|
Damage/selection changes do not certify balance, and encounter pressure remains
|
|
too low to establish tank/healer completeness. All five remain Needs Testing.
|
|
|
|
Focused validation passes 22 tests across five directly affected files,
|
|
including the actual player/NPC strike checks and existing execute/Beheader
|
|
regressions. Ready-five compatibility passes seven Vitest and twenty Python
|
|
tests. This pass changes no generated catalog records or readiness pools.
|
|
The final production build passes TypeScript, asset audits, bundling, static
|
|
compression and release-bundle verification. `npm run release:check` passes,
|
|
including untracked files; the canonical CoA vault note is updated separately.
|
|
|
|
## Guardian formations and Paragon integration, 2026-10-05
|
|
|
|
Tower Formation 800317 and Line Formation 803130 now have an explicit rankless
|
|
trainer import path in `coaAbilityCatalog.ts`, constrained to the two sourced
|
|
Guardian/class-18 rows with trainer source 6, valid levels and matching DBC
|
|
identities. They learn at levels 4 and 20 through the game's existing automatic
|
|
level-learning model. No tree grant or named trainer is invented. The generated
|
|
runtime and UI catalog changes are limited to Guardian records.
|
|
|
|
`coaGuardianFormationRuntime.ts` replaces the flattened source effects with one
|
|
owned self aura per cast. Tower gives +10 percentage points of block, adds half
|
|
of the actual shield item's armor and reduces outgoing damage by 10%. Line
|
|
adds 15% movement speed and reduces roots by 25%. Aura 232/misc 7 identifies
|
|
Root; the broader tooltip wording remains a source conflict, so other control
|
|
types retain their duration. Footman's Calling node 4019 adds 10% taken-damage
|
|
reduction only while an own live form is active. Projection uses current talent
|
|
ranks, equipment and health, preventing borrowed/expired markers and recomputing
|
|
shield armor after equipment changes. No numeric threat grant is assumed.
|
|
Switching replaces the other form through an authored exclusive group; source
|
|
categories 708/709 do not prove exclusivity. Toggle-off remains unfinished.
|
|
|
|
`coaGuardianParagonRuntime.ts` follows August Vol'Jin node 29969/706514,
|
|
706516's compatible secondary text and linked payloads. Heavy Blow adds three
|
|
stacks on successful cast; a block adds one with a 500 ms stack-trigger internal
|
|
cooldown. Stacks last ten seconds and cap at ten. Readiness 707138 grants no
|
|
block bonus. While ready, Heavy Blow's existing action slot, identity, cost,
|
|
talent gate and cooldown project to Paragon Smash: 144 + 37% AP in an 8-yard
|
|
self circle, confirmed by local SpellRadius.dbc row 14. A successful Smash
|
|
creates the separate ten-second +10-point block buff with five block charges.
|
|
Each block during that buff consumes a charge and reduces an active Brace
|
|
cooldown by two seconds. Companion authority and its mirrored member receive
|
|
the same reduction. No unverified stack-consumption/reset rule is introduced;
|
|
a qualifying event can reestablish readiness after its previous window expires.
|
|
The stale primary Tower/Bastion text remains documented in the source audit.
|
|
|
|
Player execution, companion execution/scoring, active-seat benchmarking and HUD
|
|
use the shared projection. The HUD displays Smash in the Heavy Blow slot during
|
|
readiness. Both player and companion movement consume owned Line speed.
|
|
Vanguard companions prepare learned Tower through ordinary readiness, targeting
|
|
and resource payment and preserve an existing Line. Formation preparation
|
|
respects `nextActionAt`, so a future preparation decision does not suppress
|
|
normal attacks. Cast/block fixtures prove player and companion paths; they use
|
|
explicit block-probability fixtures to make combat outcomes deterministic.
|
|
|
|
The ready-Smash priority is an authored rotation policy: priority 7,500 only
|
|
for a Vanguard tank at or above 55% health; injured, unknown-health and other
|
|
actors retain the existing fallback preference. The public companion scorer
|
|
uses ordinary learned, ready candidates and chooses Smash over routine Ballad
|
|
maintenance. Existing low-health mitigation and urgent reactive taunt/interrupt
|
|
scores remain ahead of it. This is a gameplay preference, not a source-derived
|
|
optimal rotation.
|
|
|
|
Rotation policy is `playerbots-inspired-v12-coa-guardian-formations-paragon`.
|
|
The generated five builds at level 60, seed 1, with a 30-second limit against
|
|
Cellblock Rush's catalog-template Hamhock
|
|
(`bite-sized-stormwind-stockade/entry-1717`) produce:
|
|
|
|
| Active player | Outcome | Elapsed seconds | Boss health remaining | Deaths |
|
|
| --- | --- | ---: | ---: | ---: |
|
|
| Guardian | Time limit | 30.0 | 81,106 | 0 |
|
|
| Witch Doctor | Time limit | 30.0 | 76,687 | 0 |
|
|
| Barbarian | Defeated | 12.8 | 0 | 0 |
|
|
| Ranger | Time limit | 30.0 | 23,870 | 0 |
|
|
| Pyromancer | Defeated | 24.8 | 0 | 0 |
|
|
|
|
Each companion-Guardian seat records one naturally selected Tower cast. The
|
|
active-player benchmark records no Tower cast; manual player casting is covered
|
|
by actual cast fixtures and the browser diagnostic. These
|
|
are isolated headless diagnostics at ignored
|
|
`artifacts/coa-first-party/stockade-guardian-2026-10-05/`, not live dungeon clears.
|
|
The role-weighted Guardian allocation does not learn Paragon/Heavy Blow, so
|
|
these five results do not establish Smash selection. Incoming damage is low;
|
|
all five remain Needs Testing and no random/readiness pool changed.
|
|
|
|
Focused validation passes 66 unique tests across fifteen directly affected CoA
|
|
and input files, including actual player/companion formation and Paragon casts, incoming
|
|
root handling, shield armor/Footman's Calling, block charges/Brace reduction,
|
|
unrestricted companion scoring and prior Brewing/Splash/weapon-strike paths.
|
|
Ready-five compatibility passes seven Vitest and twenty Python tests. Avatar
|
|
checks pass 56 tests across eleven files. Narrow compatibility checks for the
|
|
shared workspace's boss guide, disarm metadata/runtime and extra-attack helper
|
|
pass seventeen tests; compatibility fixes preserve those existing behaviors.
|
|
|
|
The final production build passes TypeScript, asset audits, Vite bundling,
|
|
static compression and release-bundle verification. During verification,
|
|
concurrent enemy-runtime changes briefly duplicated/removed their interface
|
|
fields and concurrent bootstrap runs collided on an exclusive object write;
|
|
final validation uses the successful completed build. The final creature weapon
|
|
state declarations share one typed interface, preserving runtime behavior.
|
|
|
|
The isolated live harness uses an explicit, runtime-normalized level-60 Guardian
|
|
variant learning Paragon and Heavy Blow alongside Footman's Calling, Brace and
|
|
Vanguard's Shield. It resolves the public catalog preloader and resource API's
|
|
minified export aliases from source-matched bundle AST, loads the five class
|
|
catalogs before entry, and verifies their resource profiles. Switching characters
|
|
cannot preload a whole party persistently because the app reloads its memory
|
|
when the entered character changes. The harness therefore installs a scoped
|
|
pre-entry PartyBridge initialization fixture, calls the normal initializer and
|
|
substitutes the prepared companions before actor synchronization. It leaves
|
|
readiness/random pools unchanged and seeds no combat/proc state. A selectable
|
|
first-party preset in the game UI remains separate work.
|
|
|
|
Live entry exposed two startup gaps and supplied the final regressions.
|
|
`combatRotation.ts::precombatPreparationEffects` now excludes exact Guardian
|
|
formation spells from generic free aura preparation: initial entry has no form,
|
|
player casting pays normally, companion preparation casts normally, and later
|
|
preparation cannot add a second raw form or replace a chosen Line.
|
|
`actionBindings.ts::normalizeActionBindings` separates default assignment order
|
|
from an optional explicit allowlist. `combatStore.ts::initializeCharacter`
|
|
validates saved slots against all nonpassive class actions, then retains the
|
|
existing unlearned-talent filter. The learned Heavy Blow talent action survives
|
|
entry in its saved slot, while unlearned and unknown actions are rejected.
|
|
|
|
The shared `dist/assets` directory became locked during rebuild. Final verification
|
|
uses an isolated output at
|
|
`artifacts/coa-first-party/stockade-guardian-2026-10-05/dist-final`: prebuild and
|
|
asset audits passed, then the same npm build command ran with lifecycle hooks
|
|
skipped and an explicit output override; compression and release-bundle checks
|
|
ran explicitly against that output. The live harness accepts a confined `--dist`
|
|
path and records the directory/bundle assets actually tested.
|
|
|
|
The final 180-second browser diagnostic completes on the isolated production
|
|
bundle at `artifacts/playtest/coa-guardian-formations/20261006-011259958/`.
|
|
Normal offline creation, Button Assignments, Cellblock selection/download and
|
|
Tank entry are preserved; the exact companion composition is the explicitly
|
|
recorded pre-entry fixture. Entry verifies level 60, all five catalogs, no seeded
|
|
formation and the saved Heavy Blow R2 slot. Real action-bar clicks cast Tower,
|
|
Line and Tower again, each leaving only its own projected form. The first Tower
|
|
reduces Energy from 100 to 83; this legal build's cost modifiers resolve the
|
|
base 20 cost to 17, with normal regeneration between later casts.
|
|
|
|
The fresh run selects Dextren Ward (`entry-1663`, `creature-79116`), confirmed
|
|
by its intro card. Screenshot 02 is a countdown overlay because the initial
|
|
detachment wait raced the intro's appearance; screenshots 03/04/06 provide the
|
|
actual in-dungeon evidence. The route explores about 8 m near the entrance,
|
|
with 5.74 m net displacement, full player/party health and no observed boss
|
|
actor. It records only the three formation casts, no natural Paragon ready/Smash
|
|
marker and no healing/combat pressure. It does not establish a clear, balanced
|
|
party, live Smash proc or complete tank/healer rotation. The actual proc/block/
|
|
Brace and unmasked scorer coverage comes from the focused regression fixtures.
|
|
|
|
Reviewed the roster body/shield capture and in-dungeon captures: the player
|
|
body and equipped shield/weapon silhouettes render, while the clustered party
|
|
and large temporary gold effects obscure some companions. Heavy Blow remains
|
|
visible in its saved R2 slot at the endpoint. Browser exceptions are zero;
|
|
one console 404 is unclassified, with no failed requests or HTTP errors in
|
|
the harness's recorded request scope. These visual and request limitations
|
|
remain in the live evidence. All five stay Needs Testing. The source/cast fixes,
|
|
scoped diagnostic harness, milestone, source audit and canonical CoA vault note
|
|
are updated together.
|
|
|
|
`npm run release:check` passes, including untracked files. The Git index is
|
|
unchanged; no commit, deployment or readiness promotion was performed.
|