Update Healer Man server

This commit is contained in:
phenom committed 2026-09-24 16:42:43 -04:00
1 parent a64b2cb575
commit 71246e5b75
502 files changed
+4245 -19

No files matched your search

+46
View File
@@ -48,6 +48,52 @@ Publishing a new app/content release remains the normal deployment step.
Development gameplay uses Vite's local source media directly; release builds
retain the verified media-pack download requirement.
## RuneWaker spell media mapping
`npm run effects:rom` refreshes only RuneWaker manifest entries and packages
their sound cues without rebuilding WoW effects. It reads spell-to-image links
from `romPlayerCatalog.generated.json` and `magiccollectobject.db`, effect model
paths from `imageobject.db`, and exact same-name cues under the client's
parallel `sound/fx` tree. The sound association is a path match, not an
explicit sound ID from `imageobject.db`. Each cue is tagged with its source
cast phase so a target impact does not replay a caster sound.
`npm run effects:rom:particles` packages a decoded ROS particle archive for the
five primary classes and their accepted elite pairs. Build the native exporter
with `scripts/runewaker-pipeline/native/build-exporter.ps1` first. The exporter
reads ACT motion controllers, where the texture names and particle keys live;
the static entity tree alone contains default values. Set `RUNEWAKER_RESOURCE_ROOT`,
`RUNEWAKER_EXPORTER`, or `TEXCONV_BIN` to override the default source and tool
locations. The archive index at
`public/assets/game/combat-effects/original/runewaker/manifest.json` records
decoded and unsupported controller families per model. Its graphs contain the
source shader identity, blend mode, billboard settings, particle tracks, and
PNG versions of referenced DDS textures. The archive also extracts the SMUNI
vertex and pixel HLSL from the Rune engine source with a source hash. Texture
tile sizes are pixels, not atlas row and column counts.
`npm run effects:rom:audit` writes the first-five class and accepted-pair map
to `docs/ROM_SPELL_MEDIA_MAPPING.md`. It distinguishes source ROS references,
packaged audio, and browser-playable original visual graphs. The WebGL sprite
renderer plays Priest Urgent Heal, Heal, and Group Heal casts, Knight Charge
cast and Whirlwind Shield impact, and Mage Electric Bolt projectile. The exact
spell, phase, and model allowlist lives in `rom-particle-readiness.mjs`. Other
ROS phases remain in the archive until their controller families and motion
sequence are checked in the browser. Open `scripts/combat-effects/rom-preview.html`
with the Vite dev server to inspect the decoded sprite models. The emitter
integrates source rate keys over each rendered frame so short bursts survive
slower frames. Whirlwind Shield uses a 2.5 presentation scale after live
dungeon review.
The Priest's holy `act_casting_c_hand.ros` has three renderable sprite layers
and one `CRuController_EventTrigger` in its `appear` motion. The RuneWaker
source identifies event 43 as looping direct 3D audio for
`sound/fx/skill/holy/act_casting_c_hand.wav`, not another visual layer. The
packager marks this exact model renderer-ready after validating that event's
parameters. Its packaged WAV loops only during the matching Priest cast and
stops on release or cancellation. Other unsupported event triggers still
block a graph from the ready allowlist.
## Rendering
The `wow-m2-model` format composes source particles, animated/skinned geometry,