; bc = damage
ret
+ ; gets actor's current hp
+ ; inputs:
+ ; de: actor
+ ; returns:
+ ; bc: current hp
+act_attr_get_hp:
+ ld hl, act_hp
+ add hl, de
+ ld a, [hl+]
+ ld c, a
+ ld a, [hl]
+ ld b, a
+ ret
+
+ ; writes hp
+ ; inputs:
+ ; de: actor
+ ; bc: new hp value
+act_attr_write_hp:
+ ld hl, act_hp
+ add hl, de
+ ld a, c
+ ld [hl+], a
+ ld a, b
+ ld [hl], a
+ ret
+
; takes weapon type damage
; inputs:
; de: actor to take damage
; bc: damage value
act_attr_take_weapon_damage:
+ push de
+
+ ; TODO: apply resistances to bc
+
+ m16_write_bc m16_b
+ call act_attr_get_hp
+ m16_write_bc m16_a
+ call m16_sub
+ ; a - b
+
+ ; read result back
+ m16_read_bc m16_a
+
+ pop de
+ call act_attr_write_hp
+
call act_die
ret