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")]
|
[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)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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")]
|
||||||
|
|
|
||||||
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")
|
@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
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,20 @@ func get_world_position (location: Vector2, offset: Vector2 = Vector2.ZERO) -> V
|
||||||
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:
|
||||||
#
|
#
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue