Files
slopvivors/scenes/pickups/pickup_magnet.gd

37 lines
1.0 KiB
GDScript

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.ModRarity.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()