diff --git a/items/generic/item_spawn.gd b/items/generic/item_spawn.gd index 70747df..c034bd4 100644 --- a/items/generic/item_spawn.gd +++ b/items/generic/item_spawn.gd @@ -15,19 +15,24 @@ static var item_pool = ResourceLoader.load("res://items/generic/item_pool.tres", var remove_after_spawn = false +# Choose the item pool this spawn location draws from func choose_pool() -> Array[PackedScene]: var unique_chance = unique_base_chance + unique_bonus_multiplier * rarity_bonus var rare_chance = rare_base_chance + rare_bonus_multiplier * rarity_bonus var random = randf() if random < unique_chance && item_pool.unique.size() > 0: + # Unique items are removed from the pool when picked remove_after_spawn = true return item_pool.unique elif random < unique_chance + rare_chance || guarantee_rare: return item_pool.rare + + # If an item is common, no petal spawns spawn_petal = false return item_pool.common +# Places a petal holding this item func instantiate_petal(item): var petal : Petal = petal_scene.instantiate() get_parent().call_deferred("add_child", petal) @@ -35,11 +40,14 @@ func instantiate_petal(item): petal.global_position = global_position func _ready(): + # Pick a random pool and a random item from it, then remove it if unique. var pool = choose_pool() var index = randi_range(0, pool.size() - 1) var packed_scene : PackedScene = pool[index] if remove_after_spawn: item_pool.unique.remove_at(index) + + # Place the item, possibly inside a petal var object = packed_scene.instantiate() add_child.call_deferred(object) object.reparent.call_deferred(get_parent())