Added Vines to non-common item spawns

This commit is contained in:
RealMelwei 2025-10-11 12:47:24 +02:00
parent a1208fa8a4
commit 2acc452f19
9 changed files with 53 additions and 18 deletions

View file

@ -60,13 +60,12 @@ scale = Vector2(2.688, 3)
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("9_jmdjr")] [node name="ItemSpawn" parent="EnemyList" instance=ExtResource("9_jmdjr")]
position = Vector2(300, -200) position = Vector2(300, -200)
spawn_petal = true
petal_scene = ExtResource("9_dasjy")
[node name="Giant_Leech" parent="EnemyList" instance=ExtResource("8_r3b86")] [node name="Giant_Leech" parent="EnemyList" instance=ExtResource("8_r3b86")]
position = Vector2(400, -340) position = Vector2(400, -340)
[node name="Petal" parent="EnemyList" instance=ExtResource("9_dasjy")]
position = Vector2(511, -172)
[node name="DebugSprite" type="Sprite2D" parent="."] [node name="DebugSprite" type="Sprite2D" parent="."]
visible = false visible = false
position = Vector2(300, -150) position = Vector2(300, -150)

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=11 format=3 uid="uid://6y637jp2tbma"] [gd_scene load_steps=10 format=3 uid="uid://6y637jp2tbma"]
[ext_resource type="Script" uid="uid://b2ji03ekijjnn" path="res://buildings/building.gd" id="1_w5m4l"] [ext_resource type="Script" uid="uid://b2ji03ekijjnn" path="res://buildings/building.gd" id="1_w5m4l"]
[ext_resource type="Shader" uid="uid://c7gb1nqwvkr37" path="res://buildings/building.gdshader" id="2_wod1l"] [ext_resource type="Shader" uid="uid://c7gb1nqwvkr37" path="res://buildings/building.gdshader" id="2_wod1l"]
@ -8,7 +8,6 @@
[ext_resource type="PackedScene" uid="uid://4l3elvxpghw8" path="res://utils/platform.tscn" id="6_caaff"] [ext_resource type="PackedScene" uid="uid://4l3elvxpghw8" path="res://utils/platform.tscn" id="6_caaff"]
[ext_resource type="PackedScene" uid="uid://xj0of571aur1" path="res://items/generic/item_spawn.tscn" id="7_elmbw"] [ext_resource type="PackedScene" uid="uid://xj0of571aur1" path="res://items/generic/item_spawn.tscn" id="7_elmbw"]
[ext_resource type="PackedScene" uid="uid://dpv1w56yr1xue" path="res://traps/morning_star.tscn" id="8_1cnhw"] [ext_resource type="PackedScene" uid="uid://dpv1w56yr1xue" path="res://traps/morning_star.tscn" id="8_1cnhw"]
[ext_resource type="PackedScene" uid="uid://bhhhvaqhm3ctc" path="res://petal.tscn" id="9_1cnhw"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_qnfc1"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_qnfc1"]
resource_local_to_scene = true resource_local_to_scene = true
@ -62,9 +61,6 @@ position = Vector2(39, -552)
[node name="Ghost2" parent="EnemyList" instance=ExtResource("5_rh5oo")] [node name="Ghost2" parent="EnemyList" instance=ExtResource("5_rh5oo")]
position = Vector2(301, -39) position = Vector2(301, -39)
[node name="Petal" parent="EnemyList" instance=ExtResource("9_1cnhw")]
position = Vector2(260, -525)
[node name="DebugSprite" type="Sprite2D" parent="."] [node name="DebugSprite" type="Sprite2D" parent="."]
visible = false visible = false
position = Vector2(150, -300) position = Vector2(150, -300)

View file

@ -47,6 +47,8 @@ scale = Vector2(2.49, 3.1)
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("7_sr858")] [node name="ItemSpawn" parent="EnemyList" instance=ExtResource("7_sr858")]
position = Vector2(149, -645) position = Vector2(149, -645)
rarity_bonus = 0.5 rarity_bonus = 0.5
spawn_petal = true
petal_scene = ExtResource("9_qsju2")
[node name="MorningStar" parent="EnemyList" instance=ExtResource("8_ta0fd")] [node name="MorningStar" parent="EnemyList" instance=ExtResource("8_ta0fd")]
position = Vector2(39, -552) position = Vector2(39, -552)
@ -54,9 +56,6 @@ position = Vector2(39, -552)
[node name="BearTrap" parent="EnemyList" instance=ExtResource("8_pww4b")] [node name="BearTrap" parent="EnemyList" instance=ExtResource("8_pww4b")]
position = Vector2(165, -7) position = Vector2(165, -7)
[node name="Petal" parent="EnemyList" instance=ExtResource("9_qsju2")]
position = Vector2(86, -397)
[node name="DebugSprite" type="Sprite2D" parent="."] [node name="DebugSprite" type="Sprite2D" parent="."]
visible = false visible = false
position = Vector2(150, -300) position = Vector2(150, -300)

View file

