From d8b1ea23a4a9e8f7a1b829f8644cb65d87f94ef6 Mon Sep 17 00:00:00 2001 From: Will Thompson Date: Mon, 11 May 2026 18:38:20 +0100 Subject: [PATCH] Adjust player collisions while walking on bridges Currently adding a bridge is tedious and error-prone, because the player collides with cliff-edges and water - exactly what the bridge is supposed to be crossing! So we have alternative tiles for water & bits of cliff which do not have collisions - and worse, in the case of water, we have a second alternative which only has a bottom collision so that we can have a pontoon that ends in the middle of the water. Add two new named physics layers, bridge and bridge_edge. Adjust the bridges tileset to have bridge shapes along the walkable area of bridges (including their ends) and bridge_edge on the bits of bridges that the player should not be able to walk off. Add an Area2D to the player which detects when the player's feet are touching "bridge"; while the player is on a bridge, it adjusts the player's collision_mask so that the player does not collide with wall (cliff edges) and non_walkable_floor (water) and instead collides with bridge_edge. The void was previously non_walkable_floor, like water, but because it sits conceptually over the world, the player shouldn't be able to walk across it while on a bridge. (This is contradicted by the closing cutscene of quest_001 but is otherwise always the case.) Define yet another layer, "void", and move void collisions to that. Update the player's collision_mask accordingly. In Fray's End, replace the alternative water and cliff tiles with regular ones. To do the pontoon, we need an alternative lower end of bridge tile that has bridge_edge at its bottom and sides so that the player can't walk off into the water. This needs to be done manually - annoying but at least it's on the same layer as the rest of the bridge, unlike the alternative cliff and water tiles. Teach the guard to walk across bridges. Add a new bridge gym scene for testing. Thanks to Lilith Duncan for helping me think through better approaches to elevation and bridges! --- project.godot | 3 + .../characters/components/bridge_gym.tscn | 201 ++++++++++++++++++ .../characters/enemies/guard/guard.tscn | 17 +- .../characters/player/components/player.gd | 4 + .../player/components/player_hook.gd | 2 + .../characters/player/player.tscn | 19 +- .../custom_hookable_objects_test.tscn | 2 +- scenes/game_logic/bridge_crossing_behavior.gd | 61 ++++++ .../bridge_crossing_behavior.gd.uid | 1 + scenes/globals/enums.gd | 3 + .../3_stealth_level/stealth_level.tscn | 9 +- scenes/world_map/frays_end.tscn | 8 +- tiles/bridges.tres | 37 +++- tiles/void_chromakey.tres | 2 +- 14 files changed, 350 insertions(+), 19 deletions(-) create mode 100644 scenes/game_elements/characters/components/bridge_gym.tscn create mode 100644 scenes/game_logic/bridge_crossing_behavior.gd create mode 100644 scenes/game_logic/bridge_crossing_behavior.gd.uid diff --git a/project.godot b/project.godot index e012de52b9..a592060138 100644 --- a/project.godot +++ b/project.godot @@ -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] diff --git a/scenes/game_elements/characters/components/bridge_gym.tscn b/scenes/game_elements/characters/components/bridge_gym.tscn new file mode 100644 index 0000000000..fad48f2c59 --- /dev/null +++ b/scenes/game_elements/characters/components/bridge_gym.tscn @@ -0,0 +1,201 @@ +[gd_scene format=4 uid="uid://bjp4hviy07lsm"] + +[ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="1_38mc3"] +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="3_dm6f1"] +[ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="4_5gjxp"] +[ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="4_ecrva"] +[ext_resource type="TileSet" uid="uid://ciq5guijvlyb0" path="res://tiles/void_chromakey.tres" id="5_acu0n"] +[ext_resource type="PackedScene" uid="uid://dgrrudegturnw" path="res://scenes/game_elements/characters/npcs/townie.tscn" id="5_fvumg"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="6_bxm7h"] +[ext_resource type="Script" uid="uid://dagrhfrj0f33i" path="res://scenes/game_logic/camera_behaviors/frame_camera_behavior.gd" id="6_g7lcl"] +[ext_resource type="PackedScene" uid="uid://dohb701lxbe5s" path="res://scenes/game_elements/props/hookable_needle/hookable_needle.tscn" id="6_laptb"] +[ext_resource type="PackedScene" uid="uid://evb46lm6ssu2" path="res://scenes/game_elements/props/hookable_pin/hookable_pin.tscn" id="7_g7lcl"] +[ext_resource type="Script" uid="uid://id28maao3vdy" path="res://scenes/game_logic/walk_behaviors/path_walk_behavior.gd" id="14_cvbam"] +[ext_resource type="Script" uid="uid://csev4hv57utxv" path="res://scenes/game_logic/walk_behaviors/character_speeds.gd" id="15_2m3fx"] +[ext_resource type="PackedScene" uid="uid://d37mebu7atru7" path="res://scenes/game_elements/characters/enemies/guard/guard.tscn" id="16_n8plq"] +[ext_resource type="SpriteFrames" uid="uid://d1k25io0tiiij" path="res://scenes/game_elements/characters/enemies/guard/components/storyvoretorch_frames_blue.tres" id="17_bxm7h"] +[ext_resource type="AudioStream" uid="uid://dgpeb1dtmfqud" path="res://assets/third_party/sounds/characters/enemies/guard/AlertSound.ogg" id="18_i16x3"] +[ext_resource type="AudioStream" uid="uid://4ec6e2alns71" path="res://assets/third_party/sounds/characters/enemies/guard/GrassFoot.ogg" id="19_6bk2g"] +[ext_resource type="AudioStream" uid="uid://c7om8kdork2rx" path="res://assets/third_party/sounds/characters/enemies/guard/Torch.ogg" id="20_38mc3"] +[ext_resource type="AudioStream" uid="uid://bwif2oo6ymiu2" path="res://assets/third_party/sounds/characters/enemies/guard/TorchHit.ogg" id="21_10wm7"] +[ext_resource type="Script" uid="uid://cwoclmik3db2" path="res://scenes/game_logic/walk_behaviors/follow_walk_behavior.gd" id="22_w1003"] +[ext_resource type="Script" uid="uid://dn4ijphw4e84s" path="res://scenes/game_logic/bridge_crossing_behavior.gd" id="23_xw04w"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="24_bnhx6"] +[ext_resource type="SpriteFrames" uid="uid://07di3updrwh0" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_purple.tres" id="25_yy51g"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_acu0n"] +radius = 5.0 +height = 21.0 + +[sub_resource type="Resource" id="Resource_ah1i7"] +script = ExtResource("15_2m3fx") +walk_speed = 150.0 +run_speed = 150.0 +metadata/_custom_type_script = "uid://csev4hv57utxv" + +[sub_resource type="Curve2D" id="Curve2D_2m3fx"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -217, -281, 0, 0, 0, 0, 339, -291) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_dm6f1"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -1350, -573, 0, 0, 0, 0, -462, -577) +} +point_count = 2 + +[node name="CharacterRandomizerTest" type="Node2D" unique_id=136000252] + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=1483527644] + +[node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=2123466117] +tile_map_data = PackedByteArray("AAD4//n/AAAAAAAAAAD5//n/AAAAAAAAAAD6//n/AAAAAAAAAAD7//n/AAAAAAAAAAD8//n/AAAAAAAAAAD9//n/AAAAAAAAAAD+//n/AAAAAAAAAAD///n/AAAAAAAAAAAAAPn/AAAAAAAAAAABAPn/AAAAAAAAAAACAPn/AAAAAAAAAAADAPn/AAAAAAAAAAAEAPn/AAAAAAAAAAAFAPn/AAAAAAAAAAAGAPn/AAAAAAAAAAAHAPn/AAAAAAAAAAAIAPn/AAAAAAAAAAAJAPn/AAAAAAAAAAAKAPn/AAAAAAAAAAALAPn/AAAAAAAAAAAMAPn/AAAAAAAAAAANAPn/AAAAAAAAAAAOAPn/AAAAAAAAAAAPAPn/AAAAAAAAAAAQAPn/AAAAAAAAAAARAPn/AAAAAAAAAAARAPr/AAAAAAAAAAARAPv/AAAAAAAAAAARAPz/AAAAAAAAAAARAP3/AAAAAAAAAAARAP7/AAAAAAAAAAARAP//AAAAAAAAAAARAAAAAAAAAAAAAAARAAEAAAAAAAAAAAARAAIAAAAAAAAAAAARAAMAAAAAAAAAAAARAAQAAAAAAAAAAAARAAUAAAAAAAAAAAARAAYAAAAAAAAAAAARAAcAAAAAAAAAAAARAAgAAAAAAAAAAAARAAkAAAAAAAAAAAARAAoAAAAAAAAAAAAQAAoAAAAAAAAAAAAPAAoAAAAAAAAAAAAOAAoAAAAAAAAAAAANAAoAAAAAAAAAAAAMAAoAAAAAAAAAAAALAAoAAAAAAAAAAAAKAAoAAAAAAAAAAAAJAAoAAAAAAAAAAAAIAAoAAAAAAAAAAAAHAAoAAAAAAAAAAAAGAAoAAAAAAAAAAAAFAAoAAAAAAAAAAAD4/wYAAAAAAAAAAAD4/wUAAAAAAAAAAAD4/wQAAAAAAAAAAAD4/wMAAAAAAAAAAAD4/wIAAAAAAAAAAAD4/wEAAAAAAAAAAAD4/wAAAAAAAAAAAAD4////AAAAAAAAAAD4//7/AAAAAAAAAAD4//3/AAAAAAAAAAD4//z/AAAAAAAAAAD4//v/AAAAAAAAAAD4//r/AAAAAAAAAAD///r/AAAAAAAAAAD///v/AAAAAAAAAAD///z/AAAAAAAAAAD///3/AAAAAAAAAAD///7/AAAAAAAAAAD/////AAAAAAAAAAD//wAAAAAAAAAAAAD//wEAAAAAAAAAAAD//wIAAAAAAAAAAAD//wMAAAAAAAAAAAD//wQAAAAAAAAAAAD//wUAAAAAAAAAAAD//wYAAAAAAAAAAAAAAPr/AAAAAAAAAAAAAPv/AAAAAAAAAAAAAPz/AAAAAAAAAAAAAP3/AAAAAAAAAAAAAP7/AAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAYAAAAAAAAAAAABAPr/AAAAAAAAAAABAPv/AAAAAAAAAAABAPz/AAAAAAAAAAABAP3/AAAAAAAAAAABAP7/AAAAAAAAAAABAP//AAAAAAAAAAABAAAAAAAAAAAAAAABAAEAAAAAAAAAAAABAAIAAAAAAAAAAAABAAMAAAAAAAAAAAABAAQAAAAAAAAAAAABAAUAAAAAAAAAAAABAAYAAAAAAAAAAQACAPr/AAAAAAAAAAACAPv/AAAAAAAAAAACAPz/AAAAAAAAAAACAP3/AAAAAAAAAAACAP7/AAAAAAAAAAACAP//AAAAAAAAAAACAAAAAAAAAAAAAAACAAEAAAAAAAAAAAACAAIAAAAAAAAAAAACAAMAAAAAAAAAAAACAAQAAAAAAAAAAAACAAUAAAAAAAAAAAACAAYAAAAAAAAAAQAFAAkAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAkAAAAAAAAAAAAJAAkAAAAAAAAAAAAKAAkAAAAAAAAAAAAIAPr/AAAAAAAAAAAIAPv/AAAAAAAAAAAIAPz/AAAAAAAAAAAIAP3/AAAAAAAAAAAIAP7/AAAAAAAAAAAIAP//AAAAAAAAAAAIAAAAAAAAAAAAAAAIAAEAAAAAAAAAAAAIAAIAAAAAAAAAAAAIAAMAAAAAAAAAAAAIAAQAAAAAAAAAAAAIAAUAAAAAAAAAAAAIAAYAAAAAAAAAAAAIAAcAAAAAAAAAAAAIAAgAAAAAAAAAAAAJAPr/AAAAAAAAAAAJAPv/AAAAAAAAAAAJAPz/AAAAAAAAAAAJAP3/AAAAAAAAAAAJAP7/AAAAAAAAAAAJAP//AAAAAAAAAAAJAAAAAAAAAAAAAAAJAAEAAAAAAAAAAAAJAAIAAAAAAAAAAAAJAAMAAAAAAAAAAAAJAAQAAAAAAAAAAAAJAAUAAAAAAAAAAAAJAAYAAAAAAAAAAAAJAAcAAAAAAAAAAAAJAAgAAAAAAAAAAAAKAPr/AAAAAAAAAAAKAPv/AAAAAAAAAAAKAPz/AAAAAAAAAAAKAP3/AAAAAAAAAAAKAP7/AAAAAAAAAAAKAP//AAAAAAAAAAAKAAEAAAAAAAAAAAAKAAIAAAAAAAAAAAAKAAMAAAAAAAAAAAAKAAQAAAAAAAAAAAAKAAUAAAAAAAAAAAAKAAYAAAAAAAAAAAAKAAcAAAAAAAAAAAAKAAgAAAAAAAAAAAD5//7/AAAAAAAAAAD5////AAAAAAAAAAD6//7/AAAAAAAAAAD6////AAAAAAAAAAD7//7/AAAAAAAAAAD7////AAAAAAAAAAD8//7/AAAAAAAAAAD8////AAAAAAAAAAD9//7/AAAAAAAAAAD9////AAAAAAAAAAD+//7/AAAAAAAAAAD+////AAAAAAAAAAADAP7/AAAAAAAAAAADAP//AAAAAAAAAAAEAP7/AAAAAAAAAAAEAP//AAAAAAAAAAAFAP7/AAAAAAAAAAAFAP//AAAAAAAAAAAGAP7/AAAAAAAAAAAGAP//AAAAAAAAAAAHAP7/AAAAAAAAAAAHAP//AAAAAAAAAAD7/wQAAAAAAAAAAAD7/wUAAAAAAAAAAAD8/wQAAAAAAAAAAAD8/wUAAAAAAAAAAAD9/wQAAAAAAAAAAAD9/wUAAAAAAAAAAAD+/wQAAAAAAAAAAAD+/wUAAAAAAAAAAAADAAQAAAAAAAAAAAADAAUAAAAAAAAAAAAEAAQAAAAAAAAAAAAEAAUAAAAAAAAAAAAFAAQAAAAAAAAAAAAFAAUAAAAAAAAAAAAGAAQAAAAAAAAAAAAGAAUAAAAAAAAAAAAHAAQAAAAAAAAAAAAHAAUAAAAAAAAAAAAGAAYAAAAAAAAAAAAGAAcAAAAAAAAAAAAHAAYAAAAAAAAAAAAHAAcAAAAAAAAAAAADAAYAAAAAAAAAAQAEAAYAAAAAAAAAAAALAP7/AAAAAAAAAAALAP//AAAAAAAAAAALAAQAAAAAAAAAAAALAAUAAAAAAAAAAAALAAYAAAAAAAAAAAAMAP7/AAAAAAAAAAAMAP//AAAAAAAAAAAMAAQAAAAAAAAAAAAMAAUAAAAAAAAAAAAMAAYAAAAAAAAAAAANAP7/AAAAAAAAAAANAP//AAAAAAAAAAANAAQAAAAAAAAAAAANAAUAAAAAAAAAAAANAAYAAAAAAAAAAAAOAP7/AAAAAAAAAAAOAP//AAAAAAAAAAAOAAQAAAAAAAAAAAAOAAUAAAAAAAAAAAAOAAYAAAAAAAAAAAAPAP7/AAAAAAAAAAAPAP//AAAAAAAAAAAPAAQAAAAAAAAAAAAPAAUAAAAAAAAAAAAPAAYAAAAAAAAAAAAQAP7/AAAAAAAAAAAQAP//AAAAAAAAAAAQAAQAAAAAAAAAAAAQAAUAAAAAAAAAAAAQAAYAAAAAAAAAAAAKAAAAAAAAAAAAAAD5/wYAAAAAAAAAAAD6/wYAAAAAAAAAAAD7/wYAAAAAAAAAAAD8/wYAAAAAAAAAAAD9/wYAAAAAAAAAAAD+/wYAAAAAAAAAAAD5/wIAAAAAAAAAAAD6/wIAAAAAAAAAAAD7/wIAAAAAAAAAAAD7/wMAAAAAAAAAAAD8/wIAAAAAAAAAAAD8/wMAAAAAAAAAAAD9/wIAAAAAAAAAAAD9/wMAAAAAAAAAAAD+/wIAAAAAAAAAAAD+/wMAAAAAAAAAAAD4//f/AAAAAAAAAAD4//j/AAAAAAAAAAD5//f/AAAAAAAAAAD6//f/AAAAAAAAAAD7//f/AAAAAAAAAAD8//f/AAAAAAAAAAD9//f/AAAAAAAAAAD+//f/AAAAAAAAAAD///f/AAAAAAAAAAAAAPf/AAAAAAAAAAABAPf/AAAAAAAAAAACAPf/AAAAAAAAAAADAPf/AAAAAAAAAAAEAPf/AAAAAAAAAAAFAPf/AAAAAAAAAAAGAPf/AAAAAAAAAAAHAPf/AAAAAAAAAAAIAPf/AAAAAAAAAAAIAPj/AAAAAAAAAAAJAPf/AAAAAAAAAAAJAPj/AAAAAAAAAAAKAPf/AAAAAAAAAAAKAPj/AAAAAAAAAAALAPf/AAAAAAAAAAALAPj/AAAAAAAAAAAMAPf/AAAAAAAAAAAMAPj/AAAAAAAAAAANAPf/AAAAAAAAAAANAPj/AAAAAAAAAAAOAPf/AAAAAAAAAAAOAPj/AAAAAAAAAAAPAPf/AAAAAAAAAAAPAPj/AAAAAAAAAAAQAPf/AAAAAAAAAAAQAPj/AAAAAAAAAAARAPf/AAAAAAAAAAARAPj/AAAAAAAAAAD///j/AAAAAAAAAAAAAPj/AAAAAAAAAAABAPj/AAAAAAAAAAACAPj/AAAAAAAAAAD+/wcAAAAAAAAAAAD+/wgAAAAAAAAAAAD+/wkAAAAAAAAAAAD+/woAAAAAAAAAAAD//wcAAAAAAAAAAAD//wgAAAAAAAAAAAD//wkAAAAAAAAAAAD//woAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAoAAAAAAAAAAAD+/wsAAAAAAAAAAAD//wsAAAAAAAAAAAAAAAsAAAAAAAAAAAABAAsAAAAAAAAAAAACAAsAAAAAAAAAAAADAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAAFAAsAAAAAAAAAAAAGAAsAAAAAAAAAAAD6/wcAAAAAAAAAAQD7/wcAAAAAAAAAAQD8/wcAAAAAAAAAAQD9/wcAAAAAAAAAAQD4/wcAAAAAAAAAAAD4/wgAAAAAAAAAAAD4/wkAAAAAAAAAAAD4/woAAAAAAAAAAAD4/wsAAAAAAAAAAAD5/wcAAAAAAAAAAAD5/wgAAAAAAAAAAAD5/wkAAAAAAAAAAAD5/woAAAAAAAAAAAD5/wsAAAAAAAAAAAD6/wsAAAAAAAAAAAD7/wsAAAAAAAAAAAD8/wsAAAAAAAAAAAD9/wsAAAAAAAAAAAD5/wMAAAAAAAAAAQD6/wMAAAAAAAAAAQAIAAsAAAAAAAAAAAAJAAsAAAAAAAAAAAAKAAsAAAAAAAAAAAALAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAOAAsAAAAAAAAAAAAPAAsAAAAAAAAAAAAQAAsAAAAAAAAAAAARAAsAAAAAAAAAAAAHAAsAAAAAAAAAAAA=") +tile_set = ExtResource("1_38mc3") + +[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=1802885670] +tile_map_data = PackedByteArray("AAD+/wEAAQACAAIAAAD+/wAAAQACAAAAAAD9/wEAAQABAAIAAAD9/wAAAQABAAAAAAD8/wEAAQABAAIAAAD8/wAAAQABAAAAAAD7/wEAAQABAAIAAAD7/wAAAQABAAAAAAD6/wEAAQABAAIAAAD6/wAAAQABAAAAAAD5/wEAAQAAAAIAAAD5/wAAAQAAAAAAAAAHAAMAAQACAAIAAAAHAAIAAQACAAEAAAAHAAEAAQACAAEAAAAHAAAAAQACAAAAAAAGAAMAAQABAAIAAAAGAAIAAQABAAEAAAAGAAEAAQABAAEAAAAGAAAAAQABAAAAAAAFAAMAAQABAAIAAAAFAAIAAQABAAEAAAAFAAEAAQABAAEAAAAFAAAAAQABAAAAAAAEAAMAAQABAAIAAAAEAAIAAQABAAEAAAAEAAEAAQABAAEAAAAEAAAAAQABAAAAAAADAAMAAQAAAAIAAAADAAIAAQAAAAEAAAADAAEAAQAAAAEAAAADAAAAAQAAAAAAAAAHAP3/AQACAAIAAAAHAPz/AQACAAEAAAAHAPv/AQACAAEAAAAHAPr/AQACAAAAAAAGAP3/AQABAAIAAAAGAPz/AQABAAEAAAAGAPv/AQABAAEAAAAGAPr/AQABAAAAAAAFAP3/AQABAAIAAAAFAPz/AQABAAEAAAAFAPv/AQABAAEAAAAFAPr/AQABAAAAAAAEAP3/AQABAAIAAAAEAPz/AQABAAEAAAAEAPv/AQABAAEAAAAEAPr/AQABAAAAAAADAP3/AQAAAAIAAAADAPz/AQAAAAEAAAADAPv/AQAAAAEAAAADAPr/AQAAAAAAAAAQAP3/AQACAAIAAAAQAPz/AQACAAEAAAAQAPv/AQACAAEAAAAQAPr/AQACAAAAAAAPAP3/AQABAAIAAAAPAPz/AQABAAEAAAAPAPv/AQABAAEAAAAPAPr/AQABAAAAAAAOAP3/AQABAAIAAAAOAPz/AQABAAEAAAAOAPv/AQABAAEAAAAOAPr/AQABAAAAAAANAP3/AQABAAIAAAANAPz/AQABAAEAAAANAPv/AQABAAEAAAANAPr/AQABAAAAAAAMAP3/AQABAAIAAAAMAPz/AQABAAEAAAAMAPv/AQABAAEAAAAMAPr/AQABAAAAAAALAP3/AQAAAAIAAAALAPz/AQAAAAEAAAALAPv/AQAAAAEAAAALAPr/AQAAAAAAAAAQAAgAAQACAAEAAAAQAAcAAQACAAAAAAAPAAgAAQABAAEAAAAPAAcAAQABAAAAAAAOAAgAAQABAAEAAAAOAAcAAQABAAAAAAANAAgAAQABAAEAAAANAAcAAQABAAAAAAAMAAgAAQABAAEAAAAMAAcAAQABAAAAAAALAAgAAQAAAAEAAAALAAcAAQAAAAAAAAAQAAkAAQACAAIAAAAPAAkAAQABAAIAAAAOAAkAAQABAAIAAAANAAkAAQABAAIAAAAMAAkAAQABAAIAAAALAAkAAQAAAAIAAAALAAAAAQAAAAAAAAALAAEAAQAAAAEAAAALAAIAAQAAAAEAAAALAAMAAQAAAAIAAAAMAAAAAQABAAAAAAAMAAEAAQABAAEAAAAMAAIAAQABAAEAAAAMAAMAAQABAAIAAAANAAAAAQABAAAAAAANAAEAAQABAAEAAAANAAIAAQABAAEAAAANAAMAAQABAAIAAAAOAAAAAQABAAAAAAAOAAEAAQABAAEAAAAOAAIAAQABAAEAAAAOAAMAAQABAAIAAAAPAAAAAQABAAAAAAAPAAEAAQABAAEAAAAPAAIAAQABAAEAAAAPAAMAAQABAAIAAAAQAAAAAQACAAAAAAAQAAEAAQACAAEAAAAQAAIAAQACAAEAAAAQAAMAAQACAAIAAAD+//3/AQACAAIAAAD+//z/AQACAAEAAAD+//v/AQACAAEAAAD+//r/AQACAAAAAAD9//3/AQABAAIAAAD9//z/AQABAAEAAAD9//v/AQABAAEAAAD9//r/AQABAAAAAAD8//3/AQABAAIAAAD8//z/AQABAAEAAAD8//v/AQABAAEAAAD8//r/AQABAAAAAAD7//3/AQABAAIAAAD7//z/AQABAAEAAAD7//v/AQABAAEAAAD7//r/AQABAAAAAAD6//3/AQABAAIAAAD6//z/AQABAAEAAAD6//v/AQABAAEAAAD6//r/AQABAAAAAAD5//3/AQAAAAIAAAD5//z/AQAAAAEAAAD5//v/AQAAAAEAAAD5//r/AQAAAAAAAAD+//j/AQACAAMAAAD9//j/AQABAAMAAAD8//j/AQABAAMAAAD7//j/AQABAAMAAAD6//j/AQABAAMAAAD5//j/AQAAAAMAAAAHAPj/AQACAAMAAAAGAPj/AQABAAMAAAAFAPj/AQABAAMAAAAEAPj/AQABAAMAAAADAPj/AQAAAAMAAAAFAAkAAQACAAIAAAAFAAgAAQACAAEAAAAFAAcAAQACAAAAAAAEAAkAAQABAAEAAAAEAAgAAQABAAEAAAAEAAcAAQABAAAAAAADAAkAAQABAAEAAAADAAgAAQABAAEAAAADAAcAAQABAAAAAAACAAkAAQABAAEAAAACAAgAAQABAAEAAAACAAcAAQABAAAAAAABAAkAAQAAAAEAAAABAAgAAQAAAAEAAAABAAcAAQAAAAAAAAAEAAoAAQACAAIAAAADAAoAAQABAAIAAAACAAoAAQABAAIAAAABAAoAAQAAAAIAAAA=") +tile_set = ExtResource("3_dm6f1") + +[node name="Sand" type="TileMapLayer" parent="TileMapLayers" unique_id=1537636464] +tile_map_data = PackedByteArray("AAALAAAAAQAFAAMAAAAMAAAAAQAHAAAAAAAMAAIAAQAGAAIAAAAMAAEAAQAIAAEAAAALAAIAAQAFAAMAAAAOAAIAAQAHAAAAAAANAAIAAQAGAAMAAAAOAAMAAQAIAAIAAAAOAAgAAQAHAAIAAAAOAAcAAQAIAAAAAAALAAgAAQAFAAMAAAAMAAgAAQAGAAMAAAANAAgAAQAGAAMAAAAFAAcAAQAIAAEAAAAGAAgAAQAGAAMAAAAHAAgAAQAHAAMAAAAFAAgAAQAGAAIAAAAFAAYAAQAIAAAAAAAFAAMAAQAIAAIAAAAFAAIAAQAFAAEAAAAFAAEAAQAHAAEAAAAFAAAAAQAFAAAAAAAEAAEAAQAGAAMAAAADAAEAAQAFAAMAAAAHAAAAAQAHAAMAAAAGAAAAAQAGAAMAAAAGAAIAAQAGAAMAAAAHAAIAAQAHAAMAAAD+/wEAAQAHAAIAAAD+/wAAAQAIAAAAAAD5/wEAAQAFAAIAAAD6/wEAAQAGAAMAAAD7/wEAAQAGAAMAAAD8/wEAAQAGAAIAAAD9/wEAAQAGAAMAAAD5/wAAAQAIAAAAAAD8//3/AQAIAAIAAAD+//3/AQAIAAIAAAD+//v/AQAHAAAAAAD5//3/AQAIAAIAAAD+//z/AQAIAAEAAAD7//v/AQAGAAMAAAD5//v/AQAFAAAAAAD5//z/AQAIAAEAAAD6//v/AQAGAAMAAAADAPv/AQAFAAMAAAAFAPv/AQAHAAAAAAAEAPv/AQAGAAMAAAAFAP3/AQAIAAIAAAAFAPz/AQAIAAEAAAAMAPz/AQAIAAEAAAAMAP3/AQAIAAIAAAAOAPv/AQAGAAAAAAANAPv/AQAGAAMAAAAMAPv/AQAFAAAAAAAPAPz/AQAHAAIAAAAPAPv/AQAHAAAAAAAOAPz/AQAFAAIAAAD8/wAAAQAIAAAAAAD8//z/AQAIAAEAAAD8//v/AQAGAAAAAAD9//v/AQAGAAMAAAAEAAgAAQAGAAMAAAADAAgAAQAGAAMAAAACAAgAAQAFAAMAAAA=") +tile_set = ExtResource("3_dm6f1") + +[node name="BridgeShadows" type="TileMapLayer" parent="TileMapLayers" unique_id=1311480422] +tile_set = ExtResource("4_5gjxp") + +[node name="Bridges" type="TileMapLayer" parent="TileMapLayers" unique_id=1252120220] +tile_map_data = PackedByteArray("AAAFAAYAAwAAAAMAAAAFAAUAAwAAAAIAAAAFAAQAAwAAAAIAAAAFAAMAAwAAAAEAAAALAAIAAwACAAAAAAAKAAIAAwABAAAAAAAJAAIAAwABAAAAAAAIAAIAAwABAAAAAAAHAAIAAwAAAAAAAAALAAAAAwACAAAAAAAKAAAAAwABAAAAAAAJAAAAAwABAAAAAAAIAAAAAwABAAAAAAAHAAAAAwAAAAAAAAAMAP3/AwAAAAEAAAAMAP7/AwAAAAIAAAAMAP//AwAAAAIAAAAMAAAAAwAAAAMAAAD+/wEAAwAAAAAAAAD//wEAAwABAAAAAAAAAAEAAwABAAAAAAABAAEAAwABAAAAAAACAAEAAwABAAAAAAADAAEAAwACAAAAAAD+//3/AwAAAAEAAAD+//7/AwAAAAIAAAD+////AwAAAAIAAAD+/wAAAwAAAAMAAAD5//3/AwAAAAEAAAD5//7/AwAAAAIAAAD5////AwAAAAIAAAD5/wAAAwAAAAMAAAALAAgAAwACAAAAAAAKAAgAAwABAAAAAAAJAAgAAwABAAAAAAAIAAgAAwABAAAAAAAHAAgAAwAAAAAAAAAFAP3/AwAAAAEAAAAFAP7/AwAAAAIAAAAFAP//AwAAAAIAAAAFAAAAAwAAAAMAAAADAPv/AwACAAAAAAACAPv/AwABAAAAAAABAPv/AwABAAAAAAAAAPv/AwABAAAAAAD///v/AwABAAAAAAD+//v/AwAAAAAAAAAOAAcAAwAAAAMAAAAOAAYAAwAAAAIAAAAOAAUAAwAAAAIAAAAOAAQAAwAAAAIAAAAOAAMAAwAAAAEAAAD8/wMAAwAAAAIAAAD8/wQAAwAAAAMAAQD8/wEAAwAAAAEAAAD8/wIAAwAAAAIAAAABAPj/AwABAAAAAAAAAPj/AwABAAAAAAD///j/AwABAAAAAAD+//j/AwAAAAAAAAACAPj/AwABAAAAAAADAPj/AwACAAAAAAA=") +tile_set = ExtResource("4_5gjxp") + +[node name="Void" type="TileMapLayer" parent="TileMapLayers" unique_id=1464084109] +material = ExtResource("4_ecrva") +tile_map_data = PackedByteArray("AAANAAUADQABAAAAAAAPAAUADQABAAAAAAAOAAUADQABAAMAAAAMAAUADQAAAAAAAAAJAAMADQADAAMAAAAJAP//DQADAAMAAAANAAYADQACAAEAAAAMAAYADQAAAAIAAAAQAAYADQACAAIAAAAPAAYADQAAAAIAAAAQAAUADQACAAAAAAANAAcADQADAAIAAAA=") +tile_set = ExtResource("5_acu0n") + +[node name="Cliffs" type="TileMapLayer" parent="TileMapLayers" unique_id=1848148639] +tile_map_data = PackedByteArray("AAADAAgABAACAAIAAAADAAcABAACAAEAAAACAAgABAABAAIAAQACAAcABAABAAEAAAABAAgABAAAAAIAAAABAAcABAAAAAEAAAACAAkABAADAAcAAAADAAYABAACAAAAAAACAAYABAABAAAAAAABAAYABAAAAAAAAAD9/wkABAACAAIAAAD9/wgABAACAAEAAAD9/wcABAACAAAAAAD8/wkABAABAAIAAAD8/wgABAABAAEAAAD8/wcABAABAAAAAAD7/wkABAABAAIAAAD7/wgABAABAAEAAAD7/wcABAABAAAAAAD6/wkABAAAAAIAAAD6/wgABAAAAAEAAAD6/wcABAAAAAAAAAD5/wMABAAAAAAAAAD6/wMABAACAAAAAAD6/wQABAACAAIAAAD5/wQABAAAAAIAAAA=") +tile_set = ExtResource("6_bxm7h") + +[node name="Bridges_1" type="TileMapLayer" parent="TileMapLayers" unique_id=1053340844] +tile_map_data = PackedByteArray("AAAFAAYAAwAAAAMAAAAFAAUAAwAAAAIAAAAFAAQAAwAAAAIAAAAFAAMAAwAAAAEAAAALAAIAAwACAAAAAAAKAAIAAwABAAAAAAAJAAIAAwABAAAAAAAIAAIAAwABAAAAAAAHAAIAAwAAAAAAAAALAAAAAwACAAAAAAAKAAAAAwABAAAAAAAJAAAAAwABAAAAAAAIAAAAAwABAAAAAAAHAAAAAwAAAAAAAAAMAP3/AwAAAAEAAAAMAP7/AwAAAAIAAAAMAP//AwAAAAIAAAAMAAAAAwAAAAMAAAD+/wEAAwAAAAAAAAD//wEAAwABAAAAAAAAAAEAAwABAAAAAAABAAEAAwABAAAAAAACAAEAAwABAAAAAAADAAEAAwACAAAAAAD+//3/AwAAAAEAAAD+//7/AwAAAAIAAAD+////AwAAAAIAAAD+/wAAAwAAAAMAAAD5//3/AwAAAAEAAAD5//7/AwAAAAIAAAD5////AwAAAAIAAAD5/wAAAwAAAAMAAAALAAgAAwACAAAAAAAKAAgAAwABAAAAAAAJAAgAAwABAAAAAAAIAAgAAwABAAAAAAAHAAgAAwAAAAAAAAAFAP3/AwAAAAEAAAAFAP7/AwAAAAIAAAAFAP//AwAAAAIAAAAFAAAAAwAAAAMAAAADAPv/AwACAAAAAAACAPv/AwABAAAAAAABAPv/AwABAAAAAAAAAPv/AwABAAAAAAD///v/AwABAAAAAAD+//v/AwAAAAAAAAAOAAcAAwAAAAMAAAAOAAYAAwAAAAIAAAAOAAUAAwAAAAIAAAAOAAQAAwAAAAIAAAAOAAMAAwAAAAEAAAD8/wMAAwAAAAIAAAD8/wQAAwAAAAMAAQD8/wEAAwAAAAEAAAD8/wIAAwAAAAIAAAABAPj/AwABAAAAAAAAAPj/AwABAAAAAAD///j/AwABAAAAAAD+//j/AwAAAAAAAAACAPj/AwABAAAAAAADAPj/AwACAAAAAAABAAcAAwACAAAAAAAAAAcAAwABAAAAAAD//wcAAwABAAAAAAD+/wcAAwABAAAAAAD9/wcAAwAAAAAAAAD8/woAAwAAAAMAAQD8/wkAAwAAAAEAAAD6/wUAAwAAAAIAAAD6/wYAAwAAAAIAAAD6/wcAAwAAAAMAAAD6/wQAAwAAAAEAAAA=") +tile_set = ExtResource("4_5gjxp") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=668565137] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=1193933081 instance=ExtResource("24_bnhx6")] +position = Vector2(349, 132) +player_name = "StoryWeaver" +sprite_frames = ExtResource("25_yy51g") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=977187794] +limit_left = -512 +limit_top = -576 +limit_right = 1152 +limit_bottom = 768 +limit_smoothed = true +position_smoothing_enabled = true + +[node name="FrameCameraBehavior" type="Node2D" parent="OnTheGround/Player/Camera2D" unique_id=1488444448 node_paths=PackedStringArray("camera", "main_target", "frame_target")] +script = ExtResource("6_g7lcl") +camera = NodePath("..") +main_target = NodePath("../..") +frame_target = NodePath("../../PlayerHook/HookEnding") +metadata/_custom_type_script = "uid://dagrhfrj0f33i" + +[node name="GrapplePoints" type="Node2D" parent="OnTheGround" unique_id=559850195] +y_sort_enabled = true + +[node name="HookableNeedle" parent="OnTheGround/GrapplePoints" unique_id=1182662384 instance=ExtResource("6_laptb")] +position = Vector2(611, 384) + +[node name="HookableNeedle2" parent="OnTheGround/GrapplePoints" unique_id=514230335 instance=ExtResource("6_laptb")] +position = Vector2(607, 100) + +[node name="HookableNeedle3" parent="OnTheGround/GrapplePoints" unique_id=2112484196 instance=ExtResource("6_laptb")] +position = Vector2(607, -115) + +[node name="HookableNeedle4" parent="OnTheGround/GrapplePoints" unique_id=1442278259 instance=ExtResource("6_laptb")] +position = Vector2(552, 475) + +[node name="HookablePin" parent="OnTheGround/GrapplePoints" unique_id=2071223292 instance=ExtResource("7_g7lcl")] +position = Vector2(467, -158) + +[node name="HookablePin4" parent="OnTheGround/GrapplePoints" unique_id=433465366 instance=ExtResource("7_g7lcl")] +position = Vector2(-228, 34) + +[node name="HookablePin2" parent="OnTheGround/GrapplePoints" unique_id=671519384 instance=ExtResource("7_g7lcl")] +position = Vector2(742, -225) + +[node name="HookablePin3" parent="OnTheGround/GrapplePoints" unique_id=1698856891 instance=ExtResource("7_g7lcl")] +position = Vector2(735, 475) + +[node name="StalkingTownie" parent="OnTheGround" unique_id=1098678013 instance=ExtResource("5_fvumg")] +position = Vector2(968, -252) +collision_mask = 8720 + +[node name="FollowWalkBehavior" type="Node2D" parent="OnTheGround/StalkingTownie" unique_id=704259613 node_paths=PackedStringArray("target", "character")] +script = ExtResource("22_w1003") +target = NodePath("../../Player") +character = NodePath("..") +metadata/_custom_type_script = "uid://cwoclmik3db2" + +[node name="BridgeCrossingBehavior" type="Area2D" parent="OnTheGround/StalkingTownie" unique_id=2004913725 node_paths=PackedStringArray("character")] +collision_layer = 0 +collision_mask = 1024 +script = ExtResource("23_xw04w") +character = NodePath("..") +metadata/_custom_type_script = "uid://dn4ijphw4e84s" + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="OnTheGround/StalkingTownie/BridgeCrossingBehavior" unique_id=1508694602] +rotation = -1.5708 +shape = SubResource("CapsuleShape2D_acu0n") +debug_color = Color(0.8414687, 0.38268504, 0, 0.41960785) + +[node name="PacingTownie" parent="OnTheGround" unique_id=382928374 instance=ExtResource("5_fvumg")] +position = Vector2(-221, -288) +collision_mask = 8720 +character_seed = 3355563542 + +[node name="PathWalkBehavior" type="Node2D" parent="OnTheGround/PacingTownie" unique_id=667735708 node_paths=PackedStringArray("walking_path", "character")] +script = ExtResource("14_cvbam") +speeds = SubResource("Resource_ah1i7") +walking_path = NodePath("../../../Paths/PacingTowniePath") +character = NodePath("..") +metadata/_custom_type_script = "uid://id28maao3vdy" + +[node name="BridgeCrossingBehavior" type="Area2D" parent="OnTheGround/PacingTownie" unique_id=9909409 node_paths=PackedStringArray("character")] +collision_layer = 0 +collision_mask = 1024 +script = ExtResource("23_xw04w") +character = NodePath("..") +metadata/_custom_type_script = "uid://dn4ijphw4e84s" + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="OnTheGround/PacingTownie/BridgeCrossingBehavior" unique_id=445513069] +rotation = -1.5708 +shape = SubResource("CapsuleShape2D_acu0n") +debug_color = Color(0.8414687, 0.38268504, 0, 0.41960785) + +[node name="Guard-GoingBackAndForth" parent="OnTheGround" unique_id=689832587 node_paths=PackedStringArray("patrol_path") instance=ExtResource("16_n8plq")] +position = Vector2(-422, -478) +sprite_frames = ExtResource("17_bxm7h") +alerted_sound_stream = ExtResource("18_i16x3") +footsteps_sound_stream = ExtResource("19_6bk2g") +idle_sound_stream = ExtResource("20_38mc3") +alert_others_sound_stream = ExtResource("21_10wm7") +patrol_path = NodePath("../../Paths/Guard-GoingBackAndForth-PatrolPath") +move_speed = 200.0 +time_to_detect_player = 2.0 +detection_area_scale = 0.4 + +[node name="Paths" type="Node2D" parent="." unique_id=278895922] + +[node name="PacingTowniePath" type="Path2D" parent="Paths" unique_id=430828835] +curve = SubResource("Curve2D_2m3fx") + +[node name="Guard-GoingBackAndForth-PatrolPath" type="Path2D" parent="Paths" unique_id=1971565653] +position = Vector2(928, 95) +curve = SubResource("Curve2D_dm6f1") + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=98137815] diff --git a/scenes/game_elements/characters/enemies/guard/guard.tscn b/scenes/game_elements/characters/enemies/guard/guard.tscn index e8ef2b2b66..67c27210c0 100644 --- a/scenes/game_elements/characters/enemies/guard/guard.tscn +++ b/scenes/game_elements/characters/enemies/guard/guard.tscn @@ -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 @@ -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") @@ -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"] diff --git a/scenes/game_elements/characters/player/components/player.gd b/scenes/game_elements/characters/player/components/player.gd index 1822d18faa..0b9a29d0ac 100644 --- a/scenes/game_elements/characters/player/components/player.gd +++ b/scenes/game_elements/characters/player/components/player.gd @@ -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 @@ -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) diff --git a/scenes/game_elements/characters/player/components/player_hook.gd b/scenes/game_elements/characters/player/components/player_hook.gd index cbd99043c8..f4fce2fda3 100644 --- a/scenes/game_elements/characters/player/components/player_hook.gd +++ b/scenes/game_elements/characters/player/components/player_hook.gd @@ -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. @@ -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"): diff --git a/scenes/game_elements/characters/player/player.tscn b/scenes/game_elements/characters/player/player.tscn index 413a6621ca..af52110154 100644 --- a/scenes/game_elements/characters/player/player.tscn +++ b/scenes/game_elements/characters/player/player.tscn @@ -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"] @@ -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 @@ -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"] diff --git a/scenes/game_elements/components/custom_hookable_objects_test.tscn b/scenes/game_elements/components/custom_hookable_objects_test.tscn index e04839a771..06fdbd9717 100644 --- a/scenes/game_elements/components/custom_hookable_objects_test.tscn +++ b/scenes/game_elements/components/custom_hookable_objects_test.tscn @@ -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] diff --git a/scenes/game_logic/bridge_crossing_behavior.gd b/scenes/game_logic/bridge_crossing_behavior.gd new file mode 100644 index 0000000000..cde3a05837 --- /dev/null +++ b/scenes/game_logic/bridge_crossing_behavior.gd @@ -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) diff --git a/scenes/game_logic/bridge_crossing_behavior.gd.uid b/scenes/game_logic/bridge_crossing_behavior.gd.uid new file mode 100644 index 0000000000..26e4d8b734 --- /dev/null +++ b/scenes/game_logic/bridge_crossing_behavior.gd.uid @@ -0,0 +1 @@ +uid://dn4ijphw4e84s diff --git a/scenes/globals/enums.gd b/scenes/globals/enums.gd index 166c3b6209..9a61816e9b 100644 --- a/scenes/globals/enums.gd +++ b/scenes/globals/enums.gd @@ -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 diff --git a/scenes/quests/lore_quests/quest_001/3_stealth_level/stealth_level.tscn b/scenes/quests/lore_quests/quest_001/3_stealth_level/stealth_level.tscn index c13eb98a5c..83f0266b84 100644 --- a/scenes/quests/lore_quests/quest_001/3_stealth_level/stealth_level.tscn +++ b/scenes/quests/lore_quests/quest_001/3_stealth_level/stealth_level.tscn @@ -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 @@ -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") @@ -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 @@ -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") @@ -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")] @@ -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 diff --git a/scenes/world_map/frays_end.tscn b/scenes/world_map/frays_end.tscn index 7c2ddd3d8d..afbba04f09 100644 --- a/scenes/world_map/frays_end.tscn +++ b/scenes/world_map/frays_end.tscn @@ -78,7 +78,7 @@ stream = ExtResource("2_epsnn") position = Vector2(0, 8) [node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=1840175252] -tile_map_data = PackedByteArray("AAABABcAAAAAAAAAAAABABYAAAAAAAAAAAACABcAAAAAAAAAAAACABYAAAAAAAAAAAACABUAAAAAAAAAAAADABUAAAAAAAAAAAAEABUAAAAAAAAAAAADABYAAAAAAAAAAAAEABYAAAAAAAAAAAAFABYAAAAAAAAAAAAFABUAAAAAAAAAAAAGABYAAAAAAAAAAAAGABUAAAAAAAAAAAAHABUAAAAAAAAAAAAHABYAAAAAAAAAAAAIABUAAAAAAAAAAAAIABQAAAAAAAAAAAAJABQAAAAAAAAAAAAKABQAAAAAAAAAAAAKABUAAAAAAAAAAAAJABUAAAAAAAAAAAALABUAAAAAAAAAAAAMABUAAAAAAAAAAAANABUAAAAAAAAAAAANABQAAAAAAAAAAAAMABQAAAAAAAAAAAALABQAAAAAAAAAAAAOABQAAAAAAAAAAAAOABUAAAAAAAAAAAAQABUAAAAAAAAAAAARABUAAAAAAAAAAAARABQAAAAAAAAAAAAQABQAAAAAAAAAAAASABQAAAAAAAAAAAATABQAAAAAAAAAAAAUABQAAAAAAAAAAAAVABQAAAAAAAAAAAAWABQAAAAAAAAAAAAXABQAAAAAAAAAAAAYABQAAAAAAAAAAAAZABQAAAAAAAAAAAAaABQAAAAAAAAAAAAaABUAAAAAAAAAAAAZABUAAAAAAAAAAAAYABUAAAAAAAAAAAAXABUAAAAAAAAAAAAWABUAAAAAAAAAAAAVABUAAAAAAAAAAAAUABUAAAAAAAAAAAATABUAAAAAAAAAAAASABUAAAAAAAAAAAAZABYAAAAAAAAAAAAaABYAAAAAAAAAAAAaABcAAAAAAAAAAAAbABcAAAAAAAAAAAAcABcAAAAAAAAAAAAbABgAAAAAAAAAAAAcABgAAAAAAAAAAAAdABgAAAAAAAAAAAAcABkAAAAAAAAAAAAdABkAAAAAAAAAAAAeABkAAAAAAAAAAAAfABkAAAAAAAAAAAAdABoAAAAAAAAAAAAeABoAAAAAAAAAAAAfABoAAAAAAAAAAAADABcAAAAAAAAAAAAEABcAAAAAAAAAAAAFABcAAAAAAAAAAAAGABcAAAAAAAAAAAAHABcAAAAAAAAAAAAIABYAAAAAAAAAAAAJABYAAAAAAAAAAAAKABYAAAAAAAAAAAALABYAAAAAAAAAAAAMABYAAAAAAAAAAAANABYAAAAAAAAAAAAOABYAAAAAAAAAAAAQABYAAAAAAAAAAAARABYAAAAAAAAAAAASABYAAAAAAAAAAAATABYAAAAAAAAAAAAUABYAAAAAAAAAAAAVABYAAAAAAAAAAAAWABYAAAAAAAAAAAAXABYAAAAAAAAAAAAYABYAAAAAAAAAAAAZABcAAAAAAAAAAAAaABgAAAAAAAAAAAAaABkAAAAAAAAAAAAbABkAAAAAAAAAAAAbABoAAAAAAAAAAAAcABoAAAAAAAAAAAAcABQAAAAAAAAAAAAdABQAAAAAAAAAAAAcABUAAAAAAAAAAAAdABUAAAAAAAAAAAAeABUAAAAAAAAAAAAfABUAAAAAAAAAAAAfABYAAAAAAAAAAAAeABYAAAAAAAAAAAAdABYAAAAAAAAAAAAcABYAAAAAAAAAAAAdABcAAAAAAAAAAAAeABcAAAAAAAAAAAAfABcAAAAAAAAAAAAeABgAAAAAAAAAAAAfABgAAAAAAAAAAAAWABcAAAAAAAAAAAAWABgAAAAAAAAAAAAXABgAAAAAAAAAAAAYABgAAAAAAAAAAAAYABcAAAAAAAAAAAAXABcAAAAAAAAAAAAYABkAAAAAAAAAAAAXABkAAAAAAAAAAAAYABoAAAAAAAAAAAAZABkAAAAAAAAAAAAZABgAAAAAAAAAAAAZABoAAAAAAAAAAAAaABoAAAAAAAAAAAAXABoAAAAAAAAAAAAYABsAAAAAAAAAAAAZABsAAAAAAAAAAAAaABsAAAAAAAAAAAAbABsAAAAAAAAAAAAcABsAAAAAAAAAAAAdABsAAAAAAAAAAQAeABsAAAAAAAAAAQAfABsAAAAAAAAAAQAdABwAAAAAAAAAAQAeABwAAAAAAAAAAAAfABwAAAAAAAAAAAAAABYAAAAAAAAAAAAAABcAAAAAAAAAAAABABUAAAAAAAAAAgAAABUAAAAAAAAAAgAbABYAAAAAAAAAAgD//xcAAAAAAAAAAAD//xgAAAAAAAAAAAD//xkAAAAAAAAAAAD//xoAAAAAAAAAAAD//xsAAAAAAAAAAAD//xwAAAAAAAAAAAAPABQAAAAAAAAAAQAPABUAAAAAAAAAAQAPABYAAAAAAAAAAQAbABQAAAAAAAAAAQAbABUAAAAAAAAAAQAAABgAAAAAAAAAAQABABgAAAAAAAAAAQACABgAAAAAAAAAAQADABgAAAAAAAAAAQAEABgAAAAAAAAAAQAFABgAAAAAAAAAAQAGABgAAAAAAAAAAQAHABgAAAAAAAAAAQAIABcAAAAAAAAAAQAJABcAAAAAAAAAAQAKABcAAAAAAAAAAQALABcAAAAAAAAAAQAMABcAAAAAAAAAAQANABcAAAAAAAAAAQAOABcAAAAAAAAAAQAPABcAAAAAAAAAAQAQABcAAAAAAAAAAQARABcAAAAAAAAAAQASABcAAAAAAAAAAQATABcAAAAAAAAAAQAUABcAAAAAAAAAAQAVABcAAAAAAAAAAQAVABgAAAAAAAAAAQAWABkAAAAAAAAAAQAWABoAAAAAAAAAAQAXABsAAAAAAAAAAQAXABwAAAAAAAAAAQAYABwAAAAAAAAAAQAZABwAAAAAAAAAAQAaABwAAAAAAAAAAQAbABwAAAAAAAAAAQAcABwAAAAAAAAAAQA=") +tile_map_data = PackedByteArray("AAABABcAAAAAAAAAAAABABYAAAAAAAAAAAACABcAAAAAAAAAAAACABYAAAAAAAAAAAACABUAAAAAAAAAAAADABUAAAAAAAAAAAAEABUAAAAAAAAAAAADABYAAAAAAAAAAAAEABYAAAAAAAAAAAAFABYAAAAAAAAAAAAFABUAAAAAAAAAAAAGABYAAAAAAAAAAAAGABUAAAAAAAAAAAAHABUAAAAAAAAAAAAHABYAAAAAAAAAAAAIABUAAAAAAAAAAAAIABQAAAAAAAAAAAAJABQAAAAAAAAAAAAKABQAAAAAAAAAAAAKABUAAAAAAAAAAAAJABUAAAAAAAAAAAALABUAAAAAAAAAAAAMABUAAAAAAAAAAAANABUAAAAAAAAAAAANABQAAAAAAAAAAAAMABQAAAAAAAAAAAALABQAAAAAAAAAAAAOABQAAAAAAAAAAAAOABUAAAAAAAAAAAARABUAAAAAAAAAAAARABQAAAAAAAAAAAAQABQAAAAAAAAAAAASABQAAAAAAAAAAAATABQAAAAAAAAAAAAUABQAAAAAAAAAAAAVABQAAAAAAAAAAAAWABQAAAAAAAAAAAAXABQAAAAAAAAAAAAYABQAAAAAAAAAAAAZABQAAAAAAAAAAAAaABQAAAAAAAAAAAAaABUAAAAAAAAAAAAZABUAAAAAAAAAAAAYABUAAAAAAAAAAAAXABUAAAAAAAAAAAAWABUAAAAAAAAAAAAVABUAAAAAAAAAAAAUABUAAAAAAAAAAAATABUAAAAAAAAAAAASABUAAAAAAAAAAAAZABYAAAAAAAAAAAAaABYAAAAAAAAAAAAaABcAAAAAAAAAAAAbABcAAAAAAAAAAAAcABcAAAAAAAAAAAAbABgAAAAAAAAAAAAcABgAAAAAAAAAAAAdABgAAAAAAAAAAAAcABkAAAAAAAAAAAAdABkAAAAAAAAAAAAeABkAAAAAAAAAAAAfABkAAAAAAAAAAAAdABoAAAAAAAAAAAAeABoAAAAAAAAAAAAfABoAAAAAAAAAAAADABcAAAAAAAAAAAAEABcAAAAAAAAAAAAFABcAAAAAAAAAAAAGABcAAAAAAAAAAAAHABcAAAAAAAAAAAAIABYAAAAAAAAAAAAJABYAAAAAAAAAAAAKABYAAAAAAAAAAAALABYAAAAAAAAAAAAMABYAAAAAAAAAAAANABYAAAAAAAAAAAAOABYAAAAAAAAAAAAQABYAAAAAAAAAAAARABYAAAAAAAAAAAASABYAAAAAAAAAAAATABYAAAAAAAAAAAAUABYAAAAAAAAAAAAVABYAAAAAAAAAAAAWABYAAAAAAAAAAAAXABYAAAAAAAAAAAAYABYAAAAAAAAAAAAZABcAAAAAAAAAAAAaABgAAAAAAAAAAAAaABkAAAAAAAAAAAAbABkAAAAAAAAAAAAbABoAAAAAAAAAAAAcABoAAAAAAAAAAAAcABQAAAAAAAAAAAAdABQAAAAAAAAAAAAcABUAAAAAAAAAAAAdABUAAAAAAAAAAAAeABUAAAAAAAAAAAAfABUAAAAAAAAAAAAfABYAAAAAAAAAAAAeABYAAAAAAAAAAAAdABYAAAAAAAAAAAAcABYAAAAAAAAAAAAdABcAAAAAAAAAAAAeABcAAAAAAAAAAAAfABcAAAAAAAAAAAAeABgAAAAAAAAAAAAfABgAAAAAAAAAAAAWABcAAAAAAAAAAAAWABgAAAAAAAAAAAAXABgAAAAAAAAAAAAYABgAAAAAAAAAAAAYABcAAAAAAAAAAAAXABcAAAAAAAAAAAAYABkAAAAAAAAAAAAXABkAAAAAAAAAAAAYABoAAAAAAAAAAAAZABkAAAAAAAAAAAAZABgAAAAAAAAAAAAZABoAAAAAAAAAAAAaABoAAAAAAAAAAAAXABoAAAAAAAAAAAAYABsAAAAAAAAAAAAZABsAAAAAAAAAAAAaABsAAAAAAAAAAAAbABsAAAAAAAAAAAAcABsAAAAAAAAAAAAdABsAAAAAAAAAAQAeABsAAAAAAAAAAQAfABsAAAAAAAAAAQAdABwAAAAAAAAAAQAeABwAAAAAAAAAAAAfABwAAAAAAAAAAAAAABYAAAAAAAAAAAAAABcAAAAAAAAAAAABABUAAAAAAAAAAgAAABUAAAAAAAAAAgD//xcAAAAAAAAAAAD//xgAAAAAAAAAAAD//xkAAAAAAAAAAAD//xoAAAAAAAAAAAD//xsAAAAAAAAAAAD//xwAAAAAAAAAAAAPABQAAAAAAAAAAQAbABQAAAAAAAAAAQAAABgAAAAAAAAAAQABABgAAAAAAAAAAQACABgAAAAAAAAAAQADABgAAAAAAAAAAQAEABgAAAAAAAAAAQAFABgAAAAAAAAAAQAGABgAAAAAAAAAAQAHABgAAAAAAAAAAQAIABcAAAAAAAAAAQAJABcAAAAAAAAAAQAKABcAAAAAAAAAAQALABcAAAAAAAAAAQAMABcAAAAAAAAAAQANABcAAAAAAAAAAQAOABcAAAAAAAAAAQAPABcAAAAAAAAAAQAQABcAAAAAAAAAAQARABcAAAAAAAAAAQASABcAAAAAAAAAAQATABcAAAAAAAAAAQAUABcAAAAAAAAAAQAVABcAAAAAAAAAAQAVABgAAAAAAAAAAQAWABkAAAAAAAAAAQAWABoAAAAAAAAAAQAXABsAAAAAAAAAAQAXABwAAAAAAAAAAQAYABwAAAAAAAAAAQAZABwAAAAAAAAAAQAaABwAAAAAAAAAAQAbABwAAAAAAAAAAQAcABwAAAAAAAAAAQAQABUAAAAAAAAAAAAPABUAAAAAAAAAAAAPABYAAAAAAAAAAAAbABUAAAAAAAAAAAAbABYAAAAAAAAAAAA=") tile_set = ExtResource("4_6ss6a") [node name="ModulateAsSkyBehavior" type="Node" parent="TileMapLayers/Water" unique_id=1052174442 node_paths=PackedStringArray("canvas_item")] @@ -88,11 +88,11 @@ metadata/_custom_type_script = "uid://ctko5bdas16ah" [node name="Foam" type="TileMapLayer" parent="TileMapLayers" unique_id=632936150] scale = Vector2(1.00113, 1) -tile_map_data = PackedByteArray("AAAAABUAAgAAAAAAAAABABUAAgAAAAAAAAACABUAAgAAAAAAAAADABUAAgAAAAAAAAAEABUAAgAAAAAAAAAFABUAAgAAAAAAAAAGABUAAgAAAAAAAAAHABUAAgAAAAAAAAAHABQAAgAAAAAAAAAIABQAAgAAAAAAAAAJABQAAgAAAAAAAAAKABQAAgAAAAAAAAALABQAAgAAAAAAAAAMABQAAgAAAAAAAAANABQAAgAAAAAAAAAOABQAAgAAAAAAAAAPABQAAgAAAAAAAAAQABQAAgAAAAAAAAARABQAAgAAAAAAAAASABQAAgAAAAAAAAATABQAAgAAAAAAAAAUABQAAgAAAAAAAAAVABQAAgAAAAAAAAAWABQAAgAAAAAAAAAXABQAAgAAAAAAAAAYABQAAgAAAAAAAAAZABQAAgAAAAAAAAAaABQAAgAAAAAAAAAbABQAAgAAAAAAAAAcABQAAgAAAAAAAAAdABQAAgAAAAAAAAAeABQAAgAAAAAAAAAeABUAAgAAAAAAAAAfABUAAgAAAAAAAAAVABgAAgAAAAAAAAAAABkAAgAAAAAAAAAAABoAAgAAAAAAAAAAABsAAgAAAAAAAAAAABwAAgAAAAAAAAAAAB0AAgAAAAAAAAAAAB4AAgAAAAAAAAAAAB8AAgAAAAAAAAAVABkAAgAAAAAAAAAWABoAAgAAAAAAAAAVABoAAgAAAAAAAAAWABsAAgAAAAAAAAAfABwAAgAAAAAAAAAfAB0AAgAAAAAAAAAfAB4AAgAAAAAAAAAfAB8AAgAAAAAAAAA=") +tile_map_data = PackedByteArray("AAAAABUAAgAAAAAAAAABABUAAgAAAAAAAAACABUAAgAAAAAAAAADABUAAgAAAAAAAAAEABUAAgAAAAAAAAAFABUAAgAAAAAAAAAGABUAAgAAAAAAAAAHABUAAgAAAAAAAAAHABQAAgAAAAAAAAAIABQAAgAAAAAAAAAJABQAAgAAAAAAAAAKABQAAgAAAAAAAAALABQAAgAAAAAAAAAMABQAAgAAAAAAAAANABQAAgAAAAAAAAAOABQAAgAAAAAAAAAPABQAAgAAAAAAAAAQABQAAgAAAAAAAAARABQAAgAAAAAAAAATABQAAgAAAAAAAAAUABQAAgAAAAAAAAAVABQAAgAAAAAAAAAWABQAAgAAAAAAAAAXABQAAgAAAAAAAAAYABQAAgAAAAAAAAAZABQAAgAAAAAAAAAaABQAAgAAAAAAAAAbABQAAgAAAAAAAAAcABQAAgAAAAAAAAAdABQAAgAAAAAAAAAeABQAAgAAAAAAAAAeABUAAgAAAAAAAAAfABUAAgAAAAAAAAAVABgAAgAAAAAAAAAAABkAAgAAAAAAAAAAABoAAgAAAAAAAAAAABsAAgAAAAAAAAAAABwAAgAAAAAAAAAAAB0AAgAAAAAAAAAAAB4AAgAAAAAAAAAAAB8AAgAAAAAAAAAVABkAAgAAAAAAAAAWABoAAgAAAAAAAAAVABoAAgAAAAAAAAAWABsAAgAAAAAAAAAfABwAAgAAAAAAAAAfAB0AAgAAAAAAAAAfAB4AAgAAAAAAAAAfAB8AAgAAAAAAAAASABQAAgAAAAAAAAA=") tile_set = ExtResource("5_ppslc") [node name="Stone_Level0" type="TileMapLayer" parent="TileMapLayers" unique_id=1567249514] -tile_map_data = PackedByteArray("AAAeABQABAAAAAIAAAAfABQABAACAAIAAAAdAAsABAAAAAMAAAAdABMABAABAAIAAAAeABMABAABAAIAAAAfABMABAABAAIAAAAAABQABAABAAIAAAABABQABAABAAIAAAACABQABAABAAIAAAADABQABAABAAIAAAAEABQABAABAAIAAAAFABQABAABAAIAAAAGABQABAABAAIAAAAHABQABAACAAIAAAAcABMABAABAAIAAAAbABMABAABAAIAAQAaABMABAABAAIAAAAZABMABAABAAIAAAAYABMABAABAAIAAAAXABMABAABAAIAAAAWABMABAABAAIAAAAVABMABAABAAIAAAAUABMABAABAAIAAAATABMABAABAAIAAAASABMABAABAAIAAAARABMABAABAAIAAAAQABMABAABAAIAAAAPABMABAABAAIAAQAOABMABAABAAIAAAANABMABAABAAIAAAAMABMABAABAAIAAAALABMABAABAAIAAAAKABMABAABAAIAAAAJABMABAABAAIAAAAIABMABAABAAIAAAA=") +tile_map_data = PackedByteArray("AAAeABQABAAAAAIAAAAfABQABAACAAIAAAAdAAsABAAAAAMAAAAdABMABAABAAIAAAAeABMABAABAAIAAAAfABMABAABAAIAAAAAABQABAABAAIAAAABABQABAABAAIAAAACABQABAABAAIAAAADABQABAABAAIAAAAEABQABAABAAIAAAAFABQABAABAAIAAAAGABQABAABAAIAAAAHABQABAACAAIAAAAcABMABAABAAIAAAAbABMABAABAAIAAQAaABMABAABAAIAAAAZABMABAABAAIAAAAYABMABAABAAIAAAAXABMABAABAAIAAAAWABMABAABAAIAAAAVABMABAABAAIAAAAUABMABAABAAIAAAATABMABAABAAIAAAASABMABAABAAIAAAARABMABAABAAIAAAAQABMABAABAAIAAAAPABMABAABAAIAAAAOABMABAABAAIAAAANABMABAABAAIAAAAMABMABAABAAIAAAALABMABAABAAIAAAAKABMABAABAAIAAAAJABMABAABAAIAAAAIABMABAABAAIAAAA=") tile_set = ExtResource("6_5j6h7") metadata/_edit_lock_ = true @@ -134,7 +134,7 @@ tile_map_data = PackedByteArray("AAAPABMAAwAAAAEAAAAPABUAAwAAAAIAAAAPABYAAwAAAAI tile_set = ExtResource("8_ns5r3") [node name="Piers" type="TileMapLayer" parent="TileMapLayers" unique_id=855664120] -tile_map_data = PackedByteArray("AAAbABMAAwAAAAEAAAAbABQAAwAAAAIAAAAbABUAAwAAAAIAAAAbABYAAwAAAAMAAAA=") +tile_map_data = PackedByteArray("AAAbABMAAwAAAAEAAAAbABQAAwAAAAIAAAAbABUAAwAAAAIAAAAbABYAAwAAAAMAAQA=") tile_set = ExtResource("8_ns5r3") [node name="Grass_Level2" type="TileMapLayer" parent="TileMapLayers" unique_id=787768027] diff --git a/tiles/bridges.tres b/tiles/bridges.tres index 45134046c0..f46ca1a81c 100644 --- a/tiles/bridges.tres +++ b/tiles/bridges.tres @@ -8,48 +8,71 @@ texture_region_size = Vector2i(64, 64) 0:0/0 = 0 0:0/0/terrain_set = 0 0:0/0/terrain = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(16, -24, 32, -24, 32, 24, 16, 24) +0:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(32, -24, 32, -32, 24, -32) +0:0/0/physics_layer_1/polygon_1/points = PackedVector2Array(32, 24, 32, 32, 24, 32) 0:0/0/terrains_peering_bit/right_side = 0 1:0/0 = 0 1:0/0/terrain_set = 0 1:0/0/terrain = 0 +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -24, 32, -24, 32, 24, -32, 24) +1:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, -26, -32, -26) +1:0/0/physics_layer_1/polygon_1/points = PackedVector2Array(-32, 24, 32, 24, 32, 32, -32, 32) 1:0/0/terrains_peering_bit/right_side = 0 1:0/0/terrains_peering_bit/left_side = 0 2:0/0 = 0 2:0/0/terrain_set = 0 2:0/0/terrain = 0 +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -24, -16, -24, -16, 24, -32, 24) +2:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, -24, -32, -32, -24) +2:0/0/physics_layer_1/polygon_1/points = PackedVector2Array(-32, 24, -32, 24, -24, 32, -32, 32) 2:0/0/terrains_peering_bit/left_side = 0 0:1/0 = 0 0:1/0/terrain_set = 0 0:1/0/terrain = 0 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-24, 24, 24, 24, 24, 32, -24, 32) +0:1/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 24, -24, 32, -32, 32) +0:1/0/physics_layer_1/polygon_1/points = PackedVector2Array(24, 32, 32, 24, 32, 32) 0:1/0/terrains_peering_bit/bottom_side = 0 1:1/0 = 0 2:1/0 = 0 0:2/0 = 0 0:2/0/terrain_set = 0 0:2/0/terrain = 0 +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-24, -32, 24, -32, 24, 32, -24, 32) +0:2/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, -32, -32, -26, -32, -26, 32, -32, 32) +0:2/0/physics_layer_1/polygon_1/points = PackedVector2Array(25, -32, 32, -32, 32, 32, 25, 32) 0:2/0/terrains_peering_bit/bottom_side = 0 0:2/0/terrains_peering_bit/top_side = 0 1:2/0 = 0 +0:3/next_alternative_id = 2 0:3/0 = 0 0:3/0/terrain_set = 0 0:3/0/terrain = 0 +0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-24, -32, 24, -32, 24, -24, -24, -24) +0:3/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -24, -24, -32, -32, -32) +0:3/0/physics_layer_1/polygon_1/points = PackedVector2Array(24, -32, 32, -32, 32, -24) 0:3/0/terrains_peering_bit/top_side = 0 +0:3/1 = 1 +0:3/1/physics_layer_0/polygon_0/points = PackedVector2Array(-24, -32, 24, -32, 24, 0, -24, 0) +0:3/1/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, -24, -32, -24, 8, 24, 8, 24, -32, 32, -32, 32, 24, 32, 32, -32, 32) 2:3/0 = 0 2:2/0 = 0 -2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-19.593307, -26.124409, -18.799213, 22.622784, 23.897308, 22.941414, 23.791874, -26.124409, -20.059814, -26.124409) +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 24, -32, -24, -16, -24, -16, 24) +2:2/0/physics_layer_0/polygon_1/points = PackedVector2Array(16, 24, 16, -24, 32, -24, 32, 24) +2:2/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, -24, 16, -25.401325, 16, 24.836853, 32, 24, 32, 32, -32, 32, -32, 24, -16, 24, -16, -23.143429, -32, -24) 1:3/0 = 0 -1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-26.530273, -21.450008, 27.402245, -21.029629, 27.402245, 15.294277, -27.094748, 15.805267, -27.094748, -22.578957) +1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-24, -32, 24, -32, 24, -16, -24, -16) +1:3/0/physics_layer_0/polygon_1/points = PackedVector2Array(-24, 16, 24, 16, 24, 32, -24, 32) +1:3/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, -24, -32, -23.990143, -16, 24.554615, -16, 24, -32, 32, -32, 32, 32, 24, 32, 24.554611, 16, -23.990143, 16, -24, 32, -32, 32) [resource] tile_size = Vector2i(64, 64) occlusion_layer_0/light_mask = 1 -physics_layer_0/collision_layer = 16 +physics_layer_0/collision_layer = 1024 physics_layer_0/collision_mask = 0 -physics_layer_0/collision_priority = 100.0 -physics_layer_1/collision_layer = 8 +physics_layer_1/collision_layer = 2048 physics_layer_1/collision_mask = 0 -physics_layer_2/collision_layer = 512 -physics_layer_2/collision_mask = 0 terrain_set_0/mode = 2 terrain_set_0/terrain_0/name = "Bridge" terrain_set_0/terrain_0/color = Color(0.404068, 0.229965, 0.149571, 1) diff --git a/tiles/void_chromakey.tres b/tiles/void_chromakey.tres index 93d50e2733..b4779563e2 100644 --- a/tiles/void_chromakey.tres +++ b/tiles/void_chromakey.tres @@ -110,7 +110,7 @@ physics_layer_0/collision_mask = 0 physics_layer_0/collision_priority = 100.0 physics_layer_1/collision_layer = 8 physics_layer_1/collision_mask = 0 -physics_layer_2/collision_layer = 512 +physics_layer_2/collision_layer = 8192 physics_layer_2/collision_mask = 0 terrain_set_0/mode = 2 terrain_set_0/terrain_0/name = "VoidChromakey"