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.
This commit is contained in:
parent
f97521decc
commit
19cc8cb573
13 changed files with 178 additions and 65 deletions
|
|
@ -4,9 +4,3 @@
|
|||
|
||||
[node name="RockProjectile" type="Node2D"]
|
||||
script = ExtResource("1_8myby")
|
||||
speed = null
|
||||
damage = null
|
||||
lifetime = null
|
||||
direction = null
|
||||
target_position = null
|
||||
is_friendly = null
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ func _ready():
|
|||
lifetime_timer = Timer.new()
|
||||
add_child(lifetime_timer)
|
||||
lifetime_timer.one_shot = true
|
||||
lifetime_timer.wait_time = lifetime
|
||||
lifetime_timer.wait_time = stats.lifetime
|
||||
lifetime_timer.connect("timeout", _on_lifetime_timeout)
|
||||
lifetime_timer.start()
|
||||
|
||||
|
|
@ -13,7 +13,19 @@ func _ready():
|
|||
connect("body_entered", _on_body_entered)
|
||||
|
||||
func _physics_process(delta):
|
||||
position += direction * speed * 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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue