game: add magnet pickup
This commit is contained in:
36
scenes/pickups/pickup_magnet.gd
Normal file
36
scenes/pickups/pickup_magnet.gd
Normal file
@@ -0,0 +1,36 @@
|
||||
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()
|
Reference in New Issue
Block a user