diff options
author | Astatin <[email protected]> | 2024-10-10 17:06:40 +0900 |
---|---|---|
committer | Astatin <astatin@redacted> | 2024-10-10 17:06:40 +0900 |
commit | 1a0271bd1fc52361643bd95319f651ffbc05c4ef (patch) | |
tree | 0d22337929df70bb927b5e87ee36e1fd42a2a3d0 /entity | |
parent | d355a883e53574c474d322b39872ae51a40cedc5 (diff) |
Randomly swap fox following bunny axis
Diffstat (limited to 'entity')
-rw-r--r-- | entity/actions.gbasm | 59 |
1 files changed, 50 insertions, 9 deletions
diff --git a/entity/actions.gbasm b/entity/actions.gbasm index e8905cc..37c4035 100644 --- a/entity/actions.gbasm +++ b/entity/actions.gbasm @@ -77,6 +77,8 @@ Update_Animation_Steps: Update_Animation_Steps.end: RET + + Fox_AI: PUSH HL PUSH BC @@ -92,34 +94,58 @@ Fox_AI: Fox_AI.Start_action_or_movement: LD A, $mem_map_loading_flags BIT 3, A - JR Z, =Fox_AI.Start_action_or_movement.end + JP Z, =Fox_AI.Start_action_or_movement.end LD A, $mem_moving_animation_step CP $00 JR NZ, =Fox_AI.Start_action_or_movement.end - ; Choose direction + 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, =Fox_AI.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 + + Fox_AI.skip_invert_axis: + + ; Choose direction LD A, B ADD $80 LD E, A - LD A, $mem_bunny_x + LD A, $tmp_var_1 ADD $80 CP E JR Z =Fox_AI.Vertical - JR NC =Fox_AI.Go_Left + JR C =Fox_AI.Go_Left Fox_AI.Go_Right: - LD A, $enum_direction_left + LD A, $enum_direction_right JR =Fox_AI.Direction_check_end Fox_AI.Go_Left: - LD A, $enum_direction_right - JR Z =Fox_AI.Direction_check_end + LD A, $enum_direction_left + JR =Fox_AI.Direction_check_end Fox_AI.Vertical: LD A, C ADD $80 LD E, A - LD A, $mem_bunny_y + LD A, $tmp_var_2 ADD $80 CP E PUSH AF @@ -131,7 +157,7 @@ Fox_AI: POP HL POP AF - JR Z =Fox_AI.Start_action_or_movement.end + JR Z =Fox_AI.No_movement JR C =Fox_AI.Go_Up Fox_AI.Go_Down: LD A, $enum_direction_down @@ -141,12 +167,27 @@ Fox_AI: Fox_AI.Direction_check_end: + DEC A + LD E, A + LD A, $tmp_var_3 + XOR E + INC A OR $08 LD D, A ; Check collision + Fox_AI.No_movement: + LD A, $tmp_var_3 + CP $00 + JR Z, =Fox_AI.skip_invert_axis2 + LD E, B + LD B, C + LD C, E + Fox_AI.skip_invert_axis2: + Check_Collision: + LD A, D PUSH BC CALL =Get_Position_After_Move LD A, C |