class_name Item extends Node3D @export var unit_name: String @export var maximum_health := 10 @export var health := maximum_health enum States { hidden, idle, closed, opened, looted, destroyed } @export var state = States.idle: get: return state set(value): state = value print("Item state " + str(state) + "...") state_changed.emit(value) signal name_changed(unit_name: String) signal health_changed(current_health: int, maximum_health: int) signal state_changed(new_state: States) func _ready() -> void: name_changed.emit(unit_name) health_changed.emit(health, maximum_health) func take_damage(damage_amount: int) -> void: health -= damage_amount clampi(health, 0, maximum_health) health_changed.emit(health, maximum_health) if health <= 0: state = States.destroyed