summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scenes/crawlers/soldier.gd15
-rw-r--r--scenes/defenders/warlock_projectile.gd2
-rw-r--r--scenes/defenders/wyvern_projectile.gd2
3 files changed, 15 insertions, 4 deletions
diff --git a/scenes/crawlers/soldier.gd b/scenes/crawlers/soldier.gd
index 2db3f60..1bd7549 100644
--- a/scenes/crawlers/soldier.gd
+++ b/scenes/crawlers/soldier.gd
@@ -1,12 +1,23 @@
extends CharacterBody2D
@export var speed = 50.0
-@export var health = 40
+@export var max_health = 40
+var _health = max_health
func _process(delta):
get_parent().set_progress(get_parent().get_progress() + speed * delta)
if get_parent().get_progress_ratio() == 1:
queue_free()
- if health <= 0:
+func deal_damage(damage):
+ _health -= damage
+ if _health <= 0:
queue_free()
+ else:
+ _update_color()
+
+func _update_color():
+ var ratio : float = float(_health) / max_health
+ var target_color = Color(1, ratio, ratio)
+
+ $Sprite2D.modulate = target_color
diff --git a/scenes/defenders/warlock_projectile.gd b/scenes/defenders/warlock_projectile.gd
index 9645a2c..060a27d 100644
--- a/scenes/defenders/warlock_projectile.gd
+++ b/scenes/defenders/warlock_projectile.gd
@@ -12,7 +12,7 @@ func _physics_process(_delta: float):
func _on_area_2d_body_entered(body: Node2D):
if "Crawler" in body.name:
- body.health -= projectile_damage
+ body.deal_damage(projectile_damage)
queue_free()
func _move_projectile():
diff --git a/scenes/defenders/wyvern_projectile.gd b/scenes/defenders/wyvern_projectile.gd
index 104bc6f..9b59bb0 100644
--- a/scenes/defenders/wyvern_projectile.gd
+++ b/scenes/defenders/wyvern_projectile.gd
@@ -10,7 +10,7 @@ func _on_damage_tick_timeout() -> void:
var enemies = $Area2D.get_overlapping_bodies()
for i in enemies:
if "Crawler" in i.name:
- i.health -= projectile_damage
+ i.deal_damage(projectile_damage)
func move_projectile() -> void:
var pos : Vector2