most areas connected

This commit is contained in:
Bryce
2026-02-21 15:36:42 -08:00
parent d6b36d1f13
commit 0474ded71a
58 changed files with 1225 additions and 59 deletions

View File

@@ -19,6 +19,8 @@ Use this skill when you need to verify that room transitions are properly wired
### Step 1: Run the Skill ### Step 1: Run the Skill
When you invoke this skill, specify the room number (e.g., "9", "009", or "kq4_009_shady_wooded_area"). When you invoke this skill, specify the room number (e.g., "9", "009", or "kq4_009_shady_wooded_area").
Begin by running python ./scripts/check_transitions.py, which will show each room's transitions
The skill will: The skill will:
1. Load the specified room's .tscn file 1. Load the specified room's .tscn file
@@ -28,8 +30,10 @@ The skill will:
- The `appear_at_node` value matches a node in the target scene - The `appear_at_node` value matches a node in the target scene
- The node name follows the naming convention - The node name follows the naming convention
- A return transition exists in the destination room - A return transition exists in the destination room
- The room actually goes to the correct room specified in the room's spec (./kq4-sierra-decompile/rooms/)
### Step 2: Review Results ### Step 2: Review Results
The skill outputs: The skill outputs:
- **Valid transitions**: Confirmed working connections - **Valid transitions**: Confirmed working connections
- **Invalid transitions**: Issues found with target UIDs or appear_at_node names - **Invalid transitions**: Issues found with target UIDs or appear_at_node names

View File

@@ -14,4 +14,4 @@ func _on_meadow_interacted() -> void:
func _on_open_ocean_interacted() -> void: func _on_open_ocean_interacted() -> void:
$west_exit.default_script(self) $kq4_031_open_ocean.default_script(self)

View File

@@ -15,3 +15,7 @@ func _on_shady_wooded_area_interacted() -> void:
func _on_forest_path_interacted() -> void: func _on_forest_path_interacted() -> void:
$kq4_010_forest_path.default_script(self) $kq4_010_forest_path.default_script(self)
func _on_forest_path_27_interacted() -> void:
$kq4_027_forest_path.default_script(self)

View File

@@ -1,4 +1,4 @@
[gd_scene format=3 uid="uid://151dbn9bybiwx"] [gd_scene format=3 uid="uid://dyk4rcqsk3aed"]
[ext_resource type="Script" uid="uid://2mmn5y4b67lg" path="res://scenes/kq4_003_fountain_pool/kq4_003_fountain_pool.gd" id="1_heq0u"] [ext_resource type="Script" uid="uid://2mmn5y4b67lg" path="res://scenes/kq4_003_fountain_pool/kq4_003_fountain_pool.gd" id="1_heq0u"]
[ext_resource type="Texture2D" uid="uid://0ak807tg6jso" path="res://scenes/kq4_003_fountain_pool/ComfyUI_10001_.png" id="2_heq0u"] [ext_resource type="Texture2D" uid="uid://0ak807tg6jso" path="res://scenes/kq4_003_fountain_pool/ComfyUI_10001_.png" id="2_heq0u"]
@@ -11,34 +11,34 @@ vertices = PackedVector2Array(2047.41, 716.57, 2016.32, 718.031, 2012.05, 588.46
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(4, 5, 6, 7), PackedInt32Array(8, 9, 10, 11, 12), PackedInt32Array(13, 14, 12), PackedInt32Array(14, 13, 15), PackedInt32Array(16, 14, 15, 17), PackedInt32Array(11, 13, 12), PackedInt32Array(18, 19, 20, 21), PackedInt32Array(22, 23, 18, 24, 25), PackedInt32Array(26, 27, 28, 29), PackedInt32Array(30, 31, 32, 33), PackedInt32Array(16, 17, 10, 9, 24, 34), PackedInt32Array(21, 34, 24), PackedInt32Array(18, 21, 24), PackedInt32Array(35, 22, 25), PackedInt32Array(28, 35, 25), PackedInt32Array(28, 25, 29), PackedInt32Array(26, 29, 36), PackedInt32Array(12, 26, 36, 30, 33), PackedInt32Array(12, 33, 8)]) polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(4, 5, 6, 7), PackedInt32Array(8, 9, 10, 11, 12), PackedInt32Array(13, 14, 12), PackedInt32Array(14, 13, 15), PackedInt32Array(16, 14, 15, 17), PackedInt32Array(11, 13, 12), PackedInt32Array(18, 19, 20, 21), PackedInt32Array(22, 23, 18, 24, 25), PackedInt32Array(26, 27, 28, 29), PackedInt32Array(30, 31, 32, 33), PackedInt32Array(16, 17, 10, 9, 24, 34), PackedInt32Array(21, 34, 24), PackedInt32Array(18, 21, 24), PackedInt32Array(35, 22, 25), PackedInt32Array(28, 35, 25), PackedInt32Array(28, 25, 29), PackedInt32Array(26, 29, 36), PackedInt32Array(12, 26, 36, 30, 33), PackedInt32Array(12, 33, 8)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-13, 516, 1548, 556, 2000, 526, 2021, 1163, -39, 1107), PackedVector2Array(577, 565, 247, 917, 324, 994, 515, 989, 538, 927, 1260, 927, 1359, 996, 1543, 964, 1588, 893, 1318, 576), PackedVector2Array(-43, 689, 354, 679, 358, 571, -36, 544), PackedVector2Array(1526, 653, 1655, 745, 2060, 726, 2024, 578, 1531, 597), PackedVector2Array(1702, 805, 1678, 872, 1848, 902, 1927, 861, 1906, 779)]) outlines = Array[PackedVector2Array]([PackedVector2Array(-13, 516, 1548, 556, 2000, 526, 2021, 1163, -39, 1107), PackedVector2Array(577, 565, 247, 917, 324, 994, 515, 989, 538, 927, 1260, 927, 1359, 996, 1543, 964, 1588, 893, 1318, 576), PackedVector2Array(-43, 689, 354, 679, 358, 571, -36, 544), PackedVector2Array(1526, 653, 1655, 745, 2060, 726, 2024, 578, 1531, 597), PackedVector2Array(1702, 805, 1678, 872, 1848, 902, 1927, 861, 1906, 779)])
[node name="background" type="Node2D"] [node name="background" type="Node2D" unique_id=47039231]
y_sort_enabled = true y_sort_enabled = true
script = ExtResource("1_heq0u") script = ExtResource("1_heq0u")
[node name="bg" type="Sprite2D" parent="."] [node name="bg" type="Sprite2D" parent="." unique_id=56586945]
scale = Vector2(0.470459, 0.467949) scale = Vector2(0.470459, 0.467949)
texture = ExtResource("2_heq0u") texture = ExtResource("2_heq0u")
centered = false centered = false
[node name="StartScalePoint" type="Node2D" parent="."] [node name="StartScalePoint" type="Node2D" parent="." unique_id=248986742]
position = Vector2(1476, 742) position = Vector2(1476, 742)
script = ExtResource("3_1g2ot") script = ExtResource("3_1g2ot")
target_scale = 0.25 target_scale = 0.25
[node name="EndScalePoint" type="Node2D" parent="."] [node name="EndScalePoint" type="Node2D" parent="." unique_id=141160145]
position = Vector2(1408, 1097) position = Vector2(1408, 1097)
scale = Vector2(0.44, 0.44) scale = Vector2(0.44, 0.44)
script = ExtResource("3_1g2ot") script = ExtResource("3_1g2ot")
target_scale = 0.35 target_scale = 0.35
[node name="pathfind" type="NavigationRegion2D" parent="."] [node name="pathfind" type="NavigationRegion2D" parent="." unique_id=1039746920]
position = Vector2(-1, 0) position = Vector2(-1, 0)
navigation_polygon = SubResource("NavigationPolygon_heq0u") navigation_polygon = SubResource("NavigationPolygon_heq0u")
[node name="default-starting-point" type="Node2D" parent="."] [node name="default-starting-point" type="Node2D" parent="." unique_id=1811687548]
position = Vector2(194, 819) position = Vector2(194, 819)
[node name="kq4_002_meadow" parent="." instance=ExtResource("4_6r684")] [node name="kq4_002_meadow" parent="." unique_id=1924834520 instance=ExtResource("4_6r684")]
position = Vector2(-150, 100) position = Vector2(-150, 100)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381) polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_003_fountain_pool" appear_at_node = "kq4_003_fountain_pool"
@@ -51,20 +51,7 @@ position = Vector2(350, 500)
[node name="exit" parent="kq4_002_meadow" index="1"] [node name="exit" parent="kq4_002_meadow" index="1"]
position = Vector2(100, 480) position = Vector2(100, 480)
[node name="kq4_010_forest_path" parent="." instance=ExtResource("4_6r684")] [node name="kq4_004_ogres_cottage" parent="." unique_id=670184730 instance=ExtResource("4_6r684")]
position = Vector2(910, -213)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_003_fountain_pool"
target = "uid://3ujj97iw54vo5"
label = "Forest Path"
[node name="entrance" parent="kq4_010_forest_path" index="0"]
position = Vector2(133, 643)
[node name="exit" parent="kq4_010_forest_path" index="1"]
position = Vector2(174, 519)
[node name="kq4_004_ogres_cottage" parent="." instance=ExtResource("4_6r684")]
position = Vector2(1912, 756) position = Vector2(1912, 756)
color = Color(1, 1, 1, 1) color = Color(1, 1, 1, 1)
polygon = PackedVector2Array(-235, -142, -147, 252, 155, 148, 102, -85) polygon = PackedVector2Array(-235, -142, -147, 252, 155, 148, 102, -85)
@@ -78,7 +65,7 @@ position = Vector2(-79, 65)
[node name="exit" parent="kq4_004_ogres_cottage" index="1"] [node name="exit" parent="kq4_004_ogres_cottage" index="1"]
position = Vector2(66, 71) position = Vector2(66, 71)
[node name="kq4_009_shady_wooded_area" parent="." instance=ExtResource("4_6r684")] [node name="kq4_009_shady_wooded_area" parent="." unique_id=1832225568 instance=ExtResource("4_6r684")]
position = Vector2(910, 542) position = Vector2(910, 542)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381) polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_003_fountain_pool" appear_at_node = "kq4_003_fountain_pool"
@@ -91,16 +78,30 @@ position = Vector2(118, 514)
[node name="exit" parent="kq4_009_shady_wooded_area" index="1"] [node name="exit" parent="kq4_009_shady_wooded_area" index="1"]
position = Vector2(151, 615) position = Vector2(151, 615)
[node name="Fg" type="Sprite2D" parent="."] [node name="kq4_027_forest_path" parent="." unique_id=1810021557 instance=ExtResource("4_6r684")]
position = Vector2(500, 100)
polygon = PackedVector2Array(122, 279, -87, 649, 688, 583, 650, 277)
appear_at_node = "kq4_003_fountain_pool"
target = "uid://1fpyosj18xls7"
label = "Forest Path"
[node name="entrance" parent="kq4_027_forest_path" index="0"]
position = Vector2(207, 489)
[node name="exit" parent="kq4_027_forest_path" index="1"]
position = Vector2(396, 438)
[node name="Fg" type="Sprite2D" parent="." unique_id=1431047880]
scale = Vector2(1.163, 1.179) scale = Vector2(1.163, 1.179)
texture = ExtResource("5_cu368") texture = ExtResource("5_cu368")
centered = false centered = false
[connection signal="interacted" from="kq4_002_meadow" to="." method="_on_meadow_interacted"] [connection signal="interacted" from="kq4_002_meadow" to="." method="_on_meadow_interacted"]
[connection signal="interacted" from="kq4_010_forest_path" to="." method="_on_forest_path_interacted"]
[connection signal="interacted" from="kq4_004_ogres_cottage" to="." method="_on_ogre_house_interacted"] [connection signal="interacted" from="kq4_004_ogres_cottage" to="." method="_on_ogre_house_interacted"]
[connection signal="interacted" from="kq4_009_shady_wooded_area" to="." method="_on_shady_wooded_area_interacted"] [connection signal="interacted" from="kq4_009_shady_wooded_area" to="." method="_on_shady_wooded_area_interacted"]
[connection signal="interacted" from="kq4_027_forest_path" to="." method="_on_forest_path_27_interacted"]
[editable path="kq4_002_meadow"] [editable path="kq4_002_meadow"]
[editable path="kq4_004_ogres_cottage"] [editable path="kq4_004_ogres_cottage"]
[editable path="kq4_009_shady_wooded_area"] [editable path="kq4_009_shady_wooded_area"]
[editable path="kq4_027_forest_path"]

