Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions project.godot
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,10 @@ locale/translations_pot_files=PackedStringArray("res://scenes/menus/title/compon
2d_physics/layer_8="enemies hitbox"
2d_physics/layer_9="repellable"
2d_physics/layer_10="non_walkable_floor"
2d_physics/layer_11="bridge"
2d_physics/layer_12="bridge_edge"
2d_physics/layer_13="hookable"
2d_physics/layer_14="void"

[physics]

Expand Down
201 changes: 201 additions & 0 deletions scenes/game_elements/characters/components/bridge_gym.tscn

Large diffs are not rendered by default.

17 changes: 16 additions & 1 deletion scenes/game_elements/characters/enemies/guard/guard.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
[ext_resource type="SpriteFrames" uid="uid://ovu5wqo15s5g" path="res://scenes/quests/template_quests/NO_EDIT/1_NO_EDIT_stealth/NO_EDIT_stealth_components/NO_EDIT_guard_enemy.tres" id="5_mswbt"]
[ext_resource type="Script" uid="uid://dy68p7gf07pi3" path="res://scenes/game_logic/sprite_behaviors/character_sprite_behavior.gd" id="7_klpct"]
[ext_resource type="Script" uid="uid://b3hx1n2yl88qr" path="res://scenes/game_logic/character_animation_player_behavior.gd" id="9_8vt0k"]
[ext_resource type="Script" uid="uid://dn4ijphw4e84s" path="res://scenes/game_logic/bridge_crossing_behavior.gd" id="10_mswbt"]

[sub_resource type="CircleShape2D" id="CircleShape2D_g173s"]
radius = 35.0
Expand Down Expand Up @@ -200,9 +201,12 @@ _data = {
&"walk": SubResource("Animation_8vt0k")
}

[sub_resource type="CircleShape2D" id="CircleShape2D_innil"]
radius = 7.0

[node name="Guard" type="CharacterBody2D" unique_id=689832587 groups=["guard_enemy"]]
collision_layer = 0
collision_mask = 528
collision_mask = 8720
motion_mode = 1
script = ExtResource("1_g173s")

Expand Down Expand Up @@ -336,6 +340,17 @@ volume_db = -2.0
max_distance = 500.0
bus = &"SFX"

[node name="BridgeCrossingBehavior" type="Area2D" parent="." unique_id=65400463 node_paths=PackedStringArray("character")]
collision_layer = 0
collision_mask = 1024
script = ExtResource("10_mswbt")
character = NodePath("..")
metadata/_custom_type_script = "uid://dn4ijphw4e84s"

[node name="CollisionShape2D" type="CollisionShape2D" parent="BridgeCrossingBehavior" unique_id=47726962]
shape = SubResource("CircleShape2D_innil")
debug_color = Color(0.8414687, 0.38268504, 0, 0.41960785)

[connection signal="body_entered" from="InstantDetectionArea" to="." method="_on_instant_detection_area_body_entered"]
[connection signal="body_entered" from="DetectionArea" to="." method="_on_detection_area_body_entered"]
[connection signal="body_exited" from="DetectionArea" to="." method="_on_detection_area_body_exited"]
4 changes: 4 additions & 0 deletions scenes/game_elements/characters/player/components/player.gd
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ var _initial_speeds: CharacterSpeeds
@onready var player_repel: Node2D = %PlayerRepel
@onready var player_hook: PlayerHook = %PlayerHook
@onready var player_sprite: AnimatedSprite2D = %PlayerSprite
@onready var bridge_crossing_behavior: BridgeCrossingBehavior = %BridgeCrossingBehavior
@onready var _walk_sound: AudioStreamPlayer2D = %WalkSound


Expand All @@ -81,15 +82,18 @@ func _set_mode(new_mode: Mode) -> void:
_toggle_player_behavior(input_walk_behavior, true)
_toggle_player_behavior(player_interaction, true)
_toggle_abilities()
bridge_crossing_behavior.monitoring = true
Mode.SYSTEM_CONTROLLED:
_toggle_player_behavior(input_walk_behavior, false)
_toggle_player_behavior(player_interaction, true)
_toggle_abilities()
bridge_crossing_behavior.monitoring = false
Mode.DEFEATED:
_toggle_player_behavior(input_walk_behavior, false)
_toggle_player_behavior(player_interaction, false)
_toggle_player_behavior(player_repel, false)
_toggle_player_behavior(player_hook, false)
bridge_crossing_behavior.monitoring = false

if mode != previous_mode:
mode_changed.emit(mode)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,7 @@ func pull_string() -> void:
if character.has_method("take_control"):
character.take_control(self)
character.set_collision_mask_value(Enums.CollisionLayers.NON_WALKABLE_FLOOR, false)
character.set_collision_mask_value(Enums.CollisionLayers.VOID, false)

# If the entity has a got_pulled handler, call it and connect to the pull_released signal
# of the HookableArea. The entity is responsible to call it.
Expand All @@ -276,6 +277,7 @@ func _on_pull_released(cancelled: bool) -> void:
## non-walkable floor.
func stop_pulling() -> void:
character.set_collision_mask_value(Enums.CollisionLayers.NON_WALKABLE_FLOOR, true)
character.set_collision_mask_value(Enums.CollisionLayers.VOID, true)
pulling = false
# After pulling, return control to the user.
if character.has_method("return_control"):
Expand Down
19 changes: 18 additions & 1 deletion scenes/game_elements/characters/player/player.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
[ext_resource type="Texture2D" uid="uid://dxaq5piwxqnht" path="res://scenes/game_elements/characters/player/components/dust.png" id="12_3in67"]
[ext_resource type="PackedScene" uid="uid://cl06pid826dtg" path="res://scenes/game_elements/characters/player/components/player_repel.tscn" id="12_tnibl"]
[ext_resource type="PackedScene" uid="uid://b3111eergq5yg" path="res://scenes/game_elements/characters/player/components/player_hook.tscn" id="13_ecbbk"]
[ext_resource type="Script" uid="uid://dn4ijphw4e84s" path="res://scenes/game_logic/bridge_crossing_behavior.gd" id="16_8jhju"]
[ext_resource type="Script" uid="uid://bk52qjv58locq" path="res://scenes/game_logic/light2d_behaviors/artificial_light_behavior.gd" id="16_ecbbk"]
[ext_resource type="Texture2D" uid="uid://b5ooaiyxdrp6a" path="res://scenes/game_elements/components/light_texture_256x256.tres" id="16_tnibl"]

Expand Down Expand Up @@ -349,8 +350,12 @@ _data = {
&"got_hit": SubResource("Animation_4ypcv")
}

[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ecbbk"]
radius = 5.0
height = 21.0

[node name="Player" type="CharacterBody2D" unique_id=296354958 groups=["player"]]
collision_mask = 531
collision_mask = 8723
motion_mode = 1
wall_min_slide_angle = 0.017453292
safe_margin = 1.0
Expand Down Expand Up @@ -458,6 +463,18 @@ unique_name_in_owner = true
root_node = NodePath("../../PlayerRepel")
libraries/ = SubResource("AnimationLibrary_1n58k")

[node name="BridgeCrossingBehavior" type="Area2D" parent="." unique_id=457107742 node_paths=PackedStringArray("character")]
unique_name_in_owner = true
collision_layer = 0
collision_mask = 1024
script = ExtResource("16_8jhju")
character = NodePath("..")

[node name="CollisionShape2D" type="CollisionShape2D" parent="BridgeCrossingBehavior" unique_id=1926006827]
rotation = -1.5708
shape = SubResource("CapsuleShape2D_ecbbk")
debug_color = Color(0.8414687, 0.38268504, 0, 0.41960785)

[connection signal="running_changed" from="InputWalkBehavior" to="PlayerDustParticles" method="set_emitting"]
[connection signal="running_changed" from="InputWalkBehavior" to="AnimationPlayer" method="_on_input_walk_behavior_running_changed"]
[connection signal="aiming_changed" from="PlayerHook" to="." method="_on_player_hook_aiming_changed"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ tile_map_data = PackedByteArray("AAAIAAEABAACAAQAAAAHAAEABAABAAQAAAAGAAEABAABAAQ
tile_set = ExtResource("4_3uytt")

[node name="Bridge" type="TileMapLayer" parent="TileMapLayers" unique_id=1571624698]
tile_map_data = PackedByteArray("AAAQAAgAAwABAAAAAAARAAgAAwABAAAAAAASAAgAAwABAAAAAAATAAgAAwABAAAAAAAUAAgAAwABAAAAAAAPAAgAAwAAAAAAAAAVAAgAAwACAAAAAAASAAUAAwAAAAIAAAASAAQAAwAAAAIAAAASAAMAAwAAAAEAAAASAAYAAwAAAAMAAAARAAEAAwACAAAAAAAQAAEAAwABAAAAAAAPAAEAAwAAAAAAAAA=")
tile_map_data = PackedByteArray("AAAQAAgAAwABAAAAAAARAAgAAwABAAAAAAASAAgAAwABAAAAAAATAAgAAwABAAAAAAAUAAgAAwABAAAAAAAPAAgAAwAAAAAAAAAVAAgAAwACAAAAAAASAAUAAwAAAAIAAAASAAQAAwAAAAIAAAASAAMAAwAAAAEAAAASAAYAAwAAAAMAAQARAAEAAwACAAAAAAAQAAEAAwABAAAAAAAPAAEAAwAAAAAAAAA=")
tile_set = ExtResource("6_obhrw")

[node name="Fence" type="TileMapLayer" parent="TileMapLayers" unique_id=1482788515]
Expand Down
61 changes: 61 additions & 0 deletions scenes/game_logic/bridge_crossing_behavior.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# SPDX-FileCopyrightText: The Threadbare Authors
# SPDX-License-Identifier: MPL-2.0
@tool
class_name BridgeCrossingBehavior
extends Area2D
## Adjusts character collision layers when they walk across bridges
##
## Bridges cross non-walkable floor layers, like water or void, as well as
## cliff edges, which also have collisions to stop the character walking off the
## edge. are walls. This component detects when the character is walking across
## a bridge & adjusts the collisions on the character. Give it a collision
## shape that has the same centre as [member character]'s collision shape but
## is a bit smaller.

## The character controlled by this component. Typically this is this
## node's parent, in which case this will be configured automatically.
@export var character: CharacterBody2D:
set = _set_character


func _set_character(new_value: CharacterBody2D) -> void:
character = new_value
update_configuration_warnings()


func _get_configuration_warnings() -> PackedStringArray:
var warnings := PackedStringArray()
if not character:
warnings.append("No character set.")
return warnings


func _enter_tree() -> void:
if not character and get_parent() is CharacterBody2D:
character = get_parent()


func _ready() -> void:
collision_layer = 0
collision_mask = 0
set_collision_mask_value(Enums.CollisionLayers.BRIDGE, true)

if Engine.is_editor_hint():
return

body_entered.connect(_on_bridge_entered)
body_exited.connect(_on_bridge_exited)


func _on_bridge_entered(_body: Node2D) -> void:
_set_on_bridge(true)


func _on_bridge_exited(_body: Node2D) -> void:
_set_on_bridge(false)


func _set_on_bridge(on_bridge: bool) -> void:
character.set_collision_mask_value(Enums.CollisionLayers.NON_WALKABLE_FLOOR, not on_bridge)
character.set_collision_mask_value(Enums.CollisionLayers.WALLS, not on_bridge)
character.set_collision_mask_value(Enums.CollisionLayers.BRIDGE_EDGE, on_bridge)
1 change: 1 addition & 0 deletions scenes/game_logic/bridge_crossing_behavior.gd.uid
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
uid://dn4ijphw4e84s
3 changes: 3 additions & 0 deletions scenes/globals/enums.gd
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ enum CollisionLayers {
ENEMIES_HITBOX = 8,
REPELLABLE = 9,
NON_WALKABLE_FLOOR = 10,
BRIDGE = 11,
BRIDGE_EDGE = 12,
HOOKABLE = 13,
VOID = 14,
}

## Flags for player abilities
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@

[sub_resource type="Curve2D" id="Curve2D_vnsq3"]
_data = {
"points": PackedVector2Array(0, 0, 0, 0, -20, -31, 0, 0, 0, 0, -21, 353)
"points": PackedVector2Array(0, 0, 0, 0, -20, -31, 0, 0, 0, 0, -22, 771)
}
point_count = 2

Expand Down Expand Up @@ -147,7 +147,6 @@ type = 2
metadata/_custom_type_script = "uid://bgmwplmj3bfls"

[node name="Level" type="Node2D" unique_id=1653863263]
y_sort_enabled = true

[node name="StealthGameLogic" type="Node" parent="." unique_id=884618699]
script = ExtResource("1_f6lvl")
Expand Down Expand Up @@ -178,7 +177,7 @@ tile_map_data = PackedByteArray("AAAJAAcAAAAAAAAAAAAKAAgAAAAAAAAAAAALAAgAAAAAAAA
tile_set = ExtResource("8_v1vyj")

[node name="Stones" type="TileMapLayer" parent="TileMapLayers" unique_id=1628731558]
tile_map_data = PackedByteArray("AAAjAAgABAAAAAIAAAAhAAUABAABAAIAAAAiAAUABAABAAIAAAAgAAYABAACAAIAAAAfAAcABAACAAIAAAAeAAcABAABAAIAAAAdAAcABAABAAIAAAAcAAcABAABAAIAAAAgAAUABAAAAAAAAAAbAAcABAABAAIAAAAaAAcABAABAAIAAAAZAAcABAABAAIAAAAYAAcABAABAAIAAAAXAAcABAABAAIAAAAWAAcABAABAAIAAAAVAAcABAABAAIAAAAUAAcABAABAAIAAAATAAcABAABAAIAAAASAAcABAABAAIAAAARAAcABAABAAIAAAALAAcABAABAAIAAAAMAAcABAABAAIAAAANAAcABAABAAIAAAAOAAcABAABAAIAAAAPAAcABAABAAIAAAAQAAcABAABAAIAAAAKAAcABAAAAAIAAAAJAAYABAAAAAIAAAAFAAMABAACAAIAAAAEAAQABAACAAIAAAADAAQABAABAAIAAAACAAQABAABAAIAAAABAAQABAABAAIAAAAAAAQABAABAAIAAAD//wQABAAAAAIAAAAkAAwABAAAAAIAAAAlAA4ABAAAAAIAAAAlABEABAAAAAIAAAAmABIABAAAAAIAAAAnABIABAABAAIAAAAoABIABAABAAIAAAApABMABAAAAAIAAAAqABMABAABAAIAAAArABMABAABAAIAAAAsABUABAAAAAIAAAAtABYABAAAAAIAAAAuABcABAAAAAIAAAAvABcABAABAAIAAAAwABcABAABAAIAAAAxABcABAABAAIAAAAyABcABAABAAIAAAAzABcABAABAAIAAAA0ABcABAACAAIAAAA1ABQABAABAAIAAAA2ABQABAABAAIAAAA3ABQABAABAAIAAAA4ABQABAABAAIAAAA5ABQABAABAAIAAAA+ABQABAABAAIAAAA9ABQABAABAAIAAAA8ABQABAABAAIAAAA7ABQABAABAAIAAAA6ABQABAABAAIAAAA/ABQABAACAAIAAAA8ABIABAABAAIAAAA9ABIABAABAAIAAAA4AA8ABAABAAQAAAA5AA8ABAABAAQAAAA6AA8ABAABAAQAAAA7AA8ABAABAAQAAAA8AA8ABAABAAQAAAA9AA8ABAABAAQAAABAABIABAABAAIAAABBABIABAABAAIAAABCABIABAABAAIAAABDABIABAABAAIAAABEABIABAACAAIAAABGAA8ABAAAAAIAAABHAA8ABAABAAIAAABIAA8ABAABAAIAAABJAA8ABAABAAIAAABKAA8ABAABAAIAAABLAA8ABAABAAIAAABMAA8ABAACAAIAAABHABMABAAAAAIAAABIABUABAAAAAIAAABJABUABAABAAIAAABKABUABAACAAIAAABLABQABAACAAIAAABOABMABAAAAAIAAABPABMABAABAAIAAABQABMABAABAAIAAABRABMABAABAAIAAABSABMABAABAAIAAABTABMABAABAAIAAABaABMABAABAAIAAABZABMABAABAAIAAABYABMABAABAAIAAABXABMABAABAAIAAABWABMABAABAAIAAABVABMABAABAAIAAABUABMABAABAAIAAABbABQABAAAAAIAAABcABQABAABAAIAAABdABQABAACAAIAAABeABMABAABAAIAAABfABMABAABAAIAAABgABMABAABAAIAAABhABMABAABAAIAAABiABMABAABAAIAAABjABMABAABAAIAAABkABMABAACAAIAAABlABEABAABAAIAAABmABEABAABAAIAAABnABEABAACAAIAAABoAA4ABAABAAIAAABpAA4ABAABAAIAAABqAA4ABAABAAIAAABrAA4ABAABAAIAAABsABAABAAAAAIAAABtABAABAABAAIAAABuABIABAAAAAIAAABzABIABAACAAIAAAB0ABAABAACAAIAAAByABIABAABAAIAAABxABIABAABAAIAAABwABIABAABAAIAAABvABIABAABAAIAAAB0AAwABAACAAIAAAAxAAwABAACAAIAAAAyAAsABAACAAIAAAAwAAwABAABAAIAAAAvAAwABAABAAIAAAAuAAwABAABAAIAAAAtAAwABAABAAIAAAAsAAwABAABAAIAAAArAAwABAABAAIAAAAqAA4ABAACAAIAAAA=")
tile_map_data = PackedByteArray("AAAjAAgABAAAAAIAAAAhAAUABAABAAIAAAAiAAUABAABAAIAAAAgAAYABAACAAIAAAAfAAcABAACAAIAAAAeAAcABAABAAIAAAAdAAcABAABAAIAAAAcAAcABAABAAIAAAAgAAUABAAAAAAAAAAbAAcABAABAAIAAAAaAAcABAABAAIAAAAZAAcABAABAAIAAAAYAAcABAABAAIAAAAXAAcABAABAAIAAAAWAAcABAABAAIAAAAVAAcABAABAAIAAAAUAAcABAABAAIAAAATAAcABAABAAIAAAASAAcABAABAAIAAAARAAcABAABAAIAAAALAAcABAABAAIAAAAMAAcABAABAAIAAAANAAcABAABAAIAAAAOAAcABAABAAIAAAAPAAcABAABAAIAAAAQAAcABAABAAIAAAAKAAcABAAAAAIAAAAJAAYABAAAAAIAAAAFAAMABAACAAIAAAAEAAQABAACAAIAAAADAAQABAABAAIAAAACAAQABAABAAIAAAABAAQABAABAAIAAAAAAAQABAABAAIAAAD//wQABAAAAAIAAAAkAAwABAAAAAIAAAAlAA4ABAAAAAIAAAAlABEABAAAAAIAAAAmABIABAAAAAIAAAAnABIABAABAAIAAAAoABIABAABAAIAAAApABMABAAAAAIAAAAqABMABAABAAIAAAArABMABAABAAIAAAAsABUABAAAAAIAAAAtABYABAAAAAIAAAAuABcABAAAAAIAAAAvABcABAABAAIAAAAwABcABAABAAIAAAAxABcABAABAAIAAAAyABcABAABAAIAAAAzABcABAABAAIAAAA0ABcABAACAAIAAAA1ABQABAABAAIAAAA2ABQABAABAAIAAAA3ABQABAABAAIAAAA4ABQABAABAAIAAAA5ABQABAABAAIAAAA+ABQABAABAAIAAAA9ABQABAABAAIAAAA8ABQABAABAAIAAAA7ABQABAABAAIAAAA6ABQABAABAAIAAAA/ABQABAACAAIAAAA8ABIABAABAAIAAAA9ABIABAABAAIAAAA4AA8ABAABAAQAAAA5AA8ABAABAAQAAAA6AA8ABAABAAQAAAA7AA8ABAABAAQAAAA8AA8ABAABAAQAAAA9AA8ABAABAAQAAABAABIABAABAAIAAABBABIABAABAAIAAABCABIABAABAAIAAABDABIABAABAAIAAABEABIABAACAAIAAABGAA8ABAAAAAIAAABHAA8ABAABAAIAAABIAA8ABAABAAIAAABJAA8ABAABAAIAAABKAA8ABAABAAIAAABLAA8ABAABAAIAAABMAA8ABAACAAIAAABHABMABAAAAAIAAABIABUABAAAAAIAAABJABUABAABAAIAAABKABUABAACAAIAAABLABQABAACAAIAAABOABMABAAAAAIAAABPABMABAABAAIAAABQABMABAABAAIAAABRABMABAABAAIAAABSABMABAABAAIAAABTABMABAABAAIAAABaABMABAABAAIAAABZABMABAABAAIAAABYABMABAABAAIAAABXABMABAABAAIAAABWABMABAABAAIAAABVABMABAABAAIAAABUABMABAABAAIAAABbABQABAAAAAIAAABcABQABAABAAIAAABdABQABAACAAIAAABeABMABAABAAIAAABfABMABAABAAIAAABgABMABAABAAIAAABhABMABAABAAIAAABiABMABAABAAIAAABjABMABAABAAIAAABkABMABAACAAIAAABlABEABAABAAIAAABmABEABAABAAIAAABnABEABAACAAIAAABoAA4ABAABAAIAAABpAA4ABAABAAIAAABqAA4ABAABAAIAAABrAA4ABAABAAIAAABsABAABAAAAAIAAABtABAABAABAAIAAABuABIABAAAAAIAAABzABIABAACAAIAAAB0ABAABAACAAIAAAByABIABAABAAIAAABxABIABAABAAIAAABwABIABAABAAIAAABvABIABAABAAIAAAB0AAwABAACAAIAAAAxAAwABAACAAIAAAAyAAsABAACAAIAAAAwAAwABAABAAIAAAAvAAwABAABAAIAAAAuAAwABAABAAIAAAAtAAwABAABAAIAAAAsAAwABAABAAIAAAArAAwABAABAAIAAAAqAA4ABAACAAIAAABEABEABAACAAAAAAA=")
tile_set = ExtResource("9_86cpf")
occlusion_enabled = false
collision_enabled = false
Expand All @@ -192,6 +191,7 @@ tile_map_data = PackedByteArray("AAAOAAcABQADAAIAAAAOAAEABQADAAAAAAAOAAIABQADAAE
tile_set = ExtResource("7_qg4dv")

[node name="Paths" type="TileMapLayer" parent="TileMapLayers" unique_id=667722762]
visible = false
tile_map_data = PackedByteArray("AAAmAAgABQADAAIAAAACAAAAAQAIAAAAAAACAAEAAQAIAAEAAAACAAIAAQAIAAEAAAACAAMAAQAFAAIAAAADAAMAAQAGAAMAAAAEAAMAAQAGAAMAAAAFAAMAAQAHAAMAAAAKAAMAAQAHAAEAAAAJAAMAAQAFAAMAAAAKAAQAAQAIAAIAAAAKAAIAAQAIAAAAAABmAA0AAQAGAAAAAABnAA0AAQAGAAAAAABoAA0AAQAGAAAAAABpAA0AAQAGAAAAAABqAA0AAQAGAAAAAABrAA0AAQAGAAAAAABsAA0AAQAGAAAAAABnAA4AAQAGAAIAAABmAA4AAQAGAAIAAABoAA4AAQAGAAIAAABpAA4AAQAGAAIAAABqAA4AAQAGAAIAAABrAA4AAQAGAAIAAABsAA4AAQAGAAIAAABtAA0AAQAGAAAAAABuAA0AAQAGAAAAAABvAA0AAQAGAAAAAABwAA0AAQAHAAAAAABwAA4AAQAHAAIAAABvAA4AAQAGAAIAAABuAA4AAQAGAAIAAABtAA4AAQAGAAIAAABlAA0AAQAFAAAAAABjAA4AAQAHAAMAAABiAA4AAQAFAAMAAABTABEAAQAGAAEAAABUABEAAQAGAAEAAABVABEAAQAGAAEAAABWABEAAQAHAAEAAABVABIAAQAGAAEAAABWABIAAQAHAAEAAABWABMAAQAHAAIAAABVABMAAQAGAAIAAABUABMAAQAGAAIAAABTABMAAQAGAAIAAABSABMAAQAGAAIAAABSABIAAQAFAAEAAABSABEAAQAFAAEAAABSABAAAQAFAAAAAABTABAAAQAGAAAAAABUABAAAQAGAAAAAABVABAAAQAGAAAAAABTABIAAQAGAAEAAABUABIAAQAGAAEAAABWABAAAQAGAAAAAABOABEAAQAFAAMAAABPABEAAQAHAAEAAABPABAAAQAIAAAAAABPABIAAQAIAAEAAABPABMAAQAFAAIAAABQABMAAQAGAAMAAABRABMAAQAGAAMAAABEABEAAQAHAAMAAABDABEAAQAGAAMAAABCABEAAQAFAAMAAAA7ABMAAQAIAAIAAAA7ABIAAQAFAAAAAAA8ABIAAQAGAAMAAAA9ABIAAQAHAAMAAAAzABIAAQAFAAMAAAA0ABIAAQAHAAMAAAArABMAAQAHAAMAAAAqABMAAQAGAAMAAAApABMAAQAFAAIAAAApABIAAQAIAAAAAAAnAAgAAQAIAAIAAAAnAAcAAQAIAAAAAAAnAA0AAQAIAAAAAAAnAA4AAQAIAAIAAAAZAAQAAQAFAAMAAAAaAAQAAQAGAAMAAAAbAAQAAQAGAAMAAAAcAAQAAQAGAAMAAAAdAAQAAQAGAAMAAAAeAAQAAQAHAAMAAAAXAAQAAQAHAAMAAAAWAAQAAQAGAAMAAAAVAAQAAQAGAAMAAAAUAAQAAQAGAAMAAAATAAQAAQAGAAMAAAASAAQAAQAFAAEAAAASAAUAAQAIAAIAAAASAAMAAQAHAAAAAAARAAMAAQAGAAMAAAAQAAMAAQAFAAMAAABXABAAAQAHAAMAAABaABAAAQAFAAMAAABbABAAAQAHAAMAAABlAA4AAQAFAAIAAABzAAcAAQAIAAEAAABzAAgAAQAIAAEAAABzAAkAAQAIAAEAAABzAAoAAQAIAAIAAABzAAYAAQAIAAEAAABzAAUAAQAIAAEAAABzAAQAAQAIAAAAAAA=")
tile_set = ExtResource("7_qg4dv")

Expand Down Expand Up @@ -220,7 +220,7 @@ tile_map_data = PackedByteArray("AABFABIAAwACAAMAAABGABIAAwACAAMAAABHABIAAwACAAM
tile_set = ExtResource("8_c2gs0")

[node name="Bridges" type="TileMapLayer" parent="TileMapLayers" unique_id=1451880413]
tile_map_data = PackedByteArray("AAAJAAMAAwACAAAAAAAIAAMAAwABAAAAAAAHAAMAAwABAAAAAAAGAAMAAwABAAAAAAAFAAMAAwAAAAAAAABLABEAAwABAAAAAABKABEAAwABAAAAAABJABEAAwABAAAAAABIABEAAwABAAAAAABHABEAAwABAAAAAABGABEAAwABAAAAAABFABEAAwABAAAAAABEABEAAwAAAAAAAABOABEAAwACAAAAAABNABEAAwABAAAAAABMABEAAwABAAAAAAByABEAAwACAAEAAAA=")
tile_map_data = PackedByteArray("AAAJAAMAAwACAAAAAAAIAAMAAwABAAAAAAAHAAMAAwABAAAAAAAGAAMAAwABAAAAAAAFAAMAAwAAAAAAAABLABEAAwABAAAAAABKABEAAwABAAAAAABJABEAAwABAAAAAABIABEAAwABAAAAAABHABEAAwABAAAAAABGABEAAwABAAAAAABFABEAAwABAAAAAABEABEAAwAAAAAAAABOABEAAwACAAAAAABNABEAAwABAAAAAABMABEAAwABAAAAAAByABEAAwACAAEAAAAOAA4AAwAAAAMAAQAOAA0AAwAAAAIAAAAOAAwAAwAAAAIAAAAOAAsAAwAAAAIAAAAOAAoAAwAAAAIAAAAOAAkAAwAAAAIAAAAOAAgAAwAAAAIAAAAOAAcAAwAAAAEAAAACAAkAAwAAAAMAAQACAAgAAwAAAAIAAAACAAcAAwAAAAIAAAACAAYAAwAAAAIAAAACAAUAAwAAAAIAAAACAAQAAwAAAAEAAAALAPv/AwAAAAEAAAALAPz/AwAAAAIAAAALAP3/AwAAAAIAAAALAP7/AwAAAAIAAAALAP//AwAAAAIAAAALAAAAAwAAAAIAAAALAAEAAwAAAAMAAAD7/wIAAwAAAAAAAAD8/wIAAwABAAAAAAD9/wIAAwABAAAAAAD+/wIAAwABAAAAAAD//wIAAwACAAAAAAA=")
tile_set = ExtResource("8_c2gs0")

[node name="Tree" parent="TileMapLayers" unique_id=1789345129 instance=ExtResource("11_75rvf")]
Expand Down Expand Up @@ -700,6 +700,7 @@ sprite_frames = ExtResource("21_p2u32")
[node name="Camera2D" type="Camera2D" parent="Player" unique_id=857685128]
unique_name_in_owner = true
process_mode = 3
limit_enabled = false
limit_left = 0
limit_top = 0
position_smoothing_enabled = true
Expand Down
Loading
Loading