extends RigidBody3D @export var collision_shape = Node @export var despawning = false @export var despawn_time_s = 10 @export_enum("Ammo", "Stamina", "Health", "Money","Weapon") var pickupType: int @onready var level_control = get_tree().current_scene var rand_amt var player_follow var player # Called when the node enters the scene tree for the first time. func _ready(): add_to_group("pickup") add_to_group("spawned") #find player player = level_control.player rand_amt = randi_range(25,100) if despawning == true: await get_tree().create_timer(despawn_time_s).timeout collision_shape.disabled = true await get_tree().create_timer(1).timeout self.queue_free() func _physics_process(delta): if player_follow != null: var float_direction = (player.global_position - self.position) self.set_linear_velocity(float_direction * 7) func picked_up(): player.pickup_sound.pitch_scale = 1 + randf_range(-.3,.3) player.pickup_sound.play() match pickupType: # Ammo 0: var ammo_add_amount : int = (rand_amt * .01) * player.gun.max_ammo #this is ugly and I don't like it but it works to force the random amount into being treated as float level_control.ammo_reserve[level_control.current_gun_index] += ammo_add_amount print("ammo + " +str(ammo_add_amount)) # Stamina 1: var stamina_add_amount = (rand_amt * .01) * player.MAX_STAMINA player.remaining_stamina += stamina_add_amount print("stamina + " +str(stamina_add_amount)) # Health 2: level_control.health += 1 # Money 3: level_control.money += rand_amt queue_free()