diff options
author | bd <bdunahu@operationnull.com> | 2025-05-21 17:20:21 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-05-21 17:20:21 -0400 |
commit | a00b14bcf2084a1e68f57620e27956813d469aad (patch) | |
tree | 5f061482110634a81d3124e3d9977853a8d467e9 | |
parent | 515a81c313d83195ea77c5ae5e222b0118276279 (diff) |
Make enemy color turn to red with missing health
-rw-r--r-- | scenes/crawlers/soldier.gd | 15 | ||||
-rw-r--r-- | scenes/defenders/warlock_projectile.gd | 2 | ||||
-rw-r--r-- | scenes/defenders/wyvern_projectile.gd | 2 |
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 |