View File

@@ -11,3 +11,7 @@ func _on_pool_interacted() -> void:
func _on_forest_path_interacted() -> void: func _on_forest_path_interacted() -> void:
$kq4_010_forest_path.default_script(self) $kq4_010_forest_path.default_script(self)
func _on_forest_grove_interacted() -> void:
$kq4_005_forest_grove.default_script(self)

View File

@@ -82,8 +82,24 @@ position = Vector2(118, 514)
[node name="exit" parent="kq4_010_forest_path" index="1"] [node name="exit" parent="kq4_010_forest_path" index="1"]
position = Vector2(151, 615) position = Vector2(151, 615)
[node name="kq4_005_forest_grove" parent="." instance=ExtResource("4_67nph")]
position = Vector2(1766, 74)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_004_ogres_cottage"
target = "uid://1c470jsfmdhxx"
label = "Forest Grove"
[node name="entrance" parent="kq4_005_forest_grove" index="0"]
position = Vector2(24, 565)
[node name="exit" parent="kq4_005_forest_grove" index="1"]
position = Vector2(293, 554)
[connection signal="interacted" from="kq4_010_forest_path" to="." method="_on_forest_path_interacted"] [connection signal="interacted" from="kq4_010_forest_path" to="." method="_on_forest_path_interacted"]
[connection signal="interacted" from="kq4_005_forest_grove" to="." method="_on_forest_grove_interacted"]
[editable path="kq4_028_mine_entrance"] [editable path="kq4_028_mine_entrance"]
[editable path="kq4_003_fountain_pool"] [editable path="kq4_003_fountain_pool"]
[editable path="kq4_010_forest_path"] [editable path="kq4_010_forest_path"]
[editable path="kq4_005_forest_grove"]

View File

@@ -0,0 +1,17 @@
extends Scene
func _on_dense_forest_interacted() -> void:
$kq4_029_dense_forest.default_script(self)
func _on_enchanted_grove_interacted() -> void:
$kq4_011_enchanted_grove.default_script(self)
func _on_cave_entrance_interacted() -> void:
$kq4_006_cave_entrance.default_script(self)
func _on_ogres_cottage_interacted() -> void:
$kq4_004_ogres_cottage.default_script(self)

View File

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

View File

@@ -0,0 +1,98 @@
[gd_scene format=3 uid="uid://1c470jsfmdhxx"]
[ext_resource type="Script" path="res://scenes/kq4_005_forest_grove/kq4_005_forest_grove.gd" id="1_abc"]
[ext_resource type="Texture2D" path="res://scenes/kq4_005_forest_grove/pic_005_visual.png" id="2_abc"]
[ext_resource type="Script" uid="uid://xmphq3i0wbg3" path="res://ScalePoint_.gd" id="3_abc"]
[ext_resource type="PackedScene" uid="uid://c4vc1wx7k6cw" path="res://TransitionPiece.tscn" id="4_abc"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ppo6b"]
vertices = PackedVector2Array(374.47656, 1145.0078, -140.75781, 1180.2031, -76.11719, 588.6797, -53.679688, 490.4922, 1222.4688, 227.3125, 1994.2422, 468.4297, 2012.7031, 1020.2031, 1268.1875, 1113.0234)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(3, 4, 5, 6, 7, 0)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-62, 482, 1223, 217, 2004, 461, 2023, 1029, 1269, 1123, 375, 1155, -152, 1191, -86, 587)])
[node name="background" type="Node2D" unique_id=657573819]
y_sort_enabled = true
script = ExtResource("1_abc")
[node name="bg" type="Sprite2D" parent="." unique_id=874052749]
scale = Vector2(6, 6)
texture = ExtResource("2_abc")
centered = false
[node name="StartScalePoint" type="Node2D" parent="." unique_id=1640687858]
position = Vector2(1476, 742)
script = ExtResource("3_abc")
target_scale = 0.25
[node name="EndScalePoint" type="Node2D" parent="." unique_id=1996763530]
position = Vector2(1408, 1097)
scale = Vector2(0.44, 0.44)
script = ExtResource("3_abc")
target_scale = 0.35
[node name="pathfind" type="NavigationRegion2D" parent="." unique_id=1418661203]
position = Vector2(-1, 0)
navigation_polygon = SubResource("NavigationPolygon_ppo6b")
[node name="default-starting-point" type="Node2D" parent="." unique_id=1018141532]
position = Vector2(194, 819)
[node name="kq4_029_dense_forest" parent="." unique_id=484638394 instance=ExtResource("4_abc")]
position = Vector2(910, -213)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_005_forest_grove"
target = "uid://1sfzaldfq5kn1"
label = "Dense Forest"
[node name="entrance" parent="kq4_029_dense_forest" index="0"]
position = Vector2(133, 643)
[node name="exit" parent="kq4_029_dense_forest" index="1"]
position = Vector2(174, 519)
[node name="kq4_006_cave_entrance" parent="." unique_id=1916756563 instance=ExtResource("4_abc")]
position = Vector2(1766, 74)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_005_forest_grove"
label = "Cave Entrance"
[node name="entrance" parent="kq4_006_cave_entrance" index="0"]
position = Vector2(24, 565)
[node name="exit" parent="kq4_006_cave_entrance" index="1"]
position = Vector2(293, 554)
[node name="kq4_011_enchanted_grove" parent="." unique_id=990092106 instance=ExtResource("4_abc")]
position = Vector2(910, 542)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_005_forest_grove"
target = "uid://ujxktwdn8l8r"
label = "Enchanted Grove"
[node name="entrance" parent="kq4_011_enchanted_grove" index="0"]
position = Vector2(118, 514)
[node name="exit" parent="kq4_011_enchanted_grove" index="1"]
position = Vector2(151, 615)
[node name="kq4_004_ogres_cottage" parent="." unique_id=1117747814 instance=ExtResource("4_abc")]
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_005_forest_grove"
target = "uid://1nxmm3b1kcdm1"
label = "Ogre's Cottage"
[node name="entrance" parent="kq4_004_ogres_cottage" index="0"]
position = Vector2(506, 555)
[node name="exit" parent="kq4_004_ogres_cottage" index="1"]
position = Vector2(-64, 534)
[connection signal="interacted" from="kq4_029_dense_forest" to="." method="_on_dense_forest_interacted"]
[connection signal="interacted" from="kq4_006_cave_entrance" to="." method="_on_cave_entrance_interacted"]
[connection signal="interacted" from="kq4_011_enchanted_grove" to="." method="_on_enchanted_grove_interacted"]
[connection signal="interacted" from="kq4_004_ogres_cottage" to="." method="_on_ogres_cottage_interacted"]
[editable path="kq4_029_dense_forest"]
[editable path="kq4_006_cave_entrance"]
[editable path="kq4_011_enchanted_grove"]
[editable path="kq4_004_ogres_cottage"]

