The_Dark_Side_of_Earth/items/item_spawn.gd

35 lines
996 B
GDScript3
Raw Normal View History

2025-09-17 12:17:32 +02:00
class_name ItemSpawn extends Node2D
@export var common_items : Array[PackedScene]
@export var rare_items : Array[PackedScene]
@export var unique_items : Array[PackedScene]
@export var rarity_bonus = 0
@export var guarantee_rare : bool = false
@export var unique_base_chance = .05
@export var rare_base_chance = .2
@export var unique_bonus_multiplier = .025
@export var rare_bonus_multiplier = .1
var remove_after_spawn = false
func choose_pool():
var unique_chance = unique_base_chance + unique_bonus_multiplier * rarity_bonus
var rare_chance = unique_base_chance + unique_bonus_multiplier * rarity_bonus
var random = randf()
if random < unique_chance:
remove_after_spawn = true
return unique_items
elif random < unique_chance + rare_chance || guarantee_rare:
return rare_items
func _ready():
var pool = choose_pool()
var index = randi_range(0, pool.size() - 1)
var packed_scene : PackedScene = pool[index]
pool.remove_at(index)
add_sibling(packed_scene.instantiate())