extends CharacterBody2D signal mob_died(xp: int) @onready var animation_player: AnimationPlayer = %AnimationPlayer @onready var explosion_sound: AudioStreamPlayer2D = %ExplosionSound @onready var take_damage_sound: AudioStreamPlayer2D = %TakeDamageSound const SMOKE_EXPLOSION = preload("res://smoke_explosion/smoke_explosion.tscn") const MobDataScript = preload("res://scripts/mob_data.gd") @onready var player: Node2D = get_node("/root/Game/Player") var mob_data: MobData = MobDataScript.new(2, 100, 1) func _ready() -> void: animation_player.play("walk") func _physics_process(_delta: float) -> void: if not player: return var direction = global_position.direction_to(player.global_position) velocity = direction * mob_data.speed move_and_slide() func take_damage() -> void: mob_data.health -= 1 if mob_data.health <= 0: var smoke = SMOKE_EXPLOSION.instantiate() get_parent().add_child(smoke) smoke.global_position = global_position explosion_sound.play() await explosion_sound.finished mob_died.emit(mob_data.xp) queue_free() else: take_damage_sound.play() animation_player.play("hurt") animation_player.queue("walk")