View File

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

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c55n7trnggl6x"
path="res://.godot/imported/pic_005_visual.png-762fdaa5ad557ec4e32f759d84933f2e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://scenes/kq4_005_forest_grove/pic_005_visual.png"
dest_files=["res://.godot/imported/pic_005_visual.png-762fdaa5ad557ec4e32f759d84933f2e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -41,6 +41,7 @@ position = Vector2(194, 819)
position = Vector2(910, -213) position = Vector2(910, -213)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381) polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_011_enchanted_grove" appear_at_node = "kq4_011_enchanted_grove"
target = "uid://1c470jsfmdhxx"
label = "Forest Grove" label = "Forest Grove"
[node name="entrance" parent="kq4_005_forest_grove" index="0"] [node name="entrance" parent="kq4_005_forest_grove" index="0"]
@@ -65,6 +66,7 @@ position = Vector2(293, 554)
position = Vector2(910, 542) position = Vector2(910, 542)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381) polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_011_enchanted_grove" appear_at_node = "kq4_011_enchanted_grove"
target = "uid://1kz9yo5f1tpc6"
label = "Spooky House Exterior" label = "Spooky House Exterior"
[node name="entrance" parent="kq4_017_spooky_house_exterior" index="0"] [node name="entrance" parent="kq4_017_spooky_house_exterior" index="0"]

View File

@@ -14,4 +14,4 @@ func _on_green_meadow_interacted() -> void:
func _on_open_ocean_interacted() -> void: func _on_open_ocean_interacted() -> void:
$west_exit.default_script(self) $kq4_031_open_ocean.default_script(self)

View File

@@ -11,3 +11,7 @@ func _on_forest_path_interacted() -> void:
func _on_gnomes_cottage_interacted() -> void: func _on_gnomes_cottage_interacted() -> void:
$kq4_022_gnomes_cottage.default_script(self) $kq4_022_gnomes_cottage.default_script(self)
func _on_spooky_house_exterior_interacted() -> void:
$kq4_017_spooky_house_exterior.default_script(self)

View File

@@ -76,11 +76,26 @@ position = Vector2(133, 643)
[node name="exit" parent="kq4_022_gnomes_cottage" index="1"] [node name="exit" parent="kq4_022_gnomes_cottage" index="1"]
position = Vector2(174, 519) position = Vector2(174, 519)
[node name="kq4_017_spooky_house_exterior" parent="." unique_id=1117747815 instance=ExtResource("4_abc")]
position = Vector2(1766, 74)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_016_graveyard"
target = "uid://1kz9yo5f1tpc6"
label = "Spooky House Exterior"
[node name="entrance" parent="kq4_017_spooky_house_exterior" index="0"]
position = Vector2(24, 565)
[node name="exit" parent="kq4_017_spooky_house_exterior" index="1"]
position = Vector2(293, 554)
[connection signal="interacted" from="kq4_015_frog_pond" to="." method="_on_frog_pond_interacted"] [connection signal="interacted" from="kq4_015_frog_pond" to="." method="_on_frog_pond_interacted"]
[connection signal="interacted" from="kq4_010_forest_path" to="." method="_on_forest_path_interacted"] [connection signal="interacted" from="kq4_010_forest_path" to="." method="_on_forest_path_interacted"]
[connection signal="interacted" from="kq4_022_gnomes_cottage" to="." method="_on_gnomes_cottage_interacted"] [connection signal="interacted" from="kq4_022_gnomes_cottage" to="." method="_on_gnomes_cottage_interacted"]
[connection signal="interacted" from="kq4_017_spooky_house_exterior" to="." method="_on_spooky_house_exterior_interacted"]
[editable path="kq4_015_frog_pond"] [editable path="kq4_015_frog_pond"]
[editable path="kq4_010_forest_path"] [editable path="kq4_010_forest_path"]
[editable path="kq4_022_gnomes_cottage"] [editable path="kq4_022_gnomes_cottage"]
[editable path="kq4_017_spooky_house_exterior"]

View File

@@ -0,0 +1,17 @@
extends Scene
func _on_enchanted_grove_interacted() -> void:
$kq4_011_enchanted_grove.default_script(self)
func _on_graveyard_interacted() -> void:
$kq4_016_graveyard.default_script(self)
func _on_forest_path_with_cottage_interacted() -> void:
$kq4_023_forest_path_with_cottage.default_script(self)
func _on_cemetery_interacted() -> void:
$kq4_018_cemetery.default_script(self)

View File

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

View File

@@ -0,0 +1,99 @@
[gd_scene format=3 uid="uid://1kz9yo5f1tpc6"]
[ext_resource type="Script" path="res://scenes/kq4_017_spooky_house_exterior/kq4_017_spooky_house_exterior.gd" id="1_abc"]
[ext_resource type="Texture2D" path="res://scenes/kq4_017_spooky_house_exterior/pic_017_visual.png" id="2_abc"]
[ext_resource type="Script" uid="uid://xmphq3i0wbg3" path="res://ScalePoint_.gd" id="3_abc"]
[ext_resource type="PackedScene" uid="uid://c4vc1wx7k6cw" path="res://TransitionPiece.tscn" id="4_abc"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ppo6b"]
vertices = PackedVector2Array(374.47656, 1145.0078, -140.75781, 1180.2031, -76.11719, 588.6797, -53.679688, 490.4922, 1222.4688, 227.3125, 1994.2422, 468.4297, 2012.7031, 1020.2031, 1268.1875, 1113.0234)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(3, 4, 5, 6, 7, 0)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-62, 482, 1223, 217, 2004, 461, 2023, 1029, 1269, 1123, 375, 1155, -152, 1191, -86, 587)])
[node name="background" type="Node2D" unique_id=657573819]
y_sort_enabled = true
script = ExtResource("1_abc")
[node name="bg" type="Sprite2D" parent="." unique_id=874052749]
scale = Vector2(6, 6)
texture = ExtResource("2_abc")
centered = false
[node name="StartScalePoint" type="Node2D" parent="." unique_id=1640687858]
position = Vector2(1476, 742)
script = ExtResource("3_abc")
target_scale = 0.25
[node name="EndScalePoint" type="Node2D" parent="." unique_id=1996763530]
position = Vector2(1408, 1097)
scale = Vector2(0.44, 0.44)
script = ExtResource("3_abc")
target_scale = 0.35
[node name="pathfind" type="NavigationRegion2D" parent="." unique_id=1418661203]
position = Vector2(-1, 0)
navigation_polygon = SubResource("NavigationPolygon_ppo6b")
[node name="default-starting-point" type="Node2D" parent="." unique_id=1018141532]
position = Vector2(194, 819)
[node name="kq4_011_enchanted_grove" parent="." unique_id=484638394 instance=ExtResource("4_abc")]
position = Vector2(910, -213)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_017_spooky_house_exterior"
target = "uid://ujxktwdn8l8r"
label = "Enchanted Grove"
[node name="entrance" parent="kq4_011_enchanted_grove" index="0"]
position = Vector2(133, 643)
[node name="exit" parent="kq4_011_enchanted_grove" index="1"]
position = Vector2(174, 519)
[node name="kq4_018_cemetery" parent="." unique_id=1916756563 instance=ExtResource("4_abc")]
position = Vector2(1766, 74)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_017_spooky_house_exterior"
target = "uid://35amqvpjgpf2x"
label = "Cemetery"
[node name="entrance" parent="kq4_018_cemetery" index="0"]
position = Vector2(24, 565)
[node name="exit" parent="kq4_018_cemetery" index="1"]
position = Vector2(293, 554)
[node name="kq4_023_forest_path_with_cottage" parent="." unique_id=990092106 instance=ExtResource("4_abc")]
position = Vector2(910, 542)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_017_spooky_house_exterior"
target = "uid://1mhkt47y9jjhc"
label = "Forest Path with Cottage"
[node name="entrance" parent="kq4_023_forest_path_with_cottage" index="0"]
position = Vector2(118, 514)
[node name="exit" parent="kq4_023_forest_path_with_cottage" index="1"]
position = Vector2(151, 615)
[node name="kq4_016_graveyard" parent="." unique_id=1117747814 instance=ExtResource("4_abc")]
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_017_spooky_house_exterior"
target = "uid://27b2k6gky3afg"
label = "Graveyard"
[node name="entrance" parent="kq4_016_graveyard" index="0"]
position = Vector2(506, 555)
[node name="exit" parent="kq4_016_graveyard" index="1"]
position = Vector2(-64, 534)
[connection signal="interacted" from="kq4_011_enchanted_grove" to="." method="_on_enchanted_grove_interacted"]
[connection signal="interacted" from="kq4_018_cemetery" to="." method="_on_cemetery_interacted"]
[connection signal="interacted" from="kq4_023_forest_path_with_cottage" to="." method="_on_forest_path_with_cottage_interacted"]
[connection signal="interacted" from="kq4_016_graveyard" to="." method="_on_graveyard_interacted"]
[editable path="kq4_011_enchanted_grove"]
[editable path="kq4_018_cemetery"]
[editable path="kq4_023_forest_path_with_cottage"]
[editable path="kq4_016_graveyard"]

