diff options
author | Astatin <[email protected]> | 2025-01-16 18:13:21 +0900 |
---|---|---|
committer | Astatin <[email protected]> | 2025-01-16 18:13:21 +0900 |
commit | 02038990a93c0b4cf58269b5456327ea64b998b7 (patch) | |
tree | 8f23c7270bc705d17d9d380d3a927f12f20ca1fa /entity/actions.gbasm | |
parent | dc5a9431bf4438000dcd028aa6b9c17c9ca492d8 (diff) |
Move basic enemy attack & walker AI to enemiesattacks
Diffstat (limited to 'entity/actions.gbasm')
-rw-r--r-- | entity/actions.gbasm | 200 |
1 files changed, 6 insertions, 194 deletions
diff --git a/entity/actions.gbasm b/entity/actions.gbasm index 944ab43..520eb0a 100644 --- a/entity/actions.gbasm +++ b/entity/actions.gbasm @@ -276,204 +276,16 @@ Fox_Turn: CP $00 JP NZ, =.Start_action_or_movement.end - ; Is bunny right next to fox - .Check_next_to_vertical: - - LD A, $mem_bunny_x - CP B - JR NZ, =.Check_next_to_horizontal - - ; up - LD E, $14 - LD A, $mem_bunny_y - SUB $01 - CP C - JR Z, =.Start_Attack - - ; down - LD E, $13 - ADD $02 - CP C - JR Z, =.Start_Attack - - JR =.Check_next_to.end - - .Check_next_to_horizontal: - - LD A, $mem_bunny_y - CP C - JR NZ, =.Check_next_to.end - - ; left - LD E, $12 - LD A, $mem_bunny_x - SUB $01 - CP B - JR Z, =.Start_Attack - - ; right - LD E, $11 - ADD $02 - CP B - JR Z, =.Start_Attack - - JR NZ, =.Check_next_to.end - - .Start_Attack: - LD D, E - - LD A, $mem_bunny_health - SUB $01 - JR C, =.health_underflow_fix - DAA - LD $mem_bunny_health, A - JR =.Skip_health_underflow_fix - - .health_underflow_fix: - LD A, $00 - LD $mem_bunny_health, A - .Skip_health_underflow_fix: - - JP =.Check_Collision - - .Check_next_to.end: - - ; Is Bunny close enough to follow - LD A, $mem_bunny_x - SUB B - .ABS - CP $08 - JR NC, =.Random_walker - - LD A, $mem_bunny_y - SUB C - .ABS - CP $08 - JR NC, =.Random_walker - - JR =.Follow_bunny - - .Random_walker: - CALL =RNG_Step - LD E, $00 - RR A - RR E - SWAP E - AND $03 - INC A - OR E - LD D, A - JP =.Check_Collision - - .Follow_bunny: - LD A, $mem_bunny_x - LD $tmp_var_1, A - - LD A, $mem_bunny_y - LD $tmp_var_2, A - - CALL =RNG_Step - AND $02 - LD $tmp_var_3, A - - CP $00 - JR Z, =.skip_invert_axis - - LD A, $mem_bunny_y - LD $tmp_var_1, A - - LD A, $mem_bunny_x - LD $tmp_var_2, A - - LD E, B - LD B, C - LD C, E - - .skip_invert_axis: - - ; Choose direction - LD A, B - ADD $80 - LD E, A - LD A, $tmp_var_1 - ADD $80 - CP E - JR Z =.Vertical - JR C =.Go_Left - - .Go_Right: - LD A, $enum_direction_right - JR =.Check_Horizontal_Collision - .Go_Left: - LD A, $enum_direction_left - - .Check_Horizontal_Collision: - LD E, A - DEC E - LD A, $tmp_var_3 - XOR E - INC E - INC A - OR $08 - PUSH BC - CALL =Get_Position_After_Move - LD A, C - CALL =Is_Collisionable - POP BC - CP $00 + CALL =Check_player_next_to LD A, E - JR Z, =.Direction_check_end - - .Vertical: - LD A, C - ADD $80 - LD E, A - LD A, $tmp_var_2 - ADD $80 - CP E - - JR Z =.No_movement - JR C =.Go_Up - .Go_Down: - LD A, $enum_direction_down - JR =.Direction_check_end - .Go_Up: - LD A, $enum_direction_up - - .Direction_check_end: - - DEC A - LD E, A - LD A, $tmp_var_3 - XOR E - INC A - OR $08 - LD D, A - - ; Check collision - - .No_movement: - LD A, $tmp_var_3 CP $00 - JR Z, =.skip_invert_axis2 - LD E, B - LD B, C - LD C, E - .skip_invert_axis2: + JR Z, =.nyo_basic_attack - .Check_Collision: - LD A, D - PUSH BC - CALL =Get_Position_After_Move - LD A, C - CALL =Is_Collisionable - CALL =Carve_Entity_Collision_Map - POP BC - CP $00 - JR Z, =.Start_action_or_movement.not_collision - RES 3, D - .Start_action_or_movement.not_collision: + CALL =Basic_Attack + JR =.Start_action_or_movement.end + .nyo_basic_attack: + CALL =Walking .Start_action_or_movement.end: .End_movement: |