From bac6245a529abbc11c1d94d56dedc10a62b47977 Mon Sep 17 00:00:00 2001 From: moe Date: Sat, 11 Apr 2026 21:42:15 -0400 Subject: [PATCH] Add puzzles 8 and 9 Puzzle #8 "Ramp It Up": 2-ball pinned in a brick-column pit; bin includes a BrickIncline to redirect dropped balls. Puzzle #9 "Tower Topple": 5-ball perched on a cinderblock tower between guard pool balls, target the right edge. Co-Authored-By: Claude Opus 4.6 (1M context) --- game/levels/08_ramp_it_up.ron | 26 ++++++++++++++++++++++++++ game/levels/09_tower_topple.ron | 29 +++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 game/levels/08_ramp_it_up.ron create mode 100644 game/levels/09_tower_topple.ron diff --git a/game/levels/08_ramp_it_up.ron b/game/levels/08_ramp_it_up.ron new file mode 100644 index 0000000..be5e78e --- /dev/null +++ b/game/levels/08_ramp_it_up.ron @@ -0,0 +1,26 @@ +( + title: "Puzzle #8: Ramp It Up", + goal: "Knock the 2-ball off the screen.", + parts: [ + // Floor + (kind: "BrickWall", x: 0, y: 340, width: Some(640), height: Some(20)), + // Pit walls trapping the target on the right + (kind: "BrickWall", x: 430, y: 280, width: Some(16), height: Some(60)), + (kind: "BrickWall", x: 560, y: 280, width: Some(16), height: Some(60)), + // Overhead ledge the player drops from + (kind: "WoodenWall", x: 60, y: 120, width: Some(140), height: Some(12)), + // Target: floating 2-ball pinned in the pit + (kind: "PoolBall", x: 495, y: 310, label: Some("twoball"), props: {"surface_number": 2.0}), + // Decorative blockers + (kind: "PoolBall", x: 250, y: 180, props: {"surface_number": 4.0}), + (kind: "PoolBall", x: 340, y: 220, props: {"surface_number": 6.0}), + ], + win_conditions: [ + ExitedWorld(label: "twoball", edge: "Any"), + ], + bin: [ + (kind: "BrickIncline", quantity: 1), + (kind: "BowlingBall", quantity: 1), + (kind: "SuperBall", quantity: 2), + ], +) diff --git a/game/levels/09_tower_topple.ron b/game/levels/09_tower_topple.ron new file mode 100644 index 0000000..6de273d --- /dev/null +++ b/game/levels/09_tower_topple.ron @@ -0,0 +1,29 @@ +( + title: "Puzzle #9: Tower Topple", + goal: "Knock the 5-ball off the right edge.", + parts: [ + // Floor + (kind: "BrickWall", x: 0, y: 340, width: Some(640), height: Some(20)), + // Tower base — a tall ledge on the right + (kind: "CinderBlockWall", x: 480, y: 180, width: Some(120), height: Some(12)), + (kind: "CinderBlockWall", x: 480, y: 180, width: Some(12), height: Some(160)), + // A shelf on the left for launching + (kind: "WoodenWall", x: 40, y: 240, width: Some(120), height: Some(12)), + // Target: 5-ball perched on the tower + (kind: "PoolBall", x: 540, y: 168, label: Some("fiveball"), props: {"surface_number": 5.0}), + // Guard balls stacked next to the target + (kind: "PoolBall", x: 520, y: 168, props: {"surface_number": 1.0}), + (kind: "PoolBall", x: 560, y: 168, props: {"surface_number": 3.0}), + // Mid-air obstacle + (kind: "YellowBrickWall", x: 280, y: 200, width: Some(16), height: Some(80)), + ], + win_conditions: [ + ExitedWorld(label: "fiveball", edge: "Right"), + ], + bin: [ + (kind: "Cannonball", quantity: 1), + (kind: "BowlingBall", quantity: 1), + (kind: "SuperBall", quantity: 2), + (kind: "TennisBall", quantity: 1), + ], +)