diff --git a/scenes/quests/story_quests/infinite_knight/0_intro/infinite_knight_intro.tscn b/scenes/quests/story_quests/infinite_knight/0_intro/infinite_knight_intro.tscn new file mode 100644 index 0000000000..b51493ca66 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/0_intro/infinite_knight_intro.tscn @@ -0,0 +1,167 @@ +[gd_scene format=4 uid="uid://cwvgojq5k7eta"] + +[ext_resource type="TileSet" uid="uid://byr2ytqav02w5" path="res://scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_exterior_floors.tres" id="1_sgmv7"] +[ext_resource type="Texture2D" uid="uid://dxeao6fu17xod" path="res://scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Ojo.png" id="2_sgmv7"] +[ext_resource type="SpriteFrames" uid="uid://7q17ox014opg" path="res://scenes/quests/story_quests/infinite_knight/player_components/infinite_knight_player.tres" id="3_wtq3u"] +[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="4_363fn"] +[ext_resource type="Resource" uid="uid://cu2kj2nnn0ha7" path="res://scenes/quests/story_quests/infinite_knight/0_intro/intro_components/infinite_knight_intro.dialogue" id="5_qs3vr"] +[ext_resource type="Texture2D" uid="uid://cs8dj6t3nq3kn" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/background.png" id="7_hvge8"] +[ext_resource type="AudioStream" uid="uid://df38ngkb6wv5q" path="res://scenes/quests/story_quests/infinite_knight/player_components/intro.mp3" id="7_wtq3u"] + +[sub_resource type="Animation" id="Animation_y447m"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("OnTheGround/Character:animation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [&"idle"] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("OnTheGround/Character:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(400, 349)] +} + +[sub_resource type="Animation" id="Animation_p14yf"] +resource_name = "walk_off" +length = 2.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("OnTheGround/Character:animation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 2), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [&"walk", &"idle"] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("OnTheGround/Character:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(495, 478), Vector2(1010, 478)] +} + +[sub_resource type="Animation" id="Animation_y11yo"] +resource_name = "walk_on" +length = 2.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("OnTheGround/Character:animation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 2), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [&"walk", &"idle"] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("OnTheGround/Character:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(-50, 478), Vector2(495, 478)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_dphfl"] +_data = { +&"RESET": SubResource("Animation_y447m"), +&"walk_off": SubResource("Animation_p14yf"), +&"walk_on": SubResource("Animation_y11yo") +} + +[node name="InfiniteKnightIntro" type="Node2D" unique_id=2049284984] + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=591504591] + +[node name="Ground" type="TileMapLayer" parent="TileMapLayers" unique_id=397514282] +tile_set = ExtResource("1_sgmv7") +metadata/_edit_lock_ = true + +[node name="IntroImage" type="Sprite2D" parent="TileMapLayers" unique_id=1406016146] +position = Vector2(770, 227) +scale = Vector2(2, 2) +texture = ExtResource("2_sgmv7") + +[node name="Sand" type="TileMapLayer" parent="TileMapLayers" unique_id=874671513] +tile_map_data = PackedByteArray("AAAAAAcABQABAAMAAAABAAcABQABAAMAAAACAAcABQABAAMAAAAMAAcABQABAAMAAAANAAcABQABAAMAAAAOAAcABQABAAMAAAD//wcAAQAGAAMAAAD+/wcAAQAGAAMAAAD9/wcAAQAGAAMAAAD8/wcAAQAGAAMAAAD7/wcAAQAGAAMAAAD6/wcAAQAGAAMAAAD5/wcAAQAGAAMAAAD4/wcAAQAFAAMAAAAPAAcAAQAGAAMAAAAQAAcAAQAGAAMAAAARAAcAAQAGAAMAAAASAAcAAQAGAAMAAAATAAcAAQAGAAMAAAAUAAcAAQAGAAMAAAAVAAcAAQAGAAMAAAAWAAcAAQAHAAMAAAADAAcABQABAAMAAAAJAAcABQABAAMAAAAKAAcABQABAAMAAAALAAcABQABAAMAAAAEAAcABQABAAMAAAAFAAcABQABAAMAAAAGAAcABQABAAMAAAAHAAcABQABAAMAAAAIAAcABQABAAMAAAAAAAgAAQAAAAMAAAABAAgAAQAAAAMAAAACAAgAAQAAAAMAAAADAAgAAQAAAAMAAAAEAAgAAQAAAAMAAAAFAAgAAQAAAAMAAAAGAAgAAQAAAAMAAAAHAAgAAQAAAAMAAAAIAAgAAQAAAAMAAAAJAAgAAQAAAAMAAAAKAAgAAQAAAAMAAAALAAgAAQAAAAMAAAAMAAgAAQAAAAMAAAANAAgAAQAAAAMAAAAOAAgAAQAAAAMAAAA=") +tile_set = ExtResource("1_sgmv7") + +[node name="Camera2D" type="Camera2D" parent="." unique_id=1064875179] +position = Vector2(153, 366) +zoom = Vector2(1.333, 1.333) +limit_left = 0 +limit_top = 0 +limit_right = 960 +limit_bottom = 540 +position_smoothing_enabled = true +editor_draw_limits = true + +[node name="OnTheGround" type="Node2D" parent="." unique_id=836096441] +y_sort_enabled = true + +[node name="Character" type="AnimatedSprite2D" parent="OnTheGround" unique_id=169229228] +position = Vector2(400, 349) +sprite_frames = ExtResource("3_wtq3u") +animation = &"idle" +autoplay = "idle" + +[node name="AnimationPlayer" type="AnimationPlayer" parent="OnTheGround" unique_id=49807179] +root_node = NodePath("../..") +libraries/ = SubResource("AnimationLibrary_dphfl") + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=826076597] + +[node name="Cinematic" type="Node2D" parent="." unique_id=1398238637 node_paths=PackedStringArray("animation_player")] +script = ExtResource("4_363fn") +dialogue = ExtResource("5_qs3vr") +animation_player = NodePath("../OnTheGround/AnimationPlayer") +next_scene = "uid://c5jvk1n4s6bmd" +metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="ParallaxBackground" type="ParallaxBackground" parent="." unique_id=171719096] + +[node name="ParallaxLayer" type="ParallaxLayer" parent="ParallaxBackground" unique_id=473666825] +motion_scale = Vector2(0.1, 0.1) + +[node name="TextureRect" type="TextureRect" parent="ParallaxBackground/ParallaxLayer" unique_id=1919095767] +texture_filter = 1 +offset_left = -1411.0 +offset_top = -245.0 +offset_right = -147.0 +offset_bottom = 512.0 +scale = Vector2(2, 2) +texture = ExtResource("7_hvge8") + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=739703707] +stream = ExtResource("7_wtq3u") +volume_db = -10.0 +autoplay = true diff --git a/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Cliff_Tiles.png b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Cliff_Tiles.png new file mode 100644 index 0000000000..9a85a07f13 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Cliff_Tiles.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d23acb64af352141b6cb58f5e4bee1c123ef962b3cecc67fbe6bb3f389d4f2f +size 16515 diff --git a/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Cliff_Tiles.png.import b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Cliff_Tiles.png.import new file mode 100644 index 0000000000..afd2ff633e --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Cliff_Tiles.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ctm8vytfv82cn" +path="res://.godot/imported/Cliff_Tiles.png-c6a7cc88294cc63d38f37eb4bea23746.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Cliff_Tiles.png" +dest_files=["res://.godot/imported/Cliff_Tiles.png-c6a7cc88294cc63d38f37eb4bea23746.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Grass_Tiles_Light.png b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Grass_Tiles_Light.png new file mode 100644 index 0000000000..181a7c5794 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Grass_Tiles_Light.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:879cff1d119d766421279e3202553ae35e3297ad7b577b2a5bf4727c197b3e7c +size 4025 diff --git a/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Grass_Tiles_Light.png.import b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Grass_Tiles_Light.png.import new file mode 100644 index 0000000000..c5eb3673d0 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Grass_Tiles_Light.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d4ixm142nilgq" +path="res://.godot/imported/Grass_Tiles_Light.png-db81fa060b93b0bc974ff75daaecaed3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Grass_Tiles_Light.png" +dest_files=["res://.godot/imported/Grass_Tiles_Light.png-db81fa060b93b0bc974ff75daaecaed3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Ojo.png b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Ojo.png new file mode 100644 index 0000000000..b9db4d85a7 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Ojo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed818990f7ce0b1c6eb3852b66a1d542770fe6a11270d168fa6dace000838a6e +size 975 diff --git a/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Ojo.png.import b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Ojo.png.import new file mode 100644 index 0000000000..87efa2de58 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Ojo.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxeao6fu17xod" +path="res://.godot/imported/Ojo.png-45b27471ff7d1853b4f6e0bafc496abe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Ojo.png" +dest_files=["res://.godot/imported/Ojo.png-45b27471ff7d1853b4f6e0bafc496abe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/infinite_knight_intro.dialogue b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/infinite_knight_intro.dialogue new file mode 100644 index 0000000000..4cb0f4a35b --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/infinite_knight_intro.dialogue @@ -0,0 +1,10 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 + +~ start +do animation_player.play(&"walk_on") +do animation_player.animation_finished +El universo esta hecho pedazos el caballero se levanta desde los restos que quedo. No es un héroe buscando gloria; es un trabajador eterno preparándose para otra tarea dolorosa. Siente cómo la realidad se agrieta a lo lejos y sabe que es su turno de intervenir. +do animation_player.play(&"walk_off") +(Suspirando mientras mira el inmenso abismo) "Otra herida en la realidad... Supongo que es hora de volver para hallar una respuesta." +=> END \ No newline at end of file diff --git a/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/infinite_knight_intro.dialogue.import b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/infinite_knight_intro.dialogue.import new file mode 100644 index 0000000000..7882dbee36 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/0_intro/intro_components/infinite_knight_intro.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://cu2kj2nnn0ha7" +path="res://.godot/imported/infinite_knight_intro.dialogue-fe56bb1f1086d2d6a55167ded788935b.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/0_intro/intro_components/infinite_knight_intro.dialogue" +dest_files=["res://.godot/imported/infinite_knight_intro.dialogue-fe56bb1f1086d2d6a55167ded788935b.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/infinite_knight_stealth.gd b/scenes/quests/story_quests/infinite_knight/1_stealth/infinite_knight_stealth.gd new file mode 100644 index 0000000000..2a0fed7d28 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/infinite_knight_stealth.gd @@ -0,0 +1,51 @@ +extends Node2D + +@export var player: CharacterBody2D +@export var push_force: float = 150.0 + +const UI_NODES_TO_HIDE: Array[String] = ["AimInputHint", "ThrowInputHint", "RepelInputHint"] +var _hidden_ui_nodes: Array[CanvasItem] = [] + +func _ready() -> void: + _set_stealth_environment(true) + +func _exit_tree() -> void: + _set_stealth_environment(false) + +func _physics_process(_delta: float) -> void: + if not is_instance_valid(player): return + + # Colisiones para objetos interactuables + for i in player.get_slide_collision_count(): + var collision: KinematicCollision2D = player.get_slide_collision(i) + var collider: Object = collision.get_collider() + + if collider is RigidBody2D and collider.is_in_group("pushable"): + collider.apply_central_impulse(-collision.get_normal() * push_force) + +# Gestiona la UI global y anula componentes de combate localmente +func _set_stealth_environment(active: bool) -> void: + # Manejo de UI Hints + if active: + var root: Window = get_tree().root + for node_name in UI_NODES_TO_HIDE: + var node: Node = root.find_child(node_name, true, false) + if is_instance_valid(node) and node is CanvasItem: + node.visible = false + _hidden_ui_nodes.append(node) + else: + for node in _hidden_ui_nodes: + if is_instance_valid(node): node.visible = true + _hidden_ui_nodes.clear() + + # Manejo de habilidades del jugador + if not is_instance_valid(player): return + + if active: + for component: String in ["player_hook", "player_repel"]: + var node: Node2D = player.get(component) as Node2D + if is_instance_valid(node): + node.process_mode = Node.PROCESS_MODE_DISABLED + node.visible = false + elif player.has_method("_toggle_abilities"): + player.call("_toggle_abilities") diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/infinite_knight_stealth.gd.uid b/scenes/quests/story_quests/infinite_knight/1_stealth/infinite_knight_stealth.gd.uid new file mode 100644 index 0000000000..d57fec71d2 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/infinite_knight_stealth.gd.uid @@ -0,0 +1 @@ +uid://2y17g4vb4tr7 diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/infinite_knight_stealth.tscn b/scenes/quests/story_quests/infinite_knight/1_stealth/infinite_knight_stealth.tscn new file mode 100644 index 0000000000..d6870f12c9 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/infinite_knight_stealth.tscn @@ -0,0 +1,441 @@ +[gd_scene format=4 uid="uid://c5jvk1n4s6bmd"] + +[ext_resource type="Script" uid="uid://dnp0tjloec2d7" path="res://scenes/game_logic/stealth_game_logic.gd" id="1_hugba"] +[ext_resource type="Script" uid="uid://2y17g4vb4tr7" path="res://scenes/quests/story_quests/infinite_knight/1_stealth/infinite_knight_stealth.gd" id="1_jp822"] +[ext_resource type="TileSet" uid="uid://byr2ytqav02w5" path="res://scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_exterior_floors.tres" id="2_lv1et"] +[ext_resource type="TileSet" uid="uid://db7j7n1mbf4iv" path="res://scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_shadows.tres" id="3_jp822"] +[ext_resource type="TileSet" uid="uid://haxvbtijkihu" path="res://scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_elevation_2.tres" id="4_1bq7h"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="5_bc86y"] +[ext_resource type="SpriteFrames" uid="uid://7q17ox014opg" path="res://scenes/quests/story_quests/infinite_knight/player_components/infinite_knight_player.tres" id="6_5n4fp"] +[ext_resource type="PackedScene" uid="uid://d37mebu7atru7" path="res://scenes/game_elements/characters/enemies/guard/guard.tscn" id="7_435ip"] +[ext_resource type="Texture2D" uid="uid://b5i67ccnv8mg6" path="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_alerted.png" id="9_bc86y"] +[ext_resource type="Texture2D" uid="uid://bv1af26d3io7l" path="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_idle.png" id="10_5n4fp"] +[ext_resource type="Texture2D" uid="uid://dlfuss0cemee0" path="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_walk.png" id="11_435ip"] +[ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="11_ycyqv"] +[ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="12_8if7k"] +[ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="14_jp822"] +[ext_resource type="Resource" uid="uid://bh7i6gehiem32" path="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_collected.dialogue" id="15_1bq7h"] +[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="15_mj11r"] +[ext_resource type="Resource" uid="uid://djs0srytwur0g" path="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_stealth.dialogue" id="16_nsdbk"] +[ext_resource type="PackedScene" uid="uid://cyfc7n60fs1wv" path="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/pushable_block.tscn" id="17_lv1et"] +[ext_resource type="Texture2D" uid="uid://cs8dj6t3nq3kn" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/background.png" id="19_1bq7h"] +[ext_resource type="AudioStream" uid="uid://bc5asjem8tako" path="res://scenes/quests/story_quests/infinite_knight/player_components/stealth.mp3" id="20_bc86y"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_1wysg"] +atlas = ExtResource("9_bc86y") +region = Rect2(0, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_on4b3"] +atlas = ExtResource("9_bc86y") +region = Rect2(256, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nqkhw"] +atlas = ExtResource("10_5n4fp") +region = Rect2(0, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_h75uo"] +atlas = ExtResource("11_435ip") +region = Rect2(0, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_81cd8"] +atlas = ExtResource("11_435ip") +region = Rect2(256, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hn4ts"] +atlas = ExtResource("11_435ip") +region = Rect2(512, 0, 256, 256) + +[sub_resource type="SpriteFrames" id="SpriteFrames_8f1g8"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_1wysg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_on4b3") +}], +"loop": true, +"name": &"alerted", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_nqkhw") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_h75uo") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_81cd8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hn4ts") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] + +[sub_resource type="SpriteFrames" id="SpriteFrames_4qvj1"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_1wysg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_on4b3") +}], +"loop": true, +"name": &"alerted", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_nqkhw") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_h75uo") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_81cd8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hn4ts") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] + +[sub_resource type="SpriteFrames" id="SpriteFrames_0bqry"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_1wysg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_on4b3") +}], +"loop": true, +"name": &"alerted", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_nqkhw") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_h75uo") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_81cd8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hn4ts") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_1bq7h"] +atlas = ExtResource("9_bc86y") +region = Rect2(0, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_bc86y"] +atlas = ExtResource("9_bc86y") +region = Rect2(256, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_5n4fp"] +atlas = ExtResource("10_5n4fp") +region = Rect2(0, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_435ip"] +atlas = ExtResource("11_435ip") +region = Rect2(0, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8f1g8"] +atlas = ExtResource("11_435ip") +region = Rect2(256, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4qvj1"] +atlas = ExtResource("11_435ip") +region = Rect2(512, 0, 256, 256) + +[sub_resource type="SpriteFrames" id="SpriteFrames_ycyqv"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_1bq7h") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bc86y") +}], +"loop": true, +"name": &"alerted", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_5n4fp") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_435ip") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8f1g8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4qvj1") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] + +[sub_resource type="SpriteFrames" id="SpriteFrames_8if7k"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_1bq7h") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bc86y") +}], +"loop": true, +"name": &"alerted", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_5n4fp") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_435ip") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8f1g8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4qvj1") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] + +[sub_resource type="Curve2D" id="Curve2D_ycyqv"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 426.26465, -233.20206, 0, 0, 0, 0, 319.69824, -230.71918) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_8if7k"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 19.076752, -233.30095, 0, 0, 0, 0, -365.15558, -233.45528) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_idi01"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 19.076752, -233.30095, 0, 0, 0, 0, -365.15558, -233.45528) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_mj11r"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 19.076752, -233.30095, 0, 0, 0, 0, -227.83704, -233.80515) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_nsdbk"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 19.076752, -233.30095, 0, 0, 0, 0, -227.83704, -233.80515) +} +point_count = 2 + +[sub_resource type="Resource" id="Resource_bc86y"] +script = ExtResource("14_jp822") +metadata/_custom_type_script = "uid://bgmwplmj3bfls" + +[node name="InfiniteKnightStealth" type="Node2D" unique_id=528815133 node_paths=PackedStringArray("player")] +y_sort_enabled = true +script = ExtResource("1_jp822") +player = NodePath("Player") + +[node name="StealthGameLogic" type="Node" parent="." unique_id=1734695953] +script = ExtResource("1_hugba") + +[node name="CanvasModulate" type="CanvasModulate" parent="." unique_id=508226475] +color = Color(0.481789, 0.48179, 0.481789, 1) + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=1475451359] +y_sort_enabled = true +metadata/_edit_lock_ = true + +[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=18503680] +tile_map_data = PackedByteArray("AAAaAAYABQACAAEAAAAZAAcABQABAAEAAAAZAAYABQABAAEAAAAYAAcABQABAAEAAAAYAAYABQABAAEAAAAXAAcABQABAAEAAAAXAAYABQABAAEAAAAWAAcABQABAAEAAAAWAAYABQABAAEAAAAVAAcABQABAAEAAAAVAAYABQABAAEAAAAUAAcABQABAAEAAAAUAAYABQABAAEAAAATAAcABQABAAEAAAATAAYABQABAAEAAAASAAcABQABAAEAAAASAAYABQABAAEAAAARAAcABQABAAEAAAARAAYABQABAAEAAAAQAAcABQABAAEAAAAQAAYABQABAAEAAAAPAAcABQABAAEAAAAPAAYABQABAAEAAAAOAAcABQABAAEAAAAOAAYABQABAAEAAAANAAcABQABAAEAAAANAAYABQABAAEAAAAMAAcABQABAAEAAAAMAAYABQABAAEAAAAMAAUABQABAAEAAAALAAcABQABAAEAAAALAAYABQABAAEAAAALAAUABQABAAEAAAAKAAcABQABAAEAAAAKAAYABQABAAEAAAAJAAcABQABAAEAAAAJAAYABQABAAEAAAAIAAcABQABAAEAAAAIAAYABQABAAEAAAAHAAcABQABAAEAAAAHAAYABQABAAEAAAAGAAcABQABAAEAAAAGAAYABQABAAEAAAAFAAcABQABAAEAAAAFAAYABQABAAEAAAAEAAcABQABAAEAAAAEAAYABQABAAEAAAADAAcABQABAAIAAAADAAYABQABAAAAAAACAAcABQABAAIAAAACAAYABQABAAAAAAABAAcABQABAAIAAAABAAYABQABAAAAAAAaAAcABQACAAEAAAAAAAYABQABAAAAAAAAAAcABQABAAIAAAAEAAUABQABAAEAAAAEAAQABQABAAEAAAAEAAgABQAAAAEAAAAEAAkABQAAAAEAAAAEAAMABQAAAAEAAAAEAAIABQAAAAEAAAAEAAEABQAAAAAAAAAFAAEABQABAAAAAAAGAAEABQABAAAAAAAHAAEABQABAAAAAAAIAAEABQABAAAAAAAJAAEABQABAAAAAAAGAAwABQABAAIAAAAHAAwABQABAAIAAAAIAAwABQABAAIAAAAJAAwABQABAAIAAAAKAAwABQABAAIAAAALAAwABQABAAIAAAAMAAwABQABAAIAAAANAAwABQABAAIAAAAOAAwABQABAAIAAAAPAAwABQABAAIAAAAQAAwABQABAAIAAAARAAwABQABAAIAAAASAAwABQABAAIAAAATAAwABQABAAIAAAAUAAwABQABAAIAAAAVAAwABQABAAIAAAAWAAwABQABAAIAAAAXAAwABQABAAIAAAAYAAwABQABAAIAAAAZAAwABQABAAIAAAAaAAwABQACAAIAAAAaAAsABQACAAEAAAAaAAoABQACAAEAAAAaAAkABQACAAEAAAAaAAgABQACAAEAAAAaAAUABQACAAEAAAAaAAQABQACAAEAAAAaAAMABQACAAEAAAAaAAIABQACAAEAAAAaAAEABQACAAAAAAAKAAEABQABAAAAAAALAAEABQABAAAAAAAMAAEABQABAAAAAAANAAEABQABAAAAAAAOAAEABQABAAAAAAAPAAEABQABAAAAAAAQAAEABQABAAAAAAARAAEABQABAAAAAAASAAEABQABAAAAAAATAAEABQABAAAAAAAUAAEABQABAAAAAAAVAAEABQABAAEAAAAZAAEABQABAAAAAAAYAAEABQABAAAAAAAVAAAABQAAAAEAAAAXAAEABQABAAEAAAAXAAAABQACAAEAAAAZAAIABQABAAEAAAAYAAIABQABAAEAAAAXAAIABQABAAEAAAAWAAIABQABAAEAAAAVAAIABQABAAEAAAAUAAIABQABAAEAAAATAAIABQABAAEAAAASAAIABQABAAEAAAARAAIABQABAAEAAAAQAAIABQABAAEAAAAPAAIABQABAAEAAAAOAAIABQABAAEAAAANAAIABQABAAEAAAAMAAIABQABAAEAAAALAAIABQABAAEAAAAKAAIABQABAAEAAAAJAAIABQABAAEAAAAIAAIABQABAAEAAAAHAAIABQABAAEAAAAGAAIABQABAAEAAAAFAAIABQABAAEAAAAFAAMABQABAAEAAAAGAAMABQABAAEAAAAIAAMABQABAAEAAAAJAAMABQABAAEAAAAKAAMABQABAAEAAAALAAMABQABAAEAAAAMAAMABQABAAEAAAANAAMABQABAAEAAAAOAAMABQABAAEAAAAPAAMABQABAAEAAAAQAAMABQABAAEAAAARAAMABQABAAEAAAASAAMABQABAAEAAAATAAMABQABAAEAAAAUAAMABQABAAEAAAAVAAMABQABAAEAAAAWAAMABQABAAEAAAAXAAMABQABAAEAAAAYAAMABQABAAEAAAAYAAQABQABAAEAAAAZAAQABQABAAEAAAAXAAQABQABAAEAAAAWAAQABQABAAEAAAAVAAQABQABAAEAAAAUAAQABQABAAEAAAATAAQABQABAAEAAAASAAQABQABAAEAAAARAAQABQABAAEAAAAQAAQABQABAAEAAAAPAAQABQABAAEAAAAOAAQABQABAAEAAAANAAQABQABAAEAAAAMAAQABQABAAEAAAALAAQABQABAAEAAAAKAAQABQABAAEAAAAJAAQABQABAAEAAAAIAAQABQABAAEAAAAHAAQABQABAAEAAAAGAAQABQABAAEAAAAFAAQABQABAAEAAAAFAAUABQABAAEAAAAGAAUABQABAAEAAAAHAAUABQABAAEAAAAKAAUABQABAAEAAAANAAUABQABAAEAAAAOAAUABQABAAEAAAAPAAUABQABAAEAAAAQAAUABQABAAEAAAARAAUABQABAAEAAAASAAUABQABAAEAAAATAAUABQABAAEAAAAUAAUABQABAAEAAAAVAAUABQABAAEAAAAWAAUABQABAAEAAAAXAAUABQABAAEAAAAYAAUABQABAAEAAAAZAAUABQABAAEAAAAZAAMABQABAAEAAAAZAAgABQABAAEAAAAYAAgABQABAAEAAAAXAAgABQABAAEAAAAWAAgABQABAAEAAAAVAAgABQABAAEAAAAUAAgABQABAAEAAAATAAgABQABAAEAAAASAAgABQABAAEAAAARAAgABQABAAEAAAAQAAgABQABAAEAAAAPAAgABQABAAEAAAAOAAgABQABAAEAAAANAAgABQABAAEAAAAMAAgABQABAAEAAAALAAgABQABAAEAAAAKAAgABQABAAEAAAAJAAgABQABAAEAAAAIAAgABQABAAEAAAAHAAgABQABAAEAAAAGAAgABQABAAEAAAAFAAgABQABAAEAAAAFAAkABQABAAEAAAAGAAkABQABAAEAAAAHAAkABQABAAEAAAAIAAkABQABAAEAAAAJAAkABQABAAEAAAAKAAkABQABAAEAAAALAAkABQABAAEAAAAMAAkABQABAAEAAAANAAkABQABAAEAAAAOAAkABQABAAEAAAAPAAkABQABAAEAAAAQAAkABQABAAEAAAARAAkABQABAAEAAAASAAkABQABAAEAAAATAAkABQABAAEAAAAUAAkABQABAAEAAAAVAAkABQABAAEAAAAWAAkABQABAAEAAAAXAAkABQABAAEAAAAYAAkABQABAAEAAAAZAAkABQABAAEAAAAZAAoABQABAAEAAAAYAAoABQABAAEAAAAXAAoABQABAAEAAAAWAAoABQABAAEAAAAVAAoABQABAAEAAAAUAAoABQABAAEAAAATAAoABQABAAEAAAASAAoABQABAAEAAAARAAoABQABAAEAAAAQAAoABQABAAEAAAAPAAoABQABAAEAAAAOAAoABQABAAEAAAANAAoABQABAAEAAAAMAAoABQABAAEAAAALAAoABQABAAEAAAAKAAoABQABAAEAAAAJAAoABQABAAEAAAAIAAoABQABAAEAAAAHAAoABQABAAEAAAAGAAoABQABAAEAAAAGAAsABQABAAEAAAAHAAsABQABAAEAAAAIAAsABQABAAEAAAAJAAsABQABAAEAAAAKAAsABQABAAEAAAALAAsABQABAAEAAAAMAAsABQABAAEAAAANAAsABQABAAEAAAAOAAsABQABAAEAAAAPAAsABQABAAEAAAAQAAsABQABAAEAAAARAAsABQABAAEAAAASAAsABQABAAEAAAATAAsABQABAAEAAAAUAAsABQABAAEAAAAVAAsABQABAAEAAAAWAAsABQABAAEAAAAXAAsABQABAAEAAAAYAAsABQABAAEAAAAZAAsABQABAAEAAAAWAAAABQABAAEAAAAWAAEABQABAAEAAAAAAAUAAQAAAAAAAAABAAUAAQABAAAAAAACAAUAAQABAAAAAAADAAUAAQAAAAIAAAADAAQAAQAAAAEAAAADAAMAAQAAAAEAAAADAAIAAQAAAAEAAAADAAEAAQAAAAEAAAADAAAAAQAAAAAAAAAEAAAAAQABAAAAAAAFAAAAAQABAAAAAAAGAAAAAQABAAAAAAAHAAAAAQABAAAAAAAIAAAAAQABAAAAAAAJAAAAAQABAAAAAAAKAAAAAQABAAAAAAALAAAAAQABAAAAAAAMAAAAAQABAAAAAAANAAAAAQABAAAAAAAOAAAAAQABAAAAAAAPAAAAAQABAAAAAAAQAAAAAQABAAAAAAARAAAAAQABAAAAAAASAAAAAQABAAAAAAATAAAAAQABAAAAAAAUAAAAAQABAAAAAAAUAP//AQAAAAAAAAAVAP//AQABAAAAAAAWAP//AQABAAAAAAAXAP//AQABAAAAAAAYAP//AQACAAAAAAAYAAAAAQACAAEAAAAZAAAAAQACAAEAAAAaAAAAAQACAAEAAAAbAAAAAQACAAAAAAAbAAEAAQACAAEAAAAbAAIAAQACAAEAAAAbAAMAAQACAAEAAAAbAAQAAQACAAEAAAAbAAUAAQACAAEAAAAbAAYAAQACAAEAAAAbAAcAAQACAAEAAAAbAAgAAQACAAEAAAAbAAkAAQACAAEAAAAbAAoAAQACAAEAAAAbAAsAAQACAAEAAAAbAAwAAQACAAEAAAAbAA0AAQACAAIAAAAaAA0AAQABAAIAAAAZAA0AAQABAAIAAAAYAA0AAQABAAIAAAAXAA0AAQABAAIAAAAWAA0AAQABAAIAAAAVAA0AAQABAAIAAAAUAA0AAQABAAIAAAATAA0AAQABAAIAAAASAA0AAQABAAIAAAARAA0AAQABAAIAAAAQAA0AAQABAAIAAAAPAA0AAQABAAIAAAAOAA0AAQABAAIAAAANAA0AAQABAAIAAAAMAA0AAQABAAIAAAALAA0AAQABAAIAAAAKAA0AAQABAAIAAAAJAA0AAQABAAIAAAAIAA0AAQABAAIAAAAHAA0AAQABAAIAAAADAAkAAQAAAAEAAAADAAgAAQAAAAIAAAACAAgAAQAAAAIAAAABAAgAAQAAAAIAAAAAAAgAAQAAAAIAAAD//wUAAQAAAAAAAAD//wYAAQAAAAEAAAD//wcAAQAAAAEAAAD//wgAAQABAAEAAAAHAAMABQABAAEAAAAJAAUABQABAAEAAAAIAAUABQABAAEAAAA=") +tile_set = ExtResource("2_lv1et") +metadata/_edit_lock_ = true + +[node name="Shadows" type="TileMapLayer" parent="TileMapLayers" unique_id=592364377] +tile_set = ExtResource("3_jp822") + +[node name="Stone" type="TileMapLayer" parent="TileMapLayers" unique_id=1574515270] +tile_map_data = PackedByteArray("AAD//wQABAAAAAQAAAAAAAQABAABAAQAAAABAAQABAABAAQAAAACAAQABAABAAQAAAADAAQABAACAAEAAAADAAMABAABAAQAAAADAAIABAABAAQAAAADAAEABAABAAQAAAADAAAABAABAAQAAAADAP//BAAAAAQAAAAEAP//BAABAAQAAAAFAP//BAABAAQAAAAGAP//BAABAAQAAAAHAP//BAABAAQAAAAIAP//BAABAAQAAAAJAP//BAABAAQAAAAKAP//BAABAAQAAAALAP//BAABAAQAAAAMAP//BAABAAQAAAANAP//BAABAAQAAAAOAP//BAABAAQAAAAPAP//BAABAAQAAAAQAP//BAABAAQAAAARAP//BAABAAQAAAASAP//BAABAAQAAAATAP//BAABAAQAAAAUAP7/BAAAAAQAAAAUAP//BAABAAQAAAAVAP7/BAABAAQAAAAXAP7/BAABAAQAAAAYAP7/BAACAAQAAAAYAP//BAABAAQAAAAZAP//BAABAAQAAAAaAP//BAABAAQAAAAbAP//BAACAAQAAAAbAAAABAABAAQAAAAbAAEABAABAAQAAAAbAAIABAABAAQAAAAbAAMABAABAAQAAAAbAAQABAABAAQAAAAbAAUABAABAAQAAAAbAAYABAABAAQAAAAbAAcABAABAAQAAAAbAAgABAABAAQAAAAbAAkABAABAAQAAAAbAAoABAABAAQAAAAbAAsABAABAAQAAAAbAAwABAADAAQAAAAHAAwABAADAAQAAAAIAAwABAADAAQAAAAJAAwABAADAAQAAAAKAAwABAADAAQAAAALAAwABAADAAQAAAAMAAwABAADAAQAAAANAAwABAADAAQAAAAOAAwABAADAAQAAAAPAAwABAADAAQAAAAQAAwABAADAAQAAAARAAwABAADAAQAAAASAAwABAADAAQAAAATAAwABAADAAQAAAAUAAwABAADAAQAAAAVAAwABAADAAQAAAAWAAwABAADAAQAAAAXAAwABAADAAQAAAAYAAwABAADAAQAAAAZAAwABAADAAQAAAAaAAwABAADAAQAAAD//wgABAADAAQAAAAAAAgABAADAAQAAAABAAgABAADAAQAAAACAAgABAADAAQAAAD//wUABAABAAQAAAD//wYABAABAAQAAAD//wcABAABAAQAAAADAAgABAADAAQAAAAEAAgABAADAAQAAAAFAAgABAADAAQAAAAGAAgABAADAAQAAAAGAAkABAADAAQAAAAGAAoABAADAAQAAAAGAAsABAADAAQAAAAGAAwABAADAAQAAAAHAAgABAAAAAIAAAAHAAcABAAAAAEAAAAIAAgABAABAAIAAAAJAAgABAABAAIAAAAKAAgABAACAAIAAAAIAAcABAABAAEAAAAJAAcABAABAAEAAAAKAAcABAADAAEAAAAIAAYABAABAAEAAAAJAAYABAABAAEAAAAHAAYABAAAAAEAAAAHAAUABAAAAAEAAAAIAAUABAABAAAAAAAJAAUABAABAAAAAAAKAAUABAAAAAEAAAAKAAYABAACAAEAAAAUAAIABAADAAEAAAAUAAMABAADAAEAAAAUAAQABAADAAEAAAAEAAAABAAAAAQAAAAGAAAABAADAAIAAAAUAAUABAADAAEAAAAUAAEABAADAAEAAAAUAAAABAADAAEAAAAYAAEABAABAAQAAAAYAAAABAABAAQAAAAYAAIABAADAAIAAAAHAAkABAACAAQAAAAHAAsABAACAAQAAAAVAAMABAACAAQAAAAVAAUABAACAAQAAAAUAAYABAADAAEAAAAUAAcABAADAAEAAAAUAAgABAACAAIAAAAaAAYABAAAAAQAAAAaAAgABAAAAAQAAAAQAAgABAACAAQAAAATAAgABAAAAAIAAAALAAgABAABAAIAAAAMAAgABAABAAIAAAANAAgABAABAAIAAAAOAAgABAABAAIAAAAPAAgABAABAAIAAAATAAAABAAAAAQAAAATAAIABAAAAAQAAAANAAMABAAAAAQAAAAOAAMABAABAAQAAAAPAAMABAABAAQAAAAQAAMABAABAAQAAAARAAMABAABAAQAAAASAAMABAABAAQAAAATAAMABAABAAQAAAATAAcABAAAAAEAAAATAAQABAAAAAQAAAAIAAQABAABAAAAAAAJAAQABAABAAAAAAAKAAQABAAAAAEAAAAHAAQABAAAAAEAAAAIAAMABAABAAAAAAAJAAMABAABAAAAAAAKAAMABAACAAAAAAAHAAMABAAAAAAAAAA=") +tile_set = ExtResource("4_1bq7h") + +[node name="Stone2" type="TileMapLayer" parent="TileMapLayers" unique_id=639395244] +tile_map_data = PackedByteArray("AAD//wQABAAAAAQAAAAAAAQABAABAAQAAAABAAQABAABAAQAAAACAAQABAABAAQAAAADAAMABAABAAQAAAADAAIABAABAAQAAAADAAEABAABAAQAAAADAAAABAABAAQAAAADAP//BAAAAAQAAAAEAP//BAABAAQAAAAFAP//BAABAAQAAAAGAP//BAABAAQAAAAHAP//BAABAAQAAAAIAP//BAABAAQAAAAJAP//BAABAAQAAAAKAP//BAABAAQAAAALAP//BAABAAQAAAAMAP//BAABAAQAAAANAP//BAABAAQAAAAOAP//BAABAAQAAAAPAP//BAABAAQAAAAQAP//BAABAAQAAAARAP//BAABAAQAAAASAP//BAABAAQAAAATAP//BAABAAQAAAAUAP7/BAAAAAQAAAAUAP//BAABAAQAAAAVAP7/BAABAAQAAAAXAP7/BAABAAQAAAAYAP7/BAACAAQAAAAYAP//BAABAAQAAAAZAP//BAABAAQAAAAaAP//BAABAAQAAAAbAP//BAACAAQAAAAbAAAABAABAAQAAAAbAAEABAABAAQAAAAbAAIABAABAAQAAAAbAAMABAABAAQAAAAbAAQABAABAAQAAAAbAAUABAABAAQAAAAbAAYABAABAAQAAAAbAAcABAABAAQAAAAbAAgABAABAAQAAAAbAAkABAABAAQAAAAbAAoABAABAAQAAAAbAAsABAABAAQAAAAbAAwABAADAAQAAAAHAAwABAADAAQAAAAIAAwABAADAAQAAAAJAAwABAADAAQAAAAKAAwABAADAAQAAAALAAwABAADAAQAAAAMAAwABAADAAQAAAANAAwABAADAAQAAAAOAAwABAADAAQAAAAPAAwABAADAAQAAAAQAAwABAADAAQAAAARAAwABAADAAQAAAASAAwABAADAAQAAAATAAwABAADAAQAAAAUAAwABAADAAQAAAAVAAwABAADAAQAAAAWAAwABAADAAQAAAAXAAwABAADAAQAAAAYAAwABAADAAQAAAAZAAwABAADAAQAAAAaAAwABAADAAQAAAD//wgABAADAAQAAAAAAAgABAADAAQAAAABAAgABAADAAQAAAACAAgABAADAAQAAAD//wUABAABAAQAAAD//wYABAABAAQAAAD//wcABAABAAQAAAADAAgABAADAAQAAAAEAAgABAADAAQAAAAFAAgABAADAAQAAAAGAAgABAADAAQAAAAGAAkABAADAAQAAAAGAAoABAADAAQAAAAGAAsABAADAAQAAAAGAAwABAADAAQAAAAHAAgABAAAAAIAAAAHAAcABAAAAAEAAAAIAAgABAABAAIAAAAJAAgABAABAAIAAAAKAAgABAACAAIAAAAIAAcABAABAAEAAAAJAAcABAABAAEAAAAKAAcABAADAAEAAAAIAAYABAABAAEAAAAJAAYABAABAAEAAAAHAAYABAAAAAEAAAAIAAUABAABAAAAAAAJAAUABAABAAAAAAAKAAYABAACAAEAAAAUAAIABAADAAEAAAAUAAMABAADAAEAAAAUAAQABAADAAEAAAAEAAAABAAAAAQAAAAGAAAABAADAAIAAAATAAAABAAAAAQAAAAUAAYABAADAAIAAAAUAAUABAADAAEAAAAUAAEABAADAAEAAAAUAAAABAADAAEAAAATAAIABAAAAAQAAAAYAAEABAABAAQAAAAYAAAABAABAAQAAAAYAAIABAADAAIAAAAHAAkABAACAAQAAAAHAAsABAACAAQAAAAVAAMABAACAAQAAAAVAAUABAACAAQAAAAUAAcABAADAAEAAAAUAAgABAADAAIAAAAaAAgABAAAAAQAAAADAAQABAAAAAIAAAALAAgABAADAAQAAAAMAAgABAADAAQAAAANAAgABAADAAQAAAAOAAgABAADAAQAAAAPAAgABAADAAQAAAAQAAgABAADAAQAAAAKAAMABAADAAQAAAAKAAQABAADAAQAAAAKAAUABAADAAQAAAA=") +tile_set = ExtResource("4_1bq7h") + +[node name="Player" parent="." unique_id=1079296690 instance=ExtResource("5_bc86y")] +position = Vector2(57, 458) +sprite_frames = ExtResource("6_5n4fp") + +[node name="Camera2D" type="Camera2D" parent="Player" unique_id=1196891219] +process_mode = 3 +limit_left = 0 +limit_top = 0 +limit_right = 1801 +limit_bottom = 895 +position_smoothing_enabled = true +editor_draw_limits = true + +[node name="EnemyGuards" type="Node2D" parent="." unique_id=1997239040] +y_sort_enabled = true + +[node name="Guard1-GoingBackAndForth" parent="EnemyGuards" unique_id=1357389645 node_paths=PackedStringArray("patrol_path") instance=ExtResource("7_435ip")] +position = Vector2(355.842, 404.2754) +sprite_frames = SubResource("SpriteFrames_8f1g8") +patrol_path = NodePath("../Guard1-PatrolPath") +move_speed = 200.0 + +[node name="Guard1-GoingBackAndForth2" parent="EnemyGuards" unique_id=689832587 node_paths=PackedStringArray("patrol_path") instance=ExtResource("7_435ip")] +position = Vector2(622.00006, 132.28888) +sprite_frames = SubResource("SpriteFrames_4qvj1") +patrol_path = NodePath("../Guard1-PatrolPath2") +move_speed = 200.0 + +[node name="Guard1-GoingBackAndForth3" parent="EnemyGuards" unique_id=498175250 node_paths=PackedStringArray("patrol_path") instance=ExtResource("7_435ip")] +position = Vector2(811.68335, 406.04095) +sprite_frames = SubResource("SpriteFrames_0bqry") +patrol_path = NodePath("../Guard1-PatrolPath3") +move_speed = 200.0 + +[node name="Guard1-GoingBackAndForth4" parent="EnemyGuards" unique_id=729976538 node_paths=PackedStringArray("patrol_path") instance=ExtResource("7_435ip")] +position = Vector2(594.1845, 706.291) +sprite_frames = SubResource("SpriteFrames_ycyqv") +patrol_path = NodePath("../Guard1-PatrolPath4") +move_speed = 200.0 + +[node name="Guard1-GoingBackAndForth5" parent="EnemyGuards" unique_id=1632363417 node_paths=PackedStringArray("patrol_path") instance=ExtResource("7_435ip")] +position = Vector2(1388.8196, 508.3647) +sprite_frames = SubResource("SpriteFrames_8if7k") +patrol_path = NodePath("../Guard1-PatrolPath5") +move_speed = 200.0 + +[node name="Guard1-PatrolPath" type="Path2D" parent="EnemyGuards" unique_id=335964649] +top_level = true +position = Vector2(361, -29804.002) +scale = Vector2(-0.012100438, -129.53693) +curve = SubResource("Curve2D_ycyqv") + +[node name="Guard1-PatrolPath4" type="Path2D" parent="EnemyGuards" unique_id=1721686165] +top_level = true +position = Vector2(623, -1622) +scale = Vector2(-1.5105034, -9.979775) +curve = SubResource("Curve2D_8if7k") + +[node name="Guard1-PatrolPath5" type="Path2D" parent="EnemyGuards" unique_id=692241341] +top_level = true +position = Vector2(1403, -113) +scale = Vector2(-0.74333596, -2.663361) +curve = SubResource("Curve2D_idi01") + +[node name="Guard1-PatrolPath3" type="Path2D" parent="EnemyGuards" unique_id=101845767] +top_level = true +position = Vector2(847, 872) +scale = Vector2(-1.8512911, 1.9972446) +curve = SubResource("Curve2D_mj11r") + +[node name="Guard1-PatrolPath2" type="Path2D" parent="EnemyGuards" unique_id=1970930416] +top_level = true +position = Vector2(664.2424, 156.2633) +scale = Vector2(-2.214336, 0.10276177) +curve = SubResource("Curve2D_nsdbk") + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=495226624] +visible = false + +[node name="HUD" parent="." unique_id=1994868895 instance=ExtResource("11_ycyqv")] + +[node name="CollectibleItem" parent="." unique_id=327991066 instance=ExtResource("12_8if7k")] +position = Vector2(1445, 108) +next_scene = "uid://bhp4b0cnam1o3" +item = SubResource("Resource_bc86y") +collected_dialogue = ExtResource("15_1bq7h") + +[node name="Cinematic" type="Node2D" parent="." unique_id=859706882] +script = ExtResource("15_mj11r") +dialogue = ExtResource("16_nsdbk") +metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="PushableBlock" parent="." unique_id=580751675 instance=ExtResource("17_lv1et")] +position = Vector2(278, 460) + +[node name="PushableBlock3" parent="." unique_id=1913043121 instance=ExtResource("17_lv1et")] +position = Vector2(802, 319) + +[node name="PushableBlock4" parent="." unique_id=824580415 instance=ExtResource("17_lv1et")] +position = Vector2(1159, 660) + +[node name="PushableBlock5" parent="." unique_id=1525356019 instance=ExtResource("17_lv1et")] +position = Vector2(1468, 690) + +[node name="PushableBlock2" parent="." unique_id=906301845 instance=ExtResource("17_lv1et")] +position = Vector2(450, 176) + +[node name="ParallaxBackground" type="ParallaxBackground" parent="." unique_id=1754879672] + +[node name="ParallaxLayer" type="ParallaxLayer" parent="ParallaxBackground" unique_id=673599002] +motion_scale = Vector2(0.1, 0.1) + +[node name="TextureRect" type="TextureRect" parent="ParallaxBackground/ParallaxLayer" unique_id=75303954] +texture_filter = 1 +offset_left = -390.0 +offset_top = -353.0 +offset_right = 874.0 +offset_bottom = 404.0 +scale = Vector2(2, 2) +texture = ExtResource("19_1bq7h") + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=1148711111] +stream = ExtResource("20_bc86y") +volume_db = -10.0 +autoplay = true diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_alerted.png b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_alerted.png new file mode 100644 index 0000000000..3c766b84b4 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_alerted.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b49379a75df048619df4098a5341c53fbedda3c402fededb945ac81950e7abc +size 9072 diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_alerted.png.import b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_alerted.png.import new file mode 100644 index 0000000000..f0f98a4b96 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_alerted.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5i67ccnv8mg6" +path="res://.godot/imported/guard_alerted.png-846a35508fc30432f8e06cc57e0a26f8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_alerted.png" +dest_files=["res://.godot/imported/guard_alerted.png-846a35508fc30432f8e06cc57e0a26f8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_idle.png b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_idle.png new file mode 100644 index 0000000000..ba01b84a9d --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_idle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6958f6588019f4026be6631aa41dc7bc16a6d2dd349cefa0c64322fe57d120af +size 6279 diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_idle.png.import b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_idle.png.import new file mode 100644 index 0000000000..0206432446 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_idle.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bv1af26d3io7l" +path="res://.godot/imported/guard_idle.png-93df985e64ca7a16e2047e46cbc0e7a8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_idle.png" +dest_files=["res://.godot/imported/guard_idle.png-93df985e64ca7a16e2047e46cbc0e7a8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_walk.png b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_walk.png new file mode 100644 index 0000000000..1f1a1d2d89 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_walk.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d9cf60ec41ef07317c37f109a95c3de9b73c1d542651702b18fa6c479ca0ff6 +size 9885 diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_walk.png.import b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_walk.png.import new file mode 100644 index 0000000000..1be7f3b611 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_walk.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dlfuss0cemee0" +path="res://.godot/imported/guard_walk.png-578ab32d46b7c00169225415f2a923ca.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_walk.png" +dest_files=["res://.godot/imported/guard_walk.png-578ab32d46b7c00169225415f2a923ca.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_collected.dialogue b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_collected.dialogue new file mode 100644 index 0000000000..fca9782065 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_collected.dialogue @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +Eso fue complicado tendré que seguir lo único que recuerdo es que estuve en un viaje con unos colegas. +=> END diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_collected.dialogue.import b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_collected.dialogue.import new file mode 100644 index 0000000000..023d703d65 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_collected.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://bh7i6gehiem32" +path="res://.godot/imported/infinite_knight_collected.dialogue-ab293e28bafe9e506db0aaca73b922d3.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_collected.dialogue" +dest_files=["res://.godot/imported/infinite_knight_collected.dialogue-ab293e28bafe9e506db0aaca73b922d3.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_guard_enemy.tres b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_guard_enemy.tres new file mode 100644 index 0000000000..6a1b806afe --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_guard_enemy.tres @@ -0,0 +1,65 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://b6ik3awho8o6r"] + +[ext_resource type="Texture2D" uid="uid://b5i67ccnv8mg6" path="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_alerted.png" id="1_30bwk"] +[ext_resource type="Texture2D" uid="uid://bv1af26d3io7l" path="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_idle.png" id="2_w8svy"] +[ext_resource type="Texture2D" uid="uid://dlfuss0cemee0" path="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/guard_walk.png" id="3_ittg3"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_1wysg"] +atlas = ExtResource("1_30bwk") +region = Rect2(0, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_on4b3"] +atlas = ExtResource("1_30bwk") +region = Rect2(256, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nqkhw"] +atlas = ExtResource("2_w8svy") +region = Rect2(0, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_h75uo"] +atlas = ExtResource("3_ittg3") +region = Rect2(0, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_81cd8"] +atlas = ExtResource("3_ittg3") +region = Rect2(256, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hn4ts"] +atlas = ExtResource("3_ittg3") +region = Rect2(512, 0, 256, 256) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_1wysg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_on4b3") +}], +"loop": true, +"name": &"alerted", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_nqkhw") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_h75uo") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_81cd8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hn4ts") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_stealth.dialogue b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_stealth.dialogue new file mode 100644 index 0000000000..69de6afbc8 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_stealth.dialogue @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +Antes de levantar la espada, el caballero debe entender a qué se enfrenta. +Se infiltra en completo silencio, moviendo pesados bloques de roca estelar para esconderse de la mirada corrosiva de las fallas. +(Atravesar la zona sin ser visto, usando el ingenio para mover objetos y crear coberturas donde esconderse.) +=> END \ No newline at end of file diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_stealth.dialogue.import b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_stealth.dialogue.import new file mode 100644 index 0000000000..31b87a0269 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_stealth.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://djs0srytwur0g" +path="res://.godot/imported/infinite_knight_stealth.dialogue-d5d848e0a054c7f0d6b79ce35b4b1b88.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/infinite_knight_stealth.dialogue" +dest_files=["res://.godot/imported/infinite_knight_stealth.dialogue-d5d848e0a054c7f0d6b79ce35b4b1b88.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/pushable_block.tscn b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/pushable_block.tscn new file mode 100644 index 0000000000..065775f31b --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/1_stealth/stealth_components/pushable_block.tscn @@ -0,0 +1,23 @@ +[gd_scene format=3 uid="uid://cyfc7n60fs1wv"] + +[ext_resource type="Texture2D" uid="uid://ceu38hu0rqe1w" path="res://scenes/quests/story_quests/shjourney/5_shjourney_sequence_puzzle/shjourney_sequence_components/shjourney_Pillar.png" id="1_dd1m2"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_f3she"] +size = Vector2(36, 60) + +[node name="PushableBlock" type="RigidBody2D" unique_id=580751675 groups=["pushable"]] +collision_layer = 24 +collision_mask = 17 +gravity_scale = 0.0 +lock_rotation = true +linear_damp = 15.0 + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=2094403061] +scale = Vector2(0.5, 0.5) +texture = ExtResource("1_dd1m2") +hframes = 2 +frame = 1 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1732083462] +position = Vector2(0, -33) +shape = SubResource("RectangleShape2D_f3she") diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_alerted.png b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_alerted.png new file mode 100644 index 0000000000..fa4d8a5c07 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_alerted.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b7572e0daf3b01e6d8add7f5dda7cf434e741590961ff0245c3465ea8157d68 +size 62727 diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_alerted.png.import b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_alerted.png.import new file mode 100644 index 0000000000..5e2a49081c --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_alerted.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfo1n6uq4e6rj" +path="res://.godot/imported/alterado_alerted.png-14df04fa43e88f4fb9d8cdb1720b7e74.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_alerted.png" +dest_files=["res://.godot/imported/alterado_alerted.png-14df04fa43e88f4fb9d8cdb1720b7e74.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_idle.png b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_idle.png new file mode 100644 index 0000000000..126e3648ca --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_idle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:467f599e6e4ab3052fdf2767b8c07aada7012f6497d08e1d7edae88581362232 +size 32791 diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_idle.png.import b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_idle.png.import new file mode 100644 index 0000000000..085f8059a4 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_idle.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hq2ou5vlfgu3" +path="res://.godot/imported/alterado_idle.png-7beb9a124401bad8218e8e8f94a38a5c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_idle.png" +dest_files=["res://.godot/imported/alterado_idle.png-7beb9a124401bad8218e8e8f94a38a5c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_walk.png b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_walk.png new file mode 100644 index 0000000000..9b8650fbef --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_walk.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:232a479c021aeca2063b99eb4b908dc964891b69d7f523a4774630ede8489f70 +size 31758 diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_walk.png.import b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_walk.png.import new file mode 100644 index 0000000000..652776526e --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_walk.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxmwprhwm4tes" +path="res://.godot/imported/alterado_walk.png-7fdd2d8f2aac3b219e5da586818219f3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_walk.png" +dest_files=["res://.godot/imported/alterado_walk.png-7fdd2d8f2aac3b219e5da586818219f3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/attack_input_hint.gd b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/attack_input_hint.gd new file mode 100644 index 0000000000..212583a56f --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/attack_input_hint.gd @@ -0,0 +1,8 @@ +extends TextureRect + +func _process(_delta: float) -> void: + # Oscurece el icono si se mantiene presionado el ataque + if Input.is_action_pressed("throw"): + modulate = Color.GRAY + else: + modulate = Color.WHITE diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/attack_input_hint.gd.uid b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/attack_input_hint.gd.uid new file mode 100644 index 0000000000..45d0d4490e --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/attack_input_hint.gd.uid @@ -0,0 +1 @@ +uid://cqed1lhe0hrlj diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/attack_input_hint.tscn b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/attack_input_hint.tscn new file mode 100644 index 0000000000..58efce152d --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/attack_input_hint.tscn @@ -0,0 +1,38 @@ +[gd_scene format=3 uid="uid://bcy53c3sfhw28"] + +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_k4re1"] +[ext_resource type="Script" uid="uid://cqed1lhe0hrlj" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/attack_input_hint.gd" id="2_8vk3y"] +[ext_resource type="Material" uid="uid://cruf3tlajs4jo" path="res://scenes/ui_elements/input_hints/components/drop_shadow_material.tres" id="2_f8b10"] +[ext_resource type="Texture2D" uid="uid://dug86v7cum1kf" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/mouse_left_outline.tres" id="3_8vk3y"] +[ext_resource type="Texture2D" uid="uid://be8kao32d16ao" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_x.tres" id="5_pd68d"] + +[node name="AttackInputHint" type="HBoxContainer" unique_id=1113313011] +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -202.0 +offset_top = -64.0 +grow_horizontal = 0 +grow_vertical = 0 +theme = ExtResource("1_k4re1") + +[node name="AttackHint" type="TextureRect" parent="." unique_id=2113188219] +material = ExtResource("2_f8b10") +layout_mode = 2 +size_flags_vertical = 8 +texture = ExtResource("3_8vk3y") +script = ExtResource("2_8vk3y") + +[node name="TextureRectX" type="TextureRect" parent="." unique_id=1485738102] +material = ExtResource("2_f8b10") +layout_mode = 2 +size_flags_vertical = 8 +texture = ExtResource("5_pd68d") +script = ExtResource("2_8vk3y") + +[node name="Label" type="Label" parent="." unique_id=114048661] +layout_mode = 2 +theme_type_variation = &"HintLabel" +text = "Attack" diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/background.png b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/background.png new file mode 100644 index 0000000000..201c57d3c2 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffd86aeed691da34f81303fd656bf0e833280d178ebec98c5a8f76392494d950 +size 1333824 diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/background.png.import b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/background.png.import new file mode 100644 index 0000000000..ea77459a32 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/background.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cs8dj6t3nq3kn" +path="res://.godot/imported/background.png-cf23e9355fe1e522ebe1bbcc75d1d457.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/background.png" +dest_files=["res://.godot/imported/background.png-cf23e9355fe1e522ebe1bbcc75d1d457.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_combat.dialogue b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_combat.dialogue new file mode 100644 index 0000000000..216f9ab559 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_combat.dialogue @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 + +~ start +El silencio ya no es suficiente. La alteración ha detectado al caballero y se abalanza sobre él. Aquí, cada golpe de su espada no es solo para hacer daño, sino para "buscar" su pasado. Él rechaza primero su naturaleza. +(Sobrevivir a la emboscada y purificar la habitación completa.) +=> END + +~ well_done +"No puede ser esto pensé que estaba destruido." +=> END \ No newline at end of file diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_combat.dialogue.import b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_combat.dialogue.import new file mode 100644 index 0000000000..f46882acf1 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_combat.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://dubgo2bij5wvc" +path="res://.godot/imported/infinite_knight_combat.dialogue-b6499edea51a1cd673a5a29339c23fbe.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_combat.dialogue" +dest_files=["res://.godot/imported/infinite_knight_combat.dialogue-b6499edea51a1cd673a5a29339c23fbe.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_enemy.gd b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_enemy.gd new file mode 100644 index 0000000000..7fecf8e7f2 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_enemy.gd @@ -0,0 +1,114 @@ +extends CharacterBody2D + +signal died + +@export var speed: float = 70.0 +var player_target: Node2D = null +var hp: int = 2 + +var is_stunned: bool = false +var is_attacking: bool = false +var knockback_velocity: Vector2 = Vector2.ZERO + +@onready var anim: AnimatedSprite2D = $AnimatedSprite2D + +func _physics_process(delta: float) -> void: + if not is_instance_valid(player_target): + if not is_stunned and not is_attacking: + anim.play("idle") + return + + var direction: Vector2 = global_position.direction_to(player_target.global_position) + + if is_stunned: + velocity = knockback_velocity + knockback_velocity = knockback_velocity.move_toward(Vector2.ZERO, 300.0 * delta) + elif is_attacking: + velocity = Vector2.ZERO + else: + velocity = direction * speed + if direction.x != 0: + anim.flip_h = direction.x < 0 + anim.play("walk") + + move_and_slide() + + if is_stunned or is_attacking or get_slide_collision_count() == 0: + return + + for i in get_slide_collision_count(): + var collision: KinematicCollision2D = get_slide_collision(i) + var collider: Object = collision.get_collider() + + if collider == player_target: + _perform_attack(direction) + break + +func _perform_attack(hit_direction: Vector2) -> void: + is_attacking = true + anim.play("idle") + + await get_tree().create_timer(0.3).timeout + + if not is_instance_valid(self) or is_stunned: + is_attacking = false + return + + anim.play("alerted") + + # Valida la distancia de impacto tras el delay + if is_instance_valid(player_target) and global_position.distance_to(player_target.global_position) < 85.0: + var arena: Node = get_tree().current_scene + if arena.has_method("damage_player"): + arena.damage_player() + + is_stunned = true + knockback_velocity = -hit_direction * 50.0 + + await get_tree().create_timer(0.5).timeout + + if is_instance_valid(self): + is_stunned = false + is_attacking = false + +func receive_damage() -> void: + hp -= 1 + if hp <= 0: + var arena: Node = get_tree().current_scene + if arena.has_method("on_enemy_defeated"): + arena.on_enemy_defeated() + + died.emit() + queue_free() + +func got_repelled(push_direction: Vector2) -> void: + var is_valid_hit: bool = false + + if is_instance_valid(player_target): + var player_facing_dir: Vector2 = Input.get_vector("move_left", "move_right", "move_up", "move_down") + + if player_facing_dir == Vector2.ZERO: + var p_sprite: Node = player_target.find_child("PlayerSprite", true, false) + if p_sprite and p_sprite.flip_h: + player_facing_dir = Vector2.LEFT + else: + player_facing_dir = Vector2.RIGHT + + # Indica un golpe direccional valido (semi-frontal) + if push_direction.dot(player_facing_dir.normalized()) >= 0.1: + is_valid_hit = true + + if not is_valid_hit: + return + + receive_damage() + + if hp > 0: + is_stunned = true + knockback_velocity = push_direction * 200.0 + anim.play("alerted") + + await get_tree().create_timer(0.5).timeout + + if is_instance_valid(self): + is_stunned = false diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_enemy.gd.uid b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_enemy.gd.uid new file mode 100644 index 0000000000..d1c4b94851 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_enemy.gd.uid @@ -0,0 +1 @@ +uid://ifmig61okldi diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_enemy.tscn b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_enemy.tscn new file mode 100644 index 0000000000..e1d8827a94 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_enemy.tscn @@ -0,0 +1,124 @@ +[gd_scene format=3 uid="uid://c845gw7ym2pt3"] + +[ext_resource type="Script" uid="uid://ifmig61okldi" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_enemy.gd" id="1_2u3vj"] +[ext_resource type="Texture2D" uid="uid://dfo1n6uq4e6rj" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_alerted.png" id="2_eksru"] +[ext_resource type="Texture2D" uid="uid://hq2ou5vlfgu3" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_idle.png" id="3_xsr8b"] +[ext_resource type="Texture2D" uid="uid://dxmwprhwm4tes" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/alterado_walk.png" id="4_pmmdy"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_44yyi"] +atlas = ExtResource("2_eksru") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_euipa"] +atlas = ExtResource("2_eksru") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gg2gl"] +atlas = ExtResource("2_eksru") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4xmbr"] +atlas = ExtResource("2_eksru") +region = Rect2(576, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7105h"] +atlas = ExtResource("2_eksru") +region = Rect2(768, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_bhsqn"] +atlas = ExtResource("2_eksru") +region = Rect2(960, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jldlh"] +atlas = ExtResource("3_xsr8b") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pqxav"] +atlas = ExtResource("3_xsr8b") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n3jku"] +atlas = ExtResource("3_xsr8b") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_etok8"] +atlas = ExtResource("4_pmmdy") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_c1jmw"] +atlas = ExtResource("4_pmmdy") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0sbus"] +atlas = ExtResource("4_pmmdy") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="SpriteFrames" id="SpriteFrames_7wd1p"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_44yyi") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_euipa") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gg2gl") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4xmbr") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7105h") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bhsqn") +}], +"loop": true, +"name": &"alerted", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_jldlh") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_pqxav") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n3jku") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_etok8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_c1jmw") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_0sbus") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_eksru"] +size = Vector2(49, 44) + +[node name="InfiniteKnightEnemy" type="CharacterBody2D" unique_id=1170564609] +collision_layer = 260 +collision_mask = 51 +script = ExtResource("1_2u3vj") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=617224986] +sprite_frames = SubResource("SpriteFrames_7wd1p") +animation = &"alerted" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1249367136] +position = Vector2(8.5, 15) +shape = SubResource("RectangleShape2D_eksru") diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_projectile.tscn b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_projectile.tscn new file mode 100644 index 0000000000..9d06cfed8e --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_projectile.tscn @@ -0,0 +1,49 @@ +[gd_scene format=3 uid="uid://dc8xi7oe30720"] + +[ext_resource type="Script" uid="uid://bofv3bcwj3rx2" path="res://scenes/game_elements/props/projectile/components/projectile.gd" id="1_gs4mq"] +[ext_resource type="SpriteFrames" uid="uid://ba6432a2t8at4" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_projectile_spriteframes.tres" id="2_2gv10"] + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_i37nf"] +friction = 0.0 +bounce = 1.0 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ar0jf"] +size = Vector2(44, 44) + +[node name="InfiniteKnightProjectile" type="RigidBody2D" unique_id=1611529190 groups=["projectiles"]] +collision_layer = 256 +collision_mask = 80 +mass = 0.3 +physics_material_override = SubResource("PhysicsMaterial_i37nf") +gravity_scale = 0.0 +lock_rotation = true +continuous_cd = 2 +contact_monitor = true +max_contacts_reported = 1 +script = ExtResource("1_gs4mq") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1499726276] +shape = SubResource("RectangleShape2D_ar0jf") + +[node name="VisibleThings" type="Node2D" parent="." unique_id=1129773837] +unique_name_in_owner = true +position = Vector2(-3, 0) + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="VisibleThings" unique_id=1816818143] +unique_name_in_owner = true +sprite_frames = ExtResource("2_2gv10") +autoplay = "default" + +[node name="TrailFXMarker" type="Marker2D" parent="VisibleThings" unique_id=771420475] +unique_name_in_owner = true +position = Vector2(-40, 0) + +[node name="DurationTimer" type="Timer" parent="." unique_id=259732970] +unique_name_in_owner = true + +[node name="HitSound" type="AudioStreamPlayer2D" parent="." unique_id=1862098516] +unique_name_in_owner = true +bus = &"SFX" + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] +[connection signal="timeout" from="DurationTimer" to="." method="_on_duration_timer_timeout"] diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_projectile_spriteframes.tres b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_projectile_spriteframes.tres new file mode 100644 index 0000000000..1e5ac16b36 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_projectile_spriteframes.tres @@ -0,0 +1,18 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://ba6432a2t8at4"] + +[ext_resource type="Texture2D" uid="uid://cagyo41xspko" path="res://assets/first_party/templates/combat/NO_EDIT_projectile.png" id="1_layxw"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_a6ony"] +atlas = ExtResource("1_layxw") +region = Rect2(0, 0, 64, 64) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_a6ony") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_rift.gd b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_rift.gd new file mode 100644 index 0000000000..6bd807ee06 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_rift.gd @@ -0,0 +1,31 @@ +extends Node2D + +@export var enemy_scene: PackedScene +@export var player_target: Node2D +@export_range(0.0, 60.0, 0.5) var spawn_delay: float = 0.0 + +func _ready() -> void: + pass + +func activate_rift() -> void: + if spawn_delay > 0.0: + await get_tree().create_timer(spawn_delay).timeout + _spawn_enemy() + +func _spawn_enemy() -> void: + if not is_instance_valid(enemy_scene): + return + + var enemy: Node = enemy_scene.instantiate() + + if "player_target" in enemy: + enemy.player_target = player_target + + get_parent().call_deferred("add_child", enemy) + enemy.global_position = global_position + + if enemy.has_signal("died"): + enemy.died.connect(_on_enemy_died) + +func _on_enemy_died() -> void: + queue_free() diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_rift.gd.uid b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_rift.gd.uid new file mode 100644 index 0000000000..003da3cc87 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_rift.gd.uid @@ -0,0 +1 @@ +uid://bcn4ecd2grclo diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_rift.tscn b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_rift.tscn new file mode 100644 index 0000000000..71eea23906 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_rift.tscn @@ -0,0 +1,11 @@ +[gd_scene format=3 uid="uid://c1s3revmgbb27"] + +[ext_resource type="Script" uid="uid://bcn4ecd2grclo" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_rift.gd" id="1_qngox"] +[ext_resource type="Texture2D" uid="uid://b77f6v4ju8286" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/rift.png" id="2_qngox"] + +[node name="InfiniteKnightRift" type="Node2D" unique_id=116012560] +script = ExtResource("1_qngox") + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=369128341] +scale = Vector2(0.5, 0.5) +texture = ExtResource("2_qngox") diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_target_spriteframes.tres b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_target_spriteframes.tres new file mode 100644 index 0000000000..9f0dd4cd80 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_target_spriteframes.tres @@ -0,0 +1,39 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://bv467yy8qkyqq"] + +[ext_resource type="Texture2D" uid="uid://do4tec8oedbcx" path="res://assets/first_party/templates/combat/NO_EDIT_target.png" id="1_u0ix0"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_kf7lf"] +atlas = ExtResource("1_u0ix0") +region = Rect2(64, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_q0cj1"] +atlas = ExtResource("1_u0ix0") +region = Rect2(0, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_he37w"] +atlas = ExtResource("1_u0ix0") +region = Rect2(64, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4v1rc"] +atlas = ExtResource("1_u0ix0") +region = Rect2(0, 0, 64, 64) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_kf7lf") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_q0cj1") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_he37w") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4v1rc") +}], +"loop": true, +"name": &"filling", +"speed": 10.0 +}] diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_throwing_enemy.tres b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_throwing_enemy.tres new file mode 100644 index 0000000000..a2e72b41a9 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_throwing_enemy.tres @@ -0,0 +1,222 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://dihpm1fipx0i3"] + +[ext_resource type="Texture2D" uid="uid://ddsr4nuoutyif" path="res://assets/first_party/templates/combat/NO_EDIT_throwing_enemy_walk.png" id="4_qs4un"] + +[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_ujskf"] +load_path = "res://.godot/imported/NO_EDIT_throwing_enemy_attack.png-f94ee4a8638ee6df58a0e8fe42e91b99.ctex" + +[sub_resource type="AtlasTexture" id="AtlasTexture_867w4"] +atlas = SubResource("CompressedTexture2D_ujskf") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ujskf"] +atlas = SubResource("CompressedTexture2D_ujskf") +region = Rect2(576, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_e5xnd"] +atlas = SubResource("CompressedTexture2D_ujskf") +region = Rect2(768, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_qs4un"] +atlas = SubResource("CompressedTexture2D_ujskf") +region = Rect2(960, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_v3dha"] +atlas = SubResource("CompressedTexture2D_ujskf") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gfhsj"] +atlas = SubResource("CompressedTexture2D_ujskf") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_m2rqe"] +atlas = SubResource("CompressedTexture2D_ujskf") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_xrtmp"] +atlas = SubResource("CompressedTexture2D_ujskf") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_xrtmp"] +load_path = "res://.godot/imported/NO_EDIT_throwing_enemy_defeated.png-82c54b0ed6d358501374ba54aaa00601.ctex" + +[sub_resource type="AtlasTexture" id="AtlasTexture_hs5xc"] +atlas = SubResource("CompressedTexture2D_xrtmp") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_o633g"] +atlas = SubResource("CompressedTexture2D_xrtmp") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_eptl4"] +atlas = SubResource("CompressedTexture2D_xrtmp") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nofl6"] +atlas = SubResource("CompressedTexture2D_xrtmp") +region = Rect2(576, 0, 192, 192) + +[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_nofl6"] +load_path = "res://.godot/imported/NO_EDIT_throwing_enemy_idle.png-6f03cac301775b8fc60def5f76186de4.ctex" + +[sub_resource type="AtlasTexture" id="AtlasTexture_4vyss"] +atlas = SubResource("CompressedTexture2D_nofl6") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2j1s4"] +atlas = SubResource("CompressedTexture2D_nofl6") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_i5csn"] +atlas = SubResource("CompressedTexture2D_nofl6") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_vbmxr"] +atlas = SubResource("CompressedTexture2D_nofl6") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ull4j"] +atlas = SubResource("CompressedTexture2D_nofl6") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jiira"] +atlas = SubResource("CompressedTexture2D_nofl6") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_o027i"] +atlas = SubResource("CompressedTexture2D_nofl6") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_458kx"] +atlas = SubResource("CompressedTexture2D_nofl6") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wt8op"] +atlas = ExtResource("4_qs4un") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tu8xg"] +atlas = ExtResource("4_qs4un") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_rddrd"] +atlas = ExtResource("4_qs4un") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_72inp"] +atlas = ExtResource("4_qs4un") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1xyr8"] +atlas = ExtResource("4_qs4un") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wmnhy"] +atlas = ExtResource("4_qs4un") +region = Rect2(384, 0, 192, 192) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_867w4") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ujskf") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_e5xnd") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_qs4un") +}], +"loop": false, +"name": &"attack", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_v3dha") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gfhsj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_m2rqe") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_xrtmp") +}], +"loop": false, +"name": &"attack anticipation", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_hs5xc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_o633g") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_eptl4") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_nofl6") +}], +"loop": false, +"name": &"defeated", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_4vyss") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2j1s4") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_i5csn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_vbmxr") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ull4j") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jiira") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_o027i") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_458kx") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_wt8op") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tu8xg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_rddrd") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_72inp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1xyr8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wmnhy") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/rift.png b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/rift.png new file mode 100644 index 0000000000..0f98d7c9cd --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/rift.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69e70c8c64330890d483386aecd2734e1d1b4fc4f29a1ea18ed3aca091589f87 +size 1359 diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/rift.png.import b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/rift.png.import new file mode 100644 index 0000000000..373fecc0ee --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/combat_components/rift.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b77f6v4ju8286" +path="res://.godot/imported/rift.png-61df1f52eaf93c3e5b40d1fd7eebd83c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/rift.png" +dest_files=["res://.godot/imported/rift.png-61df1f52eaf93c3e5b40d1fd7eebd83c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/infinite_knight_combat.gd b/scenes/quests/story_quests/infinite_knight/2_combat/infinite_knight_combat.gd new file mode 100644 index 0000000000..c39901326b --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/infinite_knight_combat.gd @@ -0,0 +1,108 @@ +extends Node2D + +var player_hp: int = 3 +var is_player_invulnerable: bool = false +var combat_started: bool = false + +var player_start_pos: Vector2 = Vector2.ZERO +var player_node: CharacterBody2D = null + +var _hidden_ui_nodes: Array[CanvasItem] = [] + +var current_wave: int = 1 +var max_waves: int = 3 +var enemies_defeated_in_current_wave: int = 0 +var collectible_node: CollectibleItem = null + +var enemies_per_wave: Array[int] = [3, 5, 7] + +func _ready() -> void: + var found_player: Node = find_child("Player", true, false) + if found_player and found_player is CharacterBody2D: + player_node = found_player as CharacterBody2D + player_start_pos = player_node.global_position + player_node.set_collision_mask_value(3, true) + + var repel_node: Node = player_node.get_node_or_null("%PlayerRepel") + if repel_node: + repel_node.input_action = "throw" + if repel_node is CanvasItem: + repel_node.hide() + + # Oculta el letrero de tutorial viejo sin destruirlo + var root: Window = get_tree().root + var viejo_letrero: CanvasItem = root.find_child("RepelInputHint", true, false) as CanvasItem + if is_instance_valid(viejo_letrero): + viejo_letrero.modulate.a = 0.0 + _hidden_ui_nodes.append(viejo_letrero) + + # Oculta el hilo usando su propia variable para no romper sus fisicas + var found_collectible: Node = find_child("CollectibleItem", true, false) + if found_collectible and found_collectible is CollectibleItem: + collectible_node = found_collectible as CollectibleItem + collectible_node.revealed = false + +func _exit_tree() -> void: + for node in _hidden_ui_nodes: + if is_instance_valid(node): + node.modulate.a = 1.0 + _hidden_ui_nodes.clear() + +func _process(_delta: float) -> void: + if not combat_started and is_instance_valid(player_node): + if player_node.mode == Player.Mode.USER_CONTROLLED: + if player_node.global_position.distance_to(player_start_pos) > 10.0: + start_combat() + +func _on_cinematic_cinematic_finished() -> void: + start_combat() + +func start_combat() -> void: + if combat_started: + return + combat_started = true + _start_wave() + +func _start_wave() -> void: + enemies_defeated_in_current_wave = 0 + var wave_group_name: String = "wave_" + str(current_wave) + get_tree().call_group(wave_group_name, "activate_rift") + +func on_enemy_defeated() -> void: + enemies_defeated_in_current_wave += 1 + var target_for_this_wave: int = enemies_per_wave[current_wave - 1] + + if enemies_defeated_in_current_wave >= target_for_this_wave: + if current_wave < max_waves: + current_wave += 1 + await get_tree().create_timer(1.5).timeout + _start_wave() + else: + # Victoria: Muestra el hilo arriba del jugador + if is_instance_valid(collectible_node): + if is_instance_valid(player_node): + collectible_node.global_position = player_node.global_position + Vector2(0, -40) + + collectible_node.set_deferred("revealed", true) + if collectible_node.has_method("reveal"): + collectible_node.call_deferred("reveal") + +func damage_player() -> void: + if is_player_invulnerable: + return + + is_player_invulnerable = true + player_hp -= 1 + + if player_hp <= 0: + if is_instance_valid(player_node) and player_node.has_method("defeat"): + player_node.defeat() + else: + if is_instance_valid(player_node): + player_node.modulate = Color.RED + await get_tree().create_timer(0.2).timeout + if is_instance_valid(player_node): + player_node.modulate = Color.WHITE + + await get_tree().create_timer(0.8).timeout + is_player_invulnerable = false diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/infinite_knight_combat.gd.uid b/scenes/quests/story_quests/infinite_knight/2_combat/infinite_knight_combat.gd.uid new file mode 100644 index 0000000000..a9e1b33600 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/infinite_knight_combat.gd.uid @@ -0,0 +1 @@ +uid://08842vf3svnd diff --git a/scenes/quests/story_quests/infinite_knight/2_combat/infinite_knight_combat.tscn b/scenes/quests/story_quests/infinite_knight/2_combat/infinite_knight_combat.tscn new file mode 100644 index 0000000000..32775678f6 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/2_combat/infinite_knight_combat.tscn @@ -0,0 +1,197 @@ +[gd_scene format=4 uid="uid://bhp4b0cnam1o3"] + +[ext_resource type="Script" uid="uid://08842vf3svnd" path="res://scenes/quests/story_quests/infinite_knight/2_combat/infinite_knight_combat.gd" id="1_5kkom"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_yk17o"] +[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="2_o0agx"] +[ext_resource type="Resource" uid="uid://dubgo2bij5wvc" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_combat.dialogue" id="3_6r2ti"] +[ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="4_fi2t8"] +[ext_resource type="TileSet" uid="uid://byr2ytqav02w5" path="res://scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_exterior_floors.tres" id="5_cbo57"] +[ext_resource type="TileSet" uid="uid://db7j7n1mbf4iv" path="res://scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_shadows.tres" id="6_yuln4"] +[ext_resource type="TileSet" uid="uid://haxvbtijkihu" path="res://scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_elevation_2.tres" id="7_j3ith"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="8_y8yp8"] +[ext_resource type="SpriteFrames" uid="uid://7q17ox014opg" path="res://scenes/quests/story_quests/infinite_knight/player_components/infinite_knight_player.tres" id="9_dl5hf"] +[ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="12_oty0w"] +[ext_resource type="PackedScene" uid="uid://c1s3revmgbb27" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_rift.tscn" id="14_wfxgv"] +[ext_resource type="PackedScene" uid="uid://c845gw7ym2pt3" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/infinite_knight_enemy.tscn" id="15_5kkom"] +[ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="15_tjsxx"] +[ext_resource type="PackedScene" uid="uid://bcy53c3sfhw28" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/attack_input_hint.tscn" id="16_5kkom"] +[ext_resource type="Texture2D" uid="uid://cs8dj6t3nq3kn" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/background.png" id="17_oty0w"] +[ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="18_qvo8w"] +[ext_resource type="AudioStream" uid="uid://dh4mwcunotua3" path="res://scenes/quests/story_quests/infinite_knight/player_components/combat.mp3" id="18_yk17o"] + +[sub_resource type="Resource" id="Resource_o0agx"] +script = ExtResource("12_oty0w") +metadata/_custom_type_script = "uid://bgmwplmj3bfls" + +[node name="InfiniteKnightCombat" type="Node2D" unique_id=1610054737] +y_sort_enabled = true +script = ExtResource("1_5kkom") + +[node name="PlayerMode" type="Node" parent="." unique_id=969358735] +script = ExtResource("1_yk17o") +mode = 1 +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + +[node name="Cinematic" type="Node2D" parent="." unique_id=951341763] +script = ExtResource("2_o0agx") +dialogue = ExtResource("3_6r2ti") +metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="FillGameLogic" type="Node" parent="." unique_id=1828019770] +script = ExtResource("4_fi2t8") +metadata/_custom_type_script = "uid://cp54mgi54nywo" + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=738016104] + +[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=293208529] +tile_map_data = PackedByteArray("AAANAAcABQABAAEAAAANAAYABQABAAEAAAAMAAcABQABAAEAAAAMAAYABQABAAEAAAAMAAUABQABAAEAAAAMAAQABQABAAEAAAAMAAMABQABAAEAAAAMAAIABQABAAAAAAALAAYABQABAAEAAAALAAUABQABAAEAAAALAAQABQABAAEAAAALAAMABQABAAEAAAALAAIABQABAAEAAAAKAAcABQABAAEAAAAKAAYABQABAAEAAAAKAAUABQABAAEAAAAKAAQABQABAAEAAAAKAAMABQABAAEAAAAKAAIABQABAAEAAAAJAAcABQABAAEAAAAJAAYABQABAAEAAAAJAAUABQABAAEAAAAJAAQABQABAAEAAAAJAAMABQABAAEAAAAJAAIABQABAAEAAAAIAAcABQABAAEAAAAIAAYABQABAAEAAAAIAAUABQABAAEAAAAIAAQABQABAAEAAAAIAAMABQABAAEAAAAIAAIABQABAAEAAAAHAAcABQABAAEAAAAHAAYABQABAAEAAAAHAAUABQABAAEAAAAHAAQABQABAAEAAAAHAAMABQABAAEAAAAHAAIABQABAAEAAAAGAAcABQABAAEAAAAGAAYABQABAAEAAAAGAAUABQABAAEAAAAGAAQABQABAAEAAAAGAAMABQABAAEAAAAGAAIABQABAAEAAAAFAAcABQABAAEAAAAFAAQABQABAAEAAAAFAAMABQABAAEAAAAFAAIABQABAAEAAAAEAAcABQABAAEAAAAEAAQABQABAAEAAAAEAAMABQABAAEAAAAEAAIABQABAAEAAAADAAcABQABAAEAAAADAAQABQABAAEAAAADAAMABQABAAEAAAADAAIABQABAAEAAAACAAcABQABAAEAAAACAAMABQABAAEAAAACAAIABQABAAEAAAABAAcABQABAAEAAAABAAMABQABAAEAAAABAAIABQABAAEAAAACAAQABQABAAEAAAABAAQABQABAAEAAAAAAAQABQABAAEAAAAAAAcABQABAAEAAAAAAAIABQABAAEAAAAAAAMABQABAAEAAAAAAAgABQABAAEAAAABAAgABQABAAEAAAACAAgABQABAAEAAAADAAgABQABAAEAAAAEAAgABQABAAEAAAAFAAgABQABAAEAAAAGAAgABQABAAEAAAAHAAgABQABAAEAAAAIAAgABQABAAEAAAAJAAgABQABAAEAAAAKAAgABQABAAEAAAAMAAgABQABAAEAAAANAAgABQABAAEAAAAAAAkABQABAAEAAAABAAkABQABAAEAAAACAAkABQABAAEAAAADAAkABQABAAEAAAAEAAkABQABAAEAAAAFAAkABQABAAEAAAAGAAkABQABAAEAAAAHAAkABQABAAEAAAAIAAkABQABAAEAAAAJAAkABQABAAEAAAAKAAkABQABAAEAAAALAAkABQABAAEAAAANAAkABQABAAEAAAAMAAkABQABAAEAAAD+/wIABQABAAEAAAD+/wMABQABAAEAAAD+/wQABQABAAEAAAD+/wUABQABAAEAAAD+/wYABQABAAEAAAD+/wcABQABAAEAAAD+/wgABQABAAEAAAD+/wkABQABAAEAAAD+/woABQABAAEAAAD//wIABQABAAEAAAD//wMABQABAAEAAAD//wQABQABAAEAAAD//wUABQABAAEAAAD//wYABQABAAEAAAD//wcABQABAAEAAAD//wgABQABAAEAAAD//wkABQABAAEAAAD//woABQABAAEAAAD//wsABQABAAEAAAD+/wsABQABAAEAAAAAAAsABQABAAEAAAABAAsABQABAAEAAAACAAsABQABAAEAAAADAAsABQABAAEAAAAEAAsABQABAAEAAAAFAAsABQABAAEAAAAGAAsABQABAAEAAAAHAAsABQABAAEAAAAIAAsABQABAAEAAAAJAAsABQABAAEAAAAKAAsABQABAAEAAAALAAsABQABAAEAAAAMAAsABQABAAEAAAANAAsABQABAAIAAAANAAoABQABAAEAAAAMAAoABQABAAEAAAALAAoABQABAAEAAAAKAAoABQABAAEAAAAJAAoABQABAAEAAAAIAAoABQABAAEAAAAHAAoABQABAAEAAAAGAAoABQABAAEAAAAFAAoABQABAAEAAAAEAAoABQABAAEAAAADAAoABQABAAEAAAACAAoABQABAAEAAAABAAoABQABAAEAAAAAAAoABQABAAEAAAAMAAwABQACAAEAAAALAAwABQABAAEAAAAKAAwABQABAAEAAAAJAAwABQABAAEAAAAIAAwABQABAAEAAAAHAAwABQABAAEAAAAGAAwABQABAAEAAAAFAAwABQABAAEAAAAEAAwABQABAAEAAAADAAwABQABAAEAAAACAAwABQABAAEAAAABAAwABQABAAEAAAAAAAwABQABAAEAAAD//wwABQABAAEAAAD+/wwABQABAAEAAAD9/wwABQABAAEAAAD9/wsABQABAAEAAAD9/woABQABAAEAAAD9/wkABQABAAEAAAD9/wgABQABAAEAAAD9/wcABQABAAEAAAD9/wYABQABAAEAAAD9/wUABQABAAEAAAD9/wQABQABAAEAAAD9/wMABQABAAEAAAD9/wIABQABAAEAAAD9/w8ABQAAAAIAAAD+/w8ABQABAAIAAAD//w8ABQABAAIAAAAAAA8ABQABAAIAAAABAA8ABQABAAIAAAACAA8ABQABAAIAAAADAA8ABQABAAIAAAAEAA8ABQABAAIAAAAFAA8ABQABAAIAAAAGAA8ABQABAAIAAAAHAA8ABQABAAIAAAAIAA8ABQABAAIAAAAMAA0ABQACAAEAAAALAA0ABQABAAEAAAAKAA0ABQABAAEAAAAJAA0ABQABAAEAAAAIAA0ABQABAAEAAAAIAA4ABQABAAEAAAAJAA4ABQABAAEAAAAKAA4ABQABAAEAAAALAA4ABQABAAEAAAAMAA4ABQACAAEAAAAHAA4ABQABAAEAAAAGAA4ABQABAAEAAAAJAA8ABQABAAIAAAAKAA8ABQABAAIAAAALAA8ABQABAAIAAAAMAA8ABQACAAIAAAAHAA0ABQABAAEAAAAGAA0ABQABAAEAAAAFAA0ABQABAAEAAAAEAA0ABQABAAEAAAADAA0ABQABAAEAAAACAA0ABQABAAEAAAABAA0ABQABAAEAAAAAAA0ABQABAAEAAAD//w0ABQABAAEAAAD+/w0ABQABAAEAAAD9/w0ABQABAAEAAAD8/w0ABQABAAIAAAD9/w4ABQAAAAEAAAD+/w4ABQABAAEAAAD//w4ABQABAAEAAAAAAA4ABQABAAEAAAABAA4ABQABAAEAAAACAA4ABQABAAEAAAADAA4ABQABAAEAAAAEAA4ABQABAAEAAAAFAA4ABQABAAEAAAD7/wkABQAAAAEAAAD8/wgABQABAAEAAAD8/wkABQABAAEAAAD8/woABQABAAEAAAD7/wsABQAAAAEAAAD7/wwABQAAAAEAAAD8/wwABQABAAEAAAD8/wsABQABAAEAAAD7/woABQAAAAEAAAD7/wYABQABAAEAAAD7/wcABQABAAEAAAD7/wgABQABAAEAAAD7/wUABQAAAAEAAAD7/wQABQAAAAEAAAD7/wMABQAAAAEAAAD7/wIABQAAAAAAAAD8/wcABQABAAEAAAD8/wYABQABAAEAAAD8/wUABQABAAEAAAD8/wQABQABAAEAAAD8/wMABQABAAEAAAD8/wIABQABAAAAAAAAAAUABQABAAEAAAAAAAYABQABAAEAAAABAAUABQABAAEAAAABAAYABQABAAEAAAACAAUABQABAAEAAAACAAYABQABAAEAAAADAAUABQABAAEAAAADAAYABQABAAEAAAAEAAUABQABAAEAAAAEAAYABQABAAEAAAAFAAUABQABAAEAAAAFAAYABQABAAEAAAALAAgABQABAAEAAAALAAcABQABAAEAAAAOAAIABQABAAAAAAAOAAMABQABAAEAAAAOAAQABQABAAEAAAAOAAUABQABAAEAAAAOAAYABQABAAEAAAAOAAcABQABAAEAAAAOAAgABQABAAEAAAAOAAkABQABAAEAAAAOAAoABQABAAEAAAAOAAsABQABAAIAAAANAAIABQABAAAAAAANAAMABQABAAEAAAANAAQABQABAAEAAAANAAUABQABAAEAAAD+/wEABQABAAAAAAD//wEABQABAAAAAAAAAAEABQABAAAAAAABAAEABQABAAAAAAACAAEABQABAAAAAAADAAEABQABAAAAAAAHAAEABQABAAAAAAAGAAEABQABAAAAAAAFAAEABQABAAAAAAAEAAEABQABAAAAAAAIAAEABQABAAAAAAAJAAEABQABAAAAAAAKAAEABQABAAAAAAALAAEABQACAAAAAAD9/wEABQAAAAAAAAD6/wYABQABAAAAAAD6/wcABQABAAEAAAD6/wgABQABAAIAAAD5/wgABQABAAIAAAD5/wcABQABAAEAAAD5/wYABQABAAAAAAD4/wcABQAAAAEAAAD4/wYABQAAAAAAAAD4/wgABQAAAAIAAAD7/w0ABQAAAAIAAAAPAAIABQACAAAAAAAPAAMABQACAAEAAAAPAAQABQACAAEAAAAPAAUABQACAAEAAAAPAAYABQACAAEAAAAPAAcABQACAAEAAAAPAAgABQACAAEAAAAPAAkABQACAAEAAAAPAAoABQACAAEAAAAPAAsABQACAAIAAAD4/wkAAQAAAAMAAAD5/wkAAQAAAAMAAAD6/wkAAQAAAAMAAAD7/w4AAQAAAAMAAAD8/w4AAQAAAAMAAAD9/xAAAQAAAAMAAAD+/xAAAQAAAAMAAAAAABAAAQAAAAMAAAD//xAAAQAAAAMAAAABABAAAQAAAAMAAAACABAAAQAAAAMAAAADABAAAQAAAAMAAAAEABAAAQAAAAMAAAAFABAAAQAAAAMAAAAGABAAAQAAAAMAAAAHABAAAQAAAAMAAAAIABAAAQAAAAMAAAAJABAAAQAAAAMAAAAKABAAAQAAAAMAAAALABAAAQAAAAMAAAAMABAAAQAAAAMAAAANAAwAAQAAAAMAAAAOAAwAAQAAAAMAAAAPAAwAAQAAAAMAAAA=") +tile_set = ExtResource("5_cbo57") + +[node name="Shadows" type="TileMapLayer" parent="TileMapLayers" unique_id=710920852] +tile_set = ExtResource("6_yuln4") + +[node name="Stones" type="TileMapLayer" parent="TileMapLayers" unique_id=702916193] +visible = false +tile_map_data = PackedByteArray("AAD3/wkABAADAAQAAAD4/wkABAADAAQAAAD5/wkABAADAAQAAAD6/wkABAADAAQAAAD6/woABAADAAQAAAD6/wsABAADAAQAAAD6/wwABAADAAQAAAD6/w0ABAADAAQAAAD6/w4ABAADAAQAAAD7/w4ABAADAAQAAAD8/w4ABAADAAQAAAD8/w8ABAADAAQAAAD8/xAABAADAAQAAAD9/xAABAADAAQAAAD+/xAABAADAAQAAAD//xAABAADAAQAAAAAABAABAADAAQAAAABABAABAADAAQAAAACABAABAADAAQAAAADABAABAADAAQAAAAEABAABAADAAQAAAAFABAABAADAAQAAAAGABAABAADAAQAAAAHABAABAADAAQAAAAIABAABAADAAQAAAAJABAABAADAAQAAAAKABAABAADAAQAAAALABAABAADAAQAAAAMABAABAADAAQAAAANABAABAADAAQAAAANAA8ABAADAAQAAAANAA4ABAADAAQAAAANAA0ABAADAAQAAAANAAwABAADAAQAAAAOAAwABAADAAQAAAAPAAwABAADAAQAAAAQAAwABAADAAQAAAD3/wgABAADAAQAAAAQAAsABAADAAQAAAAQAAQABAADAAQAAAAQAAUABAADAAQAAAAQAAYABAADAAQAAAAQAAcABAADAAQAAAAQAAgABAADAAQAAAAQAAkABAADAAQAAAAQAAoABAADAAQAAAANAAEABAABAAAAAAAOAAEABAABAAAAAAAPAAEABAABAAAAAAAQAAEABAADAAQAAAAQAAIABAADAAQAAAAQAAMABAADAAQAAAACAAAABAABAAAAAAADAAAABAABAAAAAAAEAAAABAABAAAAAAAFAAAABAABAAAAAAAGAAAABAABAAAAAAAHAAAABAABAAAAAAAIAAAABAABAAAAAAAJAAAABAABAAAAAAAKAAAABAABAAAAAAALAAAABAABAAAAAAAMAAAABAADAAQAAAAMAAEABAABAAEAAAD6/wQABAADAAQAAAD6/wMABAADAAQAAAD6/wIABAADAAQAAAD6/wEABAADAAQAAAD7/wEABAABAAAAAAD8/wEABAABAAEAAAD8/wAABAADAAQAAAD9/wAABAABAAAAAAD+/wAABAABAAAAAAD//wAABAABAAAAAAAAAAAABAABAAAAAAABAAAABAABAAAAAAD6/wUABAABAAEAAAD5/wUABAABAAAAAAD4/wUABAABAAAAAAD3/wcABAADAAQAAAD3/wYABAADAAQAAAD3/wUABAADAAQAAAD4/wQABAADAAQAAAD5/wQABAADAAQAAAAPAAAABAADAAQAAAAOAAAABAADAAQAAAANAAAABAADAAQAAAAMAP//BAADAAQAAAALAP//BAADAAQAAAAKAP//BAADAAQAAAAJAP//BAADAAQAAAAIAP//BAADAAQAAAAHAP//BAADAAQAAAAGAP//BAADAAQAAAAFAP//BAADAAQAAAAEAP//BAADAAQAAAADAP//BAADAAQAAAACAP//BAADAAQAAAABAP//BAADAAQAAAAAAP//BAADAAQAAAD/////BAADAAQAAAD+////BAADAAQAAAD9////BAADAAQAAAD8////BAADAAQAAAD7/wAABAADAAQAAAD6/wAABAADAAQAAAA=") +tile_set = ExtResource("7_j3ith") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=410171371] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=1799818537 instance=ExtResource("8_y8yp8")] +position = Vector2(297, 575) +sprite_frames = ExtResource("9_dl5hf") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=881414767] +zoom = Vector2(1.333, 1.333) +position_smoothing_enabled = true +editor_draw_limits = true + +[node name="CollectibleItem" parent="OnTheGround" unique_id=327991066 instance=ExtResource("15_tjsxx")] +revealed = false +next_scene = "uid://dsksocaiqjfdm" +item = SubResource("Resource_o0agx") +collected_dialogue = ExtResource("3_6r2ti") +dialogue_title = &"well_done" + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1277924950] + +[node name="HUD" parent="." unique_id=1216951978 instance=ExtResource("18_qvo8w")] + +[node name="InfiniteKnightRift" parent="." unique_id=116012560 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_1"] instance=ExtResource("14_wfxgv")] +position = Vector2(98, 418) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 1.0 + +[node name="InfiniteKnightRift2" parent="." unique_id=918271992 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_1"] instance=ExtResource("14_wfxgv")] +position = Vector2(578, 445) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 3.0 + +[node name="InfiniteKnightRift3" parent="." unique_id=1794202868 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_1"] instance=ExtResource("14_wfxgv")] +position = Vector2(363, 706) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 5.0 + +[node name="InfiniteKnightRift4" parent="." unique_id=1883260598 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_2"] instance=ExtResource("14_wfxgv")] +position = Vector2(278, 255) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 1.0 + +[node name="InfiniteKnightRift5" parent="." unique_id=1527193868 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_2"] instance=ExtResource("14_wfxgv")] +position = Vector2(725, 335) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 1.0 + +[node name="InfiniteKnightRift6" parent="." unique_id=597514464 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_2"] instance=ExtResource("14_wfxgv")] +position = Vector2(651, 654) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 3.0 + +[node name="InfiniteKnightRift7" parent="." unique_id=948836405 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_2"] instance=ExtResource("14_wfxgv")] +position = Vector2(168, 792) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 3.0 + +[node name="InfiniteKnightRift8" parent="." unique_id=1514382909 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_2"] instance=ExtResource("14_wfxgv")] +position = Vector2(48, 604) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 5.0 + +[node name="InfiniteKnightRift9" parent="." unique_id=986642629 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_3"] instance=ExtResource("14_wfxgv")] +position = Vector2(-65, 321) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 1.0 + +[node name="InfiniteKnightRift10" parent="." unique_id=1299926861 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_3"] instance=ExtResource("14_wfxgv")] +position = Vector2(-238, 720) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 1.0 + +[node name="InfiniteKnightRift11" parent="." unique_id=235741583 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_3"] instance=ExtResource("14_wfxgv")] +position = Vector2(148, 927) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 1.0 + +[node name="InfiniteKnightRift12" parent="." unique_id=270982736 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_3"] instance=ExtResource("14_wfxgv")] +position = Vector2(701, 877) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 3.0 + +[node name="InfiniteKnightRift13" parent="." unique_id=399214960 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_3"] instance=ExtResource("14_wfxgv")] +position = Vector2(918, 633) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 3.0 + +[node name="InfiniteKnightRift14" parent="." unique_id=21810248 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_3"] instance=ExtResource("14_wfxgv")] +position = Vector2(852, 395) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 5.0 + +[node name="InfiniteKnightRift15" parent="." unique_id=1978480548 node_paths=PackedStringArray("player_target") groups=["rifts", "wave_3"] instance=ExtResource("14_wfxgv")] +position = Vector2(442, 205) +enemy_scene = ExtResource("15_5kkom") +player_target = NodePath("../OnTheGround/Player") +spawn_delay = 5.0 + +[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1993063153] + +[node name="AttackInputHint" parent="CanvasLayer" unique_id=1113313011 instance=ExtResource("16_5kkom")] +offset_left = -210.0 +offset_right = -8.0 + +[node name="ParallaxBackground" type="ParallaxBackground" parent="." unique_id=204601801] + +[node name="ParallaxLayer" type="ParallaxLayer" parent="ParallaxBackground" unique_id=1221212299] +motion_scale = Vector2(0.1, 0.1) + +[node name="TextureRect" type="TextureRect" parent="ParallaxBackground/ParallaxLayer" unique_id=686425570] +texture_filter = 1 +offset_left = -1224.0 +offset_top = -195.0 +offset_right = 40.0 +offset_bottom = 562.0 +scale = Vector2(2, 2) +texture = ExtResource("17_oty0w") + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=1174150427] +stream = ExtResource("18_yk17o") +volume_db = -10.0 +autoplay = true + +[connection signal="cinematic_finished" from="Cinematic" to="." method="_on_cinematic_cinematic_finished"] +[connection signal="cinematic_finished" from="Cinematic" to="FillGameLogic" method="start"] diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss.gd b/scenes/quests/story_quests/infinite_knight/3_boss/boss.gd new file mode 100644 index 0000000000..40a90397fc --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss.gd @@ -0,0 +1,113 @@ +extends Area2D + +const ProyectilBola = preload("res://scenes/quests/story_quests/infinite_knight/3_boss/boss_ball.tscn") + +signal jefe_derrotado + +var vida_maxima: int = 12 +var vida_actual: int + +@onready var sprite: AnimatedSprite2D = $AnimatedSprite2D +@onready var shoot_timer: Timer = $ShootTimer +@onready var collision_shape: CollisionShape2D = $CollisionShape2D + +var alpha_anillo: float = 0.4: + set(value): + alpha_anillo = value + queue_redraw() + +func _ready() -> void: + vida_actual = vida_maxima + sprite.play("idle") + shoot_timer.stop() + + var tween: Tween = create_tween().set_loops() + tween.tween_property(self, "alpha_anillo", 0.1, 0.8) + tween.tween_property(self, "alpha_anillo", 0.4, 0.8) + +func iniciar_combate() -> void: + shoot_timer.start() + +func recibir_dano(cantidad: int) -> void: + vida_actual -= cantidad + sprite.modulate = Color(1, 0, 0) + await get_tree().create_timer(0.1).timeout + sprite.modulate = Color(1, 1, 1) + + if vida_actual <= 0: + defeat() + +func defeat() -> void: + shoot_timer.stop() + jefe_derrotado.emit() + sprite.play("death") + await sprite.animation_finished + queue_free() + +func _on_shoot_timer_timeout() -> void: + sprite.play("throw") + var nueva_bola: CharacterBody2D = ProyectilBola.instantiate() + nueva_bola.global_position = global_position + var angulo_aleatorio: float = randf_range(0, PI * 2) + nueva_bola.direccion = Vector2.RIGHT.rotated(angulo_aleatorio) + get_parent().add_child(nueva_bola) + await sprite.animation_finished + if vida_actual > 0: + sprite.play("idle") + +func _on_body_entered(body: Node2D) -> void: + if "es_devuelta" in body and body.es_devuelta == true: + recibir_dano(1) + body.queue_free() + return + + if body.name == "Player": + _castigar_jugador(body) + +func _castigar_jugador(jugador: Node2D) -> void: + var golpes: int = 0 + if jugador.has_meta("golpes_jefe"): + golpes = jugador.get_meta("golpes_jefe") + + golpes += 1 + jugador.set_meta("golpes_jefe", golpes) + + if golpes >= 3: + if jugador.has_method("defeat"): + jugador.defeat() + else: + jugador.modulate = Color(1, 0, 0) + var tween_color: Tween = jugador.create_tween() + tween_color.tween_property(jugador, "modulate", Color(1, 1, 1), 0.3) + + var direccion_empuje: Vector2 = (jugador.global_position - global_position).normalized() + var tween_empuje: Tween = jugador.create_tween() + tween_empuje.tween_property(jugador, "global_position", jugador.global_position + (direccion_empuje * 100.0), 0.2).set_trans(Tween.TRANS_SINE) + +func _draw() -> void: + if not collision_shape or not collision_shape.shape: + return + + var color_borde: Color = Color(1, 0, 0, alpha_anillo) + var color_relleno: Color = Color(1, 0, 0, alpha_anillo * 0.2) + var grosor: float = 3.0 + + if collision_shape.shape is CapsuleShape2D: + var r: float = collision_shape.shape.radius + var h: float = collision_shape.shape.height + var cy: float = (h / 2.0) - r + + draw_rect(Rect2(-r, -cy, r * 2, cy * 2), color_relleno) + draw_circle(Vector2(0, -cy), r, color_relleno) + draw_circle(Vector2(0, cy), r, color_relleno) + + draw_line(Vector2(-r, -cy), Vector2(-r, cy), color_borde, grosor) + draw_line(Vector2(r, -cy), Vector2(r, cy), color_borde, grosor) + + draw_arc(Vector2(0, cy), r, 0, PI, 32, color_borde, grosor, true) + draw_arc(Vector2(0, -cy), r, PI, TAU, 32, color_borde, grosor, true) + + elif collision_shape.shape is CircleShape2D: + var r: float = collision_shape.shape.radius + draw_circle(Vector2.ZERO, r, color_relleno) + draw_arc(Vector2.ZERO, r, 0, TAU, 64, color_borde, grosor, true) diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss.gd.uid b/scenes/quests/story_quests/infinite_knight/3_boss/boss.gd.uid new file mode 100644 index 0000000000..8cc0c68052 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss.gd.uid @@ -0,0 +1 @@ +uid://buck3216eahlc diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss.tscn b/scenes/quests/story_quests/infinite_knight/3_boss/boss.tscn new file mode 100644 index 0000000000..a8986241a7 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss.tscn @@ -0,0 +1,27 @@ +[gd_scene format=3 uid="uid://dbkni3nqne6ys"] + +[ext_resource type="Script" uid="uid://buck3216eahlc" path="res://scenes/quests/story_quests/infinite_knight/3_boss/boss.gd" id="1_xyyst"] +[ext_resource type="SpriteFrames" uid="uid://bxknu062gtft4" path="res://scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss.tres" id="2_xyyst"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_xyyst"] +radius = 75.0 +height = 192.0 + +[node name="boss" type="Area2D" unique_id=1581229532] +collision_layer = 256 +collision_mask = 273 +script = ExtResource("1_xyyst") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=2075423859] +sprite_frames = ExtResource("2_xyyst") +animation = &"idle" +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1589280650] +shape = SubResource("CapsuleShape2D_xyyst") + +[node name="ShootTimer" type="Timer" parent="." unique_id=425986075] +wait_time = 1.5 + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] +[connection signal="timeout" from="ShootTimer" to="." method="_on_shoot_timer_timeout"] diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss_ball.gd b/scenes/quests/story_quests/infinite_knight/3_boss/boss_ball.gd new file mode 100644 index 0000000000..b70d1995d4 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss_ball.gd @@ -0,0 +1,44 @@ +extends CharacterBody2D + +var velocidad: float = 200.0 +var direccion: Vector2 = Vector2.ZERO +var es_devuelta: bool = false + +func _physics_process(delta: float) -> void: + var _colision: KinematicCollision2D = move_and_collide(direccion * velocidad * delta) + + if _colision: + var objeto_golpeado: Object = _colision.get_collider() + + if objeto_golpeado.name == "Player" and es_devuelta == false: + var golpes: int = 0 + if objeto_golpeado.has_meta("golpes_jefe"): + golpes = objeto_golpeado.get_meta("golpes_jefe") + + golpes += 1 + objeto_golpeado.set_meta("golpes_jefe", golpes) + + if golpes >= 3: + if objeto_golpeado.has_method("defeat"): + objeto_golpeado.defeat() + else: + objeto_golpeado.modulate = Color(1, 0, 0) + var tween: Tween = objeto_golpeado.create_tween() + tween.tween_property(objeto_golpeado, "modulate", Color(1, 1, 1), 0.3) + + queue_free() + + elif objeto_golpeado.name != "Boss": + queue_free() + +func got_repelled(_dir_repel: Vector2) -> void: + if es_devuelta: + return + + es_devuelta = true + direccion = direccion * -1 + velocidad += 150.0 + modulate = Color(0, 1, 0) + +func _on_visible_on_screen_notifier_2d_screen_exited() -> void: + queue_free() diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss_ball.gd.uid b/scenes/quests/story_quests/infinite_knight/3_boss/boss_ball.gd.uid new file mode 100644 index 0000000000..3799f7728d --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss_ball.gd.uid @@ -0,0 +1 @@ +uid://d2endyeclrrob diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss_ball.tscn b/scenes/quests/story_quests/infinite_knight/3_boss/boss_ball.tscn new file mode 100644 index 0000000000..daee4169a6 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss_ball.tscn @@ -0,0 +1,22 @@ +[gd_scene format=3 uid="uid://dva2fghcv3eih"] + +[ext_resource type="Script" uid="uid://d2endyeclrrob" path="res://scenes/quests/story_quests/infinite_knight/3_boss/boss_ball.gd" id="1_p3udl"] +[ext_resource type="Texture2D" uid="uid://cagyo41xspko" path="res://assets/first_party/templates/combat/NO_EDIT_projectile.png" id="2_aovk8"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_gx5d5"] +radius = 16.0 + +[node name="BossBall" type="CharacterBody2D" unique_id=361625686] +collision_layer = 256 +collision_mask = 17 +script = ExtResource("1_p3udl") + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1273433221] +texture = ExtResource("2_aovk8") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=922101369] +shape = SubResource("CircleShape2D_gx5d5") + +[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="." unique_id=1401827441] + +[connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="_on_visible_on_screen_notifier_2d_screen_exited"] diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss.tres b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss.tres new file mode 100644 index 0000000000..ba14375137 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss.tres @@ -0,0 +1,121 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://bxknu062gtft4"] + +[ext_resource type="Texture2D" uid="uid://b2kic3oacf4ud" path="res://scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_death.png" id="1_bqau3"] +[ext_resource type="Texture2D" uid="uid://b1liwbid247n4" path="res://scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_idle.png" id="2_17kr1"] +[ext_resource type="Texture2D" uid="uid://cqhu4xwmlhxmv" path="res://scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_throw.png" id="3_4ltkw"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_qriaa"] +atlas = ExtResource("1_bqau3") +region = Rect2(0, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_5ckhw"] +atlas = ExtResource("1_bqau3") +region = Rect2(256, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4fd7r"] +atlas = ExtResource("1_bqau3") +region = Rect2(512, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_rgsc2"] +atlas = ExtResource("1_bqau3") +region = Rect2(768, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8vg75"] +atlas = ExtResource("1_bqau3") +region = Rect2(1024, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_r7ifq"] +atlas = ExtResource("1_bqau3") +region = Rect2(1280, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2gpfn"] +atlas = ExtResource("1_bqau3") +region = Rect2(1536, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8rkel"] +atlas = ExtResource("1_bqau3") +region = Rect2(1792, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7ihl6"] +atlas = ExtResource("1_bqau3") +region = Rect2(2048, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_mxigh"] +atlas = ExtResource("1_bqau3") +region = Rect2(2304, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pr7by"] +atlas = ExtResource("2_17kr1") +region = Rect2(0, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_e3dqs"] +atlas = ExtResource("3_4ltkw") +region = Rect2(0, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_bua2v"] +atlas = ExtResource("3_4ltkw") +region = Rect2(256, 0, 256, 256) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6uj1h"] +atlas = ExtResource("3_4ltkw") +region = Rect2(512, 0, 256, 256) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_qriaa") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_5ckhw") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4fd7r") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_rgsc2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8vg75") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_r7ifq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2gpfn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8rkel") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7ihl6") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_mxigh") +}], +"loop": false, +"name": &"death", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_pr7by") +}], +"loop": true, +"name": &"idle", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_e3dqs") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bua2v") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_6uj1h") +}], +"loop": true, +"name": &"throw", +"speed": 3.0 +}] diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_death.png b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_death.png new file mode 100644 index 0000000000..e5ebd0cb13 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_death.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc2a5c19637c3da0985f40c04bb9e8f4a94eaced10e2fb567d6f93eacff3f338 +size 46815 diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_death.png.import b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_death.png.import new file mode 100644 index 0000000000..e99ba1f63b --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_death.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2kic3oacf4ud" +path="res://.godot/imported/boss_death.png-8aa29c6d0639656441b7dd62f632e722.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_death.png" +dest_files=["res://.godot/imported/boss_death.png-8aa29c6d0639656441b7dd62f632e722.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_idle.png b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_idle.png new file mode 100644 index 0000000000..a52de9958c --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_idle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:119fb0bdb848cb9e2927de3f1570484c0af70db14e533db0aee14ec85592792a +size 10713 diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_idle.png.import b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_idle.png.import new file mode 100644 index 0000000000..ef217b033f --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_idle.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1liwbid247n4" +path="res://.godot/imported/boss_idle.png-898963670d6e0e1c1714c01ee90f339e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_idle.png" +dest_files=["res://.godot/imported/boss_idle.png-898963670d6e0e1c1714c01ee90f339e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_throw.png b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_throw.png new file mode 100644 index 0000000000..620f8e21e8 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_throw.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19c2ce15eb9250e40552d9a4bbd9b3e931fa0623d7c9c4f31f524b90fc7411b7 +size 16854 diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_throw.png.import b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_throw.png.import new file mode 100644 index 0000000000..9137bd9473 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_throw.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqhu4xwmlhxmv" +path="res://.godot/imported/boss_throw.png-3822809c4c40995aec58fbe1515d64bc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/3_boss/boss_components/boss_throw.png" +dest_files=["res://.godot/imported/boss_throw.png-3822809c4c40995aec58fbe1515d64bc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/infinite_knight_boss.dialogue b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/infinite_knight_boss.dialogue new file mode 100644 index 0000000000..eeb87e0be7 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/infinite_knight_boss.dialogue @@ -0,0 +1,9 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +El desconocido habla "₵Ø₦ QɄɆ ₱ɆⱤ₥ł₴Ø Ⱨ₳฿Ⱡ₳₴, ₮Ʉ ĐɆ₴₮ⱤɄł₴₮Ɇ Ɇ₴₮Ɇ ₥Ʉ₦ĐØ Ɏ ĐɆ łⱤ₳₴ ₵Ø₦ ɆⱠ" +"No se que cosa eres pero vas a tener que moverte a un lado o yo lo hare." +=> END +~ well_done +Todo acabo, recordé todo, estaba en una expedición con dos grandes amigos y finalmente tenia que decidir acabar con mi hija; el motivo de mi viaje solo para encontrarla y perdonarle su vida, y accidentalmente genere todo esto. +=> END diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/infinite_knight_boss.dialogue.import b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/infinite_knight_boss.dialogue.import new file mode 100644 index 0000000000..6496f9aac6 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/boss_components/infinite_knight_boss.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://ctqfe0ft872q8" +path="res://.godot/imported/infinite_knight_boss.dialogue-414f21054dbd896f05d507b9cb3dd4e7.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/3_boss/boss_components/infinite_knight_boss.dialogue" +dest_files=["res://.godot/imported/infinite_knight_boss.dialogue-414f21054dbd896f05d507b9cb3dd4e7.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/infinite_knight_boss.tscn b/scenes/quests/story_quests/infinite_knight/3_boss/infinite_knight_boss.tscn new file mode 100644 index 0000000000..8a9dd02b9f --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/infinite_knight_boss.tscn @@ -0,0 +1,90 @@ +[gd_scene format=4 uid="uid://dsksocaiqjfdm"] + +[ext_resource type="TileSet" uid="uid://haxvbtijkihu" path="res://scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_elevation_2.tres" id="2_vrjp5"] +[ext_resource type="TileSet" uid="uid://byr2ytqav02w5" path="res://scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_exterior_floors.tres" id="4_r5a2l"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="5_hvhbb"] +[ext_resource type="Script" uid="uid://vqou4ld2tal" path="res://scenes/quests/story_quests/infinite_knight/3_boss/on_the_ground.gd" id="5_u7k86"] +[ext_resource type="SpriteFrames" uid="uid://7q17ox014opg" path="res://scenes/quests/story_quests/infinite_knight/player_components/infinite_knight_player.tres" id="6_6grsx"] +[ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="7_ici80"] +[ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="8_nd104"] +[ext_resource type="Resource" uid="uid://ctqfe0ft872q8" path="res://scenes/quests/story_quests/infinite_knight/3_boss/boss_components/infinite_knight_boss.dialogue" id="9_52sfu"] +[ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="10_rxthf"] +[ext_resource type="PackedScene" uid="uid://dbkni3nqne6ys" path="res://scenes/quests/story_quests/infinite_knight/3_boss/boss.tscn" id="10_vrjp5"] +[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="11_fwuqd"] +[ext_resource type="Texture2D" uid="uid://cs8dj6t3nq3kn" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/background.png" id="12_u7k86"] +[ext_resource type="AudioStream" uid="uid://dh4mwcunotua3" path="res://scenes/quests/story_quests/infinite_knight/player_components/combat.mp3" id="13_u7k86"] + +[sub_resource type="Resource" id="Resource_3gar4"] +script = ExtResource("8_nd104") +type = 2 +metadata/_custom_type_script = "uid://bgmwplmj3bfls" + +[node name="InfiniteKnightBoss" type="Node2D" unique_id=217609538] + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=2088852286] + +[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=592819758] +tile_map_data = PackedByteArray("AAAMAAcABQACAAEAAAAMAAYABQACAAEAAAAMAAUABQACAAEAAAAMAAQABQACAAEAAAAMAAMABQACAAEAAAAMAAIABQACAAEAAAAMAAEABQACAAAAAAALAAcABQABAAEAAAALAAYABQABAAEAAAALAAUABQABAAEAAAALAAQABQABAAEAAAALAAMABQABAAEAAAALAAIABQABAAEAAAALAAEABQABAAAAAAAKAAcABQABAAEAAAAKAAYABQABAAEAAAAKAAUABQABAAEAAAAKAAQABQABAAEAAAAKAAMABQABAAEAAAAKAAIABQABAAEAAAAJAAcABQABAAEAAAAJAAYABQABAAEAAAAJAAUABQABAAEAAAAJAAQABQABAAEAAAAJAAMABQABAAEAAAAJAAIABQABAAEAAAAIAAcABQABAAEAAAAIAAYABQABAAEAAAAIAAUABQABAAEAAAAIAAQABQABAAEAAAAIAAMABQABAAEAAAAIAAIABQABAAEAAAAHAAcABQABAAEAAAAHAAYABQABAAEAAAAHAAUABQABAAEAAAAHAAQABQABAAEAAAAHAAMABQABAAEAAAAHAAIABQABAAEAAAAGAAcABQABAAEAAAAGAAYABQABAAEAAAAGAAUABQABAAEAAAAGAAQABQABAAEAAAAGAAMABQABAAEAAAAGAAIABQABAAEAAAAFAAcABQABAAEAAAAFAAYABQABAAEAAAAFAAUABQABAAEAAAAFAAQABQABAAEAAAAFAAMABQABAAEAAAAFAAIABQABAAEAAAAFAAEABQABAAAAAAAEAAcABQABAAEAAAAEAAYABQABAAEAAAAEAAQABQABAAEAAAAEAAMABQABAAEAAAAEAAIABQABAAEAAAAEAAEABQABAAAAAAADAAQABQABAAEAAAADAAMABQABAAEAAAADAAIABQABAAEAAAADAAEABQABAAAAAAACAAMABQABAAEAAAACAAIABQABAAEAAAACAAEABQABAAAAAAABAAMABQAAAAEAAAABAAIABQAAAAEAAAACAAQABQABAAEAAAABAAQABQAAAAEAAAACAAgABQABAAIAAAADAAgABQABAAIAAAAEAAgABQABAAIAAAAFAAgABQABAAIAAAAGAAgABQABAAIAAAAHAAgABQABAAIAAAAIAAgABQABAAIAAAAJAAgABQABAAIAAAAKAAgABQABAAIAAAAMAAgABQACAAIAAAALAAgABQABAAIAAAABAAUABQAAAAEAAAACAAUABQABAAEAAAADAAUABQABAAEAAAAEAAUABQABAAEAAAADAAYABQABAAEAAAACAAYABQABAAEAAAABAAYABQAAAAEAAAABAAcABQAAAAEAAAACAAcABQABAAEAAAADAAcABQABAAEAAAAGAAEABQABAAAAAAAHAAEABQABAAAAAAAIAAEABQABAAAAAAAJAAEABQABAAAAAAAKAAEABQABAAAAAAABAAgABQAAAAIAAAABAAkAAQAAAAMAAAACAAkAAQAAAAMAAAADAAkAAQAAAAMAAAAEAAkAAQAAAAMAAAAFAAkAAQAAAAMAAAAGAAkAAQAAAAMAAAAHAAkAAQAAAAMAAAAIAAkAAQAAAAMAAAAJAAkAAQAAAAMAAAAKAAkAAQAAAAMAAAALAAkAAQAAAAMAAAAMAAkAAQAAAAMAAAABAAEABQAAAAAAAAA=") +tile_set = ExtResource("4_r5a2l") + +[node name="Stones" type="TileMapLayer" parent="TileMapLayers" unique_id=1445769646] +visible = false +tile_map_data = PackedByteArray("AAABAAkABAADAAQAAAACAAkABAADAAQAAAADAAkABAADAAQAAAAEAAkABAADAAQAAAAFAAkABAADAAQAAAAGAAkABAADAAQAAAAHAAkABAADAAQAAAAIAAkABAADAAQAAAAJAAkABAADAAQAAAAKAAkABAADAAQAAAALAAkABAADAAQAAAAMAAkABAADAAQAAAANAAkABAADAAQAAAANAAgABAADAAQAAAANAAcABAADAAQAAAANAAYABAADAAQAAAANAAUABAADAAQAAAANAAQABAADAAQAAAANAAMABAADAAQAAAANAAIABAADAAQAAAANAAEABAADAAQAAAAAAAAABAADAAQAAAAAAAEABAADAAQAAAAAAAIABAADAAQAAAAAAAMABAADAAQAAAAAAAQABAADAAQAAAAAAAUABAADAAQAAAAAAAYABAADAAQAAAAAAAcABAADAAQAAAAAAAgABAADAAQAAAAAAAkABAADAAQAAAANAP//BAADAAQAAAAMAP//BAADAAQAAAALAP//BAADAAQAAAAKAP//BAADAAQAAAAJAP//BAADAAQAAAAIAP//BAADAAQAAAAHAP//BAADAAQAAAAGAP//BAADAAQAAAAFAP//BAADAAQAAAAEAP//BAADAAQAAAADAP//BAADAAQAAAACAP//BAADAAQAAAABAP//BAADAAQAAAAAAP//BAADAAQAAAA=") +tile_set = ExtResource("2_vrjp5") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=1358184019] +y_sort_enabled = true +script = ExtResource("5_u7k86") + +[node name="Player" parent="OnTheGround" unique_id=747348360 instance=ExtResource("5_hvhbb")] +position = Vector2(133, 345) +sprite_frames = ExtResource("6_6grsx") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1732237457] +limit_left = -64 +limit_top = 28 +limit_right = 1024 +limit_bottom = 704 +position_smoothing_enabled = true +editor_draw_limits = true + +[node name="CollectibleItem" parent="OnTheGround" unique_id=1678374994 instance=ExtResource("7_ici80")] +position = Vector2(451, 323) +revealed = false +next_scene = "uid://b1vvld0ypflg4" +item = SubResource("Resource_3gar4") +collected_dialogue = ExtResource("9_52sfu") +dialogue_title = &"well_done" + +[node name="boss" parent="OnTheGround" unique_id=1581229532 instance=ExtResource("10_vrjp5")] +position = Vector2(448, 317) + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1686505878] + +[node name="HUD" parent="." unique_id=1084128841 instance=ExtResource("10_rxthf")] + +[node name="Cinematic" type="Node2D" parent="." unique_id=1869940872] +script = ExtResource("11_fwuqd") +dialogue = ExtResource("9_52sfu") +metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="ParallaxBackground" type="ParallaxBackground" parent="." unique_id=2122076549] + +[node name="ParallaxLayer" type="ParallaxLayer" parent="ParallaxBackground" unique_id=140187179] +motion_scale = Vector2(0.1, 0.1) + +[node name="TextureRect" type="TextureRect" parent="ParallaxBackground/ParallaxLayer" unique_id=1951897056] +texture_filter = 1 +offset_left = -761.0 +offset_top = -395.0 +offset_right = 503.0 +offset_bottom = 362.0 +scale = Vector2(2, 2) +texture = ExtResource("12_u7k86") + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=969028947] +stream = ExtResource("13_u7k86") +volume_db = -10.0 +autoplay = true + +[connection signal="jefe_derrotado" from="OnTheGround/boss" to="OnTheGround/CollectibleItem" method="reveal"] diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/on_the_ground.gd b/scenes/quests/story_quests/infinite_knight/3_boss/on_the_ground.gd new file mode 100644 index 0000000000..4c8078a62b --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/on_the_ground.gd @@ -0,0 +1,60 @@ +extends Node2D + +const UI_NODES_TO_HIDE: Array[String] = ["AimInputHint", "ThrowInputHint"] +var _hidden_ui_nodes: Array[CanvasItem] = [] + +var combat_started: bool = false +var player_node: CharacterBody2D = null +var boss_node: Area2D = null +var player_start_pos: Vector2 = Vector2.ZERO + +func _ready() -> void: + var found_player: Node = find_child("Player", true, false) + if found_player and found_player is CharacterBody2D: + player_node = found_player as CharacterBody2D + player_start_pos = player_node.global_position + + var found_boss: Node = find_child("boss", true, false) + if found_boss and found_boss is Area2D: + boss_node = found_boss as Area2D + + _set_stealth_environment(true) + +func _exit_tree() -> void: + _set_stealth_environment(false) + +func _process(_delta: float) -> void: + if not combat_started and is_instance_valid(player_node) and is_instance_valid(boss_node): + if player_node.mode == 0: + if player_node.global_position.distance_to(player_start_pos) > 10.0: + start_combat() + +func start_combat() -> void: + combat_started = true + if boss_node.has_method("iniciar_combate"): + boss_node.iniciar_combate() + +func _set_stealth_environment(active: bool) -> void: + if active: + var root: Window = get_tree().root + for node_name: String in UI_NODES_TO_HIDE: + var node: Node = root.find_child(node_name, true, false) + if is_instance_valid(node) and node is CanvasItem: + node.visible = false + _hidden_ui_nodes.append(node) + else: + for node: CanvasItem in _hidden_ui_nodes: + if is_instance_valid(node): + node.visible = true + _hidden_ui_nodes.clear() + + if not is_instance_valid(player_node): + return + + if active: + var hook: Node2D = player_node.get("player_hook") as Node2D + if is_instance_valid(hook): + hook.process_mode = Node.PROCESS_MODE_DISABLED + hook.visible = false + elif player_node.has_method("_toggle_abilities"): + player_node.call("_toggle_abilities") diff --git a/scenes/quests/story_quests/infinite_knight/3_boss/on_the_ground.gd.uid b/scenes/quests/story_quests/infinite_knight/3_boss/on_the_ground.gd.uid new file mode 100644 index 0000000000..d148a69ea7 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/3_boss/on_the_ground.gd.uid @@ -0,0 +1 @@ +uid://vqou4ld2tal diff --git a/scenes/quests/story_quests/infinite_knight/4_outro/infinite_knight_outro.tscn b/scenes/quests/story_quests/infinite_knight/4_outro/infinite_knight_outro.tscn new file mode 100644 index 0000000000..b9bddef3fd --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/4_outro/infinite_knight_outro.tscn @@ -0,0 +1,65 @@ +[gd_scene format=4 uid="uid://b1vvld0ypflg4"] + +[ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="1_hqqqq"] +[ext_resource type="TileSet" uid="uid://byr2ytqav02w5" path="res://scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_exterior_floors.tres" id="2_2der0"] +[ext_resource type="SpriteFrames" uid="uid://7q17ox014opg" path="res://scenes/quests/story_quests/infinite_knight/player_components/infinite_knight_player.tres" id="3_qaaad"] +[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="4_ctao7"] +[ext_resource type="Resource" uid="uid://bupoebuanpxka" path="res://scenes/quests/story_quests/infinite_knight/4_outro/outro_components/infinite_knight_outro.dialogue" id="5_h7u0d"] +[ext_resource type="Texture2D" uid="uid://cs8dj6t3nq3kn" path="res://scenes/quests/story_quests/infinite_knight/2_combat/combat_components/background.png" id="6_t1rrv"] +[ext_resource type="AudioStream" uid="uid://df38ngkb6wv5q" path="res://scenes/quests/story_quests/infinite_knight/player_components/intro.mp3" id="7_olb14"] + +[node name="InfiniteKnightOutro" type="Node2D" unique_id=1273842832] + +[node name="HUD" parent="." unique_id=260989644 instance=ExtResource("1_hqqqq")] + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=874277128] + +[node name="Ground" type="TileMapLayer" parent="TileMapLayers" unique_id=2114459651] +tile_map_data = PackedByteArray("AAAFAAUABQABAAEAAAAFAAQABQABAAEAAAAFAAMABQAAAAEAAAAGAAMABQABAAEAAAAIAAQABQABAAEAAAAIAAUABQABAAEAAAAHAAUABQABAAEAAAAHAAYABQABAAIAAAAGAAYABQABAAIAAAAFAAYABQAAAAIAAAAIAAYABQABAAIAAAAGAAUABQABAAEAAAAGAAQABQABAAEAAAAHAAQABQABAAEAAAAJAAYABQACAAIAAAAJAAUABQABAAEAAAAKAAUABQACAAIAAAAKAAQABQABAAEAAAAJAAQABQABAAEAAAAJAAMABQABAAEAAAAEAAUABQAAAAIAAAAFAAcAAQAAAAMAAAAGAAcAAQAAAAMAAAAHAAcAAQAAAAMAAAAIAAcAAQAAAAMAAAAJAAcAAQAAAAMAAAAKAAYAAQAAAAMAAAALAAUAAQAAAAMAAAALAAQABQACAAMAAAAEAAQABQAAAAAAAAAGAAIABQACAAEAAAAJAAIABQADAAAAAAAKAAMABQACAAAAAAAFAAIABQAAAAAAAAAHAAMABQABAAAAAAAIAAMABQABAAAAAAAGAAEABQADAAAAAAAEAAYAAQAAAAMAAAA=") +tile_set = ExtResource("2_2der0") + +[node name="Camera2D" type="Camera2D" parent="." unique_id=1523556790] +position = Vector2(153, 366) +zoom = Vector2(1.333, 1.333) +limit_left = 0 +limit_top = 0 +limit_right = 960 +limit_bottom = 540 +position_smoothing_enabled = true +editor_draw_limits = true + +[node name="OnTheGround" type="Node2D" parent="." unique_id=2094226334] +y_sort_enabled = true + +[node name="Character" type="AnimatedSprite2D" parent="OnTheGround" unique_id=1142153150] +position = Vector2(400, 349) +sprite_frames = ExtResource("3_qaaad") +animation = &"idle" +autoplay = "idle" + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1305410749] + +[node name="Cinematic" type="Node2D" parent="." unique_id=1957659485] +script = ExtResource("4_ctao7") +dialogue = ExtResource("5_h7u0d") +next_scene = "uid://cufkthb25mpxy" +metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="ParallaxBackground" type="ParallaxBackground" parent="." unique_id=402168502] + +[node name="ParallaxLayer" type="ParallaxLayer" parent="ParallaxBackground" unique_id=1719712008] +motion_scale = Vector2(0.1, 0.1) + +[node name="TextureRect" type="TextureRect" parent="ParallaxBackground/ParallaxLayer" unique_id=998085426] +texture_filter = 1 +offset_left = -1224.0 +offset_top = -195.0 +offset_right = 40.0 +offset_bottom = 562.0 +scale = Vector2(2, 2) +texture = ExtResource("6_t1rrv") + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=548266826] +stream = ExtResource("7_olb14") +volume_db = -10.0 +autoplay = true diff --git a/scenes/quests/story_quests/infinite_knight/4_outro/outro_components/infinite_knight_outro.dialogue b/scenes/quests/story_quests/infinite_knight/4_outro/outro_components/infinite_knight_outro.dialogue new file mode 100644 index 0000000000..b258bf7849 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/4_outro/outro_components/infinite_knight_outro.dialogue @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +La verdad ha salido. El caballero ha visto su pasado, como lo único que recordará. +Cae de rodillas, soltando su espada, esperando que su existencia también termine para poder descansar. +Pero pierde la voz por la evolución a su alteración personalizada. +=> END diff --git a/scenes/quests/story_quests/infinite_knight/4_outro/outro_components/infinite_knight_outro.dialogue.import b/scenes/quests/story_quests/infinite_knight/4_outro/outro_components/infinite_knight_outro.dialogue.import new file mode 100644 index 0000000000..06360e16a4 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/4_outro/outro_components/infinite_knight_outro.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://bupoebuanpxka" +path="res://.godot/imported/infinite_knight_outro.dialogue-25d3406563b4cacbf3748ab77c9a711c.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/4_outro/outro_components/infinite_knight_outro.dialogue" +dest_files=["res://.godot/imported/infinite_knight_outro.dialogue-25d3406563b4cacbf3748ab77c9a711c.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/infinite_knight/4_outro/player_attack_01.png b/scenes/quests/story_quests/infinite_knight/4_outro/player_attack_01.png new file mode 100644 index 0000000000..86df141e37 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/4_outro/player_attack_01.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f9bf8250b2a9929206c4cf9dd75cc48f6157a498625dea5705fae445e092338 +size 8085 diff --git a/scenes/quests/story_quests/infinite_knight/4_outro/player_attack_01.png.import b/scenes/quests/story_quests/infinite_knight/4_outro/player_attack_01.png.import new file mode 100644 index 0000000000..4b3d40222e --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/4_outro/player_attack_01.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bo82ibjqjqdrc" +path="res://.godot/imported/player_attack_01.png-5407a85ee9055810750768e99a82a1b4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/4_outro/player_attack_01.png" +dest_files=["res://.godot/imported/player_attack_01.png-5407a85ee9055810750768e99a82a1b4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/combat.mp3 b/scenes/quests/story_quests/infinite_knight/player_components/combat.mp3 new file mode 100644 index 0000000000..b644586da3 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/combat.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d37ff948da84214b15615f4ab691605d49ebf3cb82ef038de103d2bf701ff4f +size 4214914 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/combat.mp3.import b/scenes/quests/story_quests/infinite_knight/player_components/combat.mp3.import new file mode 100644 index 0000000000..ea18b74154 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/combat.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://dh4mwcunotua3" +path="res://.godot/imported/combat.mp3-d97262cd7d568dd9487c721dac209ae7.mp3str" + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/player_components/combat.mp3" +dest_files=["res://.godot/imported/combat.mp3-d97262cd7d568dd9487c721dac209ae7.mp3str"] + +[params] + +loop=true +loop_offset=0.0 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/infinite_knight_player.tres b/scenes/quests/story_quests/infinite_knight/player_components/infinite_knight_player.tres new file mode 100644 index 0000000000..7c0490563e --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/infinite_knight_player.tres @@ -0,0 +1,196 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://7q17ox014opg"] + +[ext_resource type="Texture2D" uid="uid://b8ihu5j3masde" path="res://scenes/quests/story_quests/infinite_knight/player_components/player_attack_01.png" id="1_23aps"] +[ext_resource type="Texture2D" uid="uid://ckyedaocrwdk4" path="res://scenes/quests/story_quests/infinite_knight/player_components/player_attack_02.png" id="2_jwqsu"] +[ext_resource type="Texture2D" uid="uid://dihux2h2bme2f" path="res://scenes/quests/story_quests/infinite_knight/player_components/player_defeated.png" id="3_464it"] +[ext_resource type="Texture2D" uid="uid://de4wachfs5aw1" path="res://scenes/quests/story_quests/infinite_knight/player_components/player_idle.png" id="4_agpo1"] +[ext_resource type="Texture2D" uid="uid://ch8um2idbfcu3" path="res://scenes/quests/story_quests/infinite_knight/player_components/player_walk.png" id="5_db8pw"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_8tjaw"] +atlas = ExtResource("1_23aps") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4gm8g"] +atlas = ExtResource("1_23aps") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4wvhj"] +atlas = ExtResource("1_23aps") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1gv65"] +atlas = ExtResource("1_23aps") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_i8v1h"] +atlas = ExtResource("2_jwqsu") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kehba"] +atlas = ExtResource("2_jwqsu") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0hae8"] +atlas = ExtResource("2_jwqsu") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ne23a"] +atlas = ExtResource("2_jwqsu") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_23aps"] +atlas = ExtResource("3_464it") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jwqsu"] +atlas = ExtResource("3_464it") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wawmj"] +atlas = ExtResource("4_agpo1") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cljxu"] +atlas = ExtResource("5_db8pw") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_d52sd"] +atlas = ExtResource("5_db8pw") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_24dea"] +atlas = ExtResource("5_db8pw") +region = Rect2(256, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_8tjaw") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4gm8g") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4wvhj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1gv65") +}], +"loop": true, +"name": &"attack_01", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_i8v1h") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_kehba") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_0hae8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ne23a") +}], +"loop": true, +"name": &"attack_02", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_23aps") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jwqsu") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_23aps") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jwqsu") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_23aps") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jwqsu") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_23aps") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jwqsu") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_23aps") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jwqsu") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_23aps") +}], +"loop": true, +"name": &"defeated", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_wawmj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wawmj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wawmj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wawmj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wawmj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wawmj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wawmj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wawmj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wawmj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wawmj") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_cljxu") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_d52sd") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_24dea") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_cljxu") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_d52sd") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_24dea") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] diff --git a/scenes/quests/story_quests/infinite_knight/player_components/intro.mp3 b/scenes/quests/story_quests/infinite_knight/player_components/intro.mp3 new file mode 100644 index 0000000000..af9e87fcd5 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9eb0f2d993b3b1ae86aa707feb20699aa44fd94693be756d04e6e0151ee4cfbb +size 2804046 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/intro.mp3.import b/scenes/quests/story_quests/infinite_knight/player_components/intro.mp3.import new file mode 100644 index 0000000000..b2f85e9c91 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/intro.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://df38ngkb6wv5q" +path="res://.godot/imported/intro.mp3-40ca4e1f1ef61333d387dc51e2f911ee.mp3str" + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/player_components/intro.mp3" +dest_files=["res://.godot/imported/intro.mp3-40ca4e1f1ef61333d387dc51e2f911ee.mp3str"] + +[params] + +loop=true +loop_offset=0.0 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/player_attack_01.png b/scenes/quests/story_quests/infinite_knight/player_components/player_attack_01.png new file mode 100644 index 0000000000..86df141e37 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/player_attack_01.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f9bf8250b2a9929206c4cf9dd75cc48f6157a498625dea5705fae445e092338 +size 8085 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/player_attack_01.png.import b/scenes/quests/story_quests/infinite_knight/player_components/player_attack_01.png.import new file mode 100644 index 0000000000..78c2497ef8 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/player_attack_01.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8ihu5j3masde" +path="res://.godot/imported/player_attack_01.png-15735811fd7fdaf26ff47ed28485fb5a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/player_components/player_attack_01.png" +dest_files=["res://.godot/imported/player_attack_01.png-15735811fd7fdaf26ff47ed28485fb5a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/player_attack_02.png b/scenes/quests/story_quests/infinite_knight/player_components/player_attack_02.png new file mode 100644 index 0000000000..86df141e37 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/player_attack_02.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f9bf8250b2a9929206c4cf9dd75cc48f6157a498625dea5705fae445e092338 +size 8085 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/player_attack_02.png.import b/scenes/quests/story_quests/infinite_knight/player_components/player_attack_02.png.import new file mode 100644 index 0000000000..9ab1a74403 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/player_attack_02.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckyedaocrwdk4" +path="res://.godot/imported/player_attack_02.png-58d041f0fa6ae27b588060a008126f54.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/player_components/player_attack_02.png" +dest_files=["res://.godot/imported/player_attack_02.png-58d041f0fa6ae27b588060a008126f54.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/player_defeated.png b/scenes/quests/story_quests/infinite_knight/player_components/player_defeated.png new file mode 100644 index 0000000000..7645ac0d9f --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/player_defeated.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ca1e284394c10932b8c2bd8503ad63483b3d4a88b576e59bfba4c7df58ac5f1 +size 2958 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/player_defeated.png.import b/scenes/quests/story_quests/infinite_knight/player_components/player_defeated.png.import new file mode 100644 index 0000000000..1eb5d08e1e --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/player_defeated.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dihux2h2bme2f" +path="res://.godot/imported/player_defeated.png-8d1f4697a39fdcbbb049c0d7690d93fc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/player_components/player_defeated.png" +dest_files=["res://.godot/imported/player_defeated.png-8d1f4697a39fdcbbb049c0d7690d93fc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/player_idle.png b/scenes/quests/story_quests/infinite_knight/player_components/player_idle.png new file mode 100644 index 0000000000..cd5dbe8819 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/player_idle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e123c83d90d8ba7712b5dbd8da541675b15e1d3ab04e7bbe70cac33f89d7f3a8 +size 1731 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/player_idle.png.import b/scenes/quests/story_quests/infinite_knight/player_components/player_idle.png.import new file mode 100644 index 0000000000..048ca0a8d8 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/player_idle.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://de4wachfs5aw1" +path="res://.godot/imported/player_idle.png-434b9a4ad9b29d5f1bde8a2b29d4935c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/player_components/player_idle.png" +dest_files=["res://.godot/imported/player_idle.png-434b9a4ad9b29d5f1bde8a2b29d4935c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/player_walk.png b/scenes/quests/story_quests/infinite_knight/player_components/player_walk.png new file mode 100644 index 0000000000..87e180124e --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/player_walk.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ddcb023f7ac67ca4667fe7c30796825b900261168c688b7b6a7db5648bd5ec0 +size 3534 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/player_walk.png.import b/scenes/quests/story_quests/infinite_knight/player_components/player_walk.png.import new file mode 100644 index 0000000000..6c518f097d --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/player_walk.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ch8um2idbfcu3" +path="res://.godot/imported/player_walk.png-41103bd3be53d6b55c40db514524fbde.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/player_components/player_walk.png" +dest_files=["res://.godot/imported/player_walk.png-41103bd3be53d6b55c40db514524fbde.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/stealth.mp3 b/scenes/quests/story_quests/infinite_knight/player_components/stealth.mp3 new file mode 100644 index 0000000000..97361c2d8b --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/stealth.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c874c6629bc800915e2ba88a7dac78e3443bc680d78ae1eded42e108a268509 +size 3589229 diff --git a/scenes/quests/story_quests/infinite_knight/player_components/stealth.mp3.import b/scenes/quests/story_quests/infinite_knight/player_components/stealth.mp3.import new file mode 100644 index 0000000000..ea285c9dd8 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/player_components/stealth.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://bc5asjem8tako" +path="res://.godot/imported/stealth.mp3-fe07b58de8a71fd4bb024998a940bffe.mp3str" + +[deps] + +source_file="res://scenes/quests/story_quests/infinite_knight/player_components/stealth.mp3" +dest_files=["res://.godot/imported/stealth.mp3-fe07b58de8a71fd4bb024998a940bffe.mp3str"] + +[params] + +loop=true +loop_offset=0.0 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/scenes/quests/story_quests/infinite_knight/quest.tres b/scenes/quests/story_quests/infinite_knight/quest.tres new file mode 100644 index 0000000000..e9eb014450 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/quest.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="Quest" format=3 uid="uid://bqout7htsxnkg"] + +[ext_resource type="Script" uid="uid://dts1hwdy3phin" path="res://scenes/menus/storybook/components/quest.gd" id="1_glrx3"] + +[resource] +script = ExtResource("1_glrx3") +title = "Infinite knight" +first_scene = "uid://cwvgojq5k7eta" +metadata/_custom_type_script = "uid://dts1hwdy3phin" diff --git a/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_bridges.tres b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_bridges.tres new file mode 100644 index 0000000000..2bf3845e29 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_bridges.tres @@ -0,0 +1,56 @@ +[gd_resource type="TileSet" format=3 uid="uid://7rvlhwjsd0k5"] + +[ext_resource type="Texture2D" uid="uid://cnosj6ds4wtm4" path="res://assets/first_party/tiles/Bridge_All.png" id="1_04xcp"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_tx4m4"] +texture = ExtResource("1_04xcp") +texture_region_size = Vector2i(64, 64) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 0 +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/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/terrains_peering_bit/left_side = 0 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 0 +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/terrains_peering_bit/bottom_side = 0 +0:2/0/terrains_peering_bit/top_side = 0 +1:2/0 = 0 +0:3/0 = 0 +0:3/0/terrain_set = 0 +0:3/0/terrain = 0 +0:3/0/terrains_peering_bit/top_side = 0 +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) +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) + +[resource] +tile_size = Vector2i(64, 64) +occlusion_layer_0/light_mask = 1 +physics_layer_0/collision_layer = 16 +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_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) +sources/3 = SubResource("TileSetAtlasSource_tx4m4") diff --git a/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_decoration.tres b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_decoration.tres new file mode 100644 index 0000000000..21748a5ec6 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_decoration.tres @@ -0,0 +1,35 @@ +[gd_resource type="TileSet" format=3 uid="uid://dsmult7e8is28"] + +[ext_resource type="Texture2D" uid="uid://cpbxvn36hf543" path="res://assets/first_party/tiles/Cliff_Mines_Decoration_Tiles.png" id="1_2hm3l"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_w46sk"] +texture = ExtResource("1_2hm3l") +texture_region_size = Vector2i(64, 64) +0:0/0 = 0 +1:0/0 = 0 +2:0/0 = 0 +3:0/0 = 0 +0:1/0 = 0 +1:1/0 = 0 +2:1/0 = 0 +3:1/0 = 0 +0:2/0 = 0 +1:2/0 = 0 +2:2/0 = 0 +3:2/0 = 0 +0:3/0 = 0 +1:3/0 = 0 +2:3/0 = 0 +3:3/0 = 0 +0:4/0 = 0 +1:4/0 = 0 +2:4/0 = 0 +3:4/0 = 0 +0:5/0 = 0 +1:5/0 = 0 +2:5/0 = 0 +3:5/0 = 0 + +[resource] +tile_size = Vector2i(64, 64) +sources/0 = SubResource("TileSetAtlasSource_w46sk") diff --git a/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_elevation.tres b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_elevation.tres new file mode 100644 index 0000000000..caada30f2c --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_elevation.tres @@ -0,0 +1,322 @@ +[gd_resource type="TileSet" format=3 uid="uid://cakgt482thfse"] + +[ext_resource type="Texture2D" uid="uid://c7oht7wudd8wa" path="res://assets/first_party/tiles/Cliff_Tiles.png" id="1_ykodk"] +[ext_resource type="Texture2D" uid="uid://cledckq31klvq" path="res://assets/first_party/tiles/Cliff_Mines_Tiles.png" id="2_gaen1"] + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_yc5yt"] +polygon = PackedVector2Array(-32, -5.08027, -23.7079, -22.0145, -6.77369, -27.0947, 32, -27.0947, 32, 32, -32, 32) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_jmclm"] +polygon = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_1srhd"] +polygon = PackedVector2Array(-32, -32, 32, -32, 32, 11.2895, -32, 10.725) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_kbenk"] +polygon = PackedVector2Array(-32, -5.08027, -23.7079, -22.0145, -6.77369, -27.0947, 32, -27.0947, 32, 19.6627, -32, 20.4338) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_l50s2"] +polygon = PackedVector2Array(-32, -32, -21.5904, -27.3736, 0.385544, -28.1447, 32, -27.7591, 32, 32, -32, 32) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_6jiih"] +polygon = PackedVector2Array(-32, -32, 32, -32, 32, 11.2895, -32, 10.725) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_y1c8q"] +polygon = PackedVector2Array(-32, -32, -21.2049, -28.1447, 2.6988, -28.1447, 32, -27.0947, 32, 19.6627, -32, 20.4338) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_hqjx3"] +polygon = PackedVector2Array(-32, -32, -21.5904, -27.3736, 0.385544, -28.1447, 19.2772, -23.5181, 25.4459, -17.735, 28.5302, -0.771088, 32, 32, -32, 32) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_qpeek"] +polygon = PackedVector2Array(-32, -32, 32, -32, 32, 11.2895, -32, 10.725) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_em2qm"] +polygon = PackedVector2Array(32, -5.08027, 23.7079, -22.0145, 6.77369, -27.0947, -32, -27.0947, -32, 19.6627, 32, 20.4338) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_rtvgy"] +polygon = PackedVector2Array(-32, -0.385544, -26.6025, -16.9639, -19.1244, -25.2715, 0.385544, -28.1447, 19.2772, -23.5181, 25.4459, -17.735, 28.5302, -0.771088, 32, 32, -32, 32) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_qhdiu"] +polygon = PackedVector2Array(-32, -32, 32, -32, 32, 11.2895, -32, 10.725) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_nwor3"] +polygon = PackedVector2Array(-32, -0.385544, -26.6025, -16.9639, -19.1244, -25.2715, 0.385544, -28.1447, 19.2772, -23.5181, 25.4459, -17.735, 28.5302, -0.771088, 32, 17.3494, -32, 17.735) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_7b4ld"] +texture = ExtResource("1_ykodk") +texture_region_size = Vector2i(64, 64) +0:0/0 = 0 +0:0/0/y_sort_origin = 10 +0:0/0/terrain_set = 0 +0:0/0/terrain = 0 +0:0/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_yc5yt") +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-24, -24, 32, -32, 32, -24, -16, -16, -24, 32, -32, 32) +0:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +0:0/0/terrains_peering_bit/right_side = 0 +0:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0 = 0 +1:0/0/y_sort_origin = 10 +1:0/0/terrain_set = 0 +1:0/0/terrain = 0 +1:0/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_l50s2") +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, -24, -32, -24) +1:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +1:0/0/terrains_peering_bit/right_side = 0 +1:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0/terrains_peering_bit/left_side = 0 +2:0/0 = 0 +2:0/0/y_sort_origin = 10 +2:0/0/terrain_set = 0 +2:0/0/terrain = 0 +2:0/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_hqjx3") +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 24, -24, 32, 32, 24, 32, 16, -16, -32, -24) +2:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +2:0/0/terrains_peering_bit/bottom_side = 0 +2:0/0/terrains_peering_bit/left_side = 0 +3:0/0 = 0 +3:0/0/y_sort_origin = 10 +3:0/0/terrain_set = 0 +3:0/0/terrain = 0 +3:0/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_rtvgy") +3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, 0, -32, 32, -16, 32, 32, 24, 32, 24, -8, 0, -24, -24, -8, -24, 32, -32, 32) +3:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +3:0/0/terrains_peering_bit/bottom_side = 0 +0:1/0 = 0 +0:1/0/y_sort_origin = 26 +0:1/0/terrain_set = 0 +0:1/0/terrain = 0 +0:1/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_jmclm") +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, -24, -32, -24, 32, -32, 32) +0:1/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:1/0/terrains_peering_bit/right_side = 0 +0:1/0/terrains_peering_bit/bottom_side = 0 +0:1/0/terrains_peering_bit/top_side = 0 +1:1/0 = 0 +1:1/0/y_sort_origin = 26 +1:1/0/terrain_set = 0 +1:1/0/terrain = 0 +1:1/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_jmclm") +1:1/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:1/0/terrains_peering_bit/right_side = 0 +1:1/0/terrains_peering_bit/bottom_side = 0 +1:1/0/terrains_peering_bit/left_side = 0 +1:1/0/terrains_peering_bit/top_side = 0 +2:1/0 = 0 +2:1/0/y_sort_origin = 26 +2:1/0/terrain_set = 0 +2:1/0/terrain = 0 +2:1/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_jmclm") +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(24, -32, 32, -32, 32, 32, 24, 32) +2:1/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:1/0/terrains_peering_bit/bottom_side = 0 +2:1/0/terrains_peering_bit/left_side = 0 +2:1/0/terrains_peering_bit/top_side = 0 +3:1/next_alternative_id = 2 +3:1/0 = 0 +3:1/0/y_sort_origin = 26 +3:1/0/terrain_set = 0 +3:1/0/terrain = 0 +3:1/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_jmclm") +3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, -24, -32, -24, 32, -32, 32) +3:1/0/physics_layer_0/polygon_1/points = PackedVector2Array(24, -32, 24, 32, 32, 32, 32, -32) +3:1/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +3:1/0/terrains_peering_bit/bottom_side = 0 +3:1/0/terrains_peering_bit/top_side = 0 +3:1/1 = 1 +0:2/0 = 0 +0:2/0/terrain_set = 0 +0:2/0/terrain = 0 +0:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_1srhd") +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, -24, -32, -24, 32, -32, 32) +0:2/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:2/0/terrains_peering_bit/right_side = 0 +0:2/0/terrains_peering_bit/top_side = 0 +1:2/0 = 0 +1:2/0/terrain_set = 0 +1:2/0/terrain = 0 +1:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_6jiih") +1:2/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:2/0/terrains_peering_bit/right_side = 0 +1:2/0/terrains_peering_bit/left_side = 0 +1:2/0/terrains_peering_bit/top_side = 0 +2:2/0 = 0 +2:2/0/terrain_set = 0 +2:2/0/terrain = 0 +2:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_qpeek") +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(24, -32, 32, -32, 32, 32, 24, 32) +2:2/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:2/0/terrains_peering_bit/left_side = 0 +2:2/0/terrains_peering_bit/top_side = 0 +3:2/0 = 0 +3:2/0/terrain_set = 0 +3:2/0/terrain = 0 +3:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_qhdiu") +3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, -24, -32, -24, 32, -32, 32) +3:2/0/physics_layer_0/polygon_1/points = PackedVector2Array(24, -32, 24, 32, 32, 32, 32, -32) +3:2/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +3:2/0/terrains_peering_bit/top_side = 0 +0:3/0 = 0 +0:3/0/y_sort_origin = -30 +0:3/0/terrain_set = 0 +0:3/0/terrain = 1 +0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:3/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:3/0/terrains_peering_bit/right_side = 1 +1:3/next_alternative_id = 2 +1:3/0 = 0 +1:3/0/y_sort_origin = -30 +1:3/0/terrain_set = 0 +1:3/0/terrain = 1 +1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:3/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:3/0/terrains_peering_bit/right_side = 1 +1:3/0/terrains_peering_bit/left_side = 1 +1:3/1 = 1 +2:3/0 = 0 +2:3/0/y_sort_origin = -30 +2:3/0/terrain_set = 0 +2:3/0/terrain = 1 +2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:3/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:3/0/terrains_peering_bit/left_side = 1 +3:3/0 = 0 +3:3/0/y_sort_origin = -30 +3:3/0/terrain_set = 0 +3:3/0/terrain = 1 +3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +3:3/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:4/0 = 0 +0:4/0/y_sort_origin = 10 +0:4/0/terrain_set = 0 +0:4/0/terrain = 0 +0:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_kbenk") +0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-24, -24, 32, -32, 32, -24, -16, -16, -24, 32, -32, 32) +0:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +0:4/0/terrains_peering_bit/right_side = 0 +1:4/0 = 0 +1:4/0/y_sort_origin = 10 +1:4/0/terrain_set = 0 +1:4/0/terrain = 0 +1:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_y1c8q") +1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, -24, -32, -24) +1:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +1:4/0/terrains_peering_bit/right_side = 0 +1:4/0/terrains_peering_bit/left_side = 0 +2:4/0 = 0 +2:4/0/y_sort_origin = 10 +2:4/0/terrain_set = 0 +2:4/0/terrain = 0 +2:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_em2qm") +2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 24, -24, 32, 32, 24, 32, 16, -16, -32, -24) +2:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +2:4/0/terrains_peering_bit/left_side = 0 +3:4/0 = 0 +3:4/0/y_sort_origin = 10 +3:4/0/terrain_set = 0 +3:4/0/terrain = 0 +3:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_nwor3") +3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, 0, -32, 32, -16, 32, 32, 24, 32, 24, -8, 0, -24, -24, -8, -24, 32, -32, 32) +3:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +0:5/0 = 0 +0:5/0/y_sort_origin = -30 +0:5/0/terrain_set = 0 +0:5/0/terrain = 1 +0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:5/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:5/0/terrains_peering_bit/right_side = 1 +1:5/0 = 0 +1:5/0/y_sort_origin = -30 +1:5/0/terrain_set = 0 +1:5/0/terrain = 1 +1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:5/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:5/0/terrains_peering_bit/right_side = 1 +1:5/0/terrains_peering_bit/left_side = 1 +2:5/0 = 0 +2:5/0/y_sort_origin = -30 +2:5/0/terrain_set = 0 +2:5/0/terrain = 1 +2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:5/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:5/0/terrains_peering_bit/left_side = 1 +3:5/0 = 0 +3:5/0/y_sort_origin = -30 +3:5/0/terrain_set = 0 +3:5/0/terrain = 1 +3:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +3:5/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:7/0 = 0 +1:7/0 = 0 +2:7/0 = 0 +3:7/0 = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_dgoga"] +texture = ExtResource("2_gaen1") +texture_region_size = Vector2i(64, 64) +0:0/0 = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, -27.5482, -27.5482, -26.9972, -27.5482, 32, -32, 32) +1:0/0 = 0 +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, -25.3443, -32, -26.4463) +2:0/0 = 0 +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, 25.8953, 32, 26.9972, -26.4463, -32, -25.3443) +3:0/0 = 0 +3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, 27.5482, 32, 27.5482, -27.5482, -27.5482, -26.9972, -26.4463, 32, -32, 32) +0:1/0 = 0 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, -26.4463, -32, -26.4463, 32, -32, 32) +1:1/0 = 0 +2:1/0 = 0 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(25.8953, -32, 32, -32, 32, 32, 27.5482, 32) +3:1/0 = 0 +3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, -26.9972, -32, -26.9972, 32, -32, 32) +3:1/0/physics_layer_0/polygon_1/points = PackedVector2Array(32, -32, 25.8953, -32, 26.9972, 32, 32, 32) +0:2/0 = 0 +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, -26.4463, -32, -26.4463, 26.9972, 32, 26.4463, 32, 32, -32, 32) +1:2/0 = 0 +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 25.8953, 32, 25.8953, 32, 32, -32, 32) +2:2/0 = 0 +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(26.4463, -32, 32, -32, 32, 32, -32, 32, -32, 26.9972, 26.9972, 26.9972) +3:2/0 = 0 +3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, -26.9972, -32, -26.4463, 26.4463, 26.9972, 26.4463, 25.8953, -32, 32, -32, 32, 32, -32, 32) +0:3/0 = 0 +0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:3/0 = 0 +1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:3/0 = 0 +2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +3:3/0 = 0 +3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:4/0 = 0 +0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, -27.5482, -27.5482, -26.9972, -26.4463, 32, -32, 32) +1:4/0 = 0 +1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, -26.9972, -32, -26.4463) +1:4/0/physics_layer_0/polygon_1/points = PackedVector2Array(32, 27.5482, 32, 32, -32, 32, -32, 27.5482) +2:4/0 = 0 +2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, 26.9972, 32, 25.8953, -26.9972, -32, -26.9972) +3:4/0 = 0 +3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, -27.5482, 32, 32, 27.5482, 32, 27.5482, -27.5482, -27.5482, -26.9972, -27.5482, 32, -32, 32, -32, -27.5482) +0:5/0 = 0 +0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:5/0 = 0 +1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:5/0 = 0 +2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +3:5/0 = 0 +3:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 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_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_mask = 0 +terrain_set_0/mode = 2 +terrain_set_0/terrain_0/name = "Stone" +terrain_set_0/terrain_0/color = Color(0.38, 0.3648, 0.3496, 1) +terrain_set_0/terrain_1/name = "StoneWall" +terrain_set_0/terrain_1/color = Color(0.413906, 0.615933, 1, 1) +sources/7 = SubResource("TileSetAtlasSource_dgoga") +sources/4 = SubResource("TileSetAtlasSource_7b4ld") diff --git a/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_elevation_2.tres b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_elevation_2.tres new file mode 100644 index 0000000000..6f805f59da --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_elevation_2.tres @@ -0,0 +1,225 @@ +[gd_resource type="TileSet" format=3 uid="uid://haxvbtijkihu"] + +[ext_resource type="Texture2D" uid="uid://ctm8vytfv82cn" path="res://scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Cliff_Tiles.png" id="1_s31ay"] + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_yc5yt"] +polygon = PackedVector2Array(-32, -5.08027, -23.7079, -22.0145, -6.77369, -27.0947, 32, -27.0947, 32, 32, -32, 32) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_jmclm"] +polygon = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_1srhd"] +polygon = PackedVector2Array(-32, -32, 32, -32, 32, 11.2895, -32, 10.725) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_kbenk"] +polygon = PackedVector2Array(-32, -5.08027, -23.7079, -22.0145, -6.77369, -27.0947, 32, -27.0947, 32, 19.6627, -32, 20.4338) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_l50s2"] +polygon = PackedVector2Array(-32, -32, -21.5904, -27.3736, 0.385544, -28.1447, 32, -27.7591, 32, 32, -32, 32) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_6jiih"] +polygon = PackedVector2Array(-32, -32, 32, -32, 32, 11.2895, -32, 10.725) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_y1c8q"] +polygon = PackedVector2Array(-32, -32, -21.2049, -28.1447, 2.6988, -28.1447, 32, -27.0947, 32, 19.6627, -32, 20.4338) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_hqjx3"] +polygon = PackedVector2Array(-32, -32, -21.5904, -27.3736, 0.385544, -28.1447, 19.2772, -23.5181, 25.4459, -17.735, 28.5302, -0.771088, 32, 32, -32, 32) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_qpeek"] +polygon = PackedVector2Array(-32, -32, 32, -32, 32, 11.2895, -32, 10.725) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_em2qm"] +polygon = PackedVector2Array(32, -5.08027, 23.7079, -22.0145, 6.77369, -27.0947, -32, -27.0947, -32, 19.6627, 32, 20.4338) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_rtvgy"] +polygon = PackedVector2Array(-32, -0.385544, -26.6025, -16.9639, -19.1244, -25.2715, 0.385544, -28.1447, 19.2772, -23.5181, 25.4459, -17.735, 28.5302, -0.771088, 32, 32, -32, 32) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_qhdiu"] +polygon = PackedVector2Array(-32, -32, 32, -32, 32, 11.2895, -32, 10.725) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_nwor3"] +polygon = PackedVector2Array(-32, -0.385544, -26.6025, -16.9639, -19.1244, -25.2715, 0.385544, -28.1447, 19.2772, -23.5181, 25.4459, -17.735, 28.5302, -0.771088, 32, 17.3494, -32, 17.735) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_38k5n"] +texture = ExtResource("1_s31ay") +texture_region_size = Vector2i(64, 64) +0:0/0 = 0 +0:0/0/y_sort_origin = 10 +0:0/0/terrain_set = 0 +0:0/0/terrain = 0 +0:0/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_yc5yt") +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-24, -24, 32, -32, 32, -24, -16, -16, -24, 32, -32, 32) +0:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +0:0/0/terrains_peering_bit/right_side = 0 +0:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0 = 0 +1:0/0/y_sort_origin = 10 +1:0/0/terrain_set = 0 +1:0/0/terrain = 0 +1:0/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_l50s2") +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, -24, -32, -24) +1:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +1:0/0/terrains_peering_bit/right_side = 0 +1:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0/terrains_peering_bit/left_side = 0 +2:0/0 = 0 +2:0/0/y_sort_origin = 10 +2:0/0/terrain_set = 0 +2:0/0/terrain = 0 +2:0/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_hqjx3") +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 24, -24, 32, 32, 24, 32, 16, -16, -32, -24) +2:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +2:0/0/terrains_peering_bit/bottom_side = 0 +2:0/0/terrains_peering_bit/left_side = 0 +3:0/0 = 0 +3:0/0/y_sort_origin = 10 +3:0/0/terrain_set = 0 +3:0/0/terrain = 0 +3:0/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_rtvgy") +3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, 0, -32, 32, -16, 32, 32, 24, 32, 24, -8, 0, -24, -24, -8, -24, 32, -32, 32) +3:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 32, -32, 32) +3:0/0/terrains_peering_bit/bottom_side = 0 +0:1/0 = 0 +0:1/0/y_sort_origin = 26 +0:1/0/terrain_set = 0 +0:1/0/terrain = 0 +0:1/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_jmclm") +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, -24, -32, -24, 32, -32, 32) +0:1/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:1/0/terrains_peering_bit/right_side = 0 +0:1/0/terrains_peering_bit/bottom_side = 0 +0:1/0/terrains_peering_bit/top_side = 0 +1:1/0 = 0 +1:1/0/y_sort_origin = 26 +1:1/0/terrain_set = 0 +1:1/0/terrain = 0 +1:1/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_jmclm") +1:1/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:1/0/terrains_peering_bit/right_side = 0 +1:1/0/terrains_peering_bit/bottom_side = 0 +1:1/0/terrains_peering_bit/left_side = 0 +1:1/0/terrains_peering_bit/top_side = 0 +2:1/0 = 0 +2:1/0/y_sort_origin = 26 +2:1/0/terrain_set = 0 +2:1/0/terrain = 0 +2:1/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_jmclm") +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(24, -32, 32, -32, 32, 32, 24, 32) +2:1/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:1/0/terrains_peering_bit/bottom_side = 0 +2:1/0/terrains_peering_bit/left_side = 0 +2:1/0/terrains_peering_bit/top_side = 0 +3:1/next_alternative_id = 4 +3:1/0 = 0 +3:1/0/y_sort_origin = 26 +3:1/0/terrain_set = 0 +3:1/0/terrain = 0 +3:1/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_jmclm") +3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, -24, -32, -24, 32, -32, 32) +3:1/0/physics_layer_0/polygon_1/points = PackedVector2Array(24, -32, 24, 32, 32, 32, 32, -32) +3:1/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +3:1/0/terrains_peering_bit/bottom_side = 0 +3:1/0/terrains_peering_bit/top_side = 0 +3:1/1 = 1 +2:2/size_in_atlas = Vector2i(1, 2) +2:2/0 = 0 +2:2/0/texture_origin = Vector2i(0, -32) +2:2/0/terrain_set = 0 +2:2/0/terrain = 0 +2:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_qpeek") +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(24, -32, 32, -32, 32, 96, -32, 96, -32, 32, 24, 32) +2:2/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 96, -32, 96) +2:2/0/terrains_peering_bit/left_side = 0 +2:2/0/terrains_peering_bit/top_side = 0 +3:2/size_in_atlas = Vector2i(1, 2) +3:2/0 = 0 +3:2/0/texture_origin = Vector2i(0, -32) +3:2/0/terrain_set = 0 +3:2/0/terrain = 0 +3:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_qhdiu") +3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, -24, -32, -24, 32, 24, 32, 24, -32, 32, -32, 32, 96, -32, 96) +3:2/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 96, -32, 96) +3:2/0/terrains_peering_bit/top_side = 0 +0:4/size_in_atlas = Vector2i(1, 2) +0:4/0 = 0 +0:4/0/texture_origin = Vector2i(0, -32) +0:4/0/y_sort_origin = 10 +0:4/0/terrain_set = 0 +0:4/0/terrain = 0 +0:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_kbenk") +0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-24, -24, 32, -32, 32, -24, -16, -16, -24, 32, 32, 32, 32, 96, -32, 96, -32, 32) +0:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 96, -32, 96) +0:4/0/terrains_peering_bit/right_side = 0 +1:4/size_in_atlas = Vector2i(1, 2) +1:4/0 = 0 +1:4/0/texture_origin = Vector2i(0, -32) +1:4/0/y_sort_origin = 10 +1:4/0/terrain_set = 0 +1:4/0/terrain = 0 +1:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_y1c8q") +1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, -24, -32, -24) +1:4/0/physics_layer_0/polygon_1/points = PackedVector2Array(-32, 32, 32, 32, 32, 96, -32, 96) +1:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 96, -32, 96) +1:4/0/terrains_peering_bit/right_side = 0 +1:4/0/terrains_peering_bit/left_side = 0 +2:4/size_in_atlas = Vector2i(1, 2) +2:4/0 = 0 +2:4/0/texture_origin = Vector2i(0, -32) +2:4/0/y_sort_origin = 10 +2:4/0/terrain_set = 0 +2:4/0/terrain = 0 +2:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_em2qm") +2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 24, -24, 32, 32, 32, 96, -32, 96, -32, 32, 24, 32, 16, -16, -32, -24) +2:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 96, -32, 96) +2:4/0/terrains_peering_bit/left_side = 0 +3:4/size_in_atlas = Vector2i(1, 2) +3:4/0 = 0 +3:4/0/texture_origin = Vector2i(0, -32) +3:4/0/y_sort_origin = 10 +3:4/0/terrain_set = 0 +3:4/0/terrain = 0 +3:4/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_nwor3") +3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, 0, -32, 32, -16, 32, 96, -24, 32, 24, 32, 24, -8, 0, -24, -24, -8, -24, 32, 32, 96, -32, 96) +3:4/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, 10.1605, 32, 10.725, 32, 96, -32, 96) +0:7/0 = 0 +1:7/0 = 0 +2:7/0 = 0 +3:7/0 = 0 +1:2/size_in_atlas = Vector2i(1, 2) +1:2/next_alternative_id = 2 +1:2/0 = 0 +1:2/0/texture_origin = Vector2i(0, -32) +1:2/0/terrain_set = 0 +1:2/0/terrain = 0 +1:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_6jiih") +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, 32, 32, 32, 32, 96, -32, 96) +1:2/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 96, -32, 96) +1:2/0/terrains_peering_bit/right_side = 0 +1:2/0/terrains_peering_bit/left_side = 0 +1:2/0/terrains_peering_bit/top_side = 0 +1:2/1 = 1 +1:2/1/texture_origin = Vector2i(0, -32) +0:2/size_in_atlas = Vector2i(1, 2) +0:2/0 = 0 +0:2/0/texture_origin = Vector2i(0, -32) +0:2/0/terrain_set = 0 +0:2/0/terrain = 0 +0:2/0/occlusion_layer_0/polygon_0/polygon = SubResource("OccluderPolygon2D_1srhd") +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, -24, -32, -24, 32, 32, 32, 32, 96, -32, 96) +0:2/0/physics_layer_1/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 96, -32, 96) +0:2/0/terrains_peering_bit/right_side = 0 +0:2/0/terrains_peering_bit/top_side = 0 + +[resource] +tile_size = Vector2i(64, 64) +occlusion_layer_0/light_mask = 1 +physics_layer_0/collision_layer = 16 +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 +terrain_set_0/mode = 2 +terrain_set_0/terrain_0/name = "Stone" +terrain_set_0/terrain_0/color = Color(0.38, 0.3648, 0.3496, 1) +sources/4 = SubResource("TileSetAtlasSource_38k5n") diff --git a/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_exterior_floors.tres b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_exterior_floors.tres new file mode 100644 index 0000000000..4f0123402a --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_exterior_floors.tres @@ -0,0 +1,319 @@ +[gd_resource type="TileSet" format=3 uid="uid://byr2ytqav02w5"] + +[ext_resource type="Texture2D" uid="uid://ctm8vytfv82cn" path="res://scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Cliff_Tiles.png" id="1_qelrx"] +[ext_resource type="Texture2D" uid="uid://d4ixm142nilgq" path="res://scenes/quests/story_quests/infinite_knight/0_intro/intro_components/Grass_Tiles_Light.png" id="2_qelrx"] +[ext_resource type="Texture2D" uid="uid://dcq6v7mx3h1fl" path="res://assets/first_party/tiles/Dirt_Tiles.png" id="3_dkyo8"] + +[sub_resource type="TileMapPattern" id="TileMapPattern_0wfyh"] +tile_data = PackedInt32Array(0, 1, 0, 65536, 1, 1, 131072, 1, 2, 1, 65537, 0, 65537, 65537, 1, 131073, 65537, 2, 2, 131073, 0, 65538, 131073, 1, 131074, 131073, 2) + +[sub_resource type="TileMapPattern" id="TileMapPattern_sugp2"] +tile_data = PackedInt32Array(0, 196609, 0, 65536, 196609, 1, 131072, 196609, 2) + +[sub_resource type="TileMapPattern" id="TileMapPattern_jyhfs"] +tile_data = PackedInt32Array(0, 1, 3, 1, 65537, 3, 2, 131073, 3) + +[sub_resource type="TileMapPattern" id="TileMapPattern_tbgi4"] +tile_data = PackedInt32Array(0, 327681, 0, 65536, 327681, 1, 131072, 327681, 2, 1, 393217, 0, 65537, 393217, 1, 131073, 393217, 2, 2, 458753, 0, 65538, 458753, 1, 131074, 458753, 2) + +[sub_resource type="TileMapPattern" id="TileMapPattern_tefeu"] +tile_data = PackedInt32Array(0, 524289, 0, 65536, 524289, 1, 131072, 524289, 2) + +[sub_resource type="TileMapPattern" id="TileMapPattern_o6xl0"] +tile_data = PackedInt32Array(0, 327681, 3, 1, 393217, 3, 2, 458753, 3) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_liwbg"] +texture = ExtResource("1_qelrx") +texture_region_size = Vector2i(64, 64) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 0 +0:0/0/terrains_peering_bit/right_side = 0 +0:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0 = 0 +1:0/0/terrain_set = 0 +1:0/0/terrain = 0 +1:0/0/terrains_peering_bit/right_side = 0 +1:0/0/terrains_peering_bit/bottom_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/terrains_peering_bit/bottom_side = 0 +2:0/0/terrains_peering_bit/left_side = 0 +3:0/0 = 0 +3:0/0/terrain_set = 0 +3:0/0/terrain = 0 +3:0/0/terrains_peering_bit/bottom_side = 0 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 0 +0:1/0/terrains_peering_bit/right_side = 0 +0:1/0/terrains_peering_bit/bottom_side = 0 +0:1/0/terrains_peering_bit/top_side = 0 +1:1/0 = 0 +1:1/0/terrain_set = 0 +1:1/0/terrain = 0 +1:1/0/terrains_peering_bit/right_side = 0 +1:1/0/terrains_peering_bit/bottom_side = 0 +1:1/0/terrains_peering_bit/left_side = 0 +1:1/0/terrains_peering_bit/top_side = 0 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 0 +2:1/0/terrains_peering_bit/bottom_side = 0 +2:1/0/terrains_peering_bit/left_side = 0 +2:1/0/terrains_peering_bit/top_side = 0 +3:1/0 = 0 +3:1/0/terrain_set = 0 +3:1/0/terrain = 0 +3:1/0/terrains_peering_bit/bottom_side = 0 +3:1/0/terrains_peering_bit/top_side = 0 +0:2/0 = 0 +0:2/0/terrain_set = 0 +0:2/0/terrain = 0 +0:2/0/terrains_peering_bit/right_side = 0 +0:2/0/terrains_peering_bit/top_side = 0 +1:2/0 = 0 +1:2/0/terrain_set = 0 +1:2/0/terrain = 0 +1:2/0/terrains_peering_bit/right_side = 0 +1:2/0/terrains_peering_bit/left_side = 0 +1:2/0/terrains_peering_bit/top_side = 0 +2:2/0 = 0 +2:2/0/terrain_set = 0 +2:2/0/terrain = 0 +2:2/0/terrains_peering_bit/left_side = 0 +2:2/0/terrains_peering_bit/top_side = 0 +3:2/0 = 0 +3:2/0/terrain_set = 0 +3:2/0/terrain = 0 +3:2/0/terrains_peering_bit/top_side = 0 +0:3/0 = 0 +0:3/0/terrain_set = 0 +0:3/0/terrain = 0 +0:3/0/terrains_peering_bit/right_side = 0 +1:3/0 = 0 +1:3/0/terrain_set = 0 +1:3/0/terrain = 0 +1:3/0/terrains_peering_bit/right_side = 0 +1:3/0/terrains_peering_bit/left_side = 0 +2:3/0 = 0 +2:3/0/terrain_set = 0 +2:3/0/terrain = 0 +2:3/0/terrains_peering_bit/left_side = 0 +3:3/0 = 0 +3:3/0/terrain_set = 0 +3:3/0/terrain = 0 +0:4/0 = 0 +1:4/0 = 0 +2:4/0 = 0 +3:4/0 = 0 +0:5/0 = 0 +1:5/0 = 0 +2:5/0 = 0 +3:5/0 = 0 +0:7/0 = 0 +1:7/0 = 0 +2:7/0 = 0 +3:7/0 = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_5gi86"] +texture = ExtResource("2_qelrx") +texture_region_size = Vector2i(64, 64) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 2 +0:0/0/terrains_peering_bit/right_side = 2 +0:0/0/terrains_peering_bit/bottom_side = 2 +1:0/0 = 0 +1:0/0/terrain_set = 0 +1:0/0/terrain = 2 +1:0/0/terrains_peering_bit/right_side = 2 +1:0/0/terrains_peering_bit/bottom_side = 2 +1:0/0/terrains_peering_bit/left_side = 2 +2:0/0 = 0 +2:0/0/terrain_set = 0 +2:0/0/terrain = 2 +2:0/0/terrains_peering_bit/bottom_side = 2 +2:0/0/terrains_peering_bit/left_side = 2 +3:0/0 = 0 +3:0/0/terrain_set = 0 +3:0/0/terrain = 2 +3:0/0/terrains_peering_bit/bottom_side = 2 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 2 +0:1/0/terrains_peering_bit/right_side = 2 +0:1/0/terrains_peering_bit/bottom_side = 2 +0:1/0/terrains_peering_bit/top_side = 2 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 2 +2:1/0/terrains_peering_bit/bottom_side = 2 +2:1/0/terrains_peering_bit/left_side = 2 +2:1/0/terrains_peering_bit/top_side = 2 +3:1/0 = 0 +3:1/0/terrain_set = 0 +3:1/0/terrain = 2 +3:1/0/terrains_peering_bit/bottom_side = 2 +3:1/0/terrains_peering_bit/top_side = 2 +0:2/0 = 0 +0:2/0/terrain_set = 0 +0:2/0/terrain = 2 +0:2/0/terrains_peering_bit/right_side = 2 +0:2/0/terrains_peering_bit/top_side = 2 +1:2/0 = 0 +1:2/0/terrain_set = 0 +1:2/0/terrain = 2 +1:2/0/terrains_peering_bit/right_side = 2 +1:2/0/terrains_peering_bit/left_side = 2 +1:2/0/terrains_peering_bit/top_side = 2 +2:2/0 = 0 +2:2/0/terrain_set = 0 +2:2/0/terrain = 2 +2:2/0/terrains_peering_bit/left_side = 2 +2:2/0/terrains_peering_bit/top_side = 2 +3:2/0 = 0 +3:2/0/terrain_set = 0 +3:2/0/terrain = 2 +3:2/0/terrains_peering_bit/top_side = 2 +0:3/0 = 0 +0:3/0/terrain_set = 0 +0:3/0/terrain = 2 +0:3/0/terrains_peering_bit/right_side = 2 +1:3/0 = 0 +1:3/0/terrain_set = 0 +1:3/0/terrain = 2 +1:3/0/terrains_peering_bit/right_side = 2 +1:3/0/terrains_peering_bit/left_side = 2 +2:3/0 = 0 +2:3/0/terrain_set = 0 +2:3/0/terrain = 2 +2:3/0/terrains_peering_bit/left_side = 2 +3:3/0 = 0 +3:3/0/terrain_set = 0 +3:3/0/terrain = 2 +1:1/0 = 0 +1:1/0/terrain_set = 0 +1:1/0/terrain = 2 +1:1/0/terrains_peering_bit/right_side = 2 +1:1/0/terrains_peering_bit/bottom_side = 2 +1:1/0/terrains_peering_bit/left_side = 2 +1:1/0/terrains_peering_bit/top_side = 2 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_wfck0"] +texture = ExtResource("3_dkyo8") +texture_region_size = Vector2i(64, 64) +0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 3 +0:0/0/terrains_peering_bit/right_side = 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/terrains_peering_bit/right_side = 3 +1:0/0/terrains_peering_bit/bottom_side = 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/terrains_peering_bit/bottom_side = 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/terrains_peering_bit/bottom_side = 3 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 3 +0:1/0/terrains_peering_bit/right_side = 3 +0:1/0/terrains_peering_bit/bottom_side = 3 +0:1/0/terrains_peering_bit/top_side = 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_side = 3 +1:1/0/terrains_peering_bit/left_side = 3 +1:1/0/terrains_peering_bit/top_side = 3 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 3 +2:1/0/terrains_peering_bit/bottom_side = 3 +2:1/0/terrains_peering_bit/left_side = 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/terrains_peering_bit/bottom_side = 3 +3:1/0/terrains_peering_bit/top_side = 3 +0:2/0 = 0 +0:2/0/terrain_set = 0 +0:2/0/terrain = 3 +0:2/0/terrains_peering_bit/right_side = 3 +0:2/0/terrains_peering_bit/top_side = 3 +1:2/0 = 0 +1:2/0/terrain_set = 0 +1:2/0/terrain = 3 +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_side = 3 +2:2/0 = 0 +2:2/0/terrain_set = 0 +2:2/0/terrain = 3 +2:2/0/terrains_peering_bit/left_side = 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/terrains_peering_bit/top_side = 3 +0:3/0 = 0 +0:3/0/terrain_set = 0 +0:3/0/terrain = 3 +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/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/terrains_peering_bit/left_side = 3 +3:3/0 = 0 +3:3/0/terrain_set = 0 +3:3/0/terrain = 3 +4:0/0 = 0 +5:0/0 = 0 +6:0/0 = 0 + +[resource] +tile_size = Vector2i(64, 64) +occlusion_layer_0/light_mask = 1 +physics_layer_0/collision_layer = 16 +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_mask = 0 +terrain_set_0/mode = 2 +terrain_set_0/terrain_0/name = "Grass" +terrain_set_0/terrain_0/color = Color(0.115781, 0.264059, 0.205218, 1) +terrain_set_0/terrain_1/name = "Sand" +terrain_set_0/terrain_1/color = Color(0.515604, 0.484286, 0.253851, 1) +terrain_set_0/terrain_2/name = "LightGrass" +terrain_set_0/terrain_2/color = Color(0.50077, 0.823591, 0.69626, 1) +terrain_set_0/terrain_3/name = "Dirt" +terrain_set_0/terrain_3/color = Color(0.435821, 0.294287, 0.167531, 1) +sources/1 = SubResource("TileSetAtlasSource_liwbg") +sources/5 = SubResource("TileSetAtlasSource_5gi86") +sources/6 = SubResource("TileSetAtlasSource_wfck0") +pattern_0 = SubResource("TileMapPattern_0wfyh") +pattern_1 = SubResource("TileMapPattern_sugp2") +pattern_2 = SubResource("TileMapPattern_jyhfs") +pattern_3 = SubResource("TileMapPattern_tbgi4") +pattern_4 = SubResource("TileMapPattern_tefeu") +pattern_5 = SubResource("TileMapPattern_o6xl0") diff --git a/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_fence.tres b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_fence.tres new file mode 100644 index 0000000000..129d3941d2 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_fence.tres @@ -0,0 +1,84 @@ +[gd_resource type="TileSet" format=3 uid="uid://dwnw8o0qiinn"] + +[ext_resource type="Texture2D" uid="uid://sjfket0x1tvr" path="res://assets/first_party/tiles/fence.png" id="1_sfrvs"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_0cymc"] +texture = ExtResource("1_sfrvs") +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(32, 16, 8, 16, 8, 32, -8, 32, -8, -16, 32, -16) +0:0/0/terrains_peering_bit/right_side = 0 +0:0/0/terrains_peering_bit/bottom_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, -16, 32, -16, 32, 16, -32, 16) +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, 16, -8, 16, -8, 32, 8, 32, 8, -16, -32, -16) +2:0/0/terrains_peering_bit/bottom_side = 0 +2:0/0/terrains_peering_bit/left_side = 0 +3:0/0 = 0 +3:0/0/terrain_set = 0 +3:0/0/terrain = 0 +3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(32, -16, 8, -16, 8, 16, 32, 16) +3:0/0/terrains_peering_bit/right_side = 0 +4:0/0 = 0 +4:0/0/terrain_set = 0 +4:0/0/terrain = 0 +4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, -8, -16, -8, 16, -32, 16) +4: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(-8, -32, 8, -32, 8, 32, -8, 32) +0:1/0/terrains_peering_bit/bottom_side = 0 +0:1/0/terrains_peering_bit/top_side = 0 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 0 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -32, 8, -32, 8, 32, -8, 32) +2:1/0/terrains_peering_bit/bottom_side = 0 +2:1/0/terrains_peering_bit/top_side = 0 +3:1/0 = 0 +3:1/0/terrain_set = 0 +3:1/0/terrain = 0 +3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 32, -8, 32) +3:1/0/terrains_peering_bit/bottom_side = 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(32, -16, 8, -16, 8, -32, -8, -32, -8, 16, 32, 16) +0:2/0/terrains_peering_bit/right_side = 0 +0:2/0/terrains_peering_bit/top_side = 0 +1:2/0 = 0 +1:2/0/terrain_set = 0 +1:2/0/terrain = 0 +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, 32, -16, 32, 16, -32, 16) +1:2/0/terrains_peering_bit/right_side = 0 +1:2/0/terrains_peering_bit/left_side = 0 +2:2/0 = 0 +2:2/0/terrain_set = 0 +2:2/0/terrain = 0 +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -16, -8, -16, -8, -32, 8, -32, 8, 16, -32, 16) +2:2/0/terrains_peering_bit/left_side = 0 +2:2/0/terrains_peering_bit/top_side = 0 +3:2/0 = 0 +3:2/0/terrain_set = 0 +3:2/0/terrain = 0 +3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -32, 8, -32, 8, 8, -8, 8) +3:2/0/terrains_peering_bit/top_side = 0 + +[resource] +tile_size = Vector2i(64, 64) +physics_layer_0/collision_layer = 16 +physics_layer_0/collision_mask = 0 +terrain_set_0/mode = 2 +terrain_set_0/terrain_0/name = "Fence" +terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1) +sources/0 = SubResource("TileSetAtlasSource_0cymc") diff --git a/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_foam_2.tres b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_foam_2.tres new file mode 100644 index 0000000000..8fe4f52e3e --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_foam_2.tres @@ -0,0 +1,36 @@ +[gd_resource type="TileSet" format=3 uid="uid://dqjpih43tj47q"] + +[ext_resource type="Texture2D" uid="uid://cexg7otw5enpu" path="res://assets/third_party/tiny-swords/Terrain/Water/Foam/Foam.png" id="1_olcxp"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_l4ei7"] +resource_name = "Foam" +texture = ExtResource("1_olcxp") +margins = Vector2i(32, 32) +separation = Vector2i(64, 0) +texture_region_size = Vector2i(128, 128) +0:0/animation_speed = 10.0 +0:0/animation_mode = 1 +0:0/animation_frame_0/duration = 1.0 +0:0/animation_frame_1/duration = 1.0 +0:0/animation_frame_2/duration = 1.0 +0:0/animation_frame_3/duration = 1.0 +0:0/animation_frame_4/duration = 1.0 +0:0/animation_frame_5/duration = 1.0 +0:0/animation_frame_6/duration = 1.0 +0:0/animation_frame_7/duration = 1.0 +0:0/0 = 0 + +[resource] +tile_size = Vector2i(64, 64) +occlusion_layer_0/light_mask = 1 +physics_layer_0/collision_layer = 16 +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_mask = 0 +terrain_set_0/mode = 2 +terrain_set_0/terrain_0/name = "Foam" +terrain_set_0/terrain_0/color = Color(0, 0.366311, 0.601596, 1) +sources/2 = SubResource("TileSetAtlasSource_l4ei7") diff --git a/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_shadows.tres b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_shadows.tres new file mode 100644 index 0000000000..731df642c0 --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_shadows.tres @@ -0,0 +1,14 @@ +[gd_resource type="TileSet" format=3 uid="uid://db7j7n1mbf4iv"] + +[ext_resource type="Texture2D" uid="uid://dslom0xbe1if7" path="res://assets/third_party/tiny-swords/Terrain/Ground/Shadows.png" id="1_31d0j"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_wcx0l"] +resource_name = "Shadows" +texture = ExtResource("1_31d0j") +margins = Vector2i(32, 32) +texture_region_size = Vector2i(128, 128) +0:0/0 = 0 + +[resource] +tile_size = Vector2i(64, 64) +sources/0 = SubResource("TileSetAtlasSource_wcx0l") diff --git a/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_void_chromakey.tres b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_void_chromakey.tres new file mode 100644 index 0000000000..ea65998a7b --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_void_chromakey.tres @@ -0,0 +1,327 @@ +[gd_resource type="TileSet" format=3 uid="uid://ov3qcbmlyplu"] + +[ext_resource type="Texture2D" uid="uid://ri16xp2o40i1" path="res://assets/first_party/tiles/void_affected_tiles_static/void_static.png" id="1_ad8ce"] +[ext_resource type="Texture2D" uid="uid://clafeu2tdfusg" path="res://assets/first_party/tiles/void_affected_tiles_animated/void_animated-bottom-right.png" id="2_uu5xk"] +[ext_resource type="Texture2D" uid="uid://d0156jkhip32" path="res://assets/first_party/tiles/Void_Tiles_Chromakey.png" id="3_ymnoh"] +[ext_resource type="Texture2D" uid="uid://bsmdmkrtuy0c2" path="res://assets/first_party/tiles/void_affected_tiles_animated/void_animated-bottom.png" id="4_es2vc"] +[ext_resource type="Texture2D" uid="uid://c4n3yeib3nbht" path="res://assets/first_party/tiles/void_affected_tiles_animated/void_animated-bottom_left.png" id="5_10thc"] +[ext_resource type="Texture2D" uid="uid://dw5uuxcf1msph" path="res://assets/first_party/tiles/void_affected_tiles_animated/void_animated-left.png" id="6_65fy7"] +[ext_resource type="Texture2D" uid="uid://blyp6pvbm56ih" path="res://assets/first_party/tiles/void_affected_tiles_animated/void_animated-top_left.png" id="7_1sc6h"] +[ext_resource type="Texture2D" uid="uid://bm30aoylbwc0u" path="res://assets/first_party/tiles/void_affected_tiles_animated/void_animated-top.png" id="8_b6gnd"] +[ext_resource type="Texture2D" uid="uid://baqgrnvnk5pbl" path="res://assets/first_party/tiles/void_affected_tiles_animated/void_animated-top_right.png" id="9_365jv"] +[ext_resource type="Texture2D" uid="uid://dcfkh716syqj5" path="res://assets/first_party/tiles/void_affected_tiles_animated/void_animated-right.png" id="10_lju64"] + +[sub_resource type="TileMapPattern" id="TileMapPattern_0cco3"] +tile_data = PackedInt32Array(0, 5, 0, 65536, 4, 0, 131072, 3, 0, 1, 6, 0, 131073, 2, 0, 2, 7, 0, 65538, 8, 0, 131074, 1, 0) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_7qauh"] +texture = ExtResource("1_ad8ce") +texture_region_size = Vector2i(64, 64) +0:0/0 = 0 +0:0/0/physics_layer_2/polygon_0/points = PackedVector2Array(16, -32, -32, -32, -32, 16) +1:0/0 = 0 +2:0/0 = 0 +2:0/0/physics_layer_2/polygon_0/points = PackedVector2Array(32, 16, 32, -32, -16, -32) +0:1/0 = 0 +2:1/0 = 0 +0:2/0 = 0 +0:2/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -16, -32, 32, 16, 32) +1:2/0 = 0 +2:2/0 = 0 +2:2/0/physics_layer_2/polygon_0/points = PackedVector2Array(-16, 32, 32, 32, 32, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_4c85m"] +texture = ExtResource("2_uu5xk") +texture_region_size = Vector2i(64, 64) +0:0/animation_speed = 10.0 +0:0/animation_mode = 1 +0:0/animation_frame_0/duration = 1.0 +0:0/animation_frame_1/duration = 1.0 +0:0/animation_frame_2/duration = 1.0 +0:0/animation_frame_3/duration = 1.0 +0:0/animation_frame_4/duration = 1.0 +0:0/animation_frame_5/duration = 1.0 +0:0/animation_frame_6/duration = 1.0 +0:0/animation_frame_7/duration = 1.0 +0:0/animation_frame_8/duration = 1.0 +0:0/animation_frame_9/duration = 1.0 +0:0/animation_frame_10/duration = 1.0 +0:0/animation_frame_11/duration = 1.0 +0:0/animation_frame_12/duration = 1.0 +0:0/animation_frame_13/duration = 1.0 +0:0/0 = 0 +0:0/0/physics_layer_2/polygon_0/points = PackedVector2Array(-16, 32, 32, 32, 32, -16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_hk86q"] +texture = ExtResource("3_ymnoh") +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_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/0/terrains_peering_bit/right_side = 0 +0:0/0/terrains_peering_bit/bottom_side = 0 +1:0/0 = 0 +1:0/0/terrain_set = 0 +1:0/0/terrain = 0 +1:0/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:0/0/terrains_peering_bit/right_side = 0 +1:0/0/terrains_peering_bit/bottom_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_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:0/0/terrains_peering_bit/bottom_side = 0 +2:0/0/terrains_peering_bit/left_side = 0 +3:0/0 = 0 +3:0/0/terrain_set = 0 +3:0/0/terrain = 0 +3:0/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +3:0/0/terrains_peering_bit/bottom_side = 0 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 0 +0:1/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:1/0/terrains_peering_bit/right_side = 0 +0:1/0/terrains_peering_bit/bottom_side = 0 +0:1/0/terrains_peering_bit/top_side = 0 +1:1/0 = 0 +1:1/0/terrain_set = 0 +1:1/0/terrain = 0 +1:1/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:1/0/terrains_peering_bit/right_side = 0 +1:1/0/terrains_peering_bit/bottom_side = 0 +1:1/0/terrains_peering_bit/left_side = 0 +1:1/0/terrains_peering_bit/top_side = 0 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 0 +2:1/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:1/0/terrains_peering_bit/bottom_side = 0 +2:1/0/terrains_peering_bit/left_side = 0 +2:1/0/terrains_peering_bit/top_side = 0 +3:1/0 = 0 +3:1/0/terrain_set = 0 +3:1/0/terrain = 0 +3:1/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +3:1/0/terrains_peering_bit/bottom_side = 0 +3:1/0/terrains_peering_bit/top_side = 0 +0:2/0 = 0 +0:2/0/terrain_set = 0 +0:2/0/terrain = 0 +0:2/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:2/0/terrains_peering_bit/right_side = 0 +0:2/0/terrains_peering_bit/top_side = 0 +1:2/0 = 0 +1:2/0/terrain_set = 0 +1:2/0/terrain = 0 +1:2/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:2/0/terrains_peering_bit/right_side = 0 +1:2/0/terrains_peering_bit/left_side = 0 +1:2/0/terrains_peering_bit/top_side = 0 +2:2/0 = 0 +2:2/0/terrain_set = 0 +2:2/0/terrain = 0 +2:2/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:2/0/terrains_peering_bit/left_side = 0 +2:2/0/terrains_peering_bit/top_side = 0 +3:2/0 = 0 +3:2/0/terrain_set = 0 +3:2/0/terrain = 0 +3:2/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +3:2/0/terrains_peering_bit/top_side = 0 +0:3/0 = 0 +0:3/0/terrain_set = 0 +0:3/0/terrain = 0 +0:3/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:3/0/terrains_peering_bit/right_side = 0 +1:3/0 = 0 +1:3/0/terrain_set = 0 +1:3/0/terrain = 0 +1:3/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +1:3/0/terrains_peering_bit/right_side = 0 +1:3/0/terrains_peering_bit/left_side = 0 +2:3/0 = 0 +2:3/0/terrain_set = 0 +2:3/0/terrain = 0 +2:3/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +2:3/0/terrains_peering_bit/left_side = 0 +3:3/0 = 0 +3:3/0/terrain_set = 0 +3:3/0/terrain = 0 +3:3/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_kldxy"] +texture = ExtResource("4_es2vc") +texture_region_size = Vector2i(64, 64) +0:0/animation_speed = 10.0 +0:0/animation_mode = 1 +0:0/animation_frame_0/duration = 1.0 +0:0/animation_frame_1/duration = 1.0 +0:0/animation_frame_2/duration = 1.0 +0:0/animation_frame_3/duration = 1.0 +0:0/animation_frame_4/duration = 1.0 +0:0/animation_frame_5/duration = 1.0 +0:0/animation_frame_6/duration = 1.0 +0:0/animation_frame_7/duration = 1.0 +0:0/animation_frame_8/duration = 1.0 +0:0/animation_frame_9/duration = 1.0 +0:0/animation_frame_10/duration = 1.0 +0:0/animation_frame_11/duration = 1.0 +0:0/animation_frame_12/duration = 1.0 +0:0/animation_frame_13/duration = 1.0 +0:0/0 = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_g6p14"] +texture = ExtResource("5_10thc") +texture_region_size = Vector2i(64, 64) +0:0/animation_speed = 10.0 +0:0/animation_mode = 1 +0:0/animation_frame_0/duration = 1.0 +0:0/animation_frame_1/duration = 1.0 +0:0/animation_frame_2/duration = 1.0 +0:0/animation_frame_3/duration = 1.0 +0:0/animation_frame_4/duration = 1.0 +0:0/animation_frame_5/duration = 1.0 +0:0/animation_frame_6/duration = 1.0 +0:0/animation_frame_7/duration = 1.0 +0:0/animation_frame_8/duration = 1.0 +0:0/animation_frame_9/duration = 1.0 +0:0/animation_frame_10/duration = 1.0 +0:0/animation_frame_11/duration = 1.0 +0:0/animation_frame_12/duration = 1.0 +0:0/animation_frame_13/duration = 1.0 +0:0/0 = 0 +0:0/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -16, -32, 32, 16, 32) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_q0t2i"] +texture = ExtResource("6_65fy7") +texture_region_size = Vector2i(64, 64) +0:0/animation_speed = 10.0 +0:0/animation_mode = 1 +0:0/animation_frame_0/duration = 1.0 +0:0/animation_frame_1/duration = 1.0 +0:0/animation_frame_2/duration = 1.0 +0:0/animation_frame_3/duration = 1.0 +0:0/animation_frame_4/duration = 1.0 +0:0/animation_frame_5/duration = 1.0 +0:0/animation_frame_6/duration = 1.0 +0:0/animation_frame_7/duration = 1.0 +0:0/animation_frame_8/duration = 1.0 +0:0/animation_frame_9/duration = 1.0 +0:0/animation_frame_10/duration = 1.0 +0:0/animation_frame_11/duration = 1.0 +0:0/animation_frame_12/duration = 1.0 +0:0/animation_frame_13/duration = 1.0 +0:0/0 = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_cjxfw"] +texture = ExtResource("7_1sc6h") +texture_region_size = Vector2i(64, 64) +0:0/animation_speed = 10.0 +0:0/animation_mode = 1 +0:0/animation_frame_0/duration = 1.0 +0:0/animation_frame_1/duration = 1.0 +0:0/animation_frame_2/duration = 1.0 +0:0/animation_frame_3/duration = 1.0 +0:0/animation_frame_4/duration = 1.0 +0:0/animation_frame_5/duration = 1.0 +0:0/animation_frame_6/duration = 1.0 +0:0/animation_frame_7/duration = 1.0 +0:0/animation_frame_8/duration = 1.0 +0:0/animation_frame_9/duration = 1.0 +0:0/animation_frame_10/duration = 1.0 +0:0/animation_frame_11/duration = 1.0 +0:0/animation_frame_12/duration = 1.0 +0:0/animation_frame_13/duration = 1.0 +0:0/0 = 0 +0:0/0/physics_layer_2/polygon_0/points = PackedVector2Array(16, -32, -32, -32, -32, 16) + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_f0lx6"] +texture = ExtResource("8_b6gnd") +texture_region_size = Vector2i(64, 64) +0:0/animation_speed = 10.0 +0:0/animation_mode = 1 +0:0/animation_frame_0/duration = 1.0 +0:0/animation_frame_1/duration = 1.0 +0:0/animation_frame_2/duration = 1.0 +0:0/animation_frame_3/duration = 1.0 +0:0/animation_frame_4/duration = 1.0 +0:0/animation_frame_5/duration = 1.0 +0:0/animation_frame_6/duration = 1.0 +0:0/animation_frame_7/duration = 1.0 +0:0/animation_frame_8/duration = 1.0 +0:0/animation_frame_9/duration = 1.0 +0:0/animation_frame_10/duration = 1.0 +0:0/animation_frame_11/duration = 1.0 +0:0/animation_frame_12/duration = 1.0 +0:0/animation_frame_13/duration = 1.0 +0:0/0 = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_evtyi"] +texture = ExtResource("9_365jv") +texture_region_size = Vector2i(64, 64) +0:0/animation_speed = 10.0 +0:0/animation_mode = 1 +0:0/animation_frame_0/duration = 1.0 +0:0/animation_frame_1/duration = 1.0 +0:0/animation_frame_2/duration = 1.0 +0:0/animation_frame_3/duration = 1.0 +0:0/animation_frame_4/duration = 1.0 +0:0/animation_frame_5/duration = 1.0 +0:0/animation_frame_6/duration = 1.0 +0:0/animation_frame_7/duration = 1.0 +0:0/animation_frame_8/duration = 1.0 +0:0/animation_frame_9/duration = 1.0 +0:0/animation_frame_10/duration = 1.0 +0:0/animation_frame_11/duration = 1.0 +0:0/animation_frame_12/duration = 1.0 +0:0/animation_frame_13/duration = 1.0 +0:0/0 = 0 + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_o01ta"] +texture = ExtResource("10_lju64") +texture_region_size = Vector2i(64, 64) +0:0/animation_speed = 10.0 +0:0/animation_mode = 1 +0:0/animation_frame_0/duration = 1.0 +0:0/animation_frame_1/duration = 1.0 +0:0/animation_frame_2/duration = 1.0 +0:0/animation_frame_3/duration = 1.0 +0:0/animation_frame_4/duration = 1.0 +0:0/animation_frame_5/duration = 1.0 +0:0/animation_frame_6/duration = 1.0 +0:0/animation_frame_7/duration = 1.0 +0:0/animation_frame_8/duration = 1.0 +0:0/animation_frame_9/duration = 1.0 +0:0/animation_frame_10/duration = 1.0 +0:0/animation_frame_11/duration = 1.0 +0:0/animation_frame_12/duration = 1.0 +0:0/animation_frame_13/duration = 1.0 +0:0/0 = 0 + +[resource] +tile_size = Vector2i(64, 64) +occlusion_layer_0/light_mask = 1 +physics_layer_0/collision_layer = 16 +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_mask = 0 +terrain_set_0/mode = 2 +terrain_set_0/terrain_0/name = "VoidChromakey" +terrain_set_0/terrain_0/color = Color(0, 0.6, 0, 1) +sources/13 = SubResource("TileSetAtlasSource_hk86q") +sources/0 = SubResource("TileSetAtlasSource_7qauh") +sources/1 = SubResource("TileSetAtlasSource_4c85m") +sources/2 = SubResource("TileSetAtlasSource_kldxy") +sources/3 = SubResource("TileSetAtlasSource_g6p14") +sources/4 = SubResource("TileSetAtlasSource_q0t2i") +sources/5 = SubResource("TileSetAtlasSource_cjxfw") +sources/6 = SubResource("TileSetAtlasSource_f0lx6") +sources/7 = SubResource("TileSetAtlasSource_evtyi") +sources/8 = SubResource("TileSetAtlasSource_o01ta") +pattern_0 = SubResource("TileMapPattern_0cco3") diff --git a/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_water.tres b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_water.tres new file mode 100644 index 0000000000..5c23609e9d --- /dev/null +++ b/scenes/quests/story_quests/infinite_knight/tiles/infinite_knight_water.tres @@ -0,0 +1,25 @@ +[gd_resource type="TileSet" format=3 uid="uid://q4d22obeivbd"] + +[ext_resource type="Texture2D" uid="uid://doc4qg7e3kgs" path="res://assets/third_party/tiny-swords/Terrain/Water/Water.png" id="1_7n2kn"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_2xg18"] +texture = ExtResource("1_7n2kn") +texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 3 +0:0/0 = 0 +0:0/0/physics_layer_2/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/2 = 2 +0:0/2/physics_layer_2/polygon_0/points = PackedVector2Array(-32, 3.85675, 32, 4.40771, 32, 32, -32, 32) +0:0/1 = 1 + +[resource] +tile_size = Vector2i(64, 64) +occlusion_layer_0/light_mask = 1 +physics_layer_0/collision_layer = 16 +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_mask = 0 +sources/0 = SubResource("TileSetAtlasSource_2xg18")