diff options
author | Astatin <[email protected]> | 2025-01-24 18:08:33 +0900 |
---|---|---|
committer | Astatin <[email protected]> | 2025-01-24 18:08:33 +0900 |
commit | 1a6621e5b1da42ee4b6b9132790ec744efc009c2 (patch) | |
tree | 89aeb457555655d2e4ed74a0fe32bfca74851a26 /entity | |
parent | 57326c9acf9cbb025d54093fb90fd70614659400 (diff) |
Add laser enemy attack
Diffstat (limited to 'entity')
-rw-r--r-- | entity/actions.gbasm | 46 | ||||
-rw-r--r-- | entity/bunny.gbasm | 36 |
2 files changed, 64 insertions, 18 deletions
diff --git a/entity/actions.gbasm b/entity/actions.gbasm index 520eb0a..f97fbc4 100644 --- a/entity/actions.gbasm +++ b/entity/actions.gbasm @@ -74,18 +74,21 @@ Update_Animation_Steps: .update_mode: - LD A, $mem_bunny_health - CP $00 - JR Z =.Dead_mode - LD A, $mem_requested_mode LD $mem_current_mode, A .end: + LD A, $mem_bunny_health + CP $00 + JR Z =.Dead_mode + RET .Dead_mode: + LD A, $20 + LD $mem_bunny_direction, A + LD A, $enum_dead_mode LD $mem_current_mode, A @@ -276,12 +279,20 @@ Fox_Turn: CP $00 JP NZ, =.Start_action_or_movement.end - CALL =Check_player_next_to + ; CALL =Check_player_next_to + CALL =Laser_sight_check LD A, E CP $00 JR Z, =.nyo_basic_attack - CALL =Basic_Attack + ; CALL =Basic_Attack + LD A, L + AND $f0 + ADD $07 + LD L, A + + SET 2, (HL) + JR =.Start_action_or_movement.end .nyo_basic_attack: @@ -296,9 +307,30 @@ Fox_Turn: AND $07 BIT 3, D LD D, A - JR Z, =.End_movement.end + JR Z, =.End_movement.check_end_of_turn_mode_attack LD A, $01 .ADD_A_TO_DIRECTION_BC + + .End_movement.check_end_of_turn_mode_attack: + + LD A, L + AND $f0 + ADD $07 + LD L, A + + BIT 2, (HL) + RES 2, (HL) + JR Z, =.End_movement.end + + CALL =Laser_sight_check + LD A, E + CP $00 + JR Z, =.laser_sight_check_fail + + CALL =Laser_Attack + + .laser_sight_check_fail: + .End_movement.end: .Skip_Turn: diff --git a/entity/bunny.gbasm b/entity/bunny.gbasm index 042f94b..7e9afa5 100644 --- a/entity/bunny.gbasm +++ b/entity/bunny.gbasm @@ -1,14 +1,4 @@ Move_Bunny: - LD A, $mem_bunny_health - CP $00 - JR NZ, =.not_dead - - LD A, $20 - LD $mem_bunny_direction, A - RET - - .not_dead: - LD A, $mem_bunny_flags LD E, $01 BIT 0, A @@ -60,7 +50,7 @@ Move_Bunny: .Start_action_or_movement: LD A, $mem_map_loading_flags BIT 3, A - JR NZ, =.Start_action_or_movement.end + JP NZ, =.Start_action_or_movement.end .Start_action_or_movement.test_movement: @@ -91,6 +81,25 @@ Move_Bunny: LD A, D LD $mem_bunny_direction, A + + BIT 3, D + JR Z, =.Start_action_or_movement.end + + PUSH BC + LD A, B + LD B, C + LD C, A + LD A, $01 + DBG + .ADD_A_TO_DIRECTION_BC + DBG + LD A, B + LD $mem_bunny_predicted_x, A + LD A, C + LD $mem_bunny_predicted_y, A + + POP BC + JR =.Start_action_or_movement.end .Start_action_or_movement.test_action: @@ -225,6 +234,11 @@ Move_Bunny: .End_movement.Update_current_room.end: POP DE + LD A, $mem_bunny_x + LD $mem_bunny_predicted_x, A + LD A, $mem_bunny_y + LD $mem_bunny_predicted_y, A + .End_movement.end: .Middle_movement_doublespeed_viewport_update: |