randomgeon/combat/projectiles/rock/scripts/rock_projectile.gd
Dan Baker 19cc8cb573 Implements modifier and stats system
Adds a modifier and stats system to manage combat-related attributes.

Introduces StatsComponent for storing entity statistics and ModifierManager for applying dynamic modifiers. Recalculates stats based on modifier type and priority.

Updates projectile and weapon components to utilize the new stats system.
2025-05-07 11:52:30 +01:00

31 lines
833 B
GDScript

class_name RockProjectile
extends ProjectileBaseTwo
func _ready():
lifetime_timer = Timer.new()
add_child(lifetime_timer)
lifetime_timer.one_shot = true
lifetime_timer.wait_time = stats.lifetime
lifetime_timer.connect("timeout", _on_lifetime_timeout)
lifetime_timer.start()
emit_signal("on_spawned", self)
connect("body_entered", _on_body_entered)
func _physics_process(delta):
position += direction * stats.speed * delta
func _on_body_entered(body):
if body.is_in_group("enemies"):
body.take_damage(stats.damage)
## Check if the projectile is piercing
if not get_stat("pierce_count"):
# If not piercing, destroy the projectile
destroy()
else:
# If piercing, reduce the pierce count
set_stat("pierce_count", get_stat("pierce_count") - 1)
func _on_lifetime_timeout():
super._on_lifetime_timeout()