More room layouts and fixed unique items

This commit is contained in:
Florian 2025-09-17 23:43:52 +02:00
parent 4f35cb88f2
commit e5e54a7127
14 changed files with 330 additions and 12 deletions

View file

@ -0,0 +1,66 @@
[gd_scene load_steps=10 format=3 uid="uid://dliwqqmrxldjh"]
[ext_resource type="Script" uid="uid://b2ji03ekijjnn" path="res://buildings/building.gd" id="1_c7qov"]
[ext_resource type="Shader" uid="uid://c7gb1nqwvkr37" path="res://buildings/building.gdshader" id="2_6a6ii"]
[ext_resource type="Texture2D" uid="uid://dfy0gccqgggp2" path="res://buildings/Building 2x1 fixed.png" id="3_ihg0a"]
[ext_resource type="Script" uid="uid://dj7d4d2xs3nci" path="res://buildings/building_mesh.gd" id="4_505qw"]
[ext_resource type="Texture2D" uid="uid://3weywjfsapax" path="res://buildings/Building 2x1 downside.png" id="5_012sa"]
[ext_resource type="PackedScene" uid="uid://dpv1w56yr1xue" path="res://traps/morning_star.tscn" id="6_qwyfo"]
[ext_resource type="PackedScene" uid="uid://4l3elvxpghw8" path="res://utils/platform.tscn" id="8_evf2t"]
[ext_resource type="PackedScene" uid="uid://h3caql0b6vft" path="res://traps/bear_trap.tscn" id="9_c7qov"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_pfkkr"]
shader = ExtResource("2_6a6ii")
shader_parameter/ground_height = 3000.0
shader_parameter/cell_height = 300.0
shader_parameter/num_cells = 60
[node name="Building2" type="Node2D"]
script = ExtResource("1_c7qov")
[node name="Sprite2D" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_pfkkr")
scale = Vector2(25, 25)
texture = ExtResource("3_ihg0a")
script = ExtResource("4_505qw")
[node name="Sprite2D2" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_pfkkr")
scale = Vector2(25, 25)
texture = ExtResource("5_012sa")
script = ExtResource("4_505qw")
grid_offset = Vector2i(0, -1)
[node name="EnemyList" type="Node2D" parent="."]
[node name="MorningStar" parent="EnemyList" instance=ExtResource("6_qwyfo")]
position = Vector2(238, -149)
[node name="Platform" parent="EnemyList" instance=ExtResource("8_evf2t")]
visible = false
position = Vector2(75, -285)
[node name="Platform2" parent="EnemyList" instance=ExtResource("8_evf2t")]
visible = false
position = Vector2(225, -285)
[node name="Platform3" parent="EnemyList" instance=ExtResource("8_evf2t")]
visible = false
position = Vector2(375, -285)
[node name="Platform4" parent="EnemyList" instance=ExtResource("8_evf2t")]
visible = false
position = Vector2(525, -285)
[node name="Platform5" parent="EnemyList" instance=ExtResource("8_evf2t")]
position = Vector2(431, -150)
scale = Vector2(2.688, 3)
[node name="BearTrap" parent="EnemyList" instance=ExtResource("9_c7qov")]
position = Vector2(270, -9)
[node name="DebugSprite" type="Sprite2D" parent="."]
visible = false
position = Vector2(300, -150)
scale = Vector2(1.172, 1.172)
texture = ExtResource("3_ihg0a")

View file

@ -0,0 +1,66 @@
[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"]
[ext_resource type="Texture2D" uid="uid://djir4ehm8kif" path="res://buildings/Building 1x2 fixed.png" id="3_elmbw"]
[ext_resource type="Script" uid="uid://dj7d4d2xs3nci" path="res://buildings/building_mesh.gd" id="4_1cnhw"]
[ext_resource type="PackedScene" uid="uid://chu67ci7sl488" path="res://enemies/ghost.tscn" id="5_rh5oo"]
[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"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_qnfc1"]
resource_local_to_scene = true
shader = ExtResource("2_wod1l")
shader_parameter/ground_height = 3000.0
shader_parameter/cell_height = 300.0
shader_parameter/num_cells = 60
[node name="Building" type="Node2D"]
script = ExtResource("1_w5m4l")
dimension = Vector2i(1, 2)
[node name="Sprite2D" type="Sprite2D" parent="."]
self_modulate = Color(0.176471, 0, 0.00392157, 0.00392157)
material = SubResource("ShaderMaterial_qnfc1")
scale = Vector2(25, 25)
texture = ExtResource("3_elmbw")
script = ExtResource("4_1cnhw")
[node name="EnemyList" type="Node2D" parent="."]
[node name="Ghost" parent="EnemyList" instance=ExtResource("5_rh5oo")]
position = Vector2(-37.99997, -481)
[node name="Platform" parent="EnemyList" instance=ExtResource("6_caaff")]
visible = false
position = Vector2(75, -585)
[node name="Platform2" parent="EnemyList" instance=ExtResource("6_caaff")]
visible = false
position = Vector2(225, -585)
[node name="Platform3" parent="EnemyList" instance=ExtResource("6_caaff")]
position = Vector2(5, -251.00003)
[node name="Platform4" parent="EnemyList" instance=ExtResource("6_caaff")]
position = Vector2(286, -138.00002)
[node name="Platform5" parent="EnemyList" instance=ExtResource("6_caaff")]
position = Vector2(269.0001, -435)
scale = Vector2(2.49, 3.1)
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("7_elmbw")]
position = Vector2(149, -645)
[node name="MorningStar" parent="EnemyList" instance=ExtResource("8_1cnhw")]
position = Vector2(39, -552)
[node name="Ghost2" parent="EnemyList" instance=ExtResource("5_rh5oo")]
position = Vector2(301, -39)
[node name="DebugSprite" type="Sprite2D" parent="."]
visible = false
position = Vector2(150, -300)
scale = Vector2(1.172, 1.172)
texture = ExtResource("3_elmbw")

View file

@ -0,0 +1,58 @@
[gd_scene load_steps=10 format=3 uid="uid://dt827qxyycg8n"]
[ext_resource type="Script" uid="uid://b2ji03ekijjnn" path="res://buildings/building.gd" id="1_pww4b"]
[ext_resource type="Shader" uid="uid://c7gb1nqwvkr37" path="res://buildings/building.gdshader" id="2_qsju2"]
[ext_resource type="Texture2D" uid="uid://djir4ehm8kif" path="res://buildings/Building 1x2 fixed.png" id="3_0yjll"]
[ext_resource type="Script" uid="uid://dj7d4d2xs3nci" path="res://buildings/building_mesh.gd" id="4_ri5b7"]
[ext_resource type="PackedScene" uid="uid://4l3elvxpghw8" path="res://utils/platform.tscn" id="6_kom4b"]
[ext_resource type="PackedScene" uid="uid://xj0of571aur1" path="res://items/generic/item_spawn.tscn" id="7_sr858"]
[ext_resource type="PackedScene" uid="uid://h3caql0b6vft" path="res://traps/bear_trap.tscn" id="8_pww4b"]
[ext_resource type="PackedScene" uid="uid://dpv1w56yr1xue" path="res://traps/morning_star.tscn" id="8_ta0fd"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_qnfc1"]
resource_local_to_scene = true
shader = ExtResource("2_qsju2")
shader_parameter/ground_height = 3000.0
shader_parameter/cell_height = 300.0
shader_parameter/num_cells = 60
[node name="Building" type="Node2D"]
script = ExtResource("1_pww4b")
dimension = Vector2i(1, 2)
[node name="Sprite2D" type="Sprite2D" parent="."]
self_modulate = Color(0.176471, 0, 0.00392157, 0.00392157)
material = SubResource("ShaderMaterial_qnfc1")
scale = Vector2(25, 25)
texture = ExtResource("3_0yjll")
script = ExtResource("4_ri5b7")
[node name="EnemyList" type="Node2D" parent="."]
[node name="Platform" parent="EnemyList" instance=ExtResource("6_kom4b")]
visible = false
position = Vector2(75, -585)
[node name="Platform2" parent="EnemyList" instance=ExtResource("6_kom4b")]
visible = false
position = Vector2(225, -585)
[node name="Platform5" parent="EnemyList" instance=ExtResource("6_kom4b")]
position = Vector2(85.000015, -287)
scale = Vector2(2.49, 3.1)
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("7_sr858")]
position = Vector2(149, -645)
rarity_bonus = 2
[node name="MorningStar" parent="EnemyList" instance=ExtResource("8_ta0fd")]
position = Vector2(39, -552)
[node name="BearTrap" parent="EnemyList" instance=ExtResource("8_pww4b")]
position = Vector2(165, -7)
[node name="DebugSprite" type="Sprite2D" parent="."]
visible = false
position = Vector2(150, -300)
scale = Vector2(1.172, 1.172)
texture = ExtResource("3_0yjll")

View file

@ -0,0 +1,67 @@
[gd_scene load_steps=11 format=3 uid="uid://c7ddsyd8kcjji"]
[ext_resource type="Script" uid="uid://b2ji03ekijjnn" path="res://buildings/building.gd" id="1_0710n"]
[ext_resource type="Shader" uid="uid://c7gb1nqwvkr37" path="res://buildings/building.gdshader" id="2_7e5ul"]
[ext_resource type="Texture2D" uid="uid://dfy0gccqgggp2" path="res://buildings/Building 2x1 fixed.png" id="3_lxvry"]
[ext_resource type="Script" uid="uid://dj7d4d2xs3nci" path="res://buildings/building_mesh.gd" id="4_h84o2"]
[ext_resource type="Texture2D" uid="uid://3weywjfsapax" path="res://buildings/Building 2x1 downside.png" id="5_v4fh6"]
[ext_resource type="PackedScene" uid="uid://4l3elvxpghw8" path="res://utils/platform.tscn" id="6_me65q"]
[ext_resource type="PackedScene" uid="uid://xj0of571aur1" path="res://items/generic/item_spawn.tscn" id="7_crruu"]
[ext_resource type="PackedScene" uid="uid://h3caql0b6vft" path="res://traps/bear_trap.tscn" id="8_fkxmk"]
[ext_resource type="PackedScene" uid="uid://chu67ci7sl488" path="res://enemies/ghost.tscn" id="9_6hrl3"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_pfkkr"]
shader = ExtResource("2_7e5ul")
shader_parameter/ground_height = 3000.0
shader_parameter/cell_height = 300.0
shader_parameter/num_cells = 60
[node name="Building2" type="Node2D"]
script = ExtResource("1_0710n")
[node name="Sprite2D" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_pfkkr")
scale = Vector2(25, 25)
texture = ExtResource("3_lxvry")
script = ExtResource("4_h84o2")
[node name="Sprite2D2" type="Sprite2D" parent="."]
material = SubResource("ShaderMaterial_pfkkr")
scale = Vector2(25, 25)
texture = ExtResource("5_v4fh6")
script = ExtResource("4_h84o2")
grid_offset = Vector2i(0, -1)
[node name="EnemyList" type="Node2D" parent="."]
[node name="Platform" parent="EnemyList" instance=ExtResource("6_me65q")]
visible = false
position = Vector2(75, -285)
[node name="Platform2" parent="EnemyList" instance=ExtResource("6_me65q")]
visible = false
position = Vector2(225, -285)
[node name="Platform3" parent="EnemyList" instance=ExtResource("6_me65q")]
visible = false
position = Vector2(375, -285)
[node name="Platform4" parent="EnemyList" instance=ExtResource("6_me65q")]
visible = false
position = Vector2(525, -285)
[node name="ItemSpawn" parent="EnemyList" instance=ExtResource("7_crruu")]
position = Vector2(137, -329)
rarity_bonus = 1
[node name="BearTrap" parent="EnemyList" instance=ExtResource("8_fkxmk")]
position = Vector2(465, -301)
[node name="Ghost" parent="EnemyList" instance=ExtResource("9_6hrl3")]
position = Vector2(301, -49)
[node name="DebugSprite" type="Sprite2D" parent="."]
visible = false
position = Vector2(300, -150)
scale = Vector2(1.172, 1.172)
texture = ExtResource("3_lxvry")

View file

@ -2,7 +2,9 @@ class_name ItemSpawn extends Node2D
@export var common_items : Array[PackedScene]
@export var rare_items : Array[PackedScene]
@export var unique_items : Array[PackedScene]
static var unique_items : Array[PackedScene] = [
load("res://items/permanent_items/backslash.tscn")
]
@export var rarity_bonus = 0
@export var guarantee_rare : bool = false
@ -24,7 +26,6 @@ func choose_pool() -> Array[PackedScene]:
return unique_items
elif random < unique_chance + rare_chance || guarantee_rare:
return rare_items
return common_items
func _ready():
@ -32,7 +33,7 @@ func _ready():
var index = randi_range(0, pool.size() - 1)
var packed_scene : PackedScene = pool[index]
if remove_after_spawn:
pool.remove_at(index)
unique_items.remove_at(index)
var object = packed_scene.instantiate()
add_child.call_deferred(object)
object.reparent.call_deferred(get_parent())

View file

@ -9,9 +9,10 @@
[node name="ItemSpawn" type="Node2D"]
script = ExtResource("1_ms6tn")
common_items = Array[PackedScene]([ExtResource("2_w6i8k"), ExtResource("3_yi7ag"), ExtResource("5_uitgx"), ExtResource("4_v0ua0")])
rare_items = Array[PackedScene]([ExtResource("4_v0ua0")])
unique_items = Array[PackedScene]([ExtResource("5_uitgx")])
common_items = Array[PackedScene]([ExtResource("2_w6i8k")])
rare_items = Array[PackedScene]([ExtResource("4_v0ua0"), ExtResource("5_uitgx"), ExtResource("3_yi7ag")])
unique_base_chance = 0.1
rare_base_chance = 0.3
metadata/_custom_type_script = "uid://b8em61mqgdi58"
[node name="EarthAligner" parent="." instance=ExtResource("3_5pwuf")]

View file

@ -19,5 +19,5 @@ scale = Vector2(7, 7)
shape = SubResource("CircleShape2D_hvhjo")
[node name="Sprite2D" type="Sprite2D" parent="."]
modulate = Color(1, 1, 0, 1)
modulate = Color(0.6862745, 0.16078432, 0.5294118, 1)
texture = ExtResource("3_vb0oa")

View file

@ -15,7 +15,7 @@ unique_name_in_owner = true
[node name="Player" parent="." instance=ExtResource("2_1bvp3")]
unique_name_in_owner = true
position = Vector2(500, -3100)
position = Vector2(709, -2980)
scale = Vector2(3, 3)
[node name="Camera2D" type="Camera2D" parent="Player"]

22
traps/bear_trap.gd Normal file
View file

@ -0,0 +1,22 @@
extends Node2D
@export var player_damage : int;
@export var enemy_damage : int;
func damage_target(target: CollisionObject2D):
if(target.get_collision_layer_value(3)):
target.hurt(player_damage, Vector2.ZERO)
else:
target.hurt(enemy_damage, Vector2.ZERO)
func _on_area_2d_area_entered(area: Area2D) -> void:
damage_target(area)
queue_free()
func _on_area_2d_body_entered(body: Node2D) -> void:
damage_target(body)
queue_free()

1
traps/bear_trap.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://dttgoqksqnsm0

32
traps/bear_trap.tscn Normal file
View file

@ -0,0 +1,32 @@
[gd_scene load_steps=5 format=3 uid="uid://h3caql0b6vft"]
[ext_resource type="Script" uid="uid://dttgoqksqnsm0" path="res://traps/bear_trap.gd" id="1_u48ys"]
[ext_resource type="Texture2D" uid="uid://cy70quh6k3s1j" path="res://icon.svg" id="2_mnxjq"]
[ext_resource type="PackedScene" uid="uid://chs0u61f45nau" path="res://utils/earth_aligner.tscn" id="3_mnxjq"]
[sub_resource type="CircleShape2D" id="CircleShape2D_yh007"]
radius = 30.0
[node name="BearTrap" type="Node2D"]
script = ExtResource("1_u48ys")
player_damage = 2
enemy_damage = 50
[node name="Area2D" type="Area2D" parent="."]
collision_layer = 0
collision_mask = 6
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
position = Vector2(0, -15)
scale = Vector2(1, 0.5)
shape = SubResource("CircleShape2D_yh007")
[node name="Sprite2D" type="Sprite2D" parent="."]
self_modulate = Color(1, 0, 0, 1)
scale = Vector2(0.75, 0.1)
texture = ExtResource("2_mnxjq")
[node name="EarthAligner" parent="." instance=ExtResource("3_mnxjq")]
[connection signal="area_entered" from="Area2D" to="." method="_on_area_2d_area_entered"]
[connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"]

View file

@ -1,10 +1,14 @@
[gd_scene load_steps=7 format=3 uid="uid://jjoyj1ldafkf"]
[gd_scene load_steps=11 format=3 uid="uid://jjoyj1ldafkf"]
[ext_resource type="Script" uid="uid://vgxh2xdevat7" path="res://world/earth.gd" id="1_wxnww"]
[ext_resource type="Script" uid="uid://b5fhsy1xlreco" path="res://world/draw_circle.gd" id="2_2bhor"]
[ext_resource type="Script" uid="uid://m3vyyfk8gnma" path="res://world/grid.gd" id="3_2bhor"]
[ext_resource type="PackedScene" uid="uid://djawvtdwp423v" path="res://buildings/building.tscn" id="3_nihcy"]
[ext_resource type="PackedScene" uid="uid://cmofmd0vf3hx3" path="res://buildings/haunted_house.tscn" id="4_ml5no"]
[ext_resource type="PackedScene" uid="uid://djawvtdwp423v" path="res://buildings/room_temple.tscn" id="3_nihcy"]
[ext_resource type="PackedScene" uid="uid://cmofmd0vf3hx3" path="res://buildings/room_haunted_house.tscn" id="4_ml5no"]
[ext_resource type="PackedScene" uid="uid://dliwqqmrxldjh" path="res://buildings/room_bear_trap.tscn" id="4_r4pw8"]
[ext_resource type="PackedScene" uid="uid://6y637jp2tbma" path="res://buildings/room_pedastal.tscn" id="6_640fc"]
[ext_resource type="PackedScene" uid="uid://dt827qxyycg8n" path="res://buildings/room_pedastal_mean.tscn" id="7_abvrx"]
[ext_resource type="PackedScene" uid="uid://c7ddsyd8kcjji" path="res://buildings/room_wide_item_above.tscn" id="9_ej0af"]
[sub_resource type="CircleShape2D" id="CircleShape2D_5i67w"]
radius = 3000.0
@ -27,5 +31,5 @@ script = ExtResource("3_2bhor")
ground_radius = 3000.0
cell_height = 300.0
num_collumns = 60
packed_buildings = Array[PackedScene]([ExtResource("3_nihcy"), ExtResource("4_ml5no")])
packed_buildings = Array[PackedScene]([ExtResource("4_r4pw8"), ExtResource("4_ml5no"), ExtResource("6_640fc"), ExtResource("7_abvrx"), ExtResource("3_nihcy"), ExtResource("9_ej0af")])
metadata/_custom_type_script = "uid://m3vyyfk8gnma"