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:
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:
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:
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:
@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
; 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