diff options
author | Astatin <[email protected]> | 2025-02-04 14:49:48 +0900 |
---|---|---|
committer | Astatin <[email protected]> | 2025-02-04 14:49:48 +0900 |
commit | aa7b1f0505f8b0e9cebe7d1444075abb8d756d9e (patch) | |
tree | cc36fe6b4f5f59e7713df034f78c4358a0da08b3 /entity | |
parent | cf80989154bbb8985bec1d2e089c680714b9b804 (diff) |
Add mana points for fox on laser use
Diffstat (limited to 'entity')
-rw-r--r-- | entity/actions.gbasm | 171 | ||||
-rw-r--r-- | entity/fox.gbasm | 177 | ||||
-rw-r--r-- | entity/frog.gbasm | 123 | ||||
-rw-r--r-- | entity/init.gbasm | 8 | ||||
-rw-r--r-- | entity/list.gbasm | 16 |
5 files changed, 333 insertions, 162 deletions
diff --git a/entity/actions.gbasm b/entity/actions.gbasm index f44e41b..4de9f21 100644 --- a/entity/actions.gbasm +++ b/entity/actions.gbasm @@ -111,6 +111,10 @@ Turn_Jump_table: JP =Fox_Turn NOP + ; 03 + JP =Frog_Turn + NOP + Interaction_Jump_table: ; 00 RET @@ -119,24 +123,13 @@ Interaction_Jump_table: NOP ; 01 - JP =Fox_Interaction + JP =Enemy_Interaction NOP ; 02 JP =Open_Dialogue NOP -Fox_Interaction: - LD A, L - AND $f0 - ADD $06 - LD L, A - LD A, (HL) - DEC A - DAA - LD (HL), A - RET - Open_Dialogue: LD A, L AND $f0 @@ -197,155 +190,13 @@ Open_Dialogue: LD $mem_requested_mode, A RET -Fox_Turn: - LD A, $mem_map_loading_flags - BIT 3, A - RET Z - - PUSH HL - PUSH BC - PUSH DE - INC HL - LD A, (HL+) - LD B, A - LD A, (HL+) - LD C, A - 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 - JP NZ, =.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 - - ; CALL =Check_player_next_to - CALL =Laser_sight_check - LD A, E - CP $00 - ;JR Z, =.nyo_basic_attack - JR =.nyo_basic_attack - - ; CALL =Basic_Attack - LD A, L - AND $f0 - ADD $07 - LD L, A - - SET 2, (HL) - - JR =.Start_action_or_movement.end - - .nyo_basic_attack: - CALL =Walking - .Start_action_or_movement.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.check_end_of_turn_mode_attack - LD A, $01 - .ADD_A_TO_DIRECTION_BC - - .End_movement.check_end_of_turn_mode_attack: - - LD A, L - AND $f0 - ADD $07 - LD L, A - - BIT 2, (HL) - RES 2, (HL) - JR Z, =.End_movement.end - - CALL =Laser_sight_check - LD A, E - CP $00 - JR Z, =.laser_sight_check_fail - - CALL =Laser_Attack - - .laser_sight_check_fail: - - .End_movement.end: - - .Skip_Turn: +Enemy_Interaction: LD A, L AND $f0 + ADD $06 LD L, A - INC HL - LD A, B - LD (HL+), A - LD A, C - LD (HL+), A - LD A, D - LD (HL+), A - POP DE - POP BC - POP HL + LD A, (HL) + DEC A + DAA + LD (HL), A RET diff --git a/entity/fox.gbasm b/entity/fox.gbasm new file mode 100644 index 0000000..67723f8 --- /dev/null +++ b/entity/fox.gbasm @@ -0,0 +1,177 @@ +Fox_Turn: + LD A, $mem_map_loading_flags + BIT 3, A + RET Z + + PUSH HL + PUSH BC + PUSH DE + INC HL + LD A, (HL+) + LD B, A + LD A, (HL+) + LD C, A + 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 + JP NZ, =.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 + ADD $09 + LD L, A + XOR A + CP (HL) + JR Z, =.Try_Basic_Attack + + CALL =Laser_sight_check + LD A, E + CP $00 + JR Z, =.Try_Basic_Attack + + LD D, E + LD A, L + AND $f0 + ADD $07 + LD L, A + + SET 2, (HL) + + JR =.Start_action_or_movement.end + + .Try_Basic_Attack: + + CALL =Check_player_next_to + LD A, E + CP $00 + JR Z, =.Try_Walking + + CALL =Basic_Attack + + JR =.Start_action_or_movement.end + + .Try_Walking: + + CALL =Walking + .Start_action_or_movement.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.check_end_of_turn_mode_attack + LD A, $01 + .ADD_A_TO_DIRECTION_BC + + .End_movement.check_end_of_turn_mode_attack: + + LD A, L + AND $f0 + ADD $07 + LD L, A + + BIT 2, (HL) + RES 2, (HL) + JR Z, =.End_movement.end + + CALL =Laser_sight_check + LD A, E + CP $00 + JR Z, =.laser_sight_check_fail + + CALL =Laser_Attack + + LD A, L + AND $f0 + ADD $09 + LD L, A + + DEC (HL) + + .laser_sight_check_fail: + + .End_movement.end: + + .Skip_Turn: + LD A, L + AND $f0 + LD L, A + INC HL + LD A, B + LD (HL+), A + LD A, C + LD (HL+), A + LD A, D + LD (HL+), A + POP DE + POP BC + POP HL + RET diff --git a/entity/frog.gbasm b/entity/frog.gbasm new file mode 100644 index 0000000..b7d6511 --- /dev/null +++ b/entity/frog.gbasm @@ -0,0 +1,123 @@ +Frog_Turn: + LD A, $mem_map_loading_flags + BIT 3, A + RET Z + + PUSH HL + PUSH BC + PUSH DE + INC HL + LD A, (HL+) + LD B, A + LD A, (HL+) + LD C, A + 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 + JP NZ, =.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 + + .Try_Basic_Attack: + CALL =Check_player_next_to + LD A, E + CP $00 + JR Z, =.Try_Walking + CALL =Basic_Attack + + JR =.Start_action_or_movement.end + + .Try_Walking: + CALL =Walking + .Start_action_or_movement.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: + + .Skip_Turn: + LD A, L + AND $f0 + LD L, A + INC HL + LD A, B + LD (HL+), A + LD A, C + LD (HL+), A + LD A, D + LD (HL+), A + POP DE + POP BC + POP HL + RET diff --git a/entity/init.gbasm b/entity/init.gbasm index 4924a5b..361f600 100644 --- a/entity/init.gbasm +++ b/entity/init.gbasm @@ -201,13 +201,21 @@ Initialize_Enemy: ; HL => pointer to entity struct INC BC + ; Health LD A, (BC) LD (HL+), A XOR A + ; flags & status LD (HL+), A LD (HL+), A + INC BC + + ; Mana + LD A, (BC) + LD (HL+), A + LD A, L ADD $07 LD L, A diff --git a/entity/list.gbasm b/entity/list.gbasm index d534d4d..9a2de26 100644 --- a/entity/list.gbasm +++ b/entity/list.gbasm @@ -12,6 +12,9 @@ Entity_list: ; Starting health .DB $04 + ; Starting mana + .DB $05 + .PADTO =.Fox+8 .Frog: @@ -19,12 +22,15 @@ Entity_list: .DB =OBJ_Tile_Image_Data.Frog ; Turn Jump Table index - .DB $00 + .DB $03 ; Interaction Jump Table index - .DB $02 + .DB $03 ; Starting health + .DB $02 + + ; Starting mana .DB $00 .PADTO =.Frog+8 @@ -42,6 +48,9 @@ Entity_list: ; Starting health .DB $00 + ; Starting mana + .DB $00 + .PADTO =.Mouse+8 .Fimsh: @@ -57,4 +66,7 @@ Entity_list: ; Starting health .DB $00 + ; Starting mana + .DB $00 + .PADTO =.Fimsh+8 |