Fixed crash related to status effects

This commit is contained in:
RealMelwei 2025-10-11 19:06:46 +02:00
parent c33d892cf0
commit 28640e94c6
3 changed files with 26 additions and 7 deletions

View file

@ -142,6 +142,7 @@ func manage_velocity(delta: float) -> void:
local_velocity += Vector2(0, gravity) local_velocity += Vector2(0, gravity)
if handle_input: 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 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(Input.is_action_pressed("move_right")):
if local_velocity.x > -700: if local_velocity.x > -700:

View file

@ -11,8 +11,8 @@ static func apply(status_name : String, target : Node, duration : float, params_
if not target.has_node(status_name): if not target.has_node(status_name):
var child = Status.new() var child = Status.new()
child.name = status_name child.name = status_name
child.params = params_in child.params = get_default_parameters(status_name).duplicate(true)
child.params.merge(get_default_parameters(status_name)) child.params.merge(params_in.duplicate(true))
target.add_child(child) target.add_child(child)
child.start(duration) child.start(duration)
else: else:
@ -36,11 +36,11 @@ func reapply(duration_new : float, params_new : Dictionary = {}):
merge_params(params_new) merge_params(params_new)
func 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) params.slow_factor = min(params.slow_factor, params_new.slow_factor)
func expire(): func expire():
queue_free() queue_free()
static func get_default_parameters(status_name : String) -> Dictionary: 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, {})

View file

@ -4,15 +4,33 @@ class_name Vine extends Node2D
@export var vine_locations : Array[Vector2] @export var vine_locations : Array[Vector2]
@export var bud_resource : PackedScene @export var bud_resource : PackedScene
var img_path_inactive = "res://vines_petals/vine_inactive.png" var img_path_inactive = "res://vines_petals/vine_inactive.png"
@export var img_path_active = "res://vines_petals/vine_active_green.png" @export var img_path_active : String
@export var status_name : String = "Slow"
@export var status_params : Dictionary = {} 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 active_depth = -1
var fully_active = false var fully_active = false
var vine_data = [] var vine_data = []
var max_depth = 150 var max_depth = 150
var vine_end_data = [] 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): func draw_vine(pos1 : Vector2, pos2 : Vector2, depth : int):
var sprite = Sprite2D.new() var sprite = Sprite2D.new()
get_tree().get_root().get_node("main").add_child(sprite) get_tree().get_root().get_node("main").add_child(sprite)