Commit Graph

13 Commits

Author SHA1 Message Date
sijcdu 8391e1c5da Remove the two patrolling enemies from level 2
The user asked for them to be gone: level 2 was unwinnable and the walkers only added to the frustration. The walker prefab and script stay in the project so they can be placed again later.
2026-10-07 22:41:49 +08:00
sijcdu defdf202e6 Bullet field: pierce-through and damaging, rings spaced 3 cells apart
Solid bullets were blocking the patrolling enemies, so the field now defaults to solid = false: each bullet is a plain StaticBody2D with no collision layer, plus an Area2D that only detects the player, so nothing is physically obstructed while contact still costs a heart. Ring radii changed from [5, 10, 15] to [3, 6, 9]. Damage is now applied every frame to whatever is overlapping, not only on body_entered, so standing inside a bullet keeps hurting instead of only the first touch. Also picks up the editor change that removed Walker_03.
2026-10-07 22:38:07 +08:00
sijcdu 35174b67ab Replace the firing bullet emitter with static bullet obstacles ringed around (12,12)
The user did not want anything firing: the bullets should simply exist in the air as fixed obstacles. bullet_ring (the emitter) is deleted and bullet_field takes its place. bullet_field generates concentric rings of frozen bullets centred on itself, radii given in cells (default 5/10/15), and skips bullets that fall outside the level bounds or land inside solid tiles so nothing is buried in the terrain. Each bullet is a StaticBody2D on the world layer, so it blocks the player and can be stood on; damage defaults to 0 (pure obstacle) and can be raised to turn them into hazards.
2026-10-07 22:29:12 +08:00
sijcdu 1b3d61793d Enemies no longer attack; add a fixed bullet-ring emitter and make lasers permanent obstacles
walker.gd lost its firing code entirely: monsters now only patrol and hurt on contact, so the only way past is footwork or the key throw + W warp. New bullet_ring prefab fires a set number of bullets evenly spread over a fixed arc on a timer, with directions derived only from its own exports, so every volley is identical and the pattern can be memorised; the level places one at cell (12,12) aimed upward with the 12 bullets spread over 180 degrees. laser.gd gained always_on, defaulting to true, so the five copied lasers are now static hazards that are always lit and damage anything overlapping them rather than blinking on and off. Bullets now stop when they spawn inside terrain.
2026-10-07 22:23:18 +08:00
sijcdu 0d2bccc3a9 Monsters are now unkillable and fire a fixed bullet pattern; add periodic lasers
Removed the stomp-kill from walker.gd: landing on an enemy now just costs a heart like any other contact, so the only way past is to weave through the pattern or use the key throw + W warp. Enemies fire a fan of bullets every fire_interval whose directions are computed only from the facing and the exported spread, never from the player, so every volley traces the identical path and can be memorised. Bullets are code-generated circles (no art needed), die on hitting terrain via a probe raycast, and are freed after their lifetime. New laser prefab cycles wait -> blinking warmup -> firing, and only damages during the firing phase.
2026-10-07 22:12:14 +08:00
sijcdu 74e4bd1e97 Add patrolling enemies and link level 1 to level 2
New walker prefab (mushroom_red sprite) patrols a platform, turns at walls and ledges, drains a heart on contact and dies when stomped, bouncing the player up. Three are placed in level2. The level 2 spawn point is set to cell (7,11) so the player starts standing on the floor instead of falling in from mid-air, and level 1's LevelClear now loads level2.tscn.
2026-10-07 22:02:46 +08:00
sijcdu 84020864cc Remove the level 2 scaffold at the user's request
The user will build level 2 by hand in the Godot editor. main.tscn's LevelClear no longer points at a next scene, so the clear button falls back to restarting level 1. The scaffold is still in history at 81ffe98 and can be restored with: git checkout 81ffe98 -- scenes/level_2.tscn
2026-10-07 21:25:07 +08:00
sijcdu 81ffe989f6 Add a level 2 scaffold and make the level-clear screen load the next level
level_clear.gd gained a next_level_scene export: empty reloads the current level, otherwise it changes to the given scene. Level 1 now points at res://scenes/level_2.tscn. level_2.tscn is an empty but complete level: background, three TileMapLayers wired to the same TileSet, player, HUD, death screen and level-clear screen, plus the empty prefab containers. Its hidden_passages script explicitly sets hidden_cells = [] so level 1's passage cells are not carved here.
2026-10-07 21:10:25 +08:00
sijcdu 7c78a088a0 Add diamond collection and a level-clear door
The three diamonds and both doors were painted as tiles in TerrainBase, which cannot act as pickups or triggers. Replaced them with real prefabs that reuse the same atlas tiles (diamond = (7,3), doors = (10,6) and (11,5)) and erase their placeholder tile on ready. Collecting all three diamonds unlocks the door; touching it fades to black, pauses the tree and shows the level-clear screen with a next-level button (currently reloads the level, as there is only one). HUD now shows the diamond count.
2026-10-07 21:04:58 +08:00
sijcdu f67bd94605 Remove leftover key tile on the crate; damage keeps the player in place
The key object moved next to the spawn, so the key tile painted at cell (10,8) (on top of the crate tile) was left behind and rendered a second key. Cleared it by setting that record's source_id to -1, which is a same-length edit inside the base64 tile_map_data. Also hurt() no longer teleports to the spawn point, it only drains a heart and grants brief i-frames; only dying returns the player to the spawn.
2026-10-07 20:56:54 +08:00
sijcdu 19ab10de5f Add hazard spikes on the tree tops (grey spikes from the tileset atlas)
The two new spikes were painted as tiles in TerrainBase, but tileset collision can only make a solid wall, not a damaging hazard. Replaced them with a real spikes_grey prefab that uses the same atlas tile (8,3) plus hazard.gd, and erases the placeholder tile on ready. Also includes the level edits made in the editor (top-left terrain rework).
2026-10-07 20:52:44 +08:00
sijcdu 40340527b2 Move the key next to the spawn point so the throw/warp skill is reachable 2026-10-07 20:43:11 +08:00
sijcdu 9dffacd938 Initial commit: Godot 4.7 pixel platformer prototype
Player: move/jump (Space), test flight (F, debug builds only). Key: pickup, hold S to aim with live trajectory preview, release to throw, W to warp to the thrown key. Spring bounce. Spikes deal damage. 3-heart health, Z consumes a heal item for +1 heart and a 5s shield. HUD with hearts and item count. Death screen with fade-to-black and restart. Hidden passages. Assets: Kenney Pixel Platformer (CC0).
2026-10-07 20:32:42 +08:00