aboutsummaryrefslogtreecommitdiff
path: root/entity/actions.gbasm
diff options
context:
space:
mode:
authorAstatin <[email protected]>2024-10-10 17:06:40 +0900
committerAstatin <astatin@redacted>2024-10-10 17:06:40 +0900
commit1a0271bd1fc52361643bd95319f651ffbc05c4ef (patch)
tree0d22337929df70bb927b5e87ee36e1fd42a2a3d0 /entity/actions.gbasm
parentd355a883e53574c474d322b39872ae51a40cedc5 (diff)
Randomly swap fox following bunny axis
Diffstat (limited to 'entity/actions.gbasm')
-rw-r--r--entity/actions.gbasm59
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