View File

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

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b57yy6cc775at"
path="res://.godot/imported/pic_017_visual.png-22741fcad584e3c60d2e4bebf00c162a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://scenes/kq4_017_spooky_house_exterior/pic_017_visual.png"
dest_files=["res://.godot/imported/pic_017_visual.png-22741fcad584e3c60d2e4bebf00c162a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,13 @@
extends Scene
func _on_haunted_forest_interacted() -> void:
$kq4_012_haunted_forest.default_script(self)
func _on_waterfall_and_pool_interacted() -> void:
$kq4_024_waterfall_and_pool.default_script(self)
func _on_spooky_house_exterior_interacted() -> void:
$kq4_017_spooky_house_exterior.default_script(self)

View File

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

View File

@@ -0,0 +1,83 @@
[gd_scene format=3 uid="uid://35amqvpjgpf2x"]
[ext_resource type="Script" path="res://scenes/kq4_018_cemetery/kq4_018_cemetery.gd" id="1_abc"]
[ext_resource type="Texture2D" path="res://scenes/kq4_018_cemetery/pic_018_visual.png" id="2_abc"]
[ext_resource type="Script" uid="uid://xmphq3i0wbg3" path="res://ScalePoint_.gd" id="3_abc"]
[ext_resource type="PackedScene" uid="uid://c4vc1wx7k6cw" path="res://TransitionPiece.tscn" id="4_abc"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ppo6b"]
vertices = PackedVector2Array(374.47656, 1145.0078, -140.75781, 1180.2031, -76.11719, 588.6797, -53.679688, 490.4922, 1222.4688, 227.3125, 1994.2422, 468.4297, 2012.7031, 1020.2031, 1268.1875, 1113.0234)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(3, 4, 5, 6, 7, 0)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-62, 482, 1223, 217, 2004, 461, 2023, 1029, 1269, 1123, 375, 1155, -152, 1191, -86, 587)])
[node name="background" type="Node2D" unique_id=657573819]
y_sort_enabled = true
script = ExtResource("1_abc")
[node name="bg" type="Sprite2D" parent="." unique_id=874052749]
scale = Vector2(6, 6)
texture = ExtResource("2_abc")
centered = false
[node name="StartScalePoint" type="Node2D" parent="." unique_id=1640687858]
position = Vector2(1476, 742)
script = ExtResource("3_abc")
target_scale = 0.25
[node name="EndScalePoint" type="Node2D" parent="." unique_id=1996763530]
position = Vector2(1408, 1097)
scale = Vector2(0.44, 0.44)
script = ExtResource("3_abc")
target_scale = 0.35
[node name="pathfind" type="NavigationRegion2D" parent="." unique_id=1418661203]
position = Vector2(-1, 0)
navigation_polygon = SubResource("NavigationPolygon_ppo6b")
[node name="default-starting-point" type="Node2D" parent="." unique_id=1018141532]
position = Vector2(194, 819)
[node name="kq4_012_haunted_forest" parent="." unique_id=484638394 instance=ExtResource("4_abc")]
position = Vector2(910, -213)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_018_cemetery"
label = "Haunted Forest"
[node name="entrance" parent="kq4_012_haunted_forest" index="0"]
position = Vector2(133, 643)
[node name="exit" parent="kq4_012_haunted_forest" index="1"]
position = Vector2(174, 519)
[node name="kq4_024_waterfall_and_pool" parent="." unique_id=990092106 instance=ExtResource("4_abc")]
position = Vector2(910, 542)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_018_cemetery"
target = "uid://33baqytea2g56"
label = "Waterfall and Pool"
[node name="entrance" parent="kq4_024_waterfall_and_pool" index="0"]
position = Vector2(118, 514)
[node name="exit" parent="kq4_024_waterfall_and_pool" index="1"]
position = Vector2(151, 615)
[node name="kq4_017_spooky_house_exterior" parent="." unique_id=1117747814 instance=ExtResource("4_abc")]
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_018_cemetery"
target = "uid://1kz9yo5f1tpc6"
label = "Spooky House Exterior"
[node name="entrance" parent="kq4_017_spooky_house_exterior" index="0"]
position = Vector2(506, 555)
[node name="exit" parent="kq4_017_spooky_house_exterior" index="1"]
position = Vector2(-64, 534)
[connection signal="interacted" from="kq4_012_haunted_forest" to="." method="_on_haunted_forest_interacted"]
[connection signal="interacted" from="kq4_024_waterfall_and_pool" to="." method="_on_waterfall_and_pool_interacted"]
[connection signal="interacted" from="kq4_017_spooky_house_exterior" to="." method="_on_spooky_house_exterior_interacted"]
[editable path="kq4_012_haunted_forest"]
[editable path="kq4_024_waterfall_and_pool"]
[editable path="kq4_017_spooky_house_exterior"]

View File

