From e5e54a712761d1777b9476c7bf6f915612fadee2 Mon Sep 17 00:00:00 2001 From: Florian Date: Wed, 17 Sep 2025 23:43:52 +0200 Subject: [PATCH] More room layouts and fixed unique items --- buildings/room_bear_trap.tscn | 66 ++++++++++++++++++ ...ted_house.tscn => room_haunted_house.tscn} | 0 buildings/room_pedastal.tscn | 66 ++++++++++++++++++ buildings/room_pedastal_mean.tscn | 58 ++++++++++++++++ buildings/{building.tscn => room_temple.tscn} | 0 buildings/room_wide_item_above.tscn | 67 +++++++++++++++++++ items/generic/item_spawn.gd | 7 +- items/generic/item_spawn.tscn | 7 +- items/permanent_items/backslash.tscn | 2 +- main.tscn | 2 +- traps/bear_trap.gd | 22 ++++++ traps/bear_trap.gd.uid | 1 + traps/bear_trap.tscn | 32 +++++++++ world/earth.tscn | 12 ++-- 14 files changed, 330 insertions(+), 12 deletions(-) create mode 100644 buildings/room_bear_trap.tscn rename buildings/{haunted_house.tscn => room_haunted_house.tscn} (100%) create mode 100644 buildings/room_pedastal.tscn create mode 100644 buildings/room_pedastal_mean.tscn rename buildings/{building.tscn => room_temple.tscn} (100%) create mode 100644 buildings/room_wide_item_above.tscn create mode 100644 traps/bear_trap.gd create mode 100644 traps/bear_trap.gd.uid create mode 100644 traps/bear_trap.tscn diff --git a/buildings/room_bear_trap.tscn b/buildings/room_bear_trap.tscn new file mode 100644 index 0000000..5ecb49c --- /dev/null +++ b/buildings/room_bear_trap.tscn @@ -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") diff --git a/buildings/haunted_house.tscn b/buildings/room_haunted_house.tscn similarity index 100% rename from buildings/haunted_house.tscn rename to buildings/room_haunted_house.tscn diff --git a/buildings/room_pedastal.tscn b/buildings/room_pedastal.tscn new file mode 100644 index 0000000..70ccdfa --- /dev/null +++ b/buildings/room_pedastal.tscn @@ -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") diff --git a/buildings/room_pedastal_mean.tscn b/buildings/room_pedastal_mean.tscn new file mode 100644 index 0000000..bf61e77 --- /dev/null +++ b/buildings/room_pedastal_mean.tscn @@ -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") diff --git a/buildings/building.tscn b/buildings/room_temple.tscn similarity index 100% rename from buildings/building.tscn rename to buildings/room_temple.tscn diff --git a/buildings/room_wide_item_above.tscn b/buildings/room_wide_item_above.tscn new file mode 100644 index 0000000..d72155d --- /dev/null +++ b/buildings/room_wide_item_above.tscn @@ -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") diff --git a/items/generic/item_spawn.gd b/items/generic/item_spawn.gd index a9d6e88..72c3c76 100644 --- a/items/generic/item_spawn.gd +++ b/items/generic/item_spawn.gd @@ -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()) diff --git a/items/generic/item_spawn.tscn b/items/generic/item_spawn.tscn index db31386..969ae9d 100644 --- a/items/generic/item_spawn.tscn +++ b/items/generic/item_spawn.tscn @@ -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")] diff --git a/items/permanent_items/backslash.tscn b/items/permanent_items/backslash.tscn index 79634f3..ff66420 100644 --- a/items/permanent_items/backslash.tscn +++ b/items/permanent_items/backslash.tscn @@ -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") diff --git a/main.tscn b/main.tscn index 46c7d90..92ba5b6 100644 --- a/main.tscn +++ b/main.tscn @@ -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"] diff --git a/traps/bear_trap.gd b/traps/bear_trap.gd new file mode 100644 index 0000000..ffdc37a --- /dev/null +++ b/traps/bear_trap.gd @@ -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() diff --git a/traps/bear_trap.gd.uid b/traps/bear_trap.gd.uid new file mode 100644 index 0000000..280d623 --- /dev/null +++ b/traps/bear_trap.gd.uid @@ -0,0 +1 @@ +uid://dttgoqksqnsm0 diff --git a/traps/bear_trap.tscn b/traps/bear_trap.tscn new file mode 100644 index 0000000..c48e204 --- /dev/null +++ b/traps/bear_trap.tscn @@ -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"] diff --git a/world/earth.tscn b/world/earth.tscn index b0bc2d3..bb1d385 100644 --- a/world/earth.tscn +++ b/world/earth.tscn @@ -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"