Skip to content

Adv dragoon: distinct identity, one dragoon GLB (-4.9 MB) - #30

Merged
proggeramlug merged 2 commits into
mainfrom
fix/adv-dragoon-distinct
Jul 16, 2026
Merged

Adv dragoon: distinct identity, one dragoon GLB (-4.9 MB)#30
proggeramlug merged 2 commits into
mainfrom
fix/adv-dragoon-distinct

Conversation

@proggeramlug

Copy link
Copy Markdown
Contributor

Third slice of the 2026-07-16 audit.

enemy_adv_dragoon.glb was byte-identical to enemy_dragoon.glb (same MD5) — upstream level3 has no adv art, its body_adv.skin resolves to the default textures. So the game's only ranged heavy looked exactly like the melee heavy until its barb was in flight.

  • Both dragoon kinds now load one GLB; the adv gets a violet base tint via a new per-kind KIND_TINTO table (albedo multiplier — shading, normal maps, hit-flash all intact; the flash lerps from the kind tint so the violet identity survives being shot).
  • Corpse draws (blow / ragdoll / sink fallback) keep the kind tint.
  • Converter row removed — dead output stops being produced. −4.9 MB.

Verification: compile green; AITEST batch run with a temporary dataflow probe logged the tint reaching the draw call; the multiply mechanism is the same drawModel tint parameter the hit-flash and the 88 tinted trees already exercise in production. The exact violet (255,150,235) is one table row to tune after seeing it in a real wave-3 fight.

Bonus finding recorded for the audit doc: the diag bar renders the world name as Arena 02 â€" Outdoor plaza even though the world JSON contains a clean em dash — Perry/engine file reads decode UTF-8 as Latin-1, so any non-ASCII text asset renders as mojibake. That needs an engine-side fix (new ticket in the audit follow-ups).

enemy_adv_dragoon.glb was BYTE-IDENTICAL to enemy_dragoon.glb (same MD5):
upstream level3 ships no adv art - its body_adv.skin maps to the same
textures as the default skin - so the converter's adv row produced a
4.9 MB duplicate. Gameplay-wise that meant the game's only RANGED heavy
was indistinguishable from the melee heavy until the barb was already in
the air, in a game whose ranged kinds exist precisely to make reading
the field matter (SH-042's own words).

- enemies.ts: both dragoon kinds load ONE GLB; new KIND_TINTO per-kind
  base tint (albedo multiplier - shading/normals untouched); the adv
  dragoon gets a violet shift (255,150,235), everyone else stays white.
- main.ts: the live draw lerps the KIND tint toward red on hit flash
  (so the adv stays recognisably violet while flashing); all three
  corpse draws (pre-ragdoll blow, ragdoll, clamp-and-sink fallback)
  keep the kind tint instead of WHITE.
- convert-aliens-anim.ts: the adv dragoon row is gone - dead output has
  to stop being produced. enemy_adv_dragoon.glb deleted (-4.9 MB).

Verified: perry compile green; AITEST batch run with a temporary probe
confirmed (a) the tint object reaches the draw call (logged tintG0=150
for a probe-tinted kind), (b) the run/AI are unaffected. The multiply
mechanism itself is the same drawModel tint parameter the red hit-flash
and the 88 per-tree tints already exercise in production. Eyeball the
exact violet when an adv dragoon wave is next played; the value is one
table row to tune.

Also learned (filed for the audit doc): the F12 screenshot path renders
the main menu darkening over an AITEST-started run because the harness
calls startRun() directly and predates the SH-049 front-end - AITEST
runs live under a drawn menu. Numeric probes remain the trustworthy
channel there.
@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@proggeramlug, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 46 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 5a7ebb64-7aed-4be0-87c7-5ec6d71b407c

📥 Commits

Reviewing files that changed from the base of the PR and between 61f0ac9 and 7d9bab4.

⛔ Files ignored due to path filters (2)
  • dxcompiler.dll is excluded by !**/*.dll
  • dxil.dll is excluded by !**/*.dll
📒 Files selected for processing (4)
  • assets/models/enemy_adv_dragoon.glb
  • src/enemies.ts
  • src/main.ts
  • tools/convert-aliens-anim.ts
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/adv-dragoon-distinct

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Import-block conflict: took main's post-#28 trimmed list + KIND_TINTO
(the one name this branch adds to main.ts). Both changesets verified
coexisting: ppFrame hoists (#28) and the kind-tint draws (this PR).
@proggeramlug
proggeramlug merged commit 1a40d23 into main Jul 16, 2026
1 check passed
@proggeramlug
proggeramlug deleted the fix/adv-dragoon-distinct branch July 16, 2026 10:21
proggeramlug pushed a commit that referenced this pull request Jul 16, 2026
Two things the textually-clean auto-merge would have shipped broken:
- #28 removed KIND_COUNT/ALIEN_GLB from main.ts imports; this branch's
  stageModels batch uses both. Re-added - a green Perry compile does not
  catch absent cross-module imports (ReferenceError at boot).
- This branch (and #30) accidentally committed dxcompiler.dll/dxil.dll:
  both were branched before #29's .gitignore landed, so 'git add -A'
  swept the untracked DLLs in, and #30's merge carried them onto main.
  Untracked again here (files stay on disk - the game needs them beside
  the exe; see EN-058).

Verified on the merged tree: compile green, 14 s batch run boots to the
menu with [music] menu=1 calm=2 combat=3 and [anim] clipset=2 slot0=9
slot1=10 both live.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant