37 lines
1.0 KiB
GDScript
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()
|