Archipelago/worlds/ladx/LADXR/patches/bank3e.asm/owl.asm

64 lines
1.1 KiB
NASM

HandleOwlStatue:
call GetRoomStatusAddressInHL
ld a, [hl]
and $20
ret nz
ld a, [hl]
or $20
ld [hl], a
ld hl, $7B16
call OffsetPointerByRoomNumber
ld a, [hl]
ldh [$F1], a
call ItemMessage
call GiveItemFromChest
ret
GetRoomStatusAddressInHL:
ld a, [$DBA5] ; isIndoor
ld d, a
ld hl, $D800
ldh a, [$F6] ; room nr
ld e, a
ldh a, [$F7] ; map nr
cp $FF
jr nz, .notColorDungeon
ld d, $00
ld hl, $DDE0
jr .notIndoorB
.notColorDungeon:
cp $1A
jr nc, .notIndoorB
cp $06
jr c, .notIndoorB
inc d
.notIndoorB:
add hl, de
ret
RenderOwlStatueItem:
ldh a, [$F6] ; map room
cp $B2
jr nz, .NotYipYip
; Add 2 to room to set room pointer to an empty room for trade items
add a, 2
ldh [$F6], a
call RenderItemForRoom
ldh a, [$F6] ; map room
; ...and undo it
sub a, 2
ldh [$F6], a
ret
.NotYipYip:
call RenderItemForRoom
ret