class_name Item extends Node3D @export var item_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 state_changed.emit(value) signal name_changed(item_name: String) signal health_changed(current_health: int, maximum_health: int) signal state_changed(new_state: States) signal recalculate_navigation_map() func _ready() -> void: name_changed.emit(item_name) health_changed.emit(health, maximum_health) func take_damage(damage_amount: int) -> void: health = clamp(health - damage_amount, 0, maximum_health) health_changed.emit(health, maximum_health) if health <= 0: state = States.destroyed func destroy_item() -> void: recalculate_navigation_map.emit(self) queue_free()