class_name PickupMagnet extends PickupBase @export var duration: float = 15.0 @onready var collision_shape_2d: CollisionShape2D = $Area2D/CollisionShape2D func pickup() -> void: if not player: push_error("pickup called on %s without player set" % self) return var mod: PlayerStatsModifier = PlayerStatsModifier.new() mod.description = "Magnet massively increases pickup range for a limited amout of time" mod.title = "Magnet" mod.tex = GlobalConst.placeholder_tex mod.internal_name = "magnet" mod.rarity = GlobalConst.Rarity.RARE mod.stat_name = "pickup_radius" mod.value = 5000.0 mod.type = PlayerStatsModifier.ModifierType.ABSOLUTE player.modifiers.append(mod) # Hide, and stop processing until timeout visible = false set_process(false) set_physics_process(false) collision_shape_2d.disabled = true await get_tree().create_timer(duration).timeout if is_instance_valid(player): for i in range(player.modifiers.size()): if player.modifiers[i].internal_name == mod.internal_name: player.modifiers.remove_at(i) break queue_free()