Documented Item Spawn Code

This commit is contained in:
RealMelwei 2025-10-14 11:57:01 +02:00
parent a404950b92
commit 20dea147ba

View file

@ -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())