Blud_Mage/Scenes/Spawnables/template_spawnable.gd

67 lines
1.4 KiB
GDScript3
Raw Normal View History

2023-10-10 13:30:23 -04:00
class_name TemplateSpawnable
extends CharacterBody2D
@export var maxHp : int = 0
@export var attackSpeed : float = 0
@export var speed : float = 0
@export var damage : int = 0
@export var priority : int = 0
@onready var ai : Node = $AI
@onready var animatedSprite : AnimatedSprite2D = $AnimatedSprite2D
var isAlive : bool = true
var direction : Vector2 = Vector2.ZERO
var enemy : CharacterBody2D = null
var currentHp : int = 0
var cooldown : float = 0
func _ready():
enemy = get_node("../Enemy")
currentHp = maxHp
func _process(delta):
if !isAlive:
return
if enemy != null:
direction = ai.getDirection(position, enemy.position)
else:
direction = Vector2.ZERO
velocity = direction * speed * delta
move_and_slide()
func attack(target):
animatedSprite.play("attack")
animatedSprite.connect("animation_finished", endAttack(target))
func endAttack(target):
target.receive_damage(damage)
animatedSprite.play("default")
func receive_damage(dmg):
if !isAlive:
return
if currentHp - dmg <= 0:
currentHp = 0
die()
else :
currentHp -= dmg
func die():
isAlive = false
animatedSprite.play("death")
animatedSprite.connect("animation_finished", self.fadeOut())
func fadeOut():
var tween = Tween.new()
add_child(tween)
tween.tween_property(animatedSprite, "modulate", Color(0,0,0,0), 1)
tween.tween_callback(clean())
func clean():
queue_free()