@@ -0,0 +1 @@
uid://35amqvpjgpf2x

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cjobwcbr0ojgm"
path="res://.godot/imported/pic_018_visual.png-95fb36e791eb2f226ec2e4b45884fec6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://scenes/kq4_018_cemetery/pic_018_visual.png"
dest_files=["res://.godot/imported/pic_018_visual.png-95fb36e791eb2f226ec2e4b45884fec6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -11,3 +11,7 @@ func _on_beach_interacted() -> void:
func _on_beach_at_river_delta_interacted() -> void: func _on_beach_at_river_delta_interacted() -> void:
$kq4_025_beach_at_river_delta.default_script(self) $kq4_025_beach_at_river_delta.default_script(self)
func _on_open_ocean_interacted() -> void:
$kq4_031_open_ocean.default_script(self)

View File

@@ -53,10 +53,24 @@ position = Vector2(1400, 300)
[node name="exit" parent="kq4_013_beach" index="1"] [node name="exit" parent="kq4_013_beach" index="1"]
position = Vector2(1400, 150) position = Vector2(1400, 150)
[node name="kq4_031_open_ocean" parent="." index="8" instance=ExtResource("4_8xjvi")]
polygon = PackedVector2Array(100, 400, 200, 500, 400, 500, 500, 400)
appear_at_node = "kq4_019_coastal_cliffs"
target = "uid://2f7c49hpkducc"
label = "Open Ocean"
[node name="entrance" parent="kq4_031_open_ocean" index="0"]
position = Vector2(300, 450)
[node name="exit" parent="kq4_031_open_ocean" index="1"]
position = Vector2(150, 450)
[connection signal="interacted" from="kq4_013_beach" to="." method="_on_beach_interacted"] [connection signal="interacted" from="kq4_013_beach" to="." method="_on_beach_interacted"]
[connection signal="interacted" from="kq4_020_meadow" to="." method="_on_meadow_interacted"] [connection signal="interacted" from="kq4_020_meadow" to="." method="_on_meadow_interacted"]
[connection signal="interacted" from="kq4_025_beach_at_river_delta" to="." method="_on_beach_at_river_delta_interacted"] [connection signal="interacted" from="kq4_025_beach_at_river_delta" to="." method="_on_beach_at_river_delta_interacted"]
[connection signal="interacted" from="kq4_031_open_ocean" to="." method="_on_open_ocean_interacted"]
[editable path="kq4_020_meadow"] [editable path="kq4_020_meadow"]
[editable path="kq4_025_beach_at_river_delta"] [editable path="kq4_025_beach_at_river_delta"]
[editable path="kq4_013_beach"] [editable path="kq4_013_beach"]
[editable path="kq4_031_open_ocean"]

View File

@@ -6,7 +6,7 @@ func _on_graveyard_interacted() -> void:
func _on_028_interacted() -> void: func _on_028_interacted() -> void:
$kq4_028.default_script(self) $kq4_028_mine_entrance.default_script(self)
func _on_023_interacted() -> void: func _on_023_interacted() -> void:
@@ -14,4 +14,4 @@ func _on_023_interacted() -> void:
func _on_021_interacted() -> void: func _on_021_interacted() -> void:
$kq4_021.default_script(self) $kq4_021_bridge_over_stream.default_script(self)

View File

@@ -50,17 +50,17 @@ position = Vector2(133, 643)
[node name="exit" parent="kq4_016_graveyard" index="1"] [node name="exit" parent="kq4_016_graveyard" index="1"]
position = Vector2(174, 519) position = Vector2(174, 519)
[node name="kq4_028" parent="." unique_id=1916756563 instance=ExtResource("4_abc")] [node name="kq4_028_mine_entrance" parent="." unique_id=1916756563 instance=ExtResource("4_abc")]
position = Vector2(910, 542) position = Vector2(910, 542)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381) polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_022_gnomes_cottage" appear_at_node = "kq4_022_gnomes_cottage"
target = "uid://qkcwifq2lb9m" target = "uid://qkcwifq2lb9m"
label = "South Exit" label = "South Exit"
[node name="entrance" parent="kq4_028" index="0"] [node name="entrance" parent="kq4_028_mine_entrance" index="0"]
position = Vector2(118, 514) position = Vector2(118, 514)
[node name="exit" parent="kq4_028" index="1"] [node name="exit" parent="kq4_028_mine_entrance" index="1"]
position = Vector2(151, 615) position = Vector2(151, 615)
[node name="kq4_023_forest_path_with_cottage" parent="." unique_id=990092106 instance=ExtResource("4_abc")] [node name="kq4_023_forest_path_with_cottage" parent="." unique_id=990092106 instance=ExtResource("4_abc")]
@@ -76,24 +76,24 @@ position = Vector2(24, 565)
[node name="exit" parent="kq4_023_forest_path_with_cottage" index="1"] [node name="exit" parent="kq4_023_forest_path_with_cottage" index="1"]
position = Vector2(293, 554) position = Vector2(293, 554)
[node name="kq4_021" parent="." unique_id=1117747814 instance=ExtResource("4_abc")] [node name="kq4_021_bridge_over_stream" parent="." unique_id=1117747814 instance=ExtResource("4_abc")]
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381) polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_022_gnomes_cottage" appear_at_node = "kq4_022_gnomes_cottage"
target = "uid://3uxipzjekijqc" target = "uid://3uxipzjekijqc"
label = "West Exit" label = "West Exit"
[node name="entrance" parent="kq4_021" index="0"] [node name="entrance" parent="kq4_021_bridge_over_stream" index="0"]
position = Vector2(506, 555) position = Vector2(506, 555)
[node name="exit" parent="kq4_021" index="1"] [node name="exit" parent="kq4_021_bridge_over_stream" index="1"]
position = Vector2(-64, 534) position = Vector2(-64, 534)
[connection signal="interacted" from="kq4_016_graveyard" to="." method="_on_graveyard_interacted"] [connection signal="interacted" from="kq4_016_graveyard" to="." method="_on_graveyard_interacted"]
[connection signal="interacted" from="kq4_028" to="." method="_on_028_interacted"] [connection signal="interacted" from="kq4_028_mine_entrance" to="." method="_on_028_interacted"]
[connection signal="interacted" from="kq4_023_forest_path_with_cottage" to="." method="_on_023_interacted"] [connection signal="interacted" from="kq4_023_forest_path_with_cottage" to="." method="_on_023_interacted"]
[connection signal="interacted" from="kq4_021" to="." method="_on_021_interacted"] [connection signal="interacted" from="kq4_021_bridge_over_stream" to="." method="_on_021_interacted"]
[editable path="kq4_016_graveyard"] [editable path="kq4_016_graveyard"]
[editable path="kq4_028"] [editable path="kq4_028_mine_entrance"]
[editable path="kq4_023_forest_path_with_cottage"] [editable path="kq4_023_forest_path_with_cottage"]
[editable path="kq4_021"] [editable path="kq4_021_bridge_over_stream"]

View File

@@ -3,3 +3,15 @@ extends Scene
func _on_gnomes_cottage_interacted() -> void: func _on_gnomes_cottage_interacted() -> void:
$kq4_022_gnomes_cottage.default_script(self) $kq4_022_gnomes_cottage.default_script(self)
func _on_spooky_house_exterior_interacted() -> void:
$kq4_017_spooky_house_exterior.default_script(self)
func _on_waterfall_and_pool_interacted() -> void:
$kq4_024_waterfall_and_pool.default_script(self)
func _on_dense_forest_interacted() -> void:
$kq4_029_dense_forest.default_script(self)

View File

@@ -40,7 +40,8 @@ position = Vector2(194, 819)
[node name="kq4_017_spooky_house_exterior" parent="." unique_id=484638394 instance=ExtResource("4_abc")] [node name="kq4_017_spooky_house_exterior" parent="." unique_id=484638394 instance=ExtResource("4_abc")]
position = Vector2(910, -213) position = Vector2(910, -213)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381) polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_017_spooky_house_exterior" appear_at_node = "kq4_023_forest_path_with_cottage"
target = "uid://1kz9yo5f1tpc6"
label = "Spooky House Exterior" label = "Spooky House Exterior"
[node name="entrance" parent="kq4_017_spooky_house_exterior" index="0"] [node name="entrance" parent="kq4_017_spooky_house_exterior" index="0"]
@@ -52,7 +53,8 @@ position = Vector2(174, 519)
[node name="kq4_024_waterfall_and_pool" parent="." unique_id=1916756563 instance=ExtResource("4_abc")] [node name="kq4_024_waterfall_and_pool" parent="." unique_id=1916756563 instance=ExtResource("4_abc")]
position = Vector2(1766, 74) position = Vector2(1766, 74)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381) polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_024_waterfall_and_pool" appear_at_node = "kq4_023_forest_path_with_cottage"
target = "uid://33baqytea2g56"
label = "Waterfall and Pool" label = "Waterfall and Pool"
[node name="entrance" parent="kq4_024_waterfall_and_pool" index="0"] [node name="entrance" parent="kq4_024_waterfall_and_pool" index="0"]
@@ -64,7 +66,8 @@ position = Vector2(293, 554)
[node name="kq4_029_dense_forest" parent="." unique_id=990092106 instance=ExtResource("4_abc")] [node name="kq4_029_dense_forest" parent="." unique_id=990092106 instance=ExtResource("4_abc")]
position = Vector2(910, 542) position = Vector2(910, 542)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381) polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_029_dense_forest" appear_at_node = "kq4_023_forest_path_with_cottage"
target = "uid://1sfzaldfq5kn1"
label = "Dense Forest" label = "Dense Forest"
[node name="entrance" parent="kq4_029_dense_forest" index="0"] [node name="entrance" parent="kq4_029_dense_forest" index="0"]
@@ -75,7 +78,7 @@ position = Vector2(151, 615)
[node name="kq4_022_gnomes_cottage" parent="." unique_id=1117747814 instance=ExtResource("4_abc")] [node name="kq4_022_gnomes_cottage" parent="." unique_id=1117747814 instance=ExtResource("4_abc")]
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381) polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_022_gnomes_cottage" appear_at_node = "kq4_023_forest_path_with_cottage"
target = "uid://3oq4x3exoimdb" target = "uid://3oq4x3exoimdb"
label = "Gnome's Cottage" label = "Gnome's Cottage"
@@ -85,6 +88,9 @@ position = Vector2(506, 555)
[node name="exit" parent="kq4_022_gnomes_cottage" index="1"] [node name="exit" parent="kq4_022_gnomes_cottage" index="1"]
position = Vector2(-64, 534) position = Vector2(-64, 534)
[connection signal="interacted" from="kq4_017_spooky_house_exterior" to="." method="_on_spooky_house_exterior_interacted"]
[connection signal="interacted" from="kq4_024_waterfall_and_pool" to="." method="_on_waterfall_and_pool_interacted"]
[connection signal="interacted" from="kq4_029_dense_forest" to="." method="_on_dense_forest_interacted"]
[connection signal="interacted" from="kq4_022_gnomes_cottage" to="." method="_on_gnomes_cottage_interacted"] [connection signal="interacted" from="kq4_022_gnomes_cottage" to="." method="_on_gnomes_cottage_interacted"]
[editable path="kq4_017_spooky_house_exterior"] [editable path="kq4_017_spooky_house_exterior"]

View File

@@ -0,0 +1,13 @@
extends Scene
func _on_cemetery_interacted() -> void:
$kq4_018_cemetery.default_script(self)
func _on_mountain_pass_interacted() -> void:
$kq4_030_mountain_pass.default_script(self)
func _on_forest_path_with_cottage_interacted() -> void:
$kq4_023_forest_path_with_cottage.default_script(self)

