Add FallOnDetectionComponent and CleanupOnCollisionComponent; implement falling detection and cleanup on collision

This commit is contained in:
2025-09-13 22:04:36 +02:00
parent bc3108ea37
commit 3d8694377a
25 changed files with 1998 additions and 118 deletions

View File

@@ -1,4 +1,5 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArea2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003F116d8c5f8dae51522ba398e1d89e3d4722f4af7b6e7f071196b928be44af7_003FArea2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACamera2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fa2e12a1a67ad701a97608de6be85250e3e353951ecf8058a02c703490c753_003FCamera2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACanvasItem_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fef7b819b226fab796d1dfe66d415dd7510bcac87675020ddb8f03a828e763_003FCanvasItem_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACecovym_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003Ftmp_003FJetBrainsPerUserTemp_002D1000_002D1_003FSandboxFiles_003FSadijuw_003FCecovym_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
@@ -10,5 +11,7 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AList_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fe747192abb38e2df82cbdb37e721567726f559914a7b81f8b26ba537de632f4_003FList_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMr_002EBrickAdventures_002Escripts_002Ecomponents_002ECollectableComponent_005FScriptSignals_002Egenerated_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003F80d9408eb7280c15eb4a12b61cdf8f7f1b0c5a2_003FMr_002EBrickAdventures_002Escripts_002Ecomponents_002ECollectableComponent_005FScriptSignals_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F86db9cd834346aad02d74c1b66dd9c64d6ef3147435dd9c9c9477b48f7_003FNode2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APhysicsBody2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003F4fcd28ddaffa68e6fe53288161b788dea7d402b4a41b9d9f0f0f2c52f9af075_003FPhysicsBody2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARectangleShape2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fa1cc98873548652da0c14ecefa4737431426fcbb24a7f0641e3d9c266c3_003FRectangleShape2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARigidBody2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003F7bc3ccc1ac5bbc68933d64c7b7eb5ab4aecde2b73c686dd6495b68bdf08ba5b2_003FRigidBody2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AShape2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F3671dbbd9b17cdf2bf9075b468b6bd7e3ab13fc3be7a116484085d3b6cc9fe_003FShape2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>

View File

@@ -15,7 +15,7 @@ radius = 4.0
[node name="Bullet" type="Area2D"]
collision_layer = 64
collision_mask = 21
collision_mask = 85
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_txsw8")
@@ -47,7 +47,7 @@ VisibilityNotifier = NodePath("../VisibleOnScreenNotifier2D")
[node name="LifetimeComponent" type="Node" parent="."]
script = ExtResource("4_aniyw")
LifeTime = 10.0
LifeTime = 3.0
[node name="LaunchComponent" type="Node2D" parent="."]
script = ExtResource("5_3ks47")

View File

