platformer: expand Scorched Dunes (L5) to three acts (length + variety)#61
Merged
Merged
Conversation
Second of the level-length audit pass: Scorched Dunes grows from 4,200px / 12 coins / 3 foes to ~6,400px and 24 coins, keeping Act 1 verbatim and appending two desert acts across three thorn pits. ACT 2 - a darting fly (mover with a hurt box), a SECOND dune a sand boulder rolls DOWN at you (it re-parks at 4160, so the bank you land on after PIT2 stays safe), a high one-way sand-cloud route, a fire critter (spike-type: no stomp) and a second frog. ACT 3 - a treasure mimic, a second fly, a final sand-cloud route and a homeward snail to the summit steps + flag. Three checkpoints now (using the fixed multi-checkpoint path). Desert variety stays thematic - flies, a rolling dune boulder, fire slimes, a buried-treasure mimic - no cave creatures. Also back-fills the CHANGELOG with the multi-checkpoint fix that shipped in the previous PR without a changelog note. Example-side only (no Kit change, no harness bump). Static gates clean; the geometry audit caught a summit coin overlapping the flag (fixed), 0 findings across all 7 levels. Needs the OXT pass for feel/spacing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X92APxUJUMue3bAzXiX9V2
The vertical climbing tower, made to really pop for the length pass. It roughly doubles in height (1,280 -> ~2,300px, 8 -> 16 ledges) and goes from 8 coins / 2 spinners to ~22 coins / 2 bonus gems and a real bestiary. Variety chosen to work in a VERTICAL shaft. Bats, ghosts, snails and mimics all hardcode a horizontal ground-y (the bat seeks y450, the ghost clamps to 220..540, the snail builds its body at y544, etc.), so they were ruled out. The makers that take an explicit surface-y ride the one-way ledges fine, so the keep fields: - FIVE sweeping spinners guarding the climb gaps, each verified standing-safe on both adjacent ledges (hero half-height 38, hurt 28); - a stationary HALF-BLADE (pfMakeSpinner pHalf) on the final ledge; - three WARDENS on the wide "fight" ledges - a slime to stomp, a hopping frog, and a spike slime to dodge (no stomp on the spikes). pfDressWall tiles the taller shaft; the windows/torches climb it. Example-side only (no Kit change, no harness bump). The geometry audit skips vertical levels, so the spinner safety and ledge spacing were hand-verified; script gates clean, L1-L6 still 0 findings. Needs the OXT pass for the vertical-only checks (walkers resting on the one-way ledges, the spike-slime leap to L14, blade timing, the taller wall build). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X92APxUJUMue3bAzXiX9V2
Phase C slice 3, part 1 (the multi-key half). pfMakeKeyDoor was single-instance - it stashed the door + its key state in shared globals (gHasKey/gDoorX/gLockSpr/...) that each call overwrote, so a level could have exactly one door. It now appends to a per-door table indexed 1..gDoorN, and the hero carries a SET of keys instead of a single boolean: - gKeysHeld is the comma-list of colours held (HUD: [KEYS yellow,blue]); - each key tags itself uPfKeyWord = its colour (Word, not Colour - the stem 'colour' is an engine property, gotcha 2) and rides the shoulder, fanned out by held-count when you carry several; - pfTickDoors loops every door; the matching held key opens it and is CONSUMED, so each key opens exactly its own colour. Single-door levels (L3's red door) build as door #1 and behave as before. L2 "The Works" now ends on a TWO-KEY lockgate: a yellow key on the main run, a blue key up on the hop clouds, and a double door before the flag. L2 also gains coins to 24 (was 19), closing the level-length audit's last loose end. Example-side only (no Kit change, no harness bump). Static gates clean; audit 0 findings across all 7 levels. The floor switch -> gate half of slice 3 lands next. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X92APxUJUMue3bAzXiX9V2
…rt 2) The floor-switch half of Phase C slice 3. pfMakeSwitchGate plants a floor/ledge switch (switch_<colour>) and the coloured kinematic gate (block_<colour>) it opens. Unlike pfMakeGate's momentary pressure pad it LATCHES: step on the switch once and the gate rises out of the way for good. pfTickSwitchGates polls only-moving-bodies (the ground slab never reads as pressed), drives the kinematic gate up on change, and once it settles open gSwDone short-circuits the tick to one compare/frame. L2 "The Works" gets a GREEN switch-gate: the gate bars the way into the crusher alley until you climb to the third-bay cloud and press the switch up there - a "find the switch" beat (skip it and the closed gate sends you back to look). Keys + switch are all gToysOK-gated, so a missing tiles sheet degrades to an open run. Mirrors pfMakeGate's kinematic-velocity move (write-on-change). Fixed a dangling-else in the maker (block-form the inner sprite-bind if, like pfMakeGate). Example-side only (no Kit change, no harness bump); static gates clean, audit 0 findings. Slice 3 complete - needs the OXT pass (the switch detection + the gate opening reliably). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X92APxUJUMue3bAzXiX9V2
OXT feedback: the blue door sat embedded in the goal step (level unwinnable), and the two gates were crammed together by the flag. The L2 stone vault finale was only ~220px (yellow door 5344 -> steps 5568), with no room for a second door - so the blue door at 5600 landed inside pf_plat1 (5568..5760). Extended the finale (~5,884 -> ~6,312px) into a real corridor: yellow gate (5344), a 416px stone corridor, blue gate (5760), a run, then the steps (6016) and flag (6272) - each its own beat, the gates well clear of the steps. End coins re-placed along it (L2 now 25 coins), and the grass bush that would have sat inside the stone vault moved out to 5160. Also gave the GREEN switch-gate clear air: moved it 4060 -> 4000 and retired the redundant fourth-bay snail (it jammed between the snail and the first crusher) - the switch-gate guards that approach now. Example-side only; static gates clean, audit 0 findings across 7 levels. Needs the OXT pass (the two gates open with their keys, the switch opens the green gate, the flag is reachable). 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
Second increment of the level-length / variety pass (after L6 in #60). Expands L5 "Scorched Dunes" from a single ~4,200px act into a full three-act level, with thematic desert variety.
L5 — Scorched Dunes, now ~6,400px / 24 coins / 3 checkpoints (was 4,200px / 12 / 1)
All of Act 1 kept verbatim (the dune, thorn pit, two-cloud hop, slime/frog/snail/barnacle); two new acts appended across three thorn pits:
Variety stays in-theme for a desert — flies, a rolling dune boulder, fire slimes, a buried-treasure mimic — no cave creatures.
The three checkpoints use the multi-checkpoint fix from #60 (each flag banks its own respawn x; only ever advances). This PR also back-fills the CHANGELOG with that fix, which shipped in #60 without a changelog note.
Verification
check-livecodescript.py— PASSaudit-platformer.py— 0 findings across all 7 levels (it caught a summit coin overlapping the flag; fixed)Needs the OXT pass for feel/spacing — especially that the dune boulder is dodgeable on the climb and never traps you, and the three thorn-pit checkpoints all light. L7 (taller tower + more spinners/ledges) and a coin top-up for L2 follow.
🤖 Generated with Claude Code
Generated by Claude Code