Added Vines to non-common item spawns
This commit is contained in:
parent
a1208fa8a4
commit
2acc452f19
9 changed files with 53 additions and 18 deletions
|
|
@ -60,13 +60,12 @@ scale = Vector2(2.688, 3)
|
|||
|
||||
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("9_jmdjr")]
|
||||
position = Vector2(300, -200)
|
||||
spawn_petal = true
|
||||
petal_scene = ExtResource("9_dasjy")
|
||||
|
||||
[node name="Giant_Leech" parent="EnemyList" instance=ExtResource("8_r3b86")]
|
||||
position = Vector2(400, -340)
|
||||
|
||||
[node name="Petal" parent="EnemyList" instance=ExtResource("9_dasjy")]
|
||||
position = Vector2(511, -172)
|
||||
|
||||
[node name="DebugSprite" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
position = Vector2(300, -150)
|
||||
|
|
|
|||
|
|
@ -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="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://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://bhhhvaqhm3ctc" path="res://petal.tscn" id="9_1cnhw"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_qnfc1"]
|
||||
resource_local_to_scene = true
|
||||
|
|
@ -62,9 +61,6 @@ position = Vector2(39, -552)
|
|||
[node name="Ghost2" parent="EnemyList" instance=ExtResource("5_rh5oo")]
|
||||
position = Vector2(301, -39)
|
||||
|
||||
[node name="Petal" parent="EnemyList" instance=ExtResource("9_1cnhw")]
|
||||
position = Vector2(260, -525)
|
||||
|
||||
[node name="DebugSprite" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
position = Vector2(150, -300)
|
||||
|
|
|
|||
|
|
@ -47,6 +47,8 @@ scale = Vector2(2.49, 3.1)
|
|||
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("7_sr858")]
|
||||
position = Vector2(149, -645)
|
||||
rarity_bonus = 0.5
|
||||
spawn_petal = true
|
||||
petal_scene = ExtResource("9_qsju2")
|
||||
|
||||
[node name="MorningStar" parent="EnemyList" instance=ExtResource("8_ta0fd")]
|
||||
position = Vector2(39, -552)
|
||||
|
|
@ -54,9 +56,6 @@ position = Vector2(39, -552)
|
|||
[node name="BearTrap" parent="EnemyList" instance=ExtResource("8_pww4b")]
|
||||
position = Vector2(165, -7)
|
||||
|
||||
[node name="Petal" parent="EnemyList" instance=ExtResource("9_qsju2")]
|
||||
position = Vector2(86, -397)
|
||||
|
||||
[node name="DebugSprite" type="Sprite2D" parent="."]
|
||||
visible = false
|
||||
position = Vector2(150, -300)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,9 @@ static var item_pool = ResourceLoader.load("res://items/generic/item_pool.tres",
|
|||
@export var unique_bonus_multiplier = .05
|
||||
@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
|
||||
|
||||
func choose_pool() -> Array[PackedScene]:
|
||||
|
|
@ -22,8 +25,15 @@ func choose_pool() -> Array[PackedScene]:
|
|||
return item_pool.unique
|
||||
elif random < unique_chance + rare_chance || guarantee_rare:
|
||||
return item_pool.rare
|
||||
spawn_petal = false
|
||||
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():
|
||||
var pool = choose_pool()
|
||||
var index = randi_range(0, pool.size() - 1)
|
||||
|
|
@ -33,3 +43,4 @@ func _ready():
|
|||
var object = packed_scene.instantiate()
|
||||
add_child.call_deferred(object)
|
||||
object.reparent.call_deferred(get_parent())
|
||||
if spawn_petal: instantiate_petal(object)
|
||||
|
|
|
|||
|
|
@ -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="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"]
|
||||
|
||||
[node name="ItemSpawn" type="Node2D"]
|
||||
script = ExtResource("1_ms6tn")
|
||||
petal_scene = ExtResource("2_5to52")
|
||||
metadata/_custom_type_script = "uid://b8em61mqgdi58"
|
||||
|
||||
[node name="EarthAligner" parent="." instance=ExtResource("3_5pwuf")]
|
||||
|
|
|
|||
19
petal.gd
19
petal.gd
|
|
@ -1,9 +1,17 @@
|
|||
extends Node2D
|
||||
class_name Petal extends Node2D
|
||||
@onready var grid : Grid = get_tree().get_root().get_node("main/Earth/Grid")
|
||||
@export var location : Vector2
|
||||
@export var offset : Vector2
|
||||
@onready var location : Vector2 = grid.get_location_from_world_pos(global_position)
|
||||
@onready var offset : Vector2 = grid.get_offset_from_world_pos(global_position)
|
||||
@export var vine_resource : PackedScene
|
||||
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:
|
||||
await get_tree().create_timer(1).timeout
|
||||
|
|
@ -15,4 +23,9 @@ func _ready() -> void:
|
|||
vine.init_random()
|
||||
|
||||
func _on_interaction() -> void:
|
||||
activated = true
|
||||
vine.activate()
|
||||
if item != null:
|
||||
item.monitorable = true
|
||||
item.monitoring = true
|
||||
item.modulate = Color.WHITE
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ vine_resource = ExtResource("2_4btcp")
|
|||
|
||||
[node name="BudOpen" type="Sprite2D" parent="."]
|
||||
modulate = Color(18.892157, 1.8483434, 18.892157, 1)
|
||||
z_index = -1
|
||||
scale = Vector2(5, 5)
|
||||
texture = ExtResource("1_05pvv")
|
||||
|
||||
|
|
|
|||
|
|
@ -126,4 +126,4 @@ func init_random():
|
|||
vine_end_data.append({"location": petal_location, "offset": petal_offset, "depth": 0})
|
||||
|
||||
func random_offset():
|
||||
return 0*Vector2(randf_range(60, 240), randf_range(90, 270))
|
||||
return Vector2(randf_range(60, 240), randf_range(90, 270))
|
||||
|
|
|
|||
|
|
@ -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 angle = (location.x + offset.x / cell_height) * TAU / num_collumns
|
||||
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
|
||||
#func _ready() -> void:
|
||||
#
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue