Loading_Mode_VBlank: LD A, $mem_current_mode CP $enum_loading_mode RET NZ LD A, $mem_loading_mode_vblank_func_pointer_high LD B, A LD A, $mem_loading_mode_vblank_func_pointer_low LD C, A PUSH BC RET Loading_Mode_Regular: LD A, $mem_current_mode CP $enum_loading_mode RET NZ LD A, $mem_loading_mode_regular_func_pointer_high LD B, A LD A, $mem_loading_mode_regular_func_pointer_low LD C, A PUSH BC RET Canceled_Attack_VBlank: RET Canceled_Attack_Regular: LD A, $enum_dungeon_mode LD $mem_requested_mode, A RET Canceled_Attack: LD HL, $mem_entities_list LD A, L ADD $13 LD L, A Reset_Entities_Animations.loop: RES 3, (HL) LD A, L AND $f0 ADD $0a LD L, A LD (HL), $00 Reset_Entities_Animations.loop.next: LD A, L AND $f0 ADD $13 LD L, A CP $03 JR NZ, =Reset_Entities_Animations.loop LD BC, =Canceled_Attack_VBlank LD A, B LD $mem_loading_mode_vblank_func_pointer_high, A LD A, C LD $mem_loading_mode_vblank_func_pointer_low, A LD BC, =Canceled_Attack_Regular LD A, B LD $mem_loading_mode_regular_func_pointer_high, A LD A, C LD $mem_loading_mode_regular_func_pointer_low, A LD A, $enum_loading_mode LD $mem_requested_mode, A .CLOSE_DIALOGUE LD A, $mem_map_loading_flags SET 3, A LD $mem_map_loading_flags, A LD A, $04 LD $mem_bunny_animation, A .SET_SOUND_EFFECT =_sound_effect_Move_arrow_failed LD A, $mem_bunny_mana LD B, A LD A, $mem_current_focused_attack_ep_cost ADD B DAA JR NC, =.skip_fallback_max_mana LD A, $99 .skip_fallback_max_mana: LD $mem_bunny_mana, A RET Empty_Attack: RET Check_attack_already_learnt: ; Attack id in E, result in A (1 for already there, 0 for not), overwrites HL PUSH HL LD HL, $mem_bunny_attacks .loop: LD A, (HL) CP E JR Z, =.duplicate INC HL LD A, L CP low($mem_bunny_attacks+4) JR NZ, =.loop LD A, $00 POP HL RET .duplicate: LD A, $01 POP HL RET Attack_List: ; 00 .Empty: ; Attack menu name string .DB bank(=Empty) .DB ptr(=Empty) ; Attack function .ASSERT bank(=Empty_Attack) $00 .DB ptr(=Empty_Attack) ; Energy point cost .DB $00 .PADTO =.Empty+8 ; 01 .Hop: ; Attack menu name string .DB bank(=Hop_Attack_Menu_Txt) .DB ptr(=Hop_Attack_Menu_Txt) ; Attack function .ASSERT bank(=Hop_Attack) $00 .DB ptr(=Hop_Attack) ; Energy point cost .DB $01 .PADTO =.Hop+8 ; 02 .Heal: ; Attack menu name string .DB bank(=Heal_Attack_Menu_Txt) .DB ptr(=Heal_Attack_Menu_Txt) ;Attack function .ASSERT bank(=Heal_Attack) $00 .DB ptr(=Heal_Attack) ; Energy point cost .DB $05 .PADTO =.Heal+8 ; 03 .Freeze: ; Attack menu name string .DB bank(=Freeze_Attack_Menu_Txt) .DB ptr(=Freeze_Attack_Menu_Txt) ; Attack function .ASSERT bank(=Freeze_Attack) $00 .DB ptr(=Freeze_Attack) ; Energy point cost .DB $05 .PADTO =.Freeze+8 ; 04 .Earcoptr: ; Attack menu name string .DB bank(=Earcoptr_Attack_Menu_Txt) .DB ptr(=Earcoptr_Attack_Menu_Txt) ; Attack function .ASSERT bank(=Earcoptr_Attack) $00 .DB ptr(=Earcoptr_Attack) ; Energy point cost .DB $04 .PADTO =.Earcoptr+8 ; 05 .Die: ; Attack menu name string .DB bank(=Die_Attack_Menu_Txt) .DB ptr(=Die_Attack_Menu_Txt) ; Attack function .ASSERT bank(=Die_Attack) $00 .DB ptr(=Die_Attack) ; Energy point cost .DB $00 .PADTO =.Die+8 Die_Attack: LD A, $00 LD $mem_bunny_health, A RET .INCLUDE "playerattacks/hop.gbasm" .INCLUDE "playerattacks/heal.gbasm" .INCLUDE "playerattacks/freeze.gbasm" .INCLUDE "playerattacks/earcoptr.gbasm"