From 28640e94c69e5942ce018d47adcb57f7c51f0e9f Mon Sep 17 00:00:00 2001 From: RealMelwei Date: Sat, 11 Oct 2025 19:06:46 +0200 Subject: [PATCH] Fixed crash related to status effects --- player/player.gd | 1 + statusses/status.gd | 8 ++++---- vines_petals/vine.gd | 24 +++++++++++++++++++++--- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/player/player.gd b/player/player.gd index 3576d41..aa51915 100644 --- a/player/player.gd +++ b/player/player.gd @@ -142,6 +142,7 @@ func manage_velocity(delta: float) -> void: local_velocity += Vector2(0, gravity) if handle_input: + #if has_node("Slow"): print(get_node("Slow").params) var hspeed = base_hspeed if not Status.affects("Slow", self) else base_hspeed * get_node("Slow").params.slow_factor if(Input.is_action_pressed("move_right")): if local_velocity.x > -700: diff --git a/statusses/status.gd b/statusses/status.gd index ae165bc..19dbe85 100644 --- a/statusses/status.gd +++ b/statusses/status.gd @@ -11,8 +11,8 @@ static func apply(status_name : String, target : Node, duration : float, params_ if not target.has_node(status_name): var child = Status.new() child.name = status_name - child.params = params_in - child.params.merge(get_default_parameters(status_name)) + child.params = get_default_parameters(status_name).duplicate(true) + child.params.merge(params_in.duplicate(true)) target.add_child(child) child.start(duration) else: @@ -36,11 +36,11 @@ func reapply(duration_new : float, params_new : Dictionary = {}): merge_params(params_new) func merge_params(params_new): - if name == "Slow": + if name == "Slow" and params.has("slow_factor") and params_new.has("slow_factor"): params.slow_factor = min(params.slow_factor, params_new.slow_factor) func expire(): queue_free() static func get_default_parameters(status_name : String) -> Dictionary: - return default_parameters.get(status_name) if default_parameters.has(status_name) else {} + return default_parameters.get(status_name, {}) diff --git a/vines_petals/vine.gd b/vines_petals/vine.gd index 658e74c..03e0648 100644 --- a/vines_petals/vine.gd +++ b/vines_petals/vine.gd @@ -4,15 +4,33 @@ class_name Vine extends Node2D @export var vine_locations : Array[Vector2] @export var bud_resource : PackedScene var img_path_inactive = "res://vines_petals/vine_inactive.png" -@export var img_path_active = "res://vines_petals/vine_active_green.png" -@export var status_name : String = "Slow" -@export var status_params : Dictionary = {} +@export var img_path_active : String + +const status_data = [ + { + "name": "Slow", + "params" : {}, + "img_path": "res://vines_petals/vine_active_green.png" + }, + { + "name": "Vulnerable", + "params" : {}, + "img_path": "res://vines_petals/vine_active_purple.png" + },] +var status_name : String +var status_params : Dictionary = {} var active_depth = -1 var fully_active = false var vine_data = [] var max_depth = 150 var vine_end_data = [] +func _ready() -> void: + var data : Dictionary = status_data.pick_random() + status_name = data.name + status_params = data.params if data.has("params") else {} + img_path_active = data.img_path + func draw_vine(pos1 : Vector2, pos2 : Vector2, depth : int): var sprite = Sprite2D.new() get_tree().get_root().get_node("main").add_child(sprite)