mapgen: if a player spawns on a door the door tile is now removed
authorLukas Krickl <lukas@krickl.dev>
Thu, 21 Aug 2025 10:33:48 +0000 (12:33 +0200)
committerLukas Krickl <lukas@krickl.dev>
Thu, 21 Aug 2025 10:33:48 +0000 (12:33 +0200)
src/mapgen.s

index 374a3f4e4f100d8012c55665116a17e8f278c37a..fdf3caa3380d4cf7edada5ab5de96784a4cb76fa 100644 (file)
@@ -223,6 +223,29 @@ mapgen_draw_doors:
                pop hl
 @no_door_right:        
 
+       ; check if player is on top of a door
+       ; if so remove it and mark as an exit instead
+       ld de, player_unit
+       call unit_get_pos
+       call map_get_tile
+       
+       ld a, b
+       cp a, DOOR_TILE_LEFT
+       jr z, @door_tile REL
+       cp a, DOOR_TILE_RIGHT
+       jr z, @door_tile REL
+       cp a, DOOR_TILE_TOP
+       jr z, @door_tile REL
+       cp a, DOOR_TILE_BOTTOM
+       jr z, @door_tile REL
+
+       ret
+
+@door_tile:    
+       xor a, a
+       ld [hl+], a ; clear tile
+       ld a, CF_EXIT
+       ld [hl], a
        ret
 
        ; places actors from a valid actor table