Unit death

This commit is contained in:
gamer147
2026-04-02 09:01:10 -04:00
parent ce92c6e435
commit 528cb50e58
5 changed files with 67 additions and 9 deletions

View File

@@ -20,6 +20,8 @@ func _snapshot(unit: Unit, opponent: Unit) -> CombatProposal.CombatantStats:
return stats
func process_combat(attacker: Unit, defender: Unit) -> void:
if not attacker.is_alive() or not defender.is_alive():
return
var proposal := create_proposal(attacker, defender)
var atk_name := attacker.current_info.name
var def_name := defender.current_info.name
@@ -27,7 +29,9 @@ func process_combat(attacker: Unit, defender: Unit) -> void:
print(" %s — HP:%d ATK:%d DEF:%d HIT:%d" % [atk_name, proposal.attacker.hp, proposal.attacker.atk, proposal.attacker.def, proposal.attacker.hit])
print(" %s — HP:%d ATK:%d DEF:%d HIT:%d" % [def_name, proposal.defender.hp, proposal.defender.atk, proposal.defender.def, proposal.defender.hit])
apply_proposal(proposal)
print(" Result: %s HP=%d, %s HP=%d" % [atk_name, attacker.current_stats.current_hp, def_name, defender.current_stats.current_hp])
var atk_hp := attacker.current_stats.current_hp if is_instance_valid(attacker) else 0
var def_hp := defender.current_stats.current_hp if is_instance_valid(defender) else 0
print(" Result: %s HP=%d, %s HP=%d" % [atk_name, atk_hp, def_name, def_hp])
func apply_proposal(proposal: CombatProposal) -> void:
@@ -40,11 +44,11 @@ func apply_proposal(proposal: CombatProposal) -> void:
var atk_roll := randi_range(1, 100)
if atk_roll <= atk_stats.hit:
var damage := maxi(atk_stats.atk - def_stats.def, 0)
def_unit.current_stats.current_hp -= damage
def_unit.take_damage(damage)
# Counterattack if defender survives
if def_unit.current_stats.current_hp > 0:
if def_unit.is_alive():
var def_roll := randi_range(1, 100)
if def_roll <= def_stats.hit:
var damage := maxi(def_stats.atk - atk_stats.def, 0)
atk_unit.current_stats.current_hp -= damage
atk_unit.take_damage(damage)