diff options
Diffstat (limited to 'entity/penguin.gbasm')
-rw-r--r-- | entity/penguin.gbasm | 192 |
1 files changed, 47 insertions, 145 deletions
diff --git a/entity/penguin.gbasm b/entity/penguin.gbasm index 353af8e..a3b4937 100644 --- a/entity/penguin.gbasm +++ b/entity/penguin.gbasm @@ -1,3 +1,31 @@ +Penguin_Drop: + PUSH DE + LD E, $03 + CALL =Check_attack_already_learnt + CP $01 + JR Z, =.drops.ep_regen_item + + .drops.attack_item: + LD D, $6C + LD E, $05 + CALL =RNG_Step + AND $03 + CP $00 + CALL Z, =Spawn_object + JR =.drops.end + + .drops.ep_regen_item: + LD D, $68 + LD E, $03 + CALL =RNG_Step + AND $03 + CP $00 + CALL Z, =Spawn_object + + .drops.end: + POP DE + RET + Penguin_Turn: LD A, $mem_map_loading_flags BIT 3, A @@ -14,157 +42,31 @@ Penguin_Turn: LD A, (HL+) LD D, A - .Health_check: - LD A, L - AND $f0 - ADD $06 - LD L, A - - LD A, (HL) - CP $00 - JR NZ, =.Health_check.end - - LD A, L - AND $f0 - LD L, A - - LD (HL), $00 - LD A, $mem_enemies_alive_count - DEC A - LD $mem_enemies_alive_count, A - - ; Drop when deadged - PUSH DE - LD E, $03 - CALL =Check_attack_already_learnt - CP $01 - JR Z, =.drops.ep_regen_item - - .drops.attack_item: - LD D, $6C - LD E, $05 - CALL =RNG_Step - AND $03 - CP $00 - CALL Z, =Spawn_object - JR =.drops.end - - .drops.ep_regen_item: - LD D, $68 - LD E, $03 - CALL =RNG_Step - AND $03 - CP $00 - CALL Z, =Spawn_object - - .drops.end: - POP DE - - JP =.Skip_turn - .Health_check.end: - - .Freeze_shiver: - LD A, $mem_moving_animation_step - CP $00 - JP NZ, =.Freeze_shiver.end - LD A, L - AND $f0 - ADD $08 - LD L, A - LD A, $01 - CP (HL) - JR NZ, =.Freeze_shiver.end - LD A, D - AND $07 - LD D, A - CALL =RNG_Step - CP $55 - JP NC, =.Skip_turn - LD A, D - OR $40 - LD D, A - - CALL =RNG_Step - CP $55 - JP NC, =.Skip_turn - - LD A, $00 - LD (HL-), A - RES 1, (HL) - JP =.Skip_turn - .Freeze_shiver.end: - - .Should_turn_be_skipped: - LD A, L - AND $f0 - ADD $08 - LD L, A - - BIT 0, (HL) - JP NZ, =.Skip_turn - - .Start_action_or_movement: - LD A, $mem_moving_animation_step - CP $00 - JP NZ, =.Start_action_or_movement.end - - LD A, L - AND $f0 - OR $07 - LD L, A - RES 3, (HL) - - LD A, $mem_bunny_status - CP $01 - JR Z, =.Run_away - CP $04 - JR Z, =.Run_away - - .Try_Freeze_Attack: - LD A, L - AND $f0 - ADD $09 - LD L, A - XOR A - CP (HL) - JR Z, =.Try_Walking - - CALL =Check_player_next_to - LD A, E - CP $00 - JR Z, =.Try_Walking - CALL =Freeze_Enemy_Attack - - LD A, L - AND $f0 - ADD $09 - LD L, A + .ENTITY_HEALTH_CHECK =.Skip_turn =Cat_Drop + .ENTITY_FREEZE_SHIVER =.Skip_turn + .ENTITY_STATUS_SKIP_TURN =.Skip_turn - DEC (HL) + .RESET_BLINKING_MODE - JR =.Start_action_or_movement.end + LD A, $mem_moving_animation_step + CP $00 + JR NZ, =.attack_end + LD A, $mem_bunny_status + CP $01 + JR Z, =.Run_away + CP $04 + JR Z, =.Run_away - .Run_away: - CALL =Walking_Away + .ENTITY_TRY_ATTACK =Freeze_sight_check =Freeze_Enemy_Attack =.attack_end + CALL =Walking + JR =.attack_end - JR =.Start_action_or_movement.end + .Run_away: + CALL =Walking_Away - .Try_Walking: - CALL =Walking - .Start_action_or_movement.end: + .attack_end: - .End_movement: - LD A, $mem_moving_animation_step - CP $0f - JP NZ, =.End_movement.end - LD A, D - AND $07 - BIT 3, D - LD D, A - JR Z, =.End_movement.end - LD A, $01 - .ADD_A_TO_DIRECTION_BC - .End_movement.end: + CALL =Entity_End_movement .Skip_Turn: LD A, L |