31 lines
702 B
GDScript
31 lines
702 B
GDScript
extends Area2D
|
|
|
|
@export var max_hp : int
|
|
@onready var hp = max_hp
|
|
@export var hit_invulnerability = 0.2
|
|
@export var canvasItem : CanvasItem
|
|
@export var flashColor : Color = Color(1.5, 1.5, 1.5)
|
|
var inv_time = 0;
|
|
|
|
signal damage_taken
|
|
signal died
|
|
|
|
func _process(delta: float) -> void:
|
|
inv_time = max(inv_time-delta, 0)
|
|
if(inv_time <= 0 and canvasItem != null):
|
|
canvasItem.modulate = Color(1,1,1)
|
|
|
|
func hurt(damage : int, dir : Vector2 = Vector2.ZERO):
|
|
if(inv_time<=0):
|
|
if canvasItem != null: canvasItem.modulate = flashColor
|
|
inv_time = hit_invulnerability
|
|
hp = max(hp-damage, 0)
|
|
damage_taken.emit(damage, dir)
|
|
if(hp <= 0):
|
|
die()
|
|
|
|
func die():
|
|
died.emit()
|
|
|
|
func destroy():
|
|
hurt(9999)
|