View File

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

View File

@@ -0,0 +1,84 @@
[gd_scene format=3 uid="uid://33baqytea2g56"]
[ext_resource type="Script" path="res://scenes/kq4_024_waterfall_and_pool/kq4_024_waterfall_and_pool.gd" id="1_abc"]
[ext_resource type="Texture2D" path="res://scenes/kq4_024_waterfall_and_pool/pic_024_visual.png" id="2_abc"]
[ext_resource type="Script" uid="uid://xmphq3i0wbg3" path="res://ScalePoint_.gd" id="3_abc"]
[ext_resource type="PackedScene" uid="uid://c4vc1wx7k6cw" path="res://TransitionPiece.tscn" id="4_abc"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ppo6b"]
vertices = PackedVector2Array(374.47656, 1145.0078, -140.75781, 1180.2031, -76.11719, 588.6797, -53.679688, 490.4922, 1222.4688, 227.3125, 1994.2422, 468.4297, 2012.7031, 1020.2031, 1268.1875, 1113.0234)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(3, 4, 5, 6, 7, 0)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-62, 482, 1223, 217, 2004, 461, 2023, 1029, 1269, 1123, 375, 1155, -152, 1191, -86, 587)])
[node name="background" type="Node2D" unique_id=657573819]
y_sort_enabled = true
script = ExtResource("1_abc")
[node name="bg" type="Sprite2D" parent="." unique_id=874052749]
scale = Vector2(6, 6)
texture = ExtResource("2_abc")
centered = false
[node name="StartScalePoint" type="Node2D" parent="." unique_id=1640687858]
position = Vector2(1476, 742)
script = ExtResource("3_abc")
target_scale = 0.25
[node name="EndScalePoint" type="Node2D" parent="." unique_id=1996763530]
position = Vector2(1408, 1097)
scale = Vector2(0.44, 0.44)
script = ExtResource("3_abc")
target_scale = 0.35
[node name="pathfind" type="NavigationRegion2D" parent="." unique_id=1418661203]
position = Vector2(-1, 0)
navigation_polygon = SubResource("NavigationPolygon_ppo6b")
[node name="default-starting-point" type="Node2D" parent="." unique_id=1018141532]
position = Vector2(194, 819)
[node name="kq4_018_cemetery" parent="." unique_id=484638394 instance=ExtResource("4_abc")]
position = Vector2(910, -213)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_024_waterfall_and_pool"
target = "uid://35amqvpjgpf2x"
label = "Cemetery"
[node name="entrance" parent="kq4_018_cemetery" index="0"]
position = Vector2(133, 643)
[node name="exit" parent="kq4_018_cemetery" index="1"]
position = Vector2(174, 519)
[node name="kq4_030_mountain_pass" parent="." unique_id=1916756563 instance=ExtResource("4_abc")]
position = Vector2(910, 542)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_024_waterfall_and_pool"
target = "uid://7dfmw11k58wd"
label = "Mountain Pass"
[node name="entrance" parent="kq4_030_mountain_pass" index="0"]
position = Vector2(118, 514)
[node name="exit" parent="kq4_030_mountain_pass" index="1"]
position = Vector2(151, 615)
[node name="kq4_023_forest_path_with_cottage" parent="." unique_id=990092106 instance=ExtResource("4_abc")]
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_024_waterfall_and_pool"
target = "uid://1mhkt47y9jjhc"
label = "Forest Path with Cottage"
[node name="entrance" parent="kq4_023_forest_path_with_cottage" index="0"]
position = Vector2(506, 555)
[node name="exit" parent="kq4_023_forest_path_with_cottage" index="1"]
position = Vector2(-64, 534)
[connection signal="interacted" from="kq4_018_cemetery" to="." method="_on_cemetery_interacted"]
[connection signal="interacted" from="kq4_030_mountain_pass" to="." method="_on_mountain_pass_interacted"]
[connection signal="interacted" from="kq4_023_forest_path_with_cottage" to="." method="_on_forest_path_with_cottage_interacted"]
[editable path="kq4_018_cemetery"]
[editable path="kq4_030_mountain_pass"]
[editable path="kq4_023_forest_path_with_cottage"]

View File

@@ -0,0 +1 @@
uid://33baqytea2g56

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bqddklpe5r50d"
path="res://.godot/imported/pic_024_visual.png-2c3a203a4eaedf6b2a14d632a4eb3d5a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://scenes/kq4_024_waterfall_and_pool/pic_024_visual.png"
dest_files=["res://.godot/imported/pic_024_visual.png-2c3a203a4eaedf6b2a14d632a4eb3d5a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -10,7 +10,7 @@ func _on_river_meadow_interacted() -> void:
func _on_open_ocean_interacted() -> void: func _on_open_ocean_interacted() -> void:
$west_exit.default_script(self) $kq4_031_open_ocean.default_script(self)
func _on_beach_interacted() -> void: func _on_beach_interacted() -> void:

View File

@@ -5,8 +5,8 @@ func _on_gnomes_cottage_interacted() -> void:
$kq4_022_gnomes_cottage.default_script(self) $kq4_022_gnomes_cottage.default_script(self)
func _on_029_interacted() -> void: func _on_dense_forest_interacted() -> void:
$kq4_029.default_script(self) $kq4_029_dense_forest.default_script(self)
func _on_ogres_cottage_interacted() -> void: func _on_ogres_cottage_interacted() -> void:
@@ -14,4 +14,4 @@ func _on_ogres_cottage_interacted() -> void:
func _on_forest_path_interacted() -> void: func _on_forest_path_interacted() -> void:
$kq4_027.default_script(self) $kq4_027_forest_path.default_script(self)

View File

@@ -50,16 +50,17 @@ position = Vector2(133, 643)
[node name="exit" parent="kq4_022_gnomes_cottage" index="1"] [node name="exit" parent="kq4_022_gnomes_cottage" index="1"]
position = Vector2(174, 519) position = Vector2(174, 519)
[node name="kq4_029" parent="." unique_id=1916756563 instance=ExtResource("4_abc")] [node name="kq4_029_dense_forest" parent="." unique_id=1916756563 instance=ExtResource("4_abc")]
position = Vector2(1766, 74) position = Vector2(1766, 74)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381) polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_028_mine_entrance" appear_at_node = "kq4_028_mine_entrance"
label = "East Exit" target = "uid://1sfzaldfq5kn1"
label = "Dense Forest"
[node name="entrance" parent="kq4_029" index="0"] [node name="entrance" parent="kq4_029_dense_forest" index="0"]
position = Vector2(24, 565) position = Vector2(24, 565)
[node name="exit" parent="kq4_029" index="1"] [node name="exit" parent="kq4_029_dense_forest" index="1"]
position = Vector2(293, 554) position = Vector2(293, 554)
[node name="kq4_004_ogres_cottage" parent="." unique_id=990092106 instance=ExtResource("4_abc")] [node name="kq4_004_ogres_cottage" parent="." unique_id=990092106 instance=ExtResource("4_abc")]
@@ -75,25 +76,25 @@ position = Vector2(118, 514)
[node name="exit" parent="kq4_004_ogres_cottage" index="1"] [node name="exit" parent="kq4_004_ogres_cottage" index="1"]
position = Vector2(151, 615) position = Vector2(151, 615)
[node name="kq4_027" parent="." unique_id=1117747814 instance=ExtResource("4_abc")] [node name="kq4_027_forest_path" parent="." unique_id=1117747814 instance=ExtResource("4_abc")]
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381) polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_028_mine_entrance" appear_at_node = "kq4_028_mine_entrance"
target = "uid://1fpyosj18xls7" target = "uid://1fpyosj18xls7"
label = "Forest Path" label = "Forest Path"
[node name="entrance" parent="kq4_027" index="0"] [node name="entrance" parent="kq4_027_forest_path" index="0"]
position = Vector2(506, 555) position = Vector2(506, 555)
[node name="exit" parent="kq4_027" index="1"] [node name="exit" parent="kq4_027_forest_path" index="1"]
position = Vector2(-64, 534) position = Vector2(-64, 534)
[connection signal="interacted" from="kq4_027" to="." method="_on_forest_path_interacted"] [connection signal="interacted" from="kq4_027_forest_path" to="." method="_on_forest_path_interacted"]
[connection signal="interacted" from="kq4_022_gnomes_cottage" to="." method="_on_gnomes_cottage_interacted"] [connection signal="interacted" from="kq4_022_gnomes_cottage" to="." method="_on_gnomes_cottage_interacted"]
[connection signal="interacted" from="kq4_029" to="." method="_on_029_interacted"] [connection signal="interacted" from="kq4_029_dense_forest" to="." method="_on_dense_forest_interacted"]
[connection signal="interacted" from="kq4_004_ogres_cottage" to="." method="_on_ogres_cottage_interacted"] [connection signal="interacted" from="kq4_004_ogres_cottage" to="." method="_on_ogres_cottage_interacted"]
[editable path="kq4_022_gnomes_cottage"] [editable path="kq4_022_gnomes_cottage"]
[editable path="kq4_029"] [editable path="kq4_029_dense_forest"]
[editable path="kq4_004_ogres_cottage"] [editable path="kq4_004_ogres_cottage"]
[editable path="kq4_027"] [editable path="kq4_027_forest_path"]

