McRogueFace/src/scripts
John McCardle 686e4fc1b2 Replace forward BFS solver with reverse-pull puzzle generation
The BFS solver couldn't account for obstacles blocking push paths -
knowing the button is reachable doesn't mean the player can get to
the correct side of the boulder. Reverse-pull guarantees solvability
by construction: start with boulder on button, simulate valid
un-pushes to move it away. Each un-push verifies both the new boulder
cell and the player's required push position are walkable.

Also fixes chest clumping: level 2 previously crammed 3 treasures +
boulder + button into a single room. Redesigned all level plans to
spread treasures across rooms (max 1 per room). Updated lv_planner
for procedural levels 9+ with the same constraint.

Level plans no longer specify "boulder" - it's auto-generated from
the button position with min_pulls scaling by depth (2-8).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 08:36:43 -05:00
..
api Add grid perspective support to API for FOV-aware entity filtering 2026-01-29 23:24:53 -05:00
cos_entities.py Crypt of Sokoban remaster: BSP, FOV, enemy AI, solvability checker 2026-02-14 20:34:14 -05:00
cos_itemdata.py Final day of changes for 7DRL 2025 - Crypt of Sokoban game code 2025-03-12 22:42:26 -04:00
cos_level.py Replace forward BFS solver with reverse-pull puzzle generation 2026-02-15 08:36:43 -05:00
cos_solver.py Fix Sokoban puzzle: prevent treasure/button overlap and model obstacles in solver 2026-02-15 02:36:46 -05:00
cos_tiles.py crypt of sokoban layer API change updates 2026-02-14 11:04:19 -05:00
example_text_widgets.py scripts - use scene object API 2026-01-03 11:02:40 -05:00
game.py Replace forward BFS solver with reverse-pull puzzle generation 2026-02-15 08:36:43 -05:00
geometry.py feat: Add geometry module for orbital mechanics and spatial calculations 2025-11-26 00:26:14 -05:00
mcrf_venv.py feat: Add self-contained venv support for pip packages (closes #137) 2025-11-26 22:01:09 -05:00
simple_tiles.txt Whoops, never committed the tile config 2025-03-08 20:31:34 -05:00
text_input_widget_improved.py refactor: Rename click property to on_click (closes #139) 2025-11-27 22:31:53 -05:00