ld l, a
jp hl
+act_die_table:
+ ; NULL
+ dw act_r_nop
+ ; player
+ dw act_r_nop
+ ; bat
+ dw act_die_bat
+
+ ; actor die table
+ ; inputs:
+ ; de: actor ptr
+act_die:
+ ld a, [de] ; type
+ add a, a ; * 2 for table offset
+ ld hl, act_die_table
+ ld b, 0
+ ld c, a
+ add hl, bc
+
+ ; load routine ptr
+ ld a, [hl+]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+ ; bat dealloc
+ ; inputs:
+ ; de: bat
+act_die_bat:
+ xor a, a
+ ld [de], a ; set type == 0
+
+ call act_clear_tact
+
+ ret
+
; generic actor table call
; inputs:
; player attack call
player_attack:
ld de, player
- call act_attr_get_attack_damage
+ ld a, player HI
+ ld [combat_src_act], a
+ ld a, player LO
+ ld [combat_src_act+1], a
; TODO: implement correctly
; for now just remove an actor if
add hl, de
ld a, [hl+]
- ld e, [hl]
+ ld [combat_dst_act], a
+ ld a, [hl]
+ ld [combat_dst_act+1], a
+
+ ; for now just die if actor != NULL
+ ld a, [combat_dst_act]
ld d, a
- or a, e
+ ld a, [combat_dst_act+1]
+ ld e, a
+ or a, d
ret z
-
- xor a, a
- dec hl
- ld [de], a ; set type to 0
- ld [hl+], a ; clear ptr
- ld [hl], a
+
+ call act_die
ret