aboutsummaryrefslogtreecommitdiff
path: root/entity
diff options
context:
space:
mode:
authorAstatin <[email protected]>2025-02-04 14:49:48 +0900
committerAstatin <[email protected]>2025-02-04 14:49:48 +0900
commitaa7b1f0505f8b0e9cebe7d1444075abb8d756d9e (patch)
treecc36fe6b4f5f59e7713df034f78c4358a0da08b3 /entity
parentcf80989154bbb8985bec1d2e089c680714b9b804 (diff)
Add mana points for fox on laser use
Diffstat (limited to 'entity')
-rw-r--r--entity/actions.gbasm171
-rw-r--r--entity/fox.gbasm177
-rw-r--r--entity/frog.gbasm123
-rw-r--r--entity/init.gbasm8
-rw-r--r--entity/list.gbasm16
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