54 lines
1.1 KiB
GDScript
54 lines
1.1 KiB
GDScript
extends CharacterBody2D
|
|
|
|
class_name Enemy
|
|
|
|
@export var speed = 1000
|
|
|
|
@export var value = 10
|
|
|
|
var health = 0
|
|
@export var total_health := 30
|
|
|
|
|
|
|
|
@export var difficulty := 1
|
|
|
|
@export var player : CharacterBody2D
|
|
|
|
@onready var navigation : NavigationAgent2D = $NavigationAgent2D
|
|
@onready var health_bar : ProgressBar = $HealthBar
|
|
|
|
@onready var particles : CPUParticles2D = $CPUParticles2D
|
|
|
|
func _init():
|
|
health = total_health
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
|
|
health_bar.value = (float(health)/total_health)*100
|
|
navigation.target_position = player.position
|
|
if not navigation.is_navigation_finished():
|
|
navigation.velocity = ((navigation.get_next_path_position()-position).normalized()*speed*delta)
|
|
else:
|
|
navigation.velocity = Vector2(0,0)
|
|
|
|
if health <= 0:
|
|
player.score += difficulty
|
|
player.money += int(value*100*(float(1)/(player.tax+100)))
|
|
player.inventory.update_stats()
|
|
queue_free()
|
|
move_and_slide()
|
|
|
|
func damage(damage : int):
|
|
particles.emitting = true
|
|
health -= damage
|
|
if health <= 0:
|
|
return -health
|
|
|
|
return 0
|
|
|
|
|
|
func _on_navigation_agent_2d_velocity_computed(safe_velocity: Vector2) -> void:
|
|
velocity = safe_velocity
|
|
|