View File

@@ -0,0 +1,17 @@
extends Scene
func _on_forest_path_with_cottage_interacted() -> void:
$kq4_023_forest_path_with_cottage.default_script(self)
func _on_forest_grove_interacted() -> void:
$kq4_005_forest_grove.default_script(self)
func _on_mountain_pass_interacted() -> void:
$kq4_030_mountain_pass.default_script(self)
func _on_mine_entrance_interacted() -> void:
$kq4_028_mine_entrance.default_script(self)

View File

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

View File

@@ -0,0 +1,99 @@
[gd_scene format=3 uid="uid://1sfzaldfq5kn1"]
[ext_resource type="Script" path="res://scenes/kq4_029_dense_forest/kq4_029_dense_forest.gd" id="1_abc"]
[ext_resource type="Texture2D" path="res://scenes/kq4_029_dense_forest/pic_029_visual.png" id="2_abc"]
[ext_resource type="Script" uid="uid://xmphq3i0wbg3" path="res://ScalePoint_.gd" id="3_abc"]
[ext_resource type="PackedScene" uid="uid://c4vc1wx7k6cw" path="res://TransitionPiece.tscn" id="4_abc"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ppo6b"]
vertices = PackedVector2Array(374.47656, 1145.0078, -140.75781, 1180.2031, -76.11719, 588.6797, -53.679688, 490.4922, 1222.4688, 227.3125, 1994.2422, 468.4297, 2012.7031, 1020.2031, 1268.1875, 1113.0234)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(3, 4, 5, 6, 7, 0)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-62, 482, 1223, 217, 2004, 461, 2023, 1029, 1269, 1123, 375, 1155, -152, 1191, -86, 587)])
[node name="background" type="Node2D" unique_id=657573819]
y_sort_enabled = true
script = ExtResource("1_abc")
[node name="bg" type="Sprite2D" parent="." unique_id=874052749]
scale = Vector2(6, 6)
texture = ExtResource("2_abc")
centered = false
[node name="StartScalePoint" type="Node2D" parent="." unique_id=1640687858]
position = Vector2(1476, 742)
script = ExtResource("3_abc")
target_scale = 0.25
[node name="EndScalePoint" type="Node2D" parent="." unique_id=1996763530]
position = Vector2(1408, 1097)
scale = Vector2(0.44, 0.44)
script = ExtResource("3_abc")
target_scale = 0.35
[node name="pathfind" type="NavigationRegion2D" parent="." unique_id=1418661203]
position = Vector2(-1, 0)
navigation_polygon = SubResource("NavigationPolygon_ppo6b")
[node name="default-starting-point" type="Node2D" parent="." unique_id=1018141532]
position = Vector2(194, 819)
[node name="kq4_023_forest_path_with_cottage" parent="." unique_id=484638394 instance=ExtResource("4_abc")]
position = Vector2(910, -213)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_029_dense_forest"
target = "uid://1mhkt47y9jjhc"
label = "Forest Path with Cottage"
[node name="entrance" parent="kq4_023_forest_path_with_cottage" index="0"]
position = Vector2(133, 643)
[node name="exit" parent="kq4_023_forest_path_with_cottage" index="1"]
position = Vector2(174, 519)
[node name="kq4_030_mountain_pass" parent="." unique_id=1916756563 instance=ExtResource("4_abc")]
position = Vector2(1766, 74)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_029_dense_forest"
target = "uid://7dfmw11k58wd"
label = "Mountain Pass"
[node name="entrance" parent="kq4_030_mountain_pass" index="0"]
position = Vector2(24, 565)
[node name="exit" parent="kq4_030_mountain_pass" index="1"]
position = Vector2(293, 554)
[node name="kq4_005_forest_grove" parent="." unique_id=990092106 instance=ExtResource("4_abc")]
position = Vector2(910, 542)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_029_dense_forest"
target = "uid://1c470jsfmdhxx"
label = "Forest Grove"
[node name="entrance" parent="kq4_005_forest_grove" index="0"]
position = Vector2(118, 514)
[node name="exit" parent="kq4_005_forest_grove" index="1"]
position = Vector2(151, 615)
[node name="kq4_028_mine_entrance" parent="." unique_id=1117747814 instance=ExtResource("4_abc")]
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_029_dense_forest"
target = "uid://qkcwifq2lb9m"
label = "Mine Entrance"
[node name="entrance" parent="kq4_028_mine_entrance" index="0"]
position = Vector2(506, 555)
[node name="exit" parent="kq4_028_mine_entrance" index="1"]
position = Vector2(-64, 534)
[connection signal="interacted" from="kq4_023_forest_path_with_cottage" to="." method="_on_forest_path_with_cottage_interacted"]
[connection signal="interacted" from="kq4_030_mountain_pass" to="." method="_on_mountain_pass_interacted"]
[connection signal="interacted" from="kq4_005_forest_grove" to="." method="_on_forest_grove_interacted"]
[connection signal="interacted" from="kq4_028_mine_entrance" to="." method="_on_mine_entrance_interacted"]
[editable path="kq4_023_forest_path_with_cottage"]
[editable path="kq4_030_mountain_pass"]
[editable path="kq4_005_forest_grove"]
[editable path="kq4_028_mine_entrance"]

View File

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

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cccxa28badyuv"
path="res://.godot/imported/pic_029_visual.png-13065378b5dd5025abf0e3ef38a6a6ff.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://scenes/kq4_029_dense_forest/pic_029_visual.png"
dest_files=["res://.godot/imported/pic_029_visual.png-13065378b5dd5025abf0e3ef38a6a6ff.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,13 @@
extends Scene
func _on_waterfall_and_pool_interacted() -> void:
$kq4_024_waterfall_and_pool.default_script(self)
func _on_mountain_path_to_dark_castle_interacted() -> void:
$kq4_079_mountain_path_to_dark_castle.default_script(self)
func _on_dense_forest_interacted() -> void:
$kq4_029_dense_forest.default_script(self)

View File

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

View File

@@ -0,0 +1,83 @@
[gd_scene format=3 uid="uid://7dfmw11k58wd"]
[ext_resource type="Script" path="res://scenes/kq4_030_mountain_pass/kq4_030_mountain_pass.gd" id="1_abc"]
[ext_resource type="Texture2D" path="res://scenes/kq4_030_mountain_pass/pic_030_visual.png" id="2_abc"]
[ext_resource type="Script" uid="uid://xmphq3i0wbg3" path="res://ScalePoint_.gd" id="3_abc"]
[ext_resource type="PackedScene" uid="uid://c4vc1wx7k6cw" path="res://TransitionPiece.tscn" id="4_abc"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ppo6b"]
vertices = PackedVector2Array(374.47656, 1145.0078, -140.75781, 1180.2031, -76.11719, 588.6797, -53.679688, 490.4922, 1222.4688, 227.3125, 1994.2422, 468.4297, 2012.7031, 1020.2031, 1268.1875, 1113.0234)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(3, 4, 5, 6, 7, 0)])
outlines = Array[PackedVector2Array]([PackedVector2Array(-62, 482, 1223, 217, 2004, 461, 2023, 1029, 1269, 1123, 375, 1155, -152, 1191, -86, 587)])
[node name="background" type="Node2D" unique_id=657573819]
y_sort_enabled = true
script = ExtResource("1_abc")
[node name="bg" type="Sprite2D" parent="." unique_id=874052749]
scale = Vector2(6, 6)
texture = ExtResource("2_abc")
centered = false
[node name="StartScalePoint" type="Node2D" parent="." unique_id=1640687858]
position = Vector2(1476, 742)
script = ExtResource("3_abc")
target_scale = 0.25
[node name="EndScalePoint" type="Node2D" parent="." unique_id=1996763530]
position = Vector2(1408, 1097)
scale = Vector2(0.44, 0.44)
script = ExtResource("3_abc")
target_scale = 0.35
[node name="pathfind" type="NavigationRegion2D" parent="." unique_id=1418661203]
position = Vector2(-1, 0)
navigation_polygon = SubResource("NavigationPolygon_ppo6b")
[node name="default-starting-point" type="Node2D" parent="." unique_id=1018141532]
position = Vector2(194, 819)
[node name="kq4_024_waterfall_and_pool" parent="." unique_id=484638394 instance=ExtResource("4_abc")]
position = Vector2(910, -213)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_030_mountain_pass"
target = "uid://33baqytea2g56"
label = "Waterfall and Pool"
[node name="entrance" parent="kq4_024_waterfall_and_pool" index="0"]
position = Vector2(133, 643)
[node name="exit" parent="kq4_024_waterfall_and_pool" index="1"]
position = Vector2(174, 519)
[node name="kq4_079_mountain_path_to_dark_castle" parent="." unique_id=1916756563 instance=ExtResource("4_abc")]
position = Vector2(1766, 74)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_030_mountain_pass"
label = "Mountain Path to Dark Castle"
[node name="entrance" parent="kq4_079_mountain_path_to_dark_castle" index="0"]
position = Vector2(24, 565)
[node name="exit" parent="kq4_079_mountain_path_to_dark_castle" index="1"]
position = Vector2(293, 554)
[node name="kq4_029_dense_forest" parent="." unique_id=1117747814 instance=ExtResource("4_abc")]
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_030_mountain_pass"
target = "uid://1sfzaldfq5kn1"
label = "Dense Forest"
[node name="entrance" parent="kq4_029_dense_forest" index="0"]
position = Vector2(506, 555)
[node name="exit" parent="kq4_029_dense_forest" index="1"]
position = Vector2(-64, 534)
[connection signal="interacted" from="kq4_024_waterfall_and_pool" to="." method="_on_waterfall_and_pool_interacted"]
[connection signal="interacted" from="kq4_079_mountain_path_to_dark_castle" to="." method="_on_mountain_path_to_dark_castle_interacted"]
[connection signal="interacted" from="kq4_029_dense_forest" to="." method="_on_dense_forest_interacted"]
[editable path="kq4_024_waterfall_and_pool"]
[editable path="kq4_079_mountain_path_to_dark_castle"]
[editable path="kq4_029_dense_forest"]

