platformer: finish Phase E — the goo serpent (L6) + the serpent generalized#63
Merged
Merged
Conversation
…alized Completes asset-expansion Phase E (snakes & the slither beat): - Generalize the L4 lava serpent into a reusable pfMakeSerpent / pfTickSerpent (params: pL, pR, pSurfY, pPeakY, pFrame, pAnim), driving both the snakeLava and snakeSlime skins from one code path. Single- instance (one serpent per level, reset on each build); gLSerpLavaY -> gLSerpSurfY. L4 now calls pfMakeSerpent ... "snakeLava.png","snakelava". - New slime-pool beat on L6 (CAVERN DEPTHS): PIT2's spike chasm becomes a toxic GOO POOL (new pfMakeSlimePool - a green goo rect over a knockback hurt sensor, the slime-biome twin of pfMakeLava) where a rearing snakeSlime serpent rises out of the goo, arcs across and sinks back in, peaking at ~jump-arc height (y460) over the centre. Time the double-jump for when it has sunk; a mistimed leap or a slip into the goo is a recoverable knockback. Serpent created before the goo so the goo draws over its submerged body. Self-gates on gSpooksOK (a plain double-jump gap without the spooks sheet). - Two more plain snake placements for variety: a meadow snake on L1 and a sand snake on L5, each on a verified-clear ground stretch (self-reverses at its band ends). - Tie up the loose end: document the forward-constant-reference trap as CLAUDE.md gotcha 29 (OXT leaves a constant referenced before its declaration unresolved - it silently zeroes the expression; that was the L4 serpent's "never rose" bug). Confirmed in OXT. - audit-platformer.py tracks pfMakeSlimePool as a lava-like hazard. Static gates clean; audit-platformer 0 findings across 7 levels. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X92APxUJUMue3bAzXiX9V2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Completes asset-expansion Phase E (snakes & the slither beat), building on the L4 lava serpent that just merged in #62. All example-side — no Kit change, no harness bump.
The serpent, generalized
The L4 lava-serpent maker becomes a reusable
pfMakeSerpent pL,pR,pSurfY,pPeakY,pFrame,pAnim(tickpfTickSerpent), driving both thesnakeLavaandsnakeSlimeskins from one code path. Single-instance (one serpent per level, reset on each build);gLSerpLavaY→gLSerpSurfY. L4 now calls it with the lava skin.New slime-pool beat (L6, CAVERN DEPTHS)
PIT2's spike chasm becomes a toxic GOO POOL — new
pfMakeSlimePool, a green goo rect over a knockback hurt sensor (the slime-biome twin ofpfMakeLava). A rearingsnakeSlimeserpent rises out of the goo, arcs across and sinks back in, peaking at ~jump-arc height (y460) over the centre: time your double-jump for when it has sunk. A mistimed leap or a slip into the goo is a recoverable knockback (the saw rule). The serpent is created before the goo so the goo draws over its submerged body (it reads as rising out of the goo). Self-gates ongSpooksOK— without the spooks sheet it's a plain double-jump gap.More variety
Two more plain snake placements on verified-clear ground stretches — a meadow snake on L1 and a sand snake on L5 (each self-reverses at its band ends).
Loose end tied up
Documented the forward-constant-reference trap as CLAUDE.md gotcha 29: OXT leaves a
constantreferenced before its declaration unresolved, silently zeroing the expression — that was the L4 serpent's "never rose" bug (sin(kPI * tP)withkPIdeclared ~900 lines later). Confirmed in OXT.Verification
check-livecodescript.py— PASS (no smart quotes, handlers/blocks balanced, embedded Kit in sync)audit-platformer.py— 0 findings across all 7 levels (now also trackspfMakeSlimePoolas a hazard)Needs the OXT pass — that the L6 goo serpent rises/sinks and reads in the cavern, the timing of the goo-pit double-jump feels fair, and the new L1/L5 snakes sit right (placement + facing are statically unverifiable, gotcha 26).
🤖 Generated with Claude Code
Generated by Claude Code