@@ -0,0 +1,48 @@
[gd_scene load_steps=7 format=3 uid="uid://qrbiu1qo4tt5"]
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_0efvn"]
[ext_resource type="Script" uid="uid://bnaxy8cw3wrko" path="res://scripts/components/PeriodicShootingComponent.cs" id="2_4ycs1"]
[ext_resource type="PackedScene" uid="uid://chetx6gmnwbxi" path="res://objects/entities/cannon_bullet.tscn" id="3_ab2uh"]
[ext_resource type="Script" uid="uid://b3j23e7b7x8ro" path="res://scripts/components/RecoilComponent.cs" id="4_tynaf"]
[ext_resource type="Script" uid="uid://c707c53k7c5ae" path="res://scripts/components/SquashAndStretchComponent.cs" id="5_0xigu"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_j5sus"]
size = Vector2(16, 16)
[node name="Cannon" type="StaticBody2D"]
collision_layer = 0
collision_mask = 0
[node name="Sprite2D" type="Sprite2D" parent="."]
rotation = 3.14159
texture = ExtResource("1_0efvn")
hframes = 12
vframes = 12
frame = 42
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_j5sus")
[node name="PeriodicShootingComponent" type="Node" parent="." node_paths=PackedStringArray("BulletSpawnPointRight")]
script = ExtResource("2_4ycs1")
BulletScene = ExtResource("3_ab2uh")
ShootInterval = 3.0
ShootDirection = Vector2(0, 1)
BulletSpawnPointRight = NodePath("../Bullet spawn")
ShootingIntervalVariation = 0.61
metadata/_custom_type_script = "uid://bnaxy8cw3wrko"
[node name="Bullet spawn" type="Marker2D" parent="."]
position = Vector2(0, 12)
[node name="RecoilComponent" type="Node" parent="." node_paths=PackedStringArray("RecoilTarget")]
script = ExtResource("4_tynaf")
RecoilTarget = NodePath("../Sprite2D")
RecoilDistance = 4.0
RecoilDuration = 0.12
metadata/_custom_type_script = "uid://b3j23e7b7x8ro"
[node name="SquashAndStretchComponent" type="Node" parent="." node_paths=PackedStringArray("TargetNode")]
script = ExtResource("5_0xigu")
TargetNode = NodePath("../Sprite2D")
metadata/_custom_type_script = "uid://c707c53k7c5ae"

View File

@@ -0,0 +1,48 @@
[gd_scene load_steps=7 format=3 uid="uid://cm0rd70wafif1"]
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_hnnrt"]
[ext_resource type="Script" uid="uid://bnaxy8cw3wrko" path="res://scripts/components/PeriodicShootingComponent.cs" id="2_cho7n"]
[ext_resource type="PackedScene" uid="uid://chetx6gmnwbxi" path="res://objects/entities/cannon_bullet.tscn" id="3_kgmtj"]
[ext_resource type="Script" uid="uid://b3j23e7b7x8ro" path="res://scripts/components/RecoilComponent.cs" id="4_nfk87"]
[ext_resource type="Script" uid="uid://c707c53k7c5ae" path="res://scripts/components/SquashAndStretchComponent.cs" id="5_43fqe"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_j5sus"]
size = Vector2(16, 16)
[node name="Cannon" type="StaticBody2D"]
collision_layer = 0
collision_mask = 0
[node name="Sprite2D" type="Sprite2D" parent="."]
rotation = -1.5708
texture = ExtResource("1_hnnrt")
hframes = 12
vframes = 12
frame = 42
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_j5sus")
[node name="PeriodicShootingComponent" type="Node" parent="." node_paths=PackedStringArray("BulletSpawnPointRight")]
script = ExtResource("2_cho7n")
BulletScene = ExtResource("3_kgmtj")
ShootInterval = 3.0
ShootDirection = Vector2(-1, 0)
BulletSpawnPointRight = NodePath("../Bullet spawn")
ShootingIntervalVariation = 0.61
metadata/_custom_type_script = "uid://bnaxy8cw3wrko"
[node name="Bullet spawn" type="Marker2D" parent="."]
position = Vector2(-12, 0)
[node name="RecoilComponent" type="Node" parent="." node_paths=PackedStringArray("RecoilTarget")]
script = ExtResource("4_nfk87")
RecoilTarget = NodePath("../Sprite2D")
RecoilDistance = 4.0
RecoilDuration = 0.12
metadata/_custom_type_script = "uid://b3j23e7b7x8ro"
[node name="SquashAndStretchComponent" type="Node" parent="." node_paths=PackedStringArray("TargetNode")]
script = ExtResource("5_43fqe")
TargetNode = NodePath("../Sprite2D")
metadata/_custom_type_script = "uid://c707c53k7c5ae"

View File

@@ -0,0 +1,47 @@
[gd_scene load_steps=7 format=3 uid="uid://dr6srln4mckwn"]
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_r5bjs"]
[ext_resource type="Script" uid="uid://bnaxy8cw3wrko" path="res://scripts/components/PeriodicShootingComponent.cs" id="2_gd3be"]
[ext_resource type="PackedScene" uid="uid://chetx6gmnwbxi" path="res://objects/entities/cannon_bullet.tscn" id="3_1gufj"]
[ext_resource type="Script" uid="uid://b3j23e7b7x8ro" path="res://scripts/components/RecoilComponent.cs" id="4_hwc6x"]
[ext_resource type="Script" uid="uid://c707c53k7c5ae" path="res://scripts/components/SquashAndStretchComponent.cs" id="5_o674s"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_j5sus"]
size = Vector2(16, 16)
[node name="Cannon" type="StaticBody2D"]
collision_layer = 0
collision_mask = 0
[node name="Sprite2D" type="Sprite2D" parent="."]
rotation = 1.5708
texture = ExtResource("1_r5bjs")
hframes = 12
vframes = 12
frame = 42
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_j5sus")
[node name="PeriodicShootingComponent" type="Node" parent="." node_paths=PackedStringArray("BulletSpawnPointRight")]
script = ExtResource("2_gd3be")
BulletScene = ExtResource("3_1gufj")
ShootInterval = 3.0
BulletSpawnPointRight = NodePath("../Bullet spawn")
ShootingIntervalVariation = 0.61
metadata/_custom_type_script = "uid://bnaxy8cw3wrko"
[node name="Bullet spawn" type="Marker2D" parent="."]
position = Vector2(12, 0)
[node name="RecoilComponent" type="Node" parent="." node_paths=PackedStringArray("RecoilTarget")]
script = ExtResource("4_hwc6x")
RecoilTarget = NodePath("../Sprite2D")
RecoilDistance = 4.0
RecoilDuration = 0.12
metadata/_custom_type_script = "uid://b3j23e7b7x8ro"
[node name="SquashAndStretchComponent" type="Node" parent="." node_paths=PackedStringArray("TargetNode")]
script = ExtResource("5_o674s")
TargetNode = NodePath("../Sprite2D")
metadata/_custom_type_script = "uid://c707c53k7c5ae"

View File

@@ -0,0 +1,78 @@
[gd_scene load_steps=11 format=3 uid="uid://bmk3ddwv33dud"]
[ext_resource type="Texture2D" uid="uid://ccjihsk6w8sow" path="res://sprites/BFT - Mega Metroidvania Tileset.png" id="1_erbp6"]
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="2_fq2gn"]
[ext_resource type="Script" uid="uid://v7tt4w6bejux" path="res://scripts/components/CleanupComponent.cs" id="4_mgh1e"]
[ext_resource type="Script" uid="uid://nhu2xd8611fk" path="res://scripts/components/HazardComponent.cs" id="5_8g254"]
[ext_resource type="Script" uid="uid://chusyr5vwgwf0" path="res://scripts/components/CleanupOnCollisionComponent.cs" id="6_2rpon"]
[ext_resource type="Script" uid="uid://cgfynrn68lp12" path="res://scripts/components/KnockbackComponent.cs" id="6_3n0l8"]
[ext_resource type="Script" uid="uid://co05ugnvx0v3e" path="res://scripts/components/FallOnDetectionComponent.cs" id="7_mgh1e"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_t3a48"]
size = Vector2(16, 8)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_fq2gn"]
size = Vector2(16, 320)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2rpon"]
size = Vector2(17, 9)
[node name="FallingSpike" type="RigidBody2D"]
collision_mask = 5
gravity_scale = 0.0
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, -4)
shape = SubResource("RectangleShape2D_t3a48")
[node name="Sprite2D" type="Sprite2D" parent="."]
rotation = -3.14159
texture = ExtResource("1_erbp6")
hframes = 13
vframes = 45
frame = 9
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
script = ExtResource("2_fq2gn")
Area = NodePath("")
metadata/_custom_type_script = "uid://2i7p7v135u7c"
[node name="HazardComponent" type="Node2D" parent="." node_paths=PackedStringArray("KnockbackComponent", "HazardArea")]
script = ExtResource("5_8g254")
KnockbackComponent = NodePath("../KnockbackComponent")
HazardArea = NodePath("../HazardArea")
metadata/_custom_type_script = "uid://nhu2xd8611fk"
[node name="KnockbackComponent" type="Node" parent="."]
script = ExtResource("6_3n0l8")
metadata/_custom_type_script = "uid://cgfynrn68lp12"
[node name="FallTriggerArea" type="Area2D" parent="."]
collision_mask = 4
[node name="CollisionShape2D" type="CollisionShape2D" parent="FallTriggerArea"]
position = Vector2(0, 155)
shape = SubResource("RectangleShape2D_fq2gn")
debug_color = Color(0.916282, 7.47952e-05, 0.709809, 0.42)
[node name="CleanupComponent" type="Node" parent="."]
script = ExtResource("4_mgh1e")
metadata/_custom_type_script = "uid://v7tt4w6bejux"
[node name="CleanupOnCollisionComponent" type="Node" parent="."]
script = ExtResource("6_2rpon")
metadata/_custom_type_script = "uid://chusyr5vwgwf0"
[node name="FallOnDetectionComponent" type="Node2D" parent="." node_paths=PackedStringArray("DetectionArea", "TargetBody")]
script = ExtResource("7_mgh1e")
DetectionArea = NodePath("../FallTriggerArea")
TargetBody = NodePath("..")
metadata/_custom_type_script = "uid://co05ugnvx0v3e"
[node name="HazardArea" type="Area2D" parent="."]
collision_mask = 4
[node name="CollisionShape2D" type="CollisionShape2D" parent="HazardArea"]
position = Vector2(0, -4.5)
shape = SubResource("RectangleShape2D_2rpon")
debug_color = Color(0.73011, 0.468379, 0.188355, 0.42)

View File

@@ -1,7 +1,8 @@
[gd_resource type="TileSet" load_steps=5 format=3 uid="uid://dua4ns4tdknd1"]
[gd_resource type="TileSet" load_steps=7 format=3 uid="uid://dua4ns4tdknd1"]
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_hm4pu"]
[ext_resource type="Texture2D" uid="uid://cw42lvnqxubq2" path="res://sprites/PS_Tileset_10_nes.png" id="2_dfydr"]
[ext_resource type="Texture2D" uid="uid://ccjihsk6w8sow" path="res://sprites/BFT - Mega Metroidvania Tileset.png" id="3_dfydr"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_cagp7"]
texture = ExtResource("1_hm4pu")
@@ -133,6 +134,491 @@ texture = ExtResource("2_dfydr")
2:2/0 = 0
2:2/0/probability = 0.8
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_ffexy"]
texture = ExtResource("3_dfydr")
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
3:0/0 = 0
4:0/0 = 0
5:0/0 = 0
6:0/0 = 0
7:0/0 = 0
8:0/0 = 0
9:0/0 = 0
10:0/0 = 0
12:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
3:1/0 = 0
4:1/0 = 0
5:1/0 = 0
6:1/0 = 0
8:1/0 = 0
9:1/0 = 0
12:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
3:2/0 = 0
4:2/0 = 0
5:2/0 = 0
6:2/0 = 0
7:2/0 = 0
8:2/0 = 0
9:2/0 = 0
12:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
3:3/0 = 0
4:3/0 = 0
5:3/0 = 0
6:3/0 = 0
7:3/0 = 0
8:3/0 = 0
9:3/0 = 0
12:3/0 = 0
0:4/0 = 0
2:4/0 = 0
3:4/0 = 0
4:4/0 = 0
5:4/0 = 0
6:4/0 = 0
7:4/0 = 0
8:4/0 = 0
12:4/0 = 0
0:5/0 = 0
1:5/0 = 0
2:5/0 = 0
3:5/0 = 0
4:5/0 = 0
5:5/0 = 0
6:5/0 = 0
7:5/0 = 0
8:5/0 = 0
10:5/0 = 0
12:5/0 = 0
0:6/0 = 0
1:6/0 = 0
2:6/0 = 0
3:6/0 = 0
4:6/0 = 0
5:6/0 = 0
6:6/0 = 0
7:6/0 = 0
8:6/0 = 0
9:6/0 = 0
10:6/0 = 0
11:6/0 = 0
12:6/0 = 0
0:7/0 = 0
1:7/0 = 0
2:7/0 = 0
3:7/0 = 0
4:7/0 = 0
5:7/0 = 0
6:7/0 = 0
8:7/0 = 0
9:7/0 = 0
10:7/0 = 0
11:7/0 = 0
0:8/0 = 0
1:8/0 = 0
2:8/0 = 0
3:8/0 = 0
4:8/0 = 0
5:8/0 = 0
6:8/0 = 0
7:8/0 = 0
8:8/0 = 0
9:8/0 = 0
10:8/0 = 0
11:8/0 = 0
0:9/0 = 0
1:9/0 = 0
2:9/0 = 0
3:9/0 = 0
4:9/0 = 0
5:9/0 = 0
6:9/0 = 0
7:9/0 = 0
8:9/0 = 0
9:9/0 = 0
10:9/0 = 0
11:9/0 = 0
12:9/0 = 0
0:10/0 = 0
2:10/0 = 0
5:10/0 = 0
6:10/0 = 0
8:10/0 = 0
9:10/0 = 0
10:10/0 = 0
11:10/0 = 0
12:10/0 = 0
0:11/0 = 0
1:11/0 = 0
2:11/0 = 0
3:11/0 = 0
4:11/0 = 0
5:11/0 = 0
6:11/0 = 0
7:11/0 = 0
8:11/0 = 0
9:11/0 = 0
10:11/0 = 0
11:11/0 = 0
12:11/0 = 0
0:12/0 = 0
1:12/0 = 0
2:12/0 = 0
3:12/0 = 0
4:12/0 = 0
5:12/0 = 0
6:12/0 = 0
7:12/0 = 0
8:12/0 = 0
9:12/0 = 0
10:12/0 = 0
11:12/0 = 0
12:12/0 = 0
0:13/0 = 0
1:13/0 = 0
2:13/0 = 0
3:13/0 = 0
4:13/0 = 0
5:13/0 = 0
6:13/0 = 0
8:13/0 = 0
9:13/0 = 0
10:13/0 = 0
11:13/0 = 0
12:13/0 = 0
0:14/0 = 0
1:14/0 = 0
2:14/0 = 0
3:14/0 = 0
4:14/0 = 0
5:14/0 = 0
6:14/0 = 0
7:14/0 = 0
8:14/0 = 0
9:14/0 = 0
10:14/0 = 0
11:14/0 = 0
12:14/0 = 0
0:15/0 = 0
1:15/0 = 0
2:15/0 = 0
3:15/0 = 0
4:15/0 = 0
5:15/0 = 0
6:15/0 = 0
7:15/0 = 0
8:15/0 = 0
9:15/0 = 0
11:15/0 = 0
12:15/0 = 0
3:16/0 = 0
8:16/0 = 0
0:17/0 = 0
1:17/0 = 0
2:17/0 = 0
3:17/0 = 0
4:17/0 = 0
5:17/0 = 0
6:17/0 = 0
7:17/0 = 0
8:17/0 = 0
9:17/0 = 0
10:17/0 = 0
11:17/0 = 0
0:18/0 = 0
1:18/0 = 0
2:18/0 = 0
3:18/0 = 0
4:18/0 = 0
5:18/0 = 0
6:18/0 = 0
7:18/0 = 0
8:18/0 = 0
9:18/0 = 0
10:18/0 = 0
11:18/0 = 0
0:19/0 = 0
1:19/0 = 0
2:19/0 = 0
3:19/0 = 0
4:19/0 = 0
5:19/0 = 0
6:19/0 = 0
7:19/0 = 0
8:19/0 = 0
9:19/0 = 0
10:19/0 = 0
11:19/0 = 0
0:20/0 = 0
1:20/0 = 0
2:20/0 = 0
3:20/0 = 0
4:20/0 = 0
5:20/0 = 0
6:20/0 = 0
7:20/0 = 0
8:20/0 = 0
9:20/0 = 0
10:20/0 = 0
11:20/0 = 0
0:21/0 = 0
2:21/0 = 0
3:21/0 = 0
4:21/0 = 0
5:21/0 = 0
6:21/0 = 0
7:21/0 = 0
8:21/0 = 0
9:21/0 = 0
10:21/0 = 0
0:22/0 = 0
1:22/0 = 0
2:22/0 = 0
3:22/0 = 0
4:22/0 = 0
5:22/0 = 0
6:22/0 = 0
7:22/0 = 0
8:22/0 = 0
9:22/0 = 0
10:22/0 = 0
11:22/0 = 0
0:23/0 = 0
1:23/0 = 0
2:23/0 = 0
3:23/0 = 0
4:23/0 = 0
5:23/0 = 0
6:23/0 = 0
7:23/0 = 0
8:23/0 = 0
9:23/0 = 0
10:23/0 = 0
11:23/0 = 0
0:24/0 = 0
1:24/0 = 0
2:24/0 = 0
6:24/0 = 0
7:24/0 = 0
8:24/0 = 0
9:24/0 = 0
10:24/0 = 0
11:24/0 = 0
0:25/0 = 0
1:25/0 = 0
6:25/0 = 0
7:25/0 = 0
8:25/0 = 0
9:25/0 = 0
10:25/0 = 0
11:25/0 = 0
0:26/0 = 0
1:26/0 = 0
2:26/0 = 0
6:26/0 = 0
7:26/0 = 0
8:26/0 = 0
9:26/0 = 0
10:26/0 = 0
11:26/0 = 0
0:27/0 = 0
1:27/0 = 0
2:27/0 = 0
3:27/0 = 0
4:27/0 = 0
5:27/0 = 0
6:27/0 = 0
7:27/0 = 0
8:27/0 = 0
0:28/0 = 0
1:28/0 = 0
2:28/0 = 0
3:28/0 = 0
4:28/0 = 0
5:28/0 = 0
6:28/0 = 0
7:28/0 = 0
8:28/0 = 0
9:28/0 = 0
10:28/0 = 0
11:28/0 = 0
0:29/0 = 0
1:29/0 = 0
2:29/0 = 0
3:29/0 = 0
4:29/0 = 0
5:29/0 = 0
6:29/0 = 0
7:29/0 = 0
8:29/0 = 0
9:29/0 = 0
10:29/0 = 0
11:29/0 = 0
12:29/0 = 0
0:30/0 = 0
1:30/0 = 0
2:30/0 = 0
3:30/0 = 0
4:30/0 = 0
5:30/0 = 0
6:30/0 = 0
7:30/0 = 0
8:30/0 = 0
9:30/0 = 0
10:30/0 = 0
11:30/0 = 0
0:31/0 = 0
1:31/0 = 0
2:31/0 = 0
3:31/0 = 0
4:31/0 = 0
5:31/0 = 0
6:31/0 = 0
7:31/0 = 0
8:31/0 = 0
9:31/0 = 0
10:31/0 = 0
11:31/0 = 0
0:32/0 = 0
1:32/0 = 0
2:32/0 = 0
3:32/0 = 0
4:32/0 = 0
5:32/0 = 0
6:32/0 = 0
7:32/0 = 0
8:32/0 = 0
9:32/0 = 0
10:32/0 = 0
11:32/0 = 0
0:33/0 = 0
1:33/0 = 0
2:33/0 = 0
3:33/0 = 0
4:33/0 = 0
5:33/0 = 0
6:33/0 = 0
7:33/0 = 0
8:33/0 = 0
9:33/0 = 0
10:33/0 = 0
11:33/0 = 0
0:34/0 = 0
1:34/0 = 0
2:34/0 = 0
3:34/0 = 0
4:34/0 = 0
5:34/0 = 0
6:34/0 = 0
7:34/0 = 0
8:34/0 = 0
9:34/0 = 0
10:34/0 = 0
11:34/0 = 0
0:35/0 = 0
1:35/0 = 0
2:35/0 = 0
3:35/0 = 0
4:35/0 = 0
5:35/0 = 0
6:35/0 = 0
7:35/0 = 0
8:35/0 = 0
9:35/0 = 0
10:35/0 = 0
11:35/0 = 0
0:36/0 = 0
1:36/0 = 0
2:36/0 = 0
3:36/0 = 0
4:36/0 = 0
5:36/0 = 0
6:36/0 = 0
7:36/0 = 0
8:36/0 = 0
0:37/0 = 0
1:37/0 = 0
2:37/0 = 0
3:37/0 = 0
4:37/0 = 0
5:37/0 = 0
6:37/0 = 0
7:37/0 = 0
8:37/0 = 0
0:38/0 = 0
1:38/0 = 0
2:38/0 = 0
3:38/0 = 0
4:38/0 = 0
5:38/0 = 0
6:38/0 = 0
7:38/0 = 0
8:38/0 = 0
0:39/0 = 0
1:39/0 = 0
2:39/0 = 0
3:39/0 = 0
4:39/0 = 0
5:39/0 = 0
0:40/0 = 0
1:40/0 = 0
2:40/0 = 0
3:40/0 = 0
4:40/0 = 0
5:40/0 = 0
0:41/0 = 0
1:41/0 = 0
2:41/0 = 0
3:41/0 = 0
4:41/0 = 0
5:41/0 = 0
0:42/0 = 0
1:42/0 = 0
2:42/0 = 0
3:42/0 = 0
4:42/0 = 0
5:42/0 = 0
6:42/0 = 0
7:42/0 = 0
8:42/0 = 0
9:42/0 = 0
10:42/0 = 0
11:42/0 = 0
0:43/0 = 0
1:43/0 = 0
2:43/0 = 0
3:43/0 = 0
5:43/0 = 0
6:43/0 = 0
7:43/0 = 0
8:43/0 = 0
9:43/0 = 0
10:43/0 = 0
11:43/0 = 0
0:44/0 = 0
1:44/0 = 0
2:44/0 = 0
3:44/0 = 0
4:44/0 = 0
5:44/0 = 0
6:44/0 = 0
7:44/0 = 0
8:44/0 = 0
9:44/0 = 0
10:44/0 = 0
11:44/0 = 0
[resource]
sources/0 = SubResource("TileSetAtlasSource_cagp7")
sources/1 = SubResource("TileSetAtlasSource_75pfo")
sources/2 = SubResource("TileSetAtlasSource_ffexy")

View File

@@ -1,4 +1,4 @@
[gd_resource type="TileSet" load_steps=17 format=3 uid="uid://bc5a20s6kuy8e"]
[gd_resource type="TileSet" load_steps=21 format=3 uid="uid://bc5a20s6kuy8e"]
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_ej5iv"]
[ext_resource type="PackedScene" uid="uid://54w4wisfj8v8" path="res://objects/entities/coin.tscn" id="2_31a0q"]
@@ -9,10 +9,14 @@
[ext_resource type="PackedScene" uid="uid://c0j1yun5s7kns" path="res://objects/entities/bouncing_mushroom.tscn" id="5_ov0dn"]
[ext_resource type="PackedScene" uid="uid://d08dfqmirnd66" path="res://objects/entities/big_treasure.tscn" id="5_xxibl"]
[ext_resource type="PackedScene" uid="uid://073ts5cxtwbl" path="res://objects/entities/treasure.tscn" id="6_fmgww"]
[ext_resource type="PackedScene" uid="uid://dstko446qydsc" path="res://objects/entities/cannon.tscn" id="6_xxibl"]
[ext_resource type="PackedScene" uid="uid://dstko446qydsc" path="res://objects/entities/cannon_up.tscn" id="6_xxibl"]
[ext_resource type="PackedScene" uid="uid://cm3rixnnev1pg" path="res://objects/entities/jump_pad.tscn" id="7_0kjxj"]
[ext_resource type="PackedScene" uid="uid://qrbiu1qo4tt5" path="res://objects/entities/cannon_down.tscn" id="7_83o0w"]
[ext_resource type="PackedScene" uid="uid://to2xnqev0pu1" path="res://objects/entities/cage.tscn" id="8_83o0w"]
[ext_resource type="PackedScene" uid="uid://cm0rd70wafif1" path="res://objects/entities/cannon_left.tscn" id="8_at40q"]
[ext_resource type="PackedScene" uid="uid://bd51frym6mm7v" path="res://objects/entities/lever.tscn" id="9_at40q"]
[ext_resource type="PackedScene" uid="uid://dr6srln4mckwn" path="res://objects/entities/cannon_right.tscn" id="9_ivcjr"]
[ext_resource type="PackedScene" uid="uid://bmk3ddwv33dud" path="res://objects/entities/falling_spike.tscn" id="10_at40q"]
[ext_resource type="PackedScene" uid="uid://12jnkdygpxwc" path="res://objects/entities/exit_level.tscn" id="10_ivcjr"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_8idcv"]
@@ -153,6 +157,10 @@ scenes/10/scene = ExtResource("3_31a0q")
scenes/11/scene = ExtResource("4_x63lh")
scenes/12/scene = ExtResource("5_ov0dn")
scenes/13/scene = ExtResource("6_xxibl")
scenes/14/scene = ExtResource("7_83o0w")
scenes/15/scene = ExtResource("8_at40q")
scenes/16/scene = ExtResource("9_ivcjr")
scenes/17/scene = ExtResource("10_at40q")
[resource]
physics_layer_0/collision_layer = 1

View File

@@ -1,7 +1,9 @@
[gd_resource type="TileSet" load_steps=5 format=3 uid="uid://cu2sx7qigrqnv"]
[gd_resource type="TileSet" load_steps=9 format=3 uid="uid://cu2sx7qigrqnv"]
[ext_resource type="Texture2D" uid="uid://do6m4ry8ss01e" path="res://sprites/PS_Tileset_12_nes.png" id="1_2p3w4"]
[ext_resource type="Texture2D" uid="uid://cw42lvnqxubq2" path="res://sprites/PS_Tileset_10_nes.png" id="2_43n76"]
[ext_resource type="Texture2D" uid="uid://ccjihsk6w8sow" path="res://sprites/BFT - Mega Metroidvania Tileset.png" id="3_43n76"]
[ext_resource type="Texture2D" uid="uid://c04306ag4ro5j" path="res://sprites/cave_tileset.png" id="4_i332m"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_43n76"]
texture = ExtResource("1_2p3w4")
@@ -1054,6 +1056,980 @@ texture = ExtResource("2_43n76")
13:11/0 = 0
13:11/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_i332m"]
texture = ExtResource("3_43n76")
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
3:0/0 = 0
3:0/0/terrain_set = 0
3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:0/0 = 0
4:0/0/terrain_set = 0
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:0/0 = 0
5:0/0/terrain_set = 0
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:0/0 = 0
6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:0/0 = 0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:0/0 = 0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:0/0 = 0
10:0/0 = 0
12:0/0 = 0
0:1/0 = 0
1:1/0 = 0
2:1/0 = 0
3:1/0 = 0
3:1/0/terrain_set = 0
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:1/0 = 0
4:1/0/terrain_set = 0
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:1/0 = 0
5:1/0/terrain_set = 0
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:1/0 = 0
6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:1/0 = 0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:1/0 = 0
12:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
3:2/0 = 0
3:2/0/terrain_set = 0
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:2/0 = 0
4:2/0/terrain_set = 0
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:2/0 = 0
5:2/0/terrain_set = 0
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:2/0 = 0
6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:2/0 = 0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:2/0 = 0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:2/0 = 0
12:2/0 = 0
0:3/0 = 0
0:3/0/terrain_set = 0
0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:3/0 = 0
1:3/0/terrain_set = 0
1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:3/0 = 0
2:3/0/terrain_set = 0
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:3/0 = 0
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:3/0 = 0
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:3/0 = 0
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:3/0 = 0
6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:3/0 = 0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:3/0 = 0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:3/0 = 0
12:3/0 = 0
0:4/0 = 0
0:4/0/terrain_set = 0
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:4/0 = 0
2:4/0/terrain_set = 0
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:4/0 = 0
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:4/0 = 0
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:4/0 = 0
5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:4/0 = 0
6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:4/0 = 0
7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:4/0 = 0
8:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
12:4/0 = 0
0:5/0 = 0
0:5/0/terrain_set = 0
0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:5/0 = 0
1:5/0/terrain_set = 0
1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:5/0 = 0
2:5/0/terrain_set = 0
2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:5/0 = 0
3:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:5/0 = 0
4:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:5/0 = 0
5:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:5/0 = 0
6:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:5/0 = 0
7:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:5/0 = 0
8:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
10:5/0 = 0
12:5/0 = 0
0:6/0 = 0
0:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:6/0 = 0
1:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:6/0 = 0
2:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:6/0 = 0
4:6/0 = 0
5:6/0 = 0
6:6/0 = 0
6:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:6/0 = 0
7:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:6/0 = 0
8:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:6/0 = 0
10:6/0 = 0
11:6/0 = 0
12:6/0 = 0
0:7/0 = 0
0:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:7/0 = 0
1:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:7/0 = 0
2:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:7/0 = 0
4:7/0 = 0
5:7/0 = 0
6:7/0 = 0
6:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:7/0 = 0
8:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:7/0 = 0
10:7/0 = 0
11:7/0 = 0
0:8/0 = 0
0:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:8/0 = 0
1:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:8/0 = 0
2:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:8/0 = 0
4:8/0 = 0
5:8/0 = 0
6:8/0 = 0
6:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:8/0 = 0
7:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:8/0 = 0
8:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:8/0 = 0
10:8/0 = 0
11:8/0 = 0
0:9/0 = 0
0:9/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:9/0 = 0
1:9/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:9/0 = 0
2:9/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:9/0 = 0
4:9/0 = 0
5:9/0 = 0
6:9/0 = 0
7:9/0 = 0
8:9/0 = 0
9:9/0 = 0
10:9/0 = 0
11:9/0 = 0
12:9/0 = 0
0:10/0 = 0
0:10/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:10/0 = 0
2:10/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:10/0 = 0
6:10/0 = 0
8:10/0 = 0
9:10/0 = 0
10:10/0 = 0
11:10/0 = 0
12:10/0 = 0
0:11/0 = 0
0:11/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:11/0 = 0
1:11/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:11/0 = 0
2:11/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:11/0 = 0
4:11/0 = 0
5:11/0 = 0
6:11/0 = 0
7:11/0 = 0
8:11/0 = 0
9:11/0 = 0
10:11/0 = 0
11:11/0 = 0
12:11/0 = 0
0:12/0 = 0
0:12/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:12/0 = 0
1:12/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:12/0 = 0
2:12/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:12/0 = 0
3:12/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:12/0 = 0
4:12/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:12/0 = 0
5:12/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:12/0 = 0
7:12/0 = 0
8:12/0 = 0
9:12/0 = 0
10:12/0 = 0
11:12/0 = 0
12:12/0 = 0
0:13/0 = 0
0:13/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:13/0 = 0
1:13/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:13/0 = 0
2:13/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:13/0 = 0
3:13/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:13/0 = 0
4:13/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:13/0 = 0
5:13/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:13/0 = 0
8:13/0 = 0
9:13/0 = 0
10:13/0 = 0
11:13/0 = 0
12:13/0 = 0
0:14/0 = 0
0:14/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:14/0 = 0
1:14/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:14/0 = 0
2:14/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:14/0 = 0
3:14/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:14/0 = 0
4:14/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:14/0 = 0
5:14/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:14/0 = 0
7:14/0 = 0
8:14/0 = 0
9:14/0 = 0
10:14/0 = 0
11:14/0 = 0
12:14/0 = 0
0:15/0 = 0
1:15/0 = 0
2:15/0 = 0
3:15/0 = 0
4:15/0 = 0
5:15/0 = 0
6:15/0 = 0
7:15/0 = 0
8:15/0 = 0
9:15/0 = 0
11:15/0 = 0
12:15/0 = 0
3:16/0 = 0
8:16/0 = 0
0:17/0 = 0
1:17/0 = 0
2:17/0 = 0
3:17/0 = 0
4:17/0 = 0
5:17/0 = 0
6:17/0 = 0
7:17/0 = 0
8:17/0 = 0
9:17/0 = 0
10:17/0 = 0
11:17/0 = 0
0:18/0 = 0
1:18/0 = 0
2:18/0 = 0
3:18/0 = 0
4:18/0 = 0
5:18/0 = 0
6:18/0 = 0
7:18/0 = 0
8:18/0 = 0
9:18/0 = 0
10:18/0 = 0
11:18/0 = 0
0:19/0 = 0
1:19/0 = 0
2:19/0 = 0
3:19/0 = 0
4:19/0 = 0
5:19/0 = 0
6:19/0 = 0
7:19/0 = 0
8:19/0 = 0
9:19/0 = 0
10:19/0 = 0
11:19/0 = 0
0:20/0 = 0
1:20/0 = 0
2:20/0 = 0
3:20/0 = 0
4:20/0 = 0
5:20/0 = 0
6:20/0 = 0
7:20/0 = 0
8:20/0 = 0
9:20/0 = 0
10:20/0 = 0
11:20/0 = 0
0:21/0 = 0
2:21/0 = 0
3:21/0 = 0
4:21/0 = 0
5:21/0 = 0
6:21/0 = 0
7:21/0 = 0
8:21/0 = 0
9:21/0 = 0
10:21/0 = 0
0:22/0 = 0
1:22/0 = 0
2:22/0 = 0
3:22/0 = 0
4:22/0 = 0
5:22/0 = 0
6:22/0 = 0
7:22/0 = 0
8:22/0 = 0
9:22/0 = 0
10:22/0 = 0
11:22/0 = 0
0:23/0 = 0
1:23/0 = 0
2:23/0 = 0
3:23/0 = 0
4:23/0 = 0
5:23/0 = 0
6:23/0 = 0
7:23/0 = 0
8:23/0 = 0
9:23/0 = 0
10:23/0 = 0
11:23/0 = 0
0:24/0 = 0
1:24/0 = 0
2:24/0 = 0
6:24/0 = 0
7:24/0 = 0
8:24/0 = 0
9:24/0 = 0
10:24/0 = 0
11:24/0 = 0
0:25/0 = 0
1:25/0 = 0
6:25/0 = 0
7:25/0 = 0
8:25/0 = 0
9:25/0 = 0
10:25/0 = 0
11:25/0 = 0
0:26/0 = 0
1:26/0 = 0
2:26/0 = 0
6:26/0 = 0
7:26/0 = 0
8:26/0 = 0
9:26/0 = 0
10:26/0 = 0
11:26/0 = 0
0:27/0 = 0
1:27/0 = 0
2:27/0 = 0
3:27/0 = 0
4:27/0 = 0
5:27/0 = 0
6:27/0 = 0
7:27/0 = 0
8:27/0 = 0
0:28/0 = 0
1:28/0 = 0
2:28/0 = 0
3:28/0 = 0
4:28/0 = 0
5:28/0 = 0
6:28/0 = 0
7:28/0 = 0
8:28/0 = 0
9:28/0 = 0
10:28/0 = 0
11:28/0 = 0
0:29/0 = 0
1:29/0 = 0
2:29/0 = 0
3:29/0 = 0
4:29/0 = 0
5:29/0 = 0
6:29/0 = 0
7:29/0 = 0
8:29/0 = 0
9:29/0 = 0
10:29/0 = 0
11:29/0 = 0
12:29/0 = 0
0:30/0 = 0
1:30/0 = 0
2:30/0 = 0
3:30/0 = 0
4:30/0 = 0
5:30/0 = 0
6:30/0 = 0
7:30/0 = 0
8:30/0 = 0
9:30/0 = 0
10:30/0 = 0
11:30/0 = 0
0:31/0 = 0
1:31/0 = 0
2:31/0 = 0
3:31/0 = 0
4:31/0 = 0
5:31/0 = 0
6:31/0 = 0
7:31/0 = 0
8:31/0 = 0
9:31/0 = 0
10:31/0 = 0
11:31/0 = 0
0:32/0 = 0
1:32/0 = 0
2:32/0 = 0
3:32/0 = 0
4:32/0 = 0
5:32/0 = 0
6:32/0 = 0
7:32/0 = 0
8:32/0 = 0
9:32/0 = 0
10:32/0 = 0
11:32/0 = 0
0:33/0 = 0
1:33/0 = 0
2:33/0 = 0
3:33/0 = 0
4:33/0 = 0
5:33/0 = 0
6:33/0 = 0
7:33/0 = 0
8:33/0 = 0
9:33/0 = 0
10:33/0 = 0
11:33/0 = 0
0:34/0 = 0
1:34/0 = 0
2:34/0 = 0
3:34/0 = 0
4:34/0 = 0
5:34/0 = 0
6:34/0 = 0
7:34/0 = 0
8:34/0 = 0
9:34/0 = 0
10:34/0 = 0
11:34/0 = 0
0:35/0 = 0
1:35/0 = 0
2:35/0 = 0
3:35/0 = 0
4:35/0 = 0
5:35/0 = 0
6:35/0 = 0
7:35/0 = 0
8:35/0 = 0
9:35/0 = 0
10:35/0 = 0
11:35/0 = 0
0:36/0 = 0
1:36/0 = 0
2:36/0 = 0
3:36/0 = 0
4:36/0 = 0
5:36/0 = 0
6:36/0 = 0
7:36/0 = 0
8:36/0 = 0
0:37/0 = 0
1:37/0 = 0
2:37/0 = 0
3:37/0 = 0
4:37/0 = 0
5:37/0 = 0
6:37/0 = 0
7:37/0 = 0
8:37/0 = 0
0:38/0 = 0
1:38/0 = 0
2:38/0 = 0
3:38/0 = 0
4:38/0 = 0
5:38/0 = 0
6:38/0 = 0
7:38/0 = 0
8:38/0 = 0
0:39/0 = 0
1:39/0 = 0
2:39/0 = 0
3:39/0 = 0
4:39/0 = 0
5:39/0 = 0
0:40/0 = 0
1:40/0 = 0
2:40/0 = 0
3:40/0 = 0
4:40/0 = 0
5:40/0 = 0
0:41/0 = 0
1:41/0 = 0
2:41/0 = 0
3:41/0 = 0
4:41/0 = 0
5:41/0 = 0
0:42/0 = 0
1:42/0 = 0
2:42/0 = 0
3:42/0 = 0
3:42/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:42/0 = 0
4:42/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:42/0 = 0
5:42/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:42/0 = 0
6:42/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:42/0 = 0
7:42/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:42/0 = 0
8:42/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:42/0 = 0
10:42/0 = 0
11:42/0 = 0
0:43/0 = 0
1:43/0 = 0
2:43/0 = 0
3:43/0 = 0
3:43/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:43/0 = 0
5:43/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:43/0 = 0
6:43/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:43/0 = 0
7:43/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:43/0 = 0
8:43/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:43/0 = 0
10:43/0 = 0
11:43/0 = 0
0:44/0 = 0
1:44/0 = 0
2:44/0 = 0
3:44/0 = 0
3:44/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:44/0 = 0
4:44/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:44/0 = 0
5:44/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:44/0 = 0
6:44/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:44/0 = 0
7:44/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:44/0 = 0
8:44/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:44/0 = 0
10:44/0 = 0
11:44/0 = 0
1:4/0 = 0
1:4/0/terrain_set = 0
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_q7rhw"]
texture = ExtResource("4_i332m")
0:0/0 = 0
0:0/0/terrain_set = 0
0:0/0/terrain = 3
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:0/0/terrains_peering_bit/right_side = 3
0:0/0/terrains_peering_bit/bottom_right_corner = 3
0:0/0/terrains_peering_bit/bottom_side = 3
1:0/0 = 0
1:0/0/terrain_set = 0
1:0/0/terrain = 3
1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:0/0/terrains_peering_bit/right_side = 3
1:0/0/terrains_peering_bit/bottom_right_corner = 3
1:0/0/terrains_peering_bit/bottom_side = 3
1:0/0/terrains_peering_bit/bottom_left_corner = 3
1:0/0/terrains_peering_bit/left_side = 3
2:0/0 = 0
2:0/0/terrain_set = 0
2:0/0/terrain = 3
2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:0/0/terrains_peering_bit/bottom_side = 3
2:0/0/terrains_peering_bit/bottom_left_corner = 3
2:0/0/terrains_peering_bit/left_side = 3
3:0/0 = 0
3:0/0/terrain_set = 0
3:0/0/terrain = 3
3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:0/0/terrains_peering_bit/bottom_side = 3
4:0/0 = 0
4:0/0/terrain_set = 0
4:0/0/terrain = 3
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:0/0/terrains_peering_bit/right_side = 3
4:0/0/terrains_peering_bit/bottom_side = 3
5:0/0 = 0
5:0/0/terrain_set = 0
5:0/0/terrain = 3
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:0/0/terrains_peering_bit/right_side = 3
5:0/0/terrains_peering_bit/bottom_side = 3
5:0/0/terrains_peering_bit/bottom_left_corner = 3
5:0/0/terrains_peering_bit/left_side = 3
6:0/0 = 0
6:0/0/terrain_set = 0
6:0/0/terrain = 3
6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:0/0/terrains_peering_bit/right_side = 3
6:0/0/terrains_peering_bit/bottom_right_corner = 3
6:0/0/terrains_peering_bit/bottom_side = 3
6:0/0/terrains_peering_bit/left_side = 3
7:0/0 = 0
7:0/0/terrain_set = 0
7:0/0/terrain = 3
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:0/0/terrains_peering_bit/bottom_side = 3
7:0/0/terrains_peering_bit/left_side = 3
8:0/0 = 0
8:0/0/terrain_set = 0
8:0/0/terrain = 3
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:0/0/terrains_peering_bit/right_side = 3
8:0/0/terrains_peering_bit/bottom_side = 3
8:0/0/terrains_peering_bit/left_side = 3
9:0/0 = 0
9:0/0/terrain_set = 0
9:0/0/terrain = 3
9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:0/0/terrains_peering_bit/right_side = 3
9:0/0/terrains_peering_bit/bottom_right_corner = 3
9:0/0/terrains_peering_bit/bottom_side = 3
9:0/0/terrains_peering_bit/left_side = 3
9:0/0/terrains_peering_bit/top_left_corner = 3
9:0/0/terrains_peering_bit/top_side = 3
0:1/0 = 0
0:1/0/terrain_set = 0
0:1/0/terrain = 3
0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:1/0/terrains_peering_bit/right_side = 3
0:1/0/terrains_peering_bit/bottom_right_corner = 3
0:1/0/terrains_peering_bit/bottom_side = 3
0:1/0/terrains_peering_bit/top_side = 3
0:1/0/terrains_peering_bit/top_right_corner = 3
1:1/0 = 0
1:1/0/terrain_set = 0
1:1/0/terrain = 3
1:1/0/terrains_peering_bit/right_side = 3
1:1/0/terrains_peering_bit/bottom_right_corner = 3
1:1/0/terrains_peering_bit/bottom_side = 3
1:1/0/terrains_peering_bit/bottom_left_corner = 3
1:1/0/terrains_peering_bit/left_side = 3
1:1/0/terrains_peering_bit/top_left_corner = 3
1:1/0/terrains_peering_bit/top_side = 3
1:1/0/terrains_peering_bit/top_right_corner = 3
2:1/0 = 0
2:1/0/terrain_set = 0
2:1/0/terrain = 3
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:1/0/terrains_peering_bit/bottom_side = 3
2:1/0/terrains_peering_bit/bottom_left_corner = 3
2:1/0/terrains_peering_bit/left_side = 3
2:1/0/terrains_peering_bit/top_left_corner = 3
2:1/0/terrains_peering_bit/top_side = 3
3:1/0 = 0
3:1/0/terrain_set = 0
3:1/0/terrain = 3
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:1/0/terrains_peering_bit/bottom_side = 3
3:1/0/terrains_peering_bit/top_side = 3
4:1/0 = 0
4:1/0/terrain_set = 0
4:1/0/terrain = 3
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:1/0/terrains_peering_bit/right_side = 3
4:1/0/terrains_peering_bit/bottom_side = 3
4:1/0/terrains_peering_bit/top_side = 3
4:1/0/terrains_peering_bit/top_right_corner = 3
5:1/0 = 0
5:1/0/terrain_set = 0
5:1/0/terrain = 3
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:1/0/terrains_peering_bit/right_side = 3
5:1/0/terrains_peering_bit/bottom_side = 3
5:1/0/terrains_peering_bit/bottom_left_corner = 3
5:1/0/terrains_peering_bit/left_side = 3
5:1/0/terrains_peering_bit/top_left_corner = 3
5:1/0/terrains_peering_bit/top_side = 3
5:1/0/terrains_peering_bit/top_right_corner = 3
6:1/0 = 0
6:1/0/terrain_set = 0
6:1/0/terrain = 3
6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:1/0/terrains_peering_bit/right_side = 3
6:1/0/terrains_peering_bit/bottom_right_corner = 3
6:1/0/terrains_peering_bit/bottom_side = 3
6:1/0/terrains_peering_bit/left_side = 3
6:1/0/terrains_peering_bit/top_left_corner = 3
6:1/0/terrains_peering_bit/top_side = 3
6:1/0/terrains_peering_bit/top_right_corner = 3
7:1/0 = 0
7:1/0/terrain_set = 0
7:1/0/terrain = 3
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:1/0/terrains_peering_bit/bottom_side = 3
7:1/0/terrains_peering_bit/left_side = 3
7:1/0/terrains_peering_bit/top_left_corner = 3
7:1/0/terrains_peering_bit/top_side = 3
8:1/0 = 0
8:1/0/terrain_set = 0
8:1/0/terrain = 3
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:1/0/terrains_peering_bit/right_side = 3
8:1/0/terrains_peering_bit/bottom_side = 3
8:1/0/terrains_peering_bit/left_side = 3
8:1/0/terrains_peering_bit/top_left_corner = 3
8:1/0/terrains_peering_bit/top_side = 3
8:1/0/terrains_peering_bit/top_right_corner = 3
9:1/0 = 0
9:1/0/terrain_set = 0
9:1/0/terrain = 3
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:1/0/terrains_peering_bit/right_side = 3
9:1/0/terrains_peering_bit/bottom_side = 3
9:1/0/terrains_peering_bit/bottom_left_corner = 3
9:1/0/terrains_peering_bit/left_side = 3
9:1/0/terrains_peering_bit/top_side = 3
9:1/0/terrains_peering_bit/top_right_corner = 3
0:2/0 = 0
0:2/0/terrain_set = 0
0:2/0/terrain = 3
0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:2/0/terrains_peering_bit/right_side = 3
0:2/0/terrains_peering_bit/top_side = 3
0:2/0/terrains_peering_bit/top_right_corner = 3
1:2/0 = 0
1:2/0/terrain_set = 0
1:2/0/terrain = 3
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:2/0/terrains_peering_bit/right_side = 3
1:2/0/terrains_peering_bit/left_side = 3
1:2/0/terrains_peering_bit/top_left_corner = 3
1:2/0/terrains_peering_bit/top_side = 3
1:2/0/terrains_peering_bit/top_right_corner = 3
2:2/0 = 0
2:2/0/terrain_set = 0
2:2/0/terrain = 3
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:2/0/terrains_peering_bit/left_side = 3
2:2/0/terrains_peering_bit/top_left_corner = 3
2:2/0/terrains_peering_bit/top_side = 3
3:2/0 = 0
3:2/0/terrain_set = 0
3:2/0/terrain = 3
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:2/0/terrains_peering_bit/top_side = 3
4:2/0 = 0
4:2/0/terrain_set = 0
4:2/0/terrain = 3
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:2/0/terrains_peering_bit/right_side = 3
4:2/0/terrains_peering_bit/bottom_right_corner = 3
4:2/0/terrains_peering_bit/bottom_side = 3
4:2/0/terrains_peering_bit/top_side = 3
5:2/0 = 0
5:2/0/terrain_set = 0
5:2/0/terrain = 3
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:2/0/terrains_peering_bit/bottom_right_corner = 3
5:2/0/terrains_peering_bit/bottom_side = 3
5:2/0/terrains_peering_bit/bottom_left_corner = 3
5:2/0/terrains_peering_bit/left_side = 3
5:2/0/terrains_peering_bit/top_left_corner = 3
5:2/0/terrains_peering_bit/top_side = 3
6:2/0 = 0
6:2/0/terrain_set = 0
6:2/0/terrain = 3
6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:2/0/terrains_peering_bit/right_side = 3
6:2/0/terrains_peering_bit/bottom_right_corner = 3
6:2/0/terrains_peering_bit/bottom_side = 3
6:2/0/terrains_peering_bit/bottom_left_corner = 3
6:2/0/terrains_peering_bit/top_side = 3
6:2/0/terrains_peering_bit/top_right_corner = 3
7:2/0 = 0
7:2/0/terrain_set = 0
7:2/0/terrain = 3
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:2/0/terrains_peering_bit/bottom_side = 3
7:2/0/terrains_peering_bit/bottom_left_corner = 3
7:2/0/terrains_peering_bit/left_side = 3
7:2/0/terrains_peering_bit/top_side = 3
8:2/0 = 0
8:2/0/terrain_set = 0
8:2/0/terrain = 3
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:2/0/terrains_peering_bit/right_side = 3
8:2/0/terrains_peering_bit/bottom_right_corner = 3
8:2/0/terrains_peering_bit/bottom_side = 3
8:2/0/terrains_peering_bit/bottom_left_corner = 3
8:2/0/terrains_peering_bit/left_side = 3
8:2/0/terrains_peering_bit/top_side = 3
9:2/0 = 0
9:2/0/terrain_set = 0
9:2/0/terrain = 3
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:2/0/terrains_peering_bit/right_side = 3
9:2/0/terrains_peering_bit/bottom_right_corner = 3
9:2/0/terrains_peering_bit/bottom_side = 3
10:2/0 = 0
10:2/0/terrain_set = 0
10:2/0/terrain = 3
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
10:2/0/terrains_peering_bit/bottom_side = 3
10:2/0/terrains_peering_bit/bottom_left_corner = 3
10:2/0/terrains_peering_bit/left_side = 3
0:3/0 = 0
0:3/0/terrain_set = 0
0:3/0/terrain = 3
0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:3/0/terrains_peering_bit/right_side = 3
1:3/0 = 0
1:3/0/terrain_set = 0
1:3/0/terrain = 3
1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:3/0/terrains_peering_bit/right_side = 3
1:3/0/terrains_peering_bit/left_side = 3
2:3/0 = 0
2:3/0/terrain_set = 0
2:3/0/terrain = 3
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:3/0/terrains_peering_bit/left_side = 3
3:3/0 = 0
3:3/0/terrain_set = 0
3:3/0/terrain = 3
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:3/0 = 0
4:3/0/terrain_set = 0
4:3/0/terrain = 3
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:3/0/terrains_peering_bit/right_side = 3
4:3/0/terrains_peering_bit/top_side = 3
5:3/0 = 0
5:3/0/terrain_set = 0
5:3/0/terrain = 3
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:3/0/terrains_peering_bit/right_side = 3
5:3/0/terrains_peering_bit/left_side = 3
5:3/0/terrains_peering_bit/top_left_corner = 3
5:3/0/terrains_peering_bit/top_side = 3
6:3/0 = 0
6:3/0/terrain_set = 0
6:3/0/terrain = 3
6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:3/0/terrains_peering_bit/right_side = 3
6:3/0/terrains_peering_bit/left_side = 3
6:3/0/terrains_peering_bit/top_side = 3
6:3/0/terrains_peering_bit/top_right_corner = 3
7:3/0 = 0
7:3/0/terrain_set = 0
7:3/0/terrain = 3
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:3/0/terrains_peering_bit/left_side = 3
7:3/0/terrains_peering_bit/top_side = 3
8:3/0 = 0
8:3/0/terrain_set = 0
8:3/0/terrain = 3
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:3/0/terrains_peering_bit/right_side = 3
8:3/0/terrains_peering_bit/left_side = 3
8:3/0/terrains_peering_bit/top_side = 3
9:3/0 = 0
9:3/0/terrain_set = 0
9:3/0/terrain = 3
9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
9:3/0/terrains_peering_bit/right_side = 3
9:3/0/terrains_peering_bit/top_side = 3
9:3/0/terrains_peering_bit/top_right_corner = 3
10:3/0 = 0
10:3/0/terrain_set = 0
10:3/0/terrain = 3
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
10:3/0/terrains_peering_bit/left_side = 3
10:3/0/terrains_peering_bit/top_left_corner = 3
10:3/0/terrains_peering_bit/top_side = 3
4:4/0 = 0
4:4/0/terrain_set = 0
4:4/0/terrain = 3
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:4/0/terrains_peering_bit/right_side = 3
4:4/0/terrains_peering_bit/bottom_side = 3
4:4/0/terrains_peering_bit/top_side = 3
5:4/0 = 0
5:4/0/terrain_set = 0
5:4/0/terrain = 3
5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:4/0/terrains_peering_bit/right_side = 3
5:4/0/terrains_peering_bit/bottom_side = 3
5:4/0/terrains_peering_bit/bottom_left_corner = 3
5:4/0/terrains_peering_bit/left_side = 3
5:4/0/terrains_peering_bit/top_left_corner = 3
5:4/0/terrains_peering_bit/top_side = 3
6:4/0 = 0
6:4/0/terrain_set = 0
6:4/0/terrain = 3
6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:4/0/terrains_peering_bit/right_side = 3
6:4/0/terrains_peering_bit/bottom_right_corner = 3
6:4/0/terrains_peering_bit/bottom_side = 3
6:4/0/terrains_peering_bit/left_side = 3
6:4/0/terrains_peering_bit/top_side = 3
6:4/0/terrains_peering_bit/top_right_corner = 3
7:4/0 = 0
7:4/0/terrain_set = 0
7:4/0/terrain = 3
7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:4/0/terrains_peering_bit/bottom_side = 3
7:4/0/terrains_peering_bit/left_side = 3
7:4/0/terrains_peering_bit/top_side = 3
8:4/0 = 0
8:4/0/terrain_set = 0
8:4/0/terrain = 3
8:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:4/0/terrains_peering_bit/right_side = 3
8:4/0/terrains_peering_bit/bottom_side = 3
8:4/0/terrains_peering_bit/left_side = 3
8:4/0/terrains_peering_bit/top_side = 3
[resource]
physics_layer_0/collision_layer = 1
physics_layer_0/collision_mask = 93
@@ -1064,5 +2040,9 @@ terrain_set_0/terrain_1/name = "Platforms"
terrain_set_0/terrain_1/color = Color(0.46875, 0.5, 0.25, 1)
terrain_set_0/terrain_2/name = "Forest"
terrain_set_0/terrain_2/color = Color(0.536634, 0.836478, 0.371357, 1)
terrain_set_0/terrain_3/name = "Cave"
terrain_set_0/terrain_3/color = Color(0.559155, 0.106507, 0.731722, 1)
sources/1 = SubResource("TileSetAtlasSource_4xq2o")
sources/0 = SubResource("TileSetAtlasSource_43n76")
sources/2 = SubResource("TileSetAtlasSource_i332m")
sources/3 = SubResource("TileSetAtlasSource_q7rhw")

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,46 @@
using Godot;
namespace Mr.BrickAdventures.scripts.components;
[GlobalClass]
public partial class CleanupOnCollisionComponent : Node
{
[Export(PropertyHint.Range, "0, 5, 0.1")] public float CleanupDelay { get; set; } = 0.5f;
private RigidBody2D _body;
private CleanupComponent _cleanupComponent;
private bool _isCleaningUp = false;
public override void _Ready()
{
_body = Owner as RigidBody2D;
if (_body == null)
{
GD.PrintErr("CleanupOnCollisionComponent must be attached to a RigidBody2D.");
SetProcess(false);
return;
}
_cleanupComponent = Owner.GetNode<CleanupComponent>("CleanupComponent");
if (_cleanupComponent == null)
{
GD.PrintErr("CleanupOnCollisionComponent requires a CleanupComponent on the same node.");
SetProcess(false);
return;
}
_body.BodyEntered += (_) => OnBodyEntered();
}
private async void OnBodyEntered()
{
if (_isCleaningUp) return;
_isCleaningUp = true;
await ToSignal(GetTree().CreateTimer(CleanupDelay), Timer.SignalName.Timeout);
_cleanupComponent?.CleanUp();
}
}

View File

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

View File

@@ -0,0 +1,47 @@
using Godot;
namespace Mr.BrickAdventures.scripts.components;
[GlobalClass]
public partial class FallOnDetectionComponent : Node2D
{
[Export] public Area2D DetectionArea { get; set; }
[Export] public RigidBody2D TargetBody { get; set; }
[Export] public float FallDelay { get; set; } = 0.2f;
private bool _hasTriggered = false;
public override void _Ready()
{
if (DetectionArea == null)
{
GD.PrintErr("FallOnDetectionComponent: DetectionArea is not set.");
SetProcess(false);
return;
}
if (TargetBody == null)
{
GD.PrintErr("FallOnDetectionComponent: TargetBody is not set.");
SetProcess(false);
return;
}
DetectionArea.BodyEntered += OnBodyEntered;
}
private async void OnBodyEntered(Node2D body)
{
if (_hasTriggered) return;
_hasTriggered = true;
if (FallDelay > 0)
{
await ToSignal(GetTree().CreateTimer(FallDelay), Timer.SignalName.Timeout);
}
if (IsInstanceValid(TargetBody))
{
TargetBody.GravityScale = 1.0f;
}
}
}

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ccjihsk6w8sow"
path="res://.godot/imported/BFT - Mega Metroidvania Tileset.png-19c14f630afbe7f12271eafb441c25f8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/BFT - Mega Metroidvania Tileset.png"
dest_files=["res://.godot/imported/BFT - Mega Metroidvania Tileset.png-19c14f630afbe7f12271eafb441c25f8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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

BIN
sprites/cave_tileset.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c04306ag4ro5j"
path="res://.godot/imported/cave_tileset.png-05ea12166d619def5fd5eeabed0dd0ad.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/cave_tileset.png"
dest_files=["res://.godot/imported/cave_tileset.png-05ea12166d619def5fd5eeabed0dd0ad.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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

BIN
sprites/emotes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

34
sprites/emotes.png.import Normal file
View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cbc5a7ckdduex"
path="res://.godot/imported/emotes.png-dc9b5f07b72b849d0b0397d26d9c24d6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/emotes.png"
dest_files=["res://.godot/imported/emotes.png-dc9b5f07b72b849d0b0397d26d9c24d6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,105 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="192"
height="192"
viewBox="0 0 192 192"
version="1.1"
id="svg1"
inkscape:version="1.4.1 (93de688d07, 2025-03-30)"
sodipodi:docname="grass_tile.svg"
inkscape:export-filename="grass_tile.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:document-units="px"
inkscape:zoom="4.1513748"
inkscape:cx="39.986753"
inkscape:cy="96.474064"
inkscape:window-width="2560"
inkscape:window-height="1374"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
showgrid="true">
<inkscape:grid
id="grid1"
units="px"
originx="0"
originy="0"
spacingx="8"
spacingy="8"
empcolor="#0099e5"
empopacity="0.30196078"
color="#0099e5"
opacity="0.14901961"
empspacing="8"
enabled="true"
visible="true" />
</sodipodi:namedview>
<defs
id="defs1">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect2"
is_visible="true"
lpeversion="1"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
radius="0"
unit="px"
method="auto"
mode="F"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false" />
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:#ff9959;stroke:none;stroke-width:0.687408"
id="rect2"
width="192"
height="144"
x="0"
y="48"
sodipodi:type="rect"
inkscape:label="mid"
ry="15.251407"
rx="0" />
<rect
style="fill:#bf6060;stroke:none;stroke-width:0.627513"
id="rect3"
width="160"
height="144"
x="16.000006"
y="24"
sodipodi:type="rect"
inkscape:label="bottom"
ry="12" />
<path
id="rect1"
style="display:inline;fill:#21a65d;stroke-width:1.6"
d="M 43,0 C 19,0 0,22.400001 0,51.2 V 64 H 192 V 51.2 C 192,22.400001 173,0 149,0 Z"
inkscape:label="top" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

BIN
sprites/nestle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

34
sprites/nestle.png.import Normal file
View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bfs4i3guqvk1d"
path="res://.godot/imported/nestle.png-acabfd796145590e3624a1eec84d8be7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sprites/nestle.png"
dest_files=["res://.godot/imported/nestle.png-acabfd796145590e3624a1eec84d8be7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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