@ -10,6 +10,9 @@ static var item_pool = ResourceLoader.load("res://items/generic/item_pool.tres",
@export var unique_bonus_multiplier = .05 @export var unique_bonus_multiplier = .05
@export var rare_bonus_multiplier = 0 @export var rare_bonus_multiplier = 0
@export var spawn_petal = true
@export var petal_scene : PackedScene = ResourceLoader.load("res://petal.tscn")
var remove_after_spawn = false var remove_after_spawn = false
func choose_pool() -> Array[PackedScene]: func choose_pool() -> Array[PackedScene]:
@ -22,8 +25,15 @@ func choose_pool() -> Array[PackedScene]:
return item_pool.unique return item_pool.unique
elif random < unique_chance + rare_chance || guarantee_rare: elif random < unique_chance + rare_chance || guarantee_rare:
return item_pool.rare return item_pool.rare
spawn_petal = false
return item_pool.common return item_pool.common
func instantiate_petal(item):
var petal : Petal = petal_scene.instantiate()
get_parent().call_deferred("add_child", petal)
petal.item = item
petal.global_position = global_position
func _ready(): func _ready():
var pool = choose_pool() var pool = choose_pool()
var index = randi_range(0, pool.size() - 1) var index = randi_range(0, pool.size() - 1)
@ -33,3 +43,4 @@ func _ready():
var object = packed_scene.instantiate() var object = packed_scene.instantiate()
add_child.call_deferred(object) add_child.call_deferred(object)
object.reparent.call_deferred(get_parent()) object.reparent.call_deferred(get_parent())
if spawn_petal: instantiate_petal(object)

View file

@ -1,10 +1,12 @@
[gd_scene load_steps=3 format=3 uid="uid://xj0of571aur1"] [gd_scene load_steps=4 format=3 uid="uid://xj0of571aur1"]
[ext_resource type="Script" uid="uid://b8em61mqgdi58" path="res://items/generic/item_spawn.gd" id="1_ms6tn"] [ext_resource type="Script" uid="uid://b8em61mqgdi58" path="res://items/generic/item_spawn.gd" id="1_ms6tn"]
[ext_resource type="PackedScene" uid="uid://bhhhvaqhm3ctc" path="res://petal.tscn" id="2_5to52"]
[ext_resource type="PackedScene" uid="uid://chs0u61f45nau" path="res://utils/earth_aligner.tscn" id="3_5pwuf"] [ext_resource type="PackedScene" uid="uid://chs0u61f45nau" path="res://utils/earth_aligner.tscn" id="3_5pwuf"]
[node name="ItemSpawn" type="Node2D"] [node name="ItemSpawn" type="Node2D"]
script = ExtResource("1_ms6tn") script = ExtResource("1_ms6tn")
petal_scene = ExtResource("2_5to52")
metadata/_custom_type_script = "uid://b8em61mqgdi58" metadata/_custom_type_script = "uid://b8em61mqgdi58"
[node name="EarthAligner" parent="." instance=ExtResource("3_5pwuf")] [node name="EarthAligner" parent="." instance=ExtResource("3_5pwuf")]

View file

@ -1,9 +1,17 @@
extends Node2D class_name Petal extends Node2D
@onready var grid : Grid = get_tree().get_root().get_node("main/Earth/Grid") @onready var grid : Grid = get_tree().get_root().get_node("main/Earth/Grid")
@export var location : Vector2 @onready var location : Vector2 = grid.get_location_from_world_pos(global_position)
@export var offset : Vector2 @onready var offset : Vector2 = grid.get_offset_from_world_pos(global_position)
@export var vine_resource : PackedScene @export var vine_resource : PackedScene
var vine : Vine var vine : Vine
var activated = false
var item : Item:
set(item_in):
item = item_in
if not activated and item is Item:
item.monitoring = false
item.monitorable = false
item.modulate = Color(1,1,1,0.8)
func _ready() -> void: func _ready() -> void:
await get_tree().create_timer(1).timeout await get_tree().create_timer(1).timeout
@ -15,4 +23,9 @@ func _ready() -> void:
vine.init_random() vine.init_random()
func _on_interaction() -> void: func _on_interaction() -> void:
activated = true
vine.activate() vine.activate()
if item != null:
item.monitorable = true
item.monitoring = true
item.modulate = Color.WHITE

View file

@ -15,6 +15,7 @@ vine_resource = ExtResource("2_4btcp")
[node name="BudOpen" type="Sprite2D" parent="."] [node name="BudOpen" type="Sprite2D" parent="."]
modulate = Color(18.892157, 1.8483434, 18.892157, 1) modulate = Color(18.892157, 1.8483434, 18.892157, 1)
z_index = -1
scale = Vector2(5, 5) scale = Vector2(5, 5)
texture = ExtResource("1_05pvv") texture = ExtResource("1_05pvv")

View file

@ -126,4 +126,4 @@ func init_random():
vine_end_data.append({"location": petal_location, "offset": petal_offset, "depth": 0}) vine_end_data.append({"location": petal_location, "offset": petal_offset, "depth": 0})
func random_offset(): func random_offset():
return 0*Vector2(randf_range(60, 240), randf_range(90, 270)) return Vector2(randf_range(60, 240), randf_range(90, 270))

View file

@ -54,7 +54,21 @@ func get_world_position (location: Vector2, offset: Vector2 = Vector2.ZERO) -> V
var height = ground_radius + location.y * cell_height - offset.y # currently assumes anchor is bottom left var height = ground_radius + location.y * cell_height - offset.y # currently assumes anchor is bottom left
var angle = (location.x + offset.x / cell_height) * TAU / num_collumns var angle = (location.x + offset.x / cell_height) * TAU / num_collumns
return height * Vector2.from_angle(angle) return height * Vector2.from_angle(angle)
func get_location_from_world_pos(pos : Vector2):
var angle = pos.angle()
var x = floor(num_collumns * angle / TAU)
var height = pos.length()
var y = ceil((height - ground_radius)/cell_height)
return Vector2(x, y)
func get_offset_from_world_pos(pos : Vector2):
var angle = pos.angle()
var x = fposmod(num_collumns * angle / TAU, 1) * cell_height
var height = pos.length()
var y = fposmod((height - ground_radius)/cell_height, 1) * cell_height
return Vector2(x, y)
# for testing # for testing
#func _ready() -> void: #func _ready() -> void:
# #