class_name HealthComponent extends Node signal value_changed signal death const DEATH_THRESHOLD = 0.01 @export var max_value: float var value: float var is_alive: bool func _ready(): restore() func restore(): is_alive = true value = max_value value_changed.emit() func take_damage(hit: Hit): if !is_alive: return value = clampf(value - hit.damage, 0, max_value) value_changed.emit() if value < DEATH_THRESHOLD: is_alive = false death.emit()