View File

@@ -0,0 +1 @@
uid://7dfmw11k58wd

Binary file not shown.

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ju0ocwt5qeri"
path="res://.godot/imported/pic_030_visual.png-8847369d7043d6b15bee268577f77e91.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://scenes/kq4_030_mountain_pass/pic_030_visual.png"
dest_files=["res://.godot/imported/pic_030_visual.png-8847369d7043d6b15bee268577f77e91.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -6,4 +6,12 @@ func _on_beach_interacted() -> void:
func _on_beach_at_river_delta_interacted() -> void: func _on_beach_at_river_delta_interacted() -> void:
$east_exit.default_script(self) $kq4_025_beach_at_river_delta.default_script(self)
func _on_coastal_cliffs_interacted() -> void:
$kq4_019_coastal_cliffs.default_script(self)
func _on_beach_13_interacted() -> void:
$kq4_013_beach.default_script(self)

View File

@@ -63,6 +63,32 @@ position = Vector2(24, 565)
[node name="exit" parent="kq4_025_beach_at_river_delta" index="1"] [node name="exit" parent="kq4_025_beach_at_river_delta" index="1"]
position = Vector2(293, 554) position = Vector2(293, 554)
[node name="kq4_019_coastal_cliffs" parent="." unique_id=1926756564 instance=ExtResource("4_abc")]
position = Vector2(100, 300)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_031_open_ocean"
target = "uid://3eh8ys3v25m45"
label = "Coastal Cliffs"
[node name="entrance" parent="kq4_019_coastal_cliffs" index="0"]
position = Vector2(133, 643)
[node name="exit" parent="kq4_019_coastal_cliffs" index="1"]
position = Vector2(174, 519)
[node name="kq4_013_beach" parent="." unique_id=1936756565 instance=ExtResource("4_abc")]
position = Vector2(1500, 200)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
appear_at_node = "kq4_031_open_ocean"
target = "uid://2bqawc9w4uu59"
label = "Beach"
[node name="entrance" parent="kq4_013_beach" index="0"]
position = Vector2(133, 643)
[node name="exit" parent="kq4_013_beach" index="1"]
position = Vector2(174, 519)
[node name="south_exit" parent="." unique_id=990092106 instance=ExtResource("4_abc")] [node name="south_exit" parent="." unique_id=990092106 instance=ExtResource("4_abc")]
position = Vector2(910, 542) position = Vector2(910, 542)
polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381) polygon = PackedVector2Array(-108, 454, -87, 649, 376, 658, 348, 381)
@@ -86,8 +112,12 @@ position = Vector2(-64, 534)
[connection signal="interacted" from="kq4_001_beach" to="." method="_on_beach_interacted"] [connection signal="interacted" from="kq4_001_beach" to="." method="_on_beach_interacted"]
[connection signal="interacted" from="kq4_025_beach_at_river_delta" to="." method="_on_beach_at_river_delta_interacted"] [connection signal="interacted" from="kq4_025_beach_at_river_delta" to="." method="_on_beach_at_river_delta_interacted"]
[connection signal="interacted" from="kq4_019_coastal_cliffs" to="." method="_on_coastal_cliffs_interacted"]
[connection signal="interacted" from="kq4_013_beach" to="." method="_on_beach_13_interacted"]
[editable path="kq4_001_beach"] [editable path="kq4_001_beach"]
[editable path="kq4_025_beach_at_river_delta"] [editable path="kq4_025_beach_at_river_delta"]
[editable path="kq4_019_coastal_cliffs"]
[editable path="kq4_013_beach"]
[editable path="south_exit"] [editable path="south_exit"]
[editable path="west_exit"] [editable path="west_exit"]

135
scripts/check_transitions.py Executable file
View File

@@ -0,0 +1,135 @@
#!/usr/bin/env python3
"""Validates transition nodes in KQ4 room scenes."""
import re
import sys
from pathlib import Path
from dataclasses import dataclass
from typing import Optional
@dataclass
class Transition:
exit_node_name: str
target_uid: str
appear_at_node: str
label: str
source_room: str
@dataclass
class SceneInfo:
uid: str
path: Path
node_names: set[str]
def find_uid_files(root: Path) -> dict[str, Path]:
"""Build a mapping of UID -> file path from all .uid files."""
uid_map = {}
for uid_file in root.rglob("*.uid"):
uid_content = uid_file.read_text().strip()
if uid_content.startswith("uid://"):
resource_path = uid_file.with_suffix("")
if resource_path.exists():
uid_map[uid_content] = resource_path
else:
uid_map[uid_content] = uid_file.with_suffix("")
return uid_map
def parse_scene_file(tscn_path: Path) -> tuple[Optional[str], set[str], list[Transition]]:
"""Parse a .tscn file to extract UID, node names, and transitions."""
content = tscn_path.read_text()
scene_uid = None
uid_match = re.search(r'\[gd_scene[^\]]*uid="([^"]+)"', content)
if uid_match:
scene_uid = uid_match.group(1)
node_names = set(re.findall(r'^\[node name="([^"]+)"', content, re.MULTILINE))
transitions = []
room_name = tscn_path.stem
transition_pattern = re.compile(
r'\[node name="([^"]+)"[^\]]*instance=ExtResource\([^\)]+\)\]\s*\n'
r'((?:[^\[]+\n)*)',
re.MULTILINE
)
for match in transition_pattern.finditer(content):
node_name = match.group(1)
body = match.group(2)
target_match = re.search(r'^target = "([^"]+)"', body, re.MULTILINE)
appear_match = re.search(r'^appear_at_node = "([^"]+)"', body, re.MULTILINE)
label_match = re.search(r'^label = "([^"]+)"', body, re.MULTILINE)
if target_match and appear_match:
transitions.append(Transition(
exit_node_name=node_name,
target_uid=target_match.group(1),
appear_at_node=appear_match.group(1),
label=label_match.group(1) if label_match else node_name,
source_room=room_name
))
return scene_uid, node_names, transitions
def main():
root = Path(__file__).parent.parent
scenes_dir = root / "scenes"
uid_map = find_uid_files(root)
scene_files = list(scenes_dir.glob("kq4_*/kq4_*.tscn"))
scene_files = [f for f in scene_files if "placeholder_template" not in str(f)]
scenes_by_uid: dict[str, SceneInfo] = {}
all_transitions: list[Transition] = []
for scene_file in scene_files:
scene_uid, node_names, transitions = parse_scene_file(scene_file)
if scene_uid:
scenes_by_uid[scene_uid] = SceneInfo(
uid=scene_uid,
path=scene_file,
node_names=node_names
)
all_transitions.extend(transitions)
errors = 0
for t in all_transitions:
source_room = t.source_room
target_scene = scenes_by_uid.get(t.target_uid)
if target_scene is None:
print(f"ERROR: {source_room} exit '{t.exit_node_name}' -> target UID '{t.target_uid}' NOT FOUND")
errors += 1
continue
target_room_name = target_scene.path.stem
if t.appear_at_node not in target_scene.node_names:
print(f"ERROR: {source_room} exit '{t.exit_node_name}' -> {target_room_name} node '{t.appear_at_node}' NOT FOUND")
errors += 1
continue
print(f"OK: {source_room} exit '{t.exit_node_name}' -> {target_room_name} (node: {t.appear_at_node})")
print(f"\n{'='*60}")
print(f"Checked {len(all_transitions)} transitions across {len(scene_files)} rooms")
if errors:
print(f"FOUND {errors} ERROR(S)")
sys.exit(1)
else:
print("All transitions valid!")
sys.exit(0)
if __name__ == "__main__":
main()