64 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			NASM
		
	
	
	
			
		
		
	
	
			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
 |