aboutsummaryrefslogtreecommitdiff
path: root/entity
diff options
context:
space:
mode:
authorAstatin <[email protected]>2024-10-29 16:12:03 +0900
committerAstatin <[email protected]>2024-10-29 16:12:03 +0900
commit96df60d319238dc7df53fe948e8a2593f1857be7 (patch)
tree9df94fd700f765e83cde3c997ab6e4a1d9d171de /entity
parent7bcae43031d18c2b992581cb00358ae3d457d5c6 (diff)
Bunny can attack foxes
Diffstat (limited to 'entity')
-rw-r--r--entity/actions.gbasm27
-rw-r--r--entity/bunny.gbasm58
-rw-r--r--entity/collisions.gbasm7
-rw-r--r--entity/init.gbasm18
4 files changed, 93 insertions, 17 deletions
diff --git a/entity/actions.gbasm b/entity/actions.gbasm
index 9f46123..c87f13a 100644
--- a/entity/actions.gbasm
+++ b/entity/actions.gbasm
@@ -77,8 +77,6 @@ Update_Animation_Steps:
Update_Animation_Steps.end:
RET
-
-
Fox_AI:
PUSH HL
PUSH BC
@@ -258,6 +256,31 @@ Fox_AI:
.ADD_A_TO_DIRECTION_BC
Fox_AI.End_movement.end:
+ Fox_AI.Health_check:
+ LD A, $mem_map_loading_flags
+ BIT 3, A
+ JP Z, =Fox_AI.Health_check.end
+
+ LD A, $mem_moving_animation_step
+ CP $03
+ JR NZ, =Fox_AI.Health_check.end
+
+ LD A, L
+ AND $f0
+ ADD $06
+ LD L, A
+
+ LD A, (HL)
+ CP $00
+ JR NZ, =Fox_AI.Health_check.end
+
+ LD A, L
+ AND $f0
+ LD L, A
+
+ LD (HL), $00
+ Fox_AI.Health_check.end:
+
LD A, L
AND $f0
LD L, A
diff --git a/entity/bunny.gbasm b/entity/bunny.gbasm
index f775aa0..abffd43 100644
--- a/entity/bunny.gbasm
+++ b/entity/bunny.gbasm
@@ -109,6 +109,64 @@ Move_Bunny:
LD $mem_viewport_y, A
End_movement.end:
+ Attack:
+ LD A, $mem_map_loading_flags
+ BIT 3, A
+ JP Z, =Attack.end
+ LD A, $mem_moving_animation_step
+ CP $02
+ JP NZ, =Attack.end
+
+ LD A, $mem_bunny_direction
+ AND $f8
+ CP $10
+ JR NZ, =Attack.end
+
+ LD A, $mem_bunny_x
+ LD B, A
+ LD A, $mem_bunny_y
+ LD C, A
+ LD A, $mem_bunny_direction
+ OR $08
+ AND $0f
+ LD D, A
+ LD A, $01
+ .ADD_A_TO_DIRECTION_BC
+
+ LD HL, $mem_entities_list
+ Attack.entities_loop:
+ LD A, L
+ AND $f0
+ ADD $10
+ LD L, A
+ CP $00
+ JR Z, =Attack.end
+
+ LD A, (HL+)
+ CP $00
+ JR Z, =Attack.entities_loop.next
+
+ LD A, (HL+)
+ CP B
+ JR NZ, =Attack.entities_loop.next
+
+ LD A, (HL+)
+ CP C
+ JR NZ, =Attack.entities_loop.next
+
+ INC HL
+ INC HL
+ INC HL
+
+ LD A, (HL)
+ DEC A
+ DAA
+ LD (HL), A
+
+ Attack.entities_loop.next:
+ JR =Attack.entities_loop
+ Attack.end:
+
Check_End_Action:
LD A, $mem_bunny_direction
AND $f0
diff --git a/entity/collisions.gbasm b/entity/collisions.gbasm
index 3edc701..1777ddb 100644
--- a/entity/collisions.gbasm
+++ b/entity/collisions.gbasm
@@ -92,7 +92,7 @@ Is_Collisionable: ; X in A, Y in B, Result A
Reset_Entities_Collision_Map:
LD A, $mem_moving_animation_step
- CP $02
+ CP $04
JR NZ, =Reset_Entities_Collision_Map.end
LD HL, $mem_entities_collisions
@@ -101,6 +101,10 @@ Reset_Entities_Collision_Map:
LD HL, $mem_entities_list
Reset_Entities_Collision_Map.loop:
+ LD A, (HL)
+ CP $00
+ JR Z, =Reset_Entities_Collision_Map.loop.next
+
INC L
INC L
INC L
@@ -109,6 +113,7 @@ Reset_Entities_Collision_Map:
CALL =Get_Position_After_Move
CALL =Carve_Entity_Collision_Map
+ Reset_Entities_Collision_Map.loop.next:
LD A, L
AND $f0
ADD $10
diff --git a/entity/init.gbasm b/entity/init.gbasm
index 4316032..dba0a91 100644
--- a/entity/init.gbasm
+++ b/entity/init.gbasm
@@ -43,20 +43,6 @@ Initialize_Entities:
LD L, A
CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
- CALL =Initialize_Fox
Fix_Bunny_screen:
LD A, $mem_bunny_x
@@ -120,6 +106,10 @@ Initialize_Fox:
LD (HL+), A
LD A, C
LD (HL+), A
+
+ LD A, $04
+ LD (HL), A
+
LD A, L
ADD $0a
LD L, A