extends CharacterBody2D
class_name NPC2D

@export var maxHealth: int = 0
var health: int = maxHealth

signal died

# Called when the node enters the scene tree for the first time.
func _ready() -> void:
	spawn()

# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
	pass

func spawn() -> void:
	pass

func take_damage(dmg: int) -> void:
	self.health -= dmg;
	if self.health < 0:
		self.die()

# I think the move per npc is to model concrete behaviours in functions. 
# How the npc acts can be determined elsewhere, these functions just implement the behvaiour
func flee(direction: Vector3) -> void:
	push_error("Function flee() not implemented.")
	
# Im envisioning we feed on "sustenance (to be classed)" only; when something dies it should spawn some sustenance
func feed(source ) -> void:
	push_error("Function feed() not implemented.")
	
func die() -> void:
	died.emit()
	queue_free()
	# TODO: should associate this class with a loot table (or equivalent), and can then implement logic for dying in parent class here.
	
func move(destination: Vector3) -> void:
	push_error("Function move() not implemented.")
	
