removing doors now does not set the exit flag anymore but instead clears all other...
authorLukas Krickl <lukas@krickl.dev>
Thu, 21 Aug 2025 10:53:21 +0000 (12:53 +0200)
committerLukas Krickl <lukas@krickl.dev>
Thu, 21 Aug 2025 10:53:21 +0000 (12:53 +0200)
src/mapgen.s
src/player.s

index fdf3caa3380d4cf7edada5ab5de96784a4cb76fa..c56b0b0344092edf7636b65f951a5c72b759acac 100644 (file)
@@ -179,7 +179,7 @@ mapgen_draw_doors:
                add hl, de
                ld a, DOOR_TILE_TOP
                ld [hl+], a
-               ld a, CF_DOOR | CF_COLLISION
+               ld a, CF_DOOR | CF_COLLISION | CF_EXIT
                ld [hl], a
                pop hl
 @no_door_up:
@@ -192,7 +192,7 @@ mapgen_draw_doors:
                add hl, de
                ld a, DOOR_TILE_BOTTOM
                ld [hl+], a
-               ld a, CF_DOOR | CF_COLLISION
+               ld a, CF_DOOR | CF_COLLISION | CF_EXIT
                ld [hl], a
                pop hl
 @no_door_down:
@@ -205,7 +205,7 @@ mapgen_draw_doors:
                add hl, de
                ld a, DOOR_TILE_LEFT
                ld [hl+], a
-               ld a, CF_DOOR | CF_COLLISION
+               ld a, CF_DOOR | CF_COLLISION | CF_EXIT
                ld [hl], a
                pop hl
 @no_door_left:
@@ -218,7 +218,7 @@ mapgen_draw_doors:
                add hl, de
                ld a, DOOR_TILE_RIGHT
                ld [hl+], a
-               ld a, CF_DOOR | CF_COLLISION
+               ld a, CF_DOOR | CF_COLLISION | CF_EXIT
                ld [hl], a
                pop hl
 @no_door_right:        
@@ -244,7 +244,9 @@ mapgen_draw_doors:
 @door_tile:    
        xor a, a
        ld [hl+], a ; clear tile
-       ld a, CF_EXIT
+
+       ld a, [hl] ; clear collision and door flags
+       and a, CF_EXIT
        ld [hl], a
        ret
 
index 7679fb9088aa16f3b3c5dae4798ba7fc3c31eb25..2a67824bce29202673f54f76c8764dcd6754e6b8 100644 (file)
@@ -107,10 +107,13 @@ unit_player_remove_door:
 
        ; remove door tile, door flag
        ; and redraw map
-       ld a, 0x00 ; roof tile
+       ld a, 0x00 ; floor tile
        ; clear map
        ld [hl+], a
-       ld a, CF_EXIT 
+
+       ; clear all flags but exit
+       ld a, [hl]
+       and a, CF_EXIT 
        ld [hl], a
        
        ld hl, act_rt_collision_pos_y