summaryrefslogtreecommitdiff
path: root/scripts/soldier.gd
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-05-22 13:50:49 -0400
committerbd <bdunahu@operationnull.com>2025-05-22 13:50:49 -0400
commit8c5c4863aeacb4afcf70f339df6d601e2df1a7a6 (patch)
tree6c2af54a18271534864a7a1daed7814ebac5abd1 /scripts/soldier.gd
parent80e145ba2b85e08f895e76ba6a03bb67bc9ce9ea (diff)
Reorganized files into scenes and scripts
Diffstat (limited to 'scripts/soldier.gd')
-rw-r--r--scripts/soldier.gd27
1 files changed, 27 insertions, 0 deletions
diff --git a/scripts/soldier.gd b/scripts/soldier.gd
new file mode 100644
index 0000000..d373237
--- /dev/null
+++ b/scripts/soldier.gd
@@ -0,0 +1,27 @@
+extends CharacterBody2D
+
+@export var worth : int = 5
+@export var damage : int = 1
+@export var speed : float = 50.0
+@export var max_health : float = 30.0
+var _health : float = max_health
+
+func _process(delta):
+ get_parent().set_progress(get_parent().get_progress() + speed * delta)
+ if get_parent().get_progress_ratio() == 1:
+ GameData.subtract_morale(damage)
+ queue_free()
+
+func deal_damage(tower_damage):
+ _health -= tower_damage
+ if _health <= 0:
+ GameData.add_life(worth)
+ queue_free()
+ else:
+ _update_color()
+
+func _update_color():
+ var ratio : float = _health / max_health
+ var target_color = Color(1, ratio, ratio)
+
+ $Sprite2D.modulate = target_color