class_name BaseMonster
extends PathFollow3D

## 기본 몬스터 클래스 (Path3D 상하위에서 경로를 따라 회전하며 피격/사망 처리됨)

# 몬스터 능력치 설정
@export var speed: float = 6.0
var max_hp: float = 100.0
var current_hp: float = 100.0
var gold_reward: int = 15

var is_dead: bool = false

func _ready() -> void:
	# 몬스터 그룹 등록
	add_to_group("monsters")
	# PathFollow3D 루프 설정 활성화 (경로 끝 도달 시 처음으로 돌아감)
	loop = true


func _physics_process(delta: float) -> void:
	if GameManager.is_game_over or is_dead:
		return
		
	# 경로 이동 거리 갱신
	progress += speed * delta

## 몬스터 초기화 (StageManager에 의해 스폰 시 호출됨)
func initialize_monster(hp: float, reward: int) -> void:
	max_hp = hp
	current_hp = hp
	gold_reward = reward
	is_dead = false

## 피해 가하기
func take_damage(amount: float) -> void:
	if is_dead:
		return
		
	current_hp = maxf(0.0, current_hp - amount)
	print("Monster ", name, " took ", amount, " damage. HP: ", current_hp, "/", max_hp)
	
	if current_hp <= 0.0:
		_die()

## 사망 처리
func _die() -> void:
	is_dead = true
	
	# 골드 보상 획득
	GameManager.add_gold(gold_reward)
	
	# 필드 활성 몬스터 수 감소
	GameManager.decrement_monster_count()
	
	print("Monster ", name, " died! Rewarded ", gold_reward, " gold.")
	
	# 씬에서 제거
	queue_free()
