diff options
author | Astatin <[email protected]> | 2024-10-29 16:12:03 +0900 |
---|---|---|
committer | Astatin <[email protected]> | 2024-10-29 16:12:03 +0900 |
commit | 96df60d319238dc7df53fe948e8a2593f1857be7 (patch) | |
tree | 9df94fd700f765e83cde3c997ab6e4a1d9d171de /entity | |
parent | 7bcae43031d18c2b992581cb00358ae3d457d5c6 (diff) |
Bunny can attack foxes
Diffstat (limited to 'entity')
-rw-r--r-- | entity/actions.gbasm | 27 | ||||
-rw-r--r-- | entity/bunny.gbasm | 58 | ||||
-rw-r--r-- | entity/collisions.gbasm | 7 | ||||
-rw-r--r-- | entity/init.gbasm | 18 |
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 |