class_name DesctructableItem extends Item @onready var particles: GPUParticles3D = $Particles @onready var mesh: MeshInstance3D = $Mesh @onready var sfx: AudioStreamPlayer3D = $SFX func _ready() -> void: particles.one_shot = true state_changed.connect(_on_state_changed) health_changed.connect(_on_health_changed) func _on_particles_finished() -> void: destroy_item() func _on_state_changed(new_state: States) -> void: match new_state: States.destroyed: particles.emitting = true mesh.queue_free() func _on_health_changed(_health: int, _max_health: int) -> void: sfx.play()