Update Healer Man server
This commit is contained in:
1 parent
39458d5de6
commit
6cc1b9217f
203 files changed
+133929
-31271
No files matched your search
@@ -0,0 +1,67 @@
|
||||
# Native RoM enemy equipment, encounter packets and healing pressure — 2026-10-03
|
||||
|
||||
This pass completes the requested follow-up to native combat resolution: source NPC equipment, supported fixed/percentage enemy damage, targeted encounter reactions, and measured healing pressure. The level cap remains 80. Existing saved RoM characters retain WoW stats until switched; each player/companion selects its own resolver. No loot, matchmaking, difficulty-slider change or readiness promotion is included.
|
||||
|
||||
This report preserves the earlier pass and its shared-regeneration measurements. The subsequent [recovery, equipment and pacing follow-up](ROM_NATIVE_RECOVERY_EQUIPMENT_PACING_PASS_2026-10-03.md) supersedes the 398/440 equipment count and native HP/Mana recovery limitation below.
|
||||
|
||||
## Equipment and source damage
|
||||
|
||||
`export-rom-native-npc-equipment.mjs` owns the compact NPC candidate/item/refine snapshot. `romNativeNpcEquipment.ts` resolves actual source candidate slots, wear power and known WearEQ channels rather than averaging candidate stats. Main-hand speed/range/damage and supported attributes, attack, defense, healing and resistance feed `romNativeNpcCombatant`. Current live callers use the stable NPC-id default seed; the provider also accepts an actor seed and explicit candidate overrides. Separate copies therefore currently select the same equipment for the same source NPC. Equipment drops/affixes are not attached to loot.
|
||||
|
||||
Under that default selection, 398 of 440 imported NPCs have supported native snapshots. The remaining 42 retain explicit fallback: 26 selected off-hand weapon-DMG cases, ten bow/ornament cases, two unknown item effect cases, and four preexisting vocation-sub-ID mismatches. See [the equipment source report](ROM_NATIVE_NPC_EQUIPMENT_PASS_2026-10-03.md) for exact source paths, item coverage and hashes.
|
||||
|
||||
`romNativeEnemyDamage.ts` binds exact NPC/skill/component and source MagicLv for manual fixed damage (CalType 4) and recipient-MaxHP percentage damage (CalType 8). These branches preserve their source absorption, integer, sharing and ordinal order; they do not acquire generic ATK/DEF, elemental resistance or critical multipliers. Native target absorption is accepted only for verified canonical training gear and represented neutral aura channels. Non-target magical packets additionally require a supported NPC body/equipment snapshot and verified neutral source AoE power; an NPC with active unverified auras falls back. Generic dealt/taken modifiers and ordinary shields remain in the existing application path.
|
||||
|
||||
Source Throw (CalType 2) is audited separately: no exact imported NPC binding currently uses that calculation. An unbound source spell is not attached to an enemy merely to exercise the branch. Missing fixed attributes, unknown equipment or source effects remain unsupported rather than borrowing WoW inputs. See [the enemy formula source report](ROM_NATIVE_ENEMY_DAMAGE_SOURCE_2026-10-03.md).
|
||||
|
||||
The live direct-damage consumer uses the source formula amount with the existing authored `mob.damageMultiplier`. It bypasses the new native training-party damage budget for exact CalType 2/4/8 amounts. This prevents multiplying an already sourced fixed or maximum-HP packet by the high-level shared-damage calibration. Source skill rank stays on the NPC binding; this pass does not claim every fixed-damage encounter is balanced when scaled to every player level. Encounter health continues to use authored/scaled pools.
|
||||
|
||||
## Encounter behavior
|
||||
|
||||
The headless encounter checks use actual Anglo Trample/Bash/Gulp definitions with only initial cooldown accelerated for isolated mechanic tests. Trample and Bash retain their source 1.8-second warning and five-unit range. Moving the player and Mage outside the radius during the warning excludes them while the remaining nearby companions receive the physical packets. Gulp applies to actual nearby recipients; manual player/NPC dispels and a real native NPC Priest cleanse remove control before natural expiry. A real companion interrupt cancels Trample without damage.
|
||||
|
||||
An interrupted/stunned/silenced enemy cast now emits its cast-cancel presentation event when clearing the active cast. Previously the simulation cancelled the cast while its telegraph/presentation could remain active. Self-target Regenerate ticks now enter the structured healing ledger with raw/effective/overheal fields; healing itself is unchanged. Both fixes have direct regression coverage.
|
||||
|
||||
The pressure harness uses the actual mob/party tick pipeline with scripted stacked/spread positions. It is not a scene-navigation certification. Its 16 pulls cover levels 10/30/60/80 with an active or idle player Priest and the four other exact native builds. A separate 40-case damage integration selection covers fixed and MaxHP packets against all five builds in both player/NPC seats at levels 30/80. These are explicitly requested diagnostics for Needs Testing builds, outside randomized/all-class certification.
|
||||
|
||||
## Measured calibration
|
||||
|
||||
`before-pressure-tuning.json` preserves the post-equipment, pre-pressure-adjustment baseline. Before tuning, level-80 Anglo dealt only 335–402 effective enemy damage over roughly 40–57 seconds against a 49,210-HP tank. Large spread-party healing totals were chiefly native Vampire Arrows health costs, not boss damage. The report now separates enemy damage from self/other ability damage so those costs cannot masquerade as encounter pressure.
|
||||
|
||||
`dungeonBossScaling.ts` exposes `nativeDamageBudgetScale` separately from authored/difficulty damage multipliers. It applies only to a RoM-origin native-stat party's shared enemy-damage budget. Anchors are level 1:1, 10:1, 30:3, 60:10, 65:12, 66:20, 79:40 and 80:40; intermediate values interpolate. `MobPopulation.tsx` passes it into live registration. `combatStore.ts` scales shared attack damage and its attack-power contribution together and handles repeated registration without compounding. The compatibility curve, native health anchors and difficulty controls stay intact.
|
||||
|
||||
| Level-80 pressure sample | Enemy damage | Player effective healing | Lowest party HP | Clear time |
|
||||
| --- | ---: | ---: | ---: | ---: |
|
||||
| Active Priest, spread | 13,415 | 54,258 | 82.0% | 49.1 s |
|
||||
| Active Priest, stacked | 13,415 | 13,415 | 82.0% | 41.1 s |
|
||||
| Idle Priest, spread | 16,098 | 0 | 13.0% | 57.1 s |
|
||||
| Idle Priest, stacked | 13,415 | 0 | 48.7% | 52.0 s |
|
||||
|
||||
The spread sample still includes substantial Scout health costs, recorded separately in `otherDamage`. All 16 pulls cleared without deaths or invalid controller casts. Active healing remains comfortable; idle stacked health falls materially below the baseline. This is a first measured normal-mode training budget, not a difficult-mode or every-dungeon guarantee. Mana minima remain approximately 95–99% for the active samples under the shared regeneration policy. Native MP regeneration, resource sustain and mana-pressure balance remain open; this pass does not imply mana challenge parity.
|
||||
|
||||
The regenerated fixed full-player/four-NPC cohort clears all 80 requested pulls at levels 1/10/30/60/65/66/79/80, with no player/NPC deaths or invalid casts. Trash takes 4.9–8.7 seconds and Anglo 42.0–58.5 seconds. Both exact enemy snapshots are source-supported. Static positions omit navigation; the separate mechanic fixtures cover selected movement and reactions.
|
||||
|
||||
## Evidence and validation
|
||||
|
||||
- `artifacts/rom-enemy-followup/before-enemy-source-expansion.json`: preserved previous native-resolution cohort.
|
||||
- `artifacts/rom-enemy-followup/before-pressure-tuning.json`: complete 16-pull pressure baseline.
|
||||
- `artifacts/rom-enemy-followup/pressure.json`: final pressure ledger and ability-level self/other damage.
|
||||
- `artifacts/rom-five-native-rotation/report.json`: final 80-pull cohort.
|
||||
- `src/game/romNativeEncounterPressure.integration.test.ts`: six encounter/pressure checks.
|
||||
- `src/game/romNativeEnemyDamage.integration.test.ts`: player/NPC formula and fallback coverage.
|
||||
|
||||
Focused native/source validation passes 141 distinct tests across 22 files, including the 40 exact packet cases and six encounter/pressure checks. The repeat-registration/mode-switch regression also verifies that pressure does not compound or survive a switch to compatibility scaling. The separate 80-pull cohort passes its diagnostic test. Avatar checks pass 47/47; Ready-five checks pass seven Vitest and twenty Python cases. The app TypeScript check passes with the repository's required larger Node heap.
|
||||
|
||||
The final `npm run build` passes bootstrap generation, texture/performance audits, TypeScript, Vite, static compression and release-bundle verification. The tested production chunks are `index-pDR2PGJY.js`, `combatStore-7m63VWbc.js` and `GameRuntime-CGZMQPoV.js`. The asset audit has no new regressions; existing chunk-size/static-dynamic-import warnings remain.
|
||||
|
||||
Exact production Edge QA passes with no page errors. The UI-created level-30 native Knight/Scout and four native companions enter real Boss Testing scenes for Anglo and Lady Anacondra. Both normal snapshots record native damage budget 3; Anglo attack damage is 289 with authored multiplier 1.3, and Lady's is 354. These are live population-registration checks, not injected mob-stat assertions. Roster and in-dungeon screenshots visibly retain player/party bodies and starter shield/sword/staff silhouettes.
|
||||
|
||||
The final `--fixtures-only` run reuses those successful normal-scene snapshots from the same production chunks (`normalScenesReran: false`) and stages actual Anglo Trample, Bash and Gulp individually. Only cooldown/readiness, attack-list selection, threat and positioning are fixture setup; Trample companion actions are paused to keep its warning observable. Each actual source attack keeps its 1.8-second cast, range, effects and telegraph and releases once. Moving out of Trample's hit area produces zero player damage events; Bash retains its five-unit range. Gulp controls a nearby Rogue and clears at/after source expiry; this browser sample has no Priest cleanse evidence. The separate headless test proves NPC cleansing with the Priest outside Gulp's radius. Test setup was corrected to reset position/source attack lists between fixtures; no runtime change was needed.
|
||||
|
||||
Evidence is in `playtest-artifacts/native-combat/results.json`, the two normal sample JSON files, roster/normal scene images and six `anglo-*-fixture.png` images. Representative roster, party/dungeon, Trample warning/movement, Bash and Gulp screenshots were visually inspected. This selected production QA does not certify a normal full clear, full navigation, mobile UI or every encounter. Harness syntax checks and repository/vault text hygiene pass; no readiness reviews or dungeon reports were submitted.
|
||||
|
||||
The additional `dungeonBossScaling.test.ts` run passes 13 checks and fails four compatibility-pacing expectations: WoW Stockades at levels 1/3 (14.6/15.1 seconds versus a 24.5-second floor), legacy RoM Mage at level 8 (23.6 versus 25 seconds), and legacy RoM at level 80 (11.3 versus 25 seconds). A Luna subprocess copied the committed pre-native scaler from `b16821e` into ignored scratch files and reproduced the two WoW starter failures and the RoM Mage level-eight failure with the current surrounding runtime. It did not replay the exact level-80 healer case; an additional level-80 Mage diagnostic is a different cohort. Committed/current legacy scaling outputs match for all four original inputs, and these omitted-ruleset calls use native damage budget 1. This isolates the new native scaling branch from the health/damage outputs; it does not certify the entire committed runtime or establish an exact four-case committed replay. Scratch files were removed. Compatibility pacing was not retuned and the failed expectations remain visible.
|
||||
|
||||
## Remaining scope
|
||||
|
||||
Off-hand weapon damage, bow/ornament equipment, unknown item effects, unbound Throw, unknown fixed attributes, unrepresented absorb/AoE aura channels and custom gear continue to fail closed. Cross-system incoming-hit aura translation into native source gates, native resource regeneration, full scene navigation and broader encounter balance remain outside this pass. RoM classes remain Needs Testing.
|
||||
Reference